rust - 如何正确使用LockableCurrency特性?

标签 rust blockchain substrate polkadot

我想知道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/

相关文章:

rust - 如何将 nom take_while 和 is_digit 用于 &str 输入

encryption - substratTEE与Intel SGX威胁模型的差异对比

substrate - 如何正确升级Substrate节点上的运行时?

rust - 为什么 Rust 可变借用发生在这里?

rust - 在 Rust 中的 match 语句中解构 Option<Box<_>>

blockchain - 在 Hyperledger 结构中动态添加 Org 或 peer

mapping - 映射如何在 Solidity 中工作,以及映射与其他流行语言中的另一个概念类似

blockchain - 在 Solidity/Ethereum 中寻找高分的算法

rust - 为什么即使在更改底物链的源代码之后,存储值的可变性行为也没有变化?

pointers - 模仿 Rust 中的克隆特性