如果我在Corda上创建代币,如何确保发行人认识所有人';平衡?

如果我在Corda上创建代币,如何确保发行人认识所有人';平衡?,corda,Corda,我在Corda上创建了一个令牌。我怎样才能让发卡机构知道在任何时间点每个节点的令牌余额是多少?那么Joel。。。这是一个很好的问题——按照客户资产和托管的说法,这样做通常被称为“内部对账”!我假设: 每个令牌类型有一个颁发者 该发行人负责发行和赎回代币 发行人会跟踪发行了多少代币 希望持有代币的参与方节点必须向执行KYC和持续交易监控的发卡机构注册-这可能是大多数监管辖区的要求。如果这不是一个要求,那么就没有好的方法来真正了解谁目前持有发行人代币 发卡机构知道已发行和兑换了多少代币,但不知道

我在Corda上创建了一个令牌。我怎样才能让发卡机构知道在任何时间点每个节点的令牌余额是多少?

那么Joel。。。这是一个很好的问题——按照客户资产和托管的说法,这样做通常被称为“内部对账”!我假设:

  • 每个令牌类型有一个颁发者
  • 该发行人负责发行和赎回代币
  • 发行人会跟踪发行了多少代币
  • 希望持有代币的参与方节点必须向执行KYC和持续交易监控的发卡机构注册-这可能是大多数监管辖区的要求。如果这不是一个要求,那么就没有好的方法来真正了解谁目前持有发行人代币
发卡机构知道已发行和兑换了多少代币,但不知道向每个参与方节点发送了多少代币,也不知道谁持有代币。换句话说,发卡机构需要为所有节点完成此等式:

node_balance = issued - redeemed + in - out
有很多方法可以做到这一点,每种方法都有好处和权衡:

  • 发行人联名。这是一种可怕的模式,它增加了发行人周围的集中化。什么是发行人离线,没有人可以交易等。不推荐
  • 编写一组流,只需询问注册的每个节点持有令牌的余额。这是一种幼稚的方法。参与方节点可以谎称其平衡,但实现起来很简单。网络法律协议可能要求参与方节点“讲实话”,或者将其从业务网络中驱逐出去
  • 编写一组流,要求每个节点将其现金状态和来源链返回到发行交易。每天执行一次。此处必须使用机密身份,因为发卡方节点最终将持有所有现金状态和所有先前涉及现金的交易。好消息是,发行人可以确保余额。坏消息是,这可能不适用于大型网络(同时有大量流量),我已经提到了侵犯隐私的问题。节点也可以选择不响应
  • 使您的代币以滚动方式到期。例如,代币以滚动方式按月到期。如果代币到期,则必须与发行人一起兑换新代币。然后,发卡机构可以推断每个节点在特定时间点的余额。这是一种有用的方法,因为它缩短了来源链(对于可伸缩性和隐私问题很有用)。它确实增加了一点集中化,但代币不会全部到期,因此发行人不会不知所措。缺点:如果发行人离线,无法兑换和消费代币
  • 使用SGX或零知识证明或多方计算。这是我们希望在未来实现的东西。发卡机构可以放心,每个人都持有“正确”的余额,即没有重复/重复支出,但不知道每个参与方节点的余额
  • 要求每个参与方节点以匿名方式将其余额发布到公共公告板。发行人将知道任何余额是否不正确(代币过多或过少),但不知道海报是谁。这可能需要在您的业务网络中强制执行,或者其他什么
还有其他几种方法,但我仍在弄清楚它们目前是如何工作的

最后,值得注意的是,如果没有监管要求知道谁持有代币以及他们拥有多少代币,那么我一开始就不会费心设计这个流程!请记住,Corda实现控制以确保节点所有事务都是原子的(它们要么发生,要么不发生),并且令牌不能重复使用。合同代码还确保节点在未经发行人签名的情况下不得伪造或销毁任何代币。在这种情况下,即使我们不知道各方的余额,我们也可以保证,根据他们签署并提交到分类账的交易,他们持有正确的余额