关于如何实现 cordite dgl 令牌的预期设计

Intended design on how to implement cordite dgl tokens

我有几个关于 cordite dgl 代币的问题。 我想标记一个表示为 LinearState 的资产。

  1. 有没有办法只允许发行一次代币?
  2. 是通过TokenSymbollink将代币转给其他州的首选方式吗?
  3. 帐户的预期设计是什么?每个用例一个帐户还是每个 TokenType 一个帐户?
  4. 如何查询特定令牌是否已存在?是不是只能查询账户,看结果(所以没有TokenSymbol查询余额的功能)?

提前致谢!

很好的问题,谢谢!

  1. 现在不可能,但它绝对被认为是可取的。这将需要对核心进行更改,这很好。我认为这项工作将需要 Corda 4,特别是参考状态和线性状态指针类型才能工作。值得注意的是,我们需要:

    一个。限制发行的方式有很多:不仅是最终数量,还有分配率、签署方(在需要多个发行的情况下)等。我们需要将有限发行的概念插入代币中类型,可选。这将向现有的 TokenType 添加额外的字段。或者更好的是,使 TokenType 打开以便可以扩展它。另一种方法是为将对合同规则进行编码的基本类型或接口提供一个字段。

    b。我们可以将代币类型作为附加的 StateAndRef 进行传输,但我们需要意识到这样做的每笔交易存储、网络、签名和验证成本。更好的方法是使用我们热切期待的 Corda 4 中的参考数据功能。

  2. 如果其他状态是发出令牌的同一交易的一部分,则链接是隐式的。如果其他状态与令牌不在同一个事务中,那么现在在 Corda 3 中链接将需要使用 TokenType 描述符。或者,它也可以在生成其他状态的 tx 中引用 StateAndRef。我们认为最有效的方法是使用 Corda 4 的参考状态(我相信今年计划 Dec/Jan)

  3. 帐户旨在存储多种令牌类型的令牌。它们确实与业务用例保持一致,并且不受特定令牌类型的限制,除非您想在应用程序层中强制执行。

  4. 您的意思是要获取所有帐户的 TokenType 余额吗?你当然可以使用 Corda 的 API 来定位代币——这还没有通过 Braid 公开,但肯定可以。另一种方法是 tag/alias 使用相同标签的所有帐户,例如{ category:'all-accounts', value:''} 然后您可以执行 ledger.balanceForAccountTag({ category: 'all-accounts', value:''}) 以获取所有帐户的余额。但是,这 returns 所有 TokenTypes 的余额。理想的 API 对您来说是什么样的?