【问题标题】:How to properly use the LockableCurrency trait?如何正确使用 LockableCurrency 特征?
【发布时间】:2021-01-10 15:28:01
【问题描述】:

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

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

【问题讨论】:

  • 我认为这个问题对于使用Substrate 框架的每个人来说都非常清楚——我只能通过添加到 Rust 文档的链接来改进它。

标签: rust blockchain substrate polkadot


【解决方案1】:

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

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


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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-25
    • 2018-05-24
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    相关资源
    最近更新 更多