『』HashKey:技术解析欧央行和日本银行 Stella 项目进展( 三 )


第二 , 银行 A 将其没有签名的证券指令发送给银行 B 。 银行 B 核实证券指令的内容 , 并将证券指令与自己的资金指令结合起来 , 组成一套完整的指令 。 银行 B 签署资金指令 , 并将其发回银行 A 。
第三 , 银行 A 验证全部指令 , 并签署证券指令 , 然后将双方签名过的全部指令提交给共识机制 。
第四 , DLT 环境中的共识机制对提交的指令进行验证和确认 , 并将结果写入账本 。 商定的资金和证券分别转移到银行 A 和银行 B 。
如果上述某一个步骤未能完成 , 结算就会失败 。 此时 , 资金和证券由各自的原始持有人保管 , 并可立即用于其他交易 。
使用 HTLC 的跨账本 DvP 的流程
跨账本 DvP 的设计理念是让两个交易对手方根据账本上记录的承诺就交易指令的内容达成一致 , 并使用 HTLC 进行跨账本 DvP 。
在下图中 , 证券出售方(银行 A)和证券购买方(银行 B)已经对准备交易的数量、资产类型、锁定时间和哈希函数达成协议 。 协议的内容包括两个交易:在两小时内 , 8 个单位的证券由银行 A 转移给银行 B;在一小时内 , 6 个单位的资金由银行 B 转移给银行 A 。
『』HashKey:技术解析欧央行和日本银行 Stella 项目进展
本文插图

图 3:使用 HTLC 的跨账本 DvP 的流程
如上图所示 , 两个交易对手方遵循以下步骤 , 可以成功完成使用 HTLC 的跨账本 DvP 。
第一 , 银行 A (证券的原始持有人)生成一个原像 X 和对应的哈希值 Y (Y=H(X)) 。 银行 A 将 Y 分享给银行 B 。 银行 A 创建第一个证券指令(支付商定数额的证券) 。 在这个指令中 , 银行 A 规定了两种状态:如果银行 B 可以提供 X 满足 Y=H(X) , 那么银行 B 是证券的接收人;如果时间超过两个小时 , 那么银行 A 是证券的接收人 。 银行 A 对这个指令签名 , 并将签名的指令提交给证券的共识机制 。
第二 , 证券 DLT 网络中的共识机制对提交的第一个证券指令进行验证和确认 , 并将结果写入证券账本 。
第三 , 银行 B (资金的原始持有人)核实银行 A 承诺的第一个证券指令的内容 , 然后银行 B 创建第一个资金指令(支付商定数额的资金) 。 在这个指令中 , 银行 B 规定了两种状态:如果银行 A 可以提供 X 满足 Y=H(X) , 那么银行 A 是资金的接收人;如果时间超过一个小时 , 那么银行 B 是资金的接收人 。 银行 B 对这个指令签名 , 并将签名的指令提交给资金的共识机制 。
第四 , 资金 DLT 网络中的共识机制对提交的第一个资金指令进行验证和确认 , 并将结果写入资金账本 。
第五 , 银行 A 验证银行 B 承诺的第一个资金指令的内容 , 然后银行 A 创建第二个资金指令(获得商定数额的资金)并签名 , 并将签名的指令提交给资金的共识机制 。 同时 , 银行 A 在这个指令中提供原像 X 。
第六 , 资金 DLT 网络中的共识机制对提交的第二个资金指令进行验证和确认 , 并将结果写入资金账本 。 此时 , 商定数额的资金从银行 B 转移到银行 A 。
第七 , 银行 B 从第二个资金指令中获得原像 X 。 然后银行 B 创建第二个证券指令(获得商定数额的证券)并签名 , 并将签名的指令提交给证券的共识机制 。 同时 , 银行 B 在这个指令中提供原像 X 。
第八 , 证券 DLT 网络中的共识机制对提交的第二个证券指令进行验证和确认 , 并将结果写入证券账本 。 此时 , 商定数额的证券从银行 A 转移到银行 B 。
如果上述某一个步骤未能完成 , 结算就会失败 。 对于使用 HTLC 的跨账本 DvP , 结算失败可能会导致两种不同的结果 。
一是资金和证券被退还给各自原始持有人 , 两个交易对手方都不会承担太大风险 , 但会面临重置成本风险和流动性风险 。
二是资金和证券都会被一个交易方获得 , 另一方会承担较大风险 。 例如 , 在银行 A 获得商定的资金后 , 银行 B 没有在约定的锁定时间(两小时)内完成第二个证券指令 。 最终 , 银行 A 将持有退还的证券和获得的资金 , 而银行 B 损失本金 。 在这个结算失败的场景中 , 没有实现跨账本 DvP , 说明了 HTLC 技术目前还存在的弱点 , 需要进一步发展 。


推荐阅读