1

我想知道LockableCurrency是如何工作的?或者更具体地说,是什么WithdrawReasons?它只是一个标记还是此处指定的值对于实际释放锁很重要?我的用例是我想锁定资金转移一段时间,然后转移这些资金或释放锁定。那么我应该使用WithdrawReasons:all()吗?

作为旁注 - 我认为我可以使用 asubstring(hash(AccountId))作为锁定标识符,以这种方式为每个帐户创建锁定是否是个好主意?

4

1 回答 1

1

如果你只想禁止转账,那么你应该使用一个禁止撤回原因转账的锁,也就是。WithdrawReason::Transfer. 虽然,请注意,用户可能会找到解决此问题的方法,因为他们可以给区块作者小费或用锁定的资金支付交易费用,所以如果他们碰巧与区块作者勾结,他们可以有效地欺骗系统。

您真正想要的很可能是WithdrawReason::all().


作为旁注 - 我认为我可以使用 substring(hash(AccountId)) 作为锁定标识符,以这种方式为每个帐户创建锁定是否是个好主意?

我不会那样做的。每个锁都已经链接到一个帐户,并且用于添加和删除锁的 API 已经要求一个帐户来操作。因此,在我看来,使用帐户哈希作为密钥是重复的(也可能对性能产生不良影响)。您应该遵循基材内的约定,使用托盘中的唯一标识符作为您的锁定标识符(简单地说:托盘名称即可)。这将确保此托盘创建的锁不会被另一个托盘意外移除。

于 2021-01-10T19:46:16.073 回答