我想知道LockableCurrency如何工作?更具体地说,WithdrawReasons
是什么?它仅仅是一个标记,还是此处指定的值对于实际释放锁很重要?
我的用例是,我想在一定时间内锁定资金以进行转移,然后转移这些资金或释放锁定。所以我应该只使用WithdrawReasons:all()
吗?
另外,我想我可以使用substring(hash(AccountId))
作为锁标识符,以这种方式为每个帐户创建锁是一个好主意吗?
最佳答案
如果您只想禁止转账,那么您应该使用仅禁止撤回原因转账的锁。 WithdrawReason::Transfer
。尽管请注意,用户很可能会找到解决此问题的方法,因为他们可以给大笔作者小费或用锁定资金支付交易费,因此,如果他们碰巧与大笔作者串通,他们可以有效地欺骗系统。
您实际想要的可能是WithdrawReason::all()
。
And as a side note - I thought I could use a substring(hash(AccountId)) for the lock identifier, is it a good idea create the lock per each account this way?
我不会那样做。每个锁已经链接到一个帐户,并且用于添加和删除锁的API已经要求操作一个帐户。因此,我认为使用帐户哈希作为键是重复的(也可能会对性能产生不良影响)。您应该遵循以下约定:在基板上使用托盘中的唯一标识符作为锁标识符(简单来说:托盘的名称即可)。这样可以确保此货盘创建的锁不会被其他货盘意外取下。
关于rust - 如何正确使用LockableCurrency特性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65654931/