我想知道LockableCurrency是如何工作的?或者更具体地说,什么是WithdrawReasons
?它只是一个标记,还是这里指定的值对于实际释放锁定很重要?我的用例是,我想在一定时间内锁定资金进行转账,然后要么转账,要么解除锁定。那么我应该只使用WithdrawReasons:all()
吗?
顺便说一句,我想我可以使用substring(hash(AccountId))
作为锁标识符,这样为每个帐户创建锁是个好主意吗?
如果您只想禁止转账,那么您应该使用一个只禁止撤回原因转账的锁,也就是说。WithdrawReason::Transfer
。尽管如此,请注意,用户很可能会找到绕过这一问题的方法,因为他们可以给区块作者小费或用锁定的资金支付交易费用,因此如果他们碰巧与区块作者勾结,他们可以有效地欺骗系统。
很可能您实际想要的是WithdrawReason::all()
。
顺便说一句,我想我可以使用子字符串(hash(AccountId((作为锁标识符,这样为每个帐户创建锁是个好主意吗?
我不会那样做。每个锁都已经链接到一个帐户,添加和删除锁的API已经要求一个帐户进行操作。因此,在我看来,使用帐户哈希作为密钥是重复的(也可能会对性能产生不良影响(。您应该遵循基板内的惯例,使用托盘中的唯一标识符作为锁定标识符(简单地说:托盘的名称即可(。这将确保由该托盘创建的锁不会被另一个托盘意外移除。