微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何正确使用 LockableCurrency 特性?

如何解决如何正确使用 LockableCurrency 特性?

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

附带说明 - 我想我可以使用 substring(hash(AccountId)) 作为锁标识符,这样为每个帐户创建锁是个好主意吗?

解决方法

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

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


顺便提一下 - 我想我可以使用一个子字符串(hash(AccountId)) 作为锁标识符,这样为每个帐户创建锁是个好主意吗?

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。