1. 背景
自比特币诞生以来,加密数字货币的区块链网络越来越多,形成了蓬勃发展之势。但是在不同的区块链之间进行价值转移和交换,就会碰到各种各样的问题。比如Alice有“比特币”,想通过“比特币”购买Bob一个笔记本电脑,笔记本电脑以“瑞波币”来定价,不接受“比特币”。这时Alice就得想办法通过一定的兑换,将自己手中的“比特币”换成“瑞波币”,再向Bob进行支付。这笔交易的过程应该是:首先Alice把“比特币”卖出得到USD,然后再用USD买入“瑞波币”,在这个过程中会有一个问题----币价稳定性,币价不稳定将会导致价值损耗,同时交易过程也很繁琐,周期过长。正是针对这样的问题,ripple提出了一种跨链价值传输的技术协议InterLedger Protocal(以下简称ILP)。
2. 简介
ILP创建了这样一个系统,在这个系统中,两个不同的账本系统可以通过第三方“连接器”来互相自由地转换货币。账本系统无需去信任“连接器”,因为该协议采用密码算法为这两个账本系统和连接器创建资金托管,当所有参与方对资金达成共识时,便可相互交易。ILP移除了交易参与者所需的信任,连接器不会丢失或窃取资金,这意味着,这种交易无需得到法律合同的保护和过多的审核,大大降低了门槛。
ILP协议的核心思想在于:“账本”提供的第三方,会向发送者保证,他们的资金只有在“账本”收到证明,且接收方已经收到支付时,才将资金转给连接者;第三方也同时也保证连接者,一旦他们完成了协议的最后部分,他们就会收到发送方的资金。
区块链从技术上是去中心化数据库和分布式账本技术,从商业层面则是价值网络,在这个价值网络中,连接的有效节点越多、越分布,可能产生的价值叠加会越大。区块链是价值网络空间的核心基础设施,为了让这种基础设施得到互联互通,自由进行传值转换,我们需要跨链技术,对不同区块链进行连接和扩展,构建价值网络的高速公路。
Interledger协议(ITL)是支付系统间支付协议。协议于2015年10月由Ripple引入。
ITL支持分类账之间的安全转账,并允许任何账户在两个分类账上的人建立账户之间的连接。它使用分类账提供的托管 - 有条件的资金锁定 - 允许通过不受信任的连接器进行安全支付。可以组成连接以支持任何分类帐之间的支付,从而创建流动性或插入者的全球图。
Interledger协议不依赖任何全球协调系统或分类账来处理支付 - 集中式或分散式。ITL降低了促进插入支付的障碍。连接器竞争提供最佳速率和速度。该协议可以扩展以处理无限的支付量,只需添加更多连接器和分类帐即可。
将连接器组装成链可以在任何分类帐之间进行支付,并为小型或新型支付系统提供与最成熟系统相同的网络效果。这可以使每件有价物品在任何地方消费 - 从货币到商品,计算资源和社会信用。
Ripple公司首席技术官Stefan Thomas在10月份表示:“这将是所有分类账的重要组成部分,并将这些差异摘录出来。” “我们正在努力创建一个全球支付标准。”
总帐提供的托管服务通过隔离每个参与者免受其他参与付款的人员的失败或恶意行为风险,从而实现安全的互联网付款。所有参与者只有在预定条件得到满足时才依靠其分类账托管资金并释放它们。
发件人通过他们的账簿确保他们的资金只有在收到收款人已收到付款的不可否认的确认后才能转账。收款人通过分类账保证他们在提供这种确认时会得到报酬。
加密签名是分类账安全验证转账托管的外部条件结果的简单方法。如果付款成功,或者退还其托管资金,付款的发件人可以保证收件人收到加密签名的收据。
“现在银行,企业和其他公司使用不同类型的分类账和支付系统来处理不同的应用。预计没有单个系统或分类帐可以处理全球付款量或处理每个需求和用例。拥有如此众多解决方案的美妙之处在于,每个分类账可以非常好地服务于不同的用例,“Stephan Thomas在接受PYMNTS采访时解释道。“Interledger协议旨在允许所有这些分类账协同工作。它是一个免费的,开放源代码和中性的Web协议,它使这些不同分类帐之间的互操作性能够提供无限的可扩展性和灵活性。这提高了每个分类账与其他分类账的定制方案的能力。“
Interledger协议具有两种执行付款的模式 - 原子模式和通用模式。该协议的原子模式为支付链提供了原子性,参与者可以在这些链中就一组公证人达成一致。通用模式使用理性行为者的激励手段,在不参与任何机构或系统的参与者之间进行实际支付。
Ripple于2012年发布并基于分布式开源Internet协议,共识分类帐和本地货币称为XRP(涟漪)的Ripple协议(Ripple)经常与Interledger协议混淆。
然而,Interledger协议与Ripple共识分类账没有任何关系。这是一个常见的误解,因为支付社区中的许多人对Ripple有先入为主的想法,而且在ITL和Ripple上都没有足够的信息。此外,Ripple工程师发布Interledged协议以及Ripple协议。
Ripple的核心是以分类账为基础,该分类账采用共识流程,允许在分布式流程中进行支付,交换和汇款。截至2014年,Ripple是继比特币之后按市值计算的第二大数字货币。
当Interledger协议的想法首次发布时,它发现了像微软和万维网联盟这样的知名公司的支持。据Stefan Thomas称,当银行拒绝使用Ripple时,该公司首先遇到了ITL的想法。他们不喜欢分类帐的半公开性质,这可能使他们的业务可以被外部人士接入。他解释说,银行唯一能做的就是“分离”Ripple的代码并创建自己的内部系统。然而,正如微软公司的Marly Gray所承认的那样,“如果仅仅在一个单一的组织内使用区块链,它本质上是毫无价值的”。
正如斯蒂芬·托马斯所说,现在企业往往需要在他们开展业务的外国国家预先注资银行账户,以节省货币交易的时间和金钱。这有效地迫使他们以当地货币在世界各地合并资本,以解决孤立的支付生态系统和几天的结算时间。因此,过时的支付基础设施会给银行及其企业客户带来额外成本,并且这种预先资金账户的需求会导致货币账户停滞并带来高额的机会成本。
“ILP帮助互联支付生态系统,消除这些低效率,并使企业能够根据需要进行支付,而不必预先资助账户。这使得他们可以在其他地方分配运营资金,并以全新的方式使用其资本,“托马斯表示,意大利国际贸易法可以在跨境结算方面发挥作用。
由于桑坦德集团投资了数百万美元, Interledger协议的概念得以发展。 西班牙银行集团是市场价值最大的欧元区银行,也是市值最大的全球银行之一,他们一定相信Ripple的想法。
Santander InnoVentures的执行合伙人Mariano Belinky表示,Ripple的技术可以彻底改变银行业的基础设施。“Ripple拥有解决许多情况的人才,技术和动力,我们正在积极探索在银行内部应用Ripple技术的最佳方式和方式,”他说。
根据托马斯的说法,ITL基于过去一年里在Ripple试点项目的大型和小型零售和商业银行的广泛客户反馈。
他认为,银行将首先成为Interledged协议的采用者,并将其用于跨境解决方案,如他们已经熟悉的Ripple协议,使他们能够跨越国界和跨不同的分类账高效地进行私人交易。就像ITL跨越银行到银行结算的技术差异一样,它可以连接不兼容的网络和移动支付系统。
该公司计划发布具有ILP功能的Ripple版本,以实现银行要求的关键功能,如私人交易,无限可扩展性以及以任何货币计价的能力。
3. 账本
各“账本”要想利用ILP技术与其它区块链或者“账本”进行价值转换,就要满足一定的基础条件,才能更好地使自己发行的代币与其它电子货币币进行交换,从而易被大众接受。
1. 必须要支持自己“账本”所管理下的一个账户向自己账本所管理下另外一个账户的转账操作;
2. 必须要支持托管式的交易操作,该类型的交易需要两个必要参数:一个执行“托管”交易的“原像条件”及一个“超时时间”;
3. 任何用户,不局限于“托管”交易的创建者,在提供“托管”交易的“原像条件”时,就可以决定“托管”交易是被执行还是被拒绝;
4. 如果“托管”交易创建后超时,“托管”交易就会自动失效,“托管”交易里所托管的货币会重新进入“托管”交易的创建者账户;
5. “账本”所支持的交易需要具有携带简短消息的能力;
6. “账本”支持事件通知功能,使得各方能及时知道有一笔针对自己的“托管”交易。
4. 流程
4.1. 概述
整个交易流程分成“发送方--->接收方”与“接收方--->发送方”两个主流程。每个流程又是由发生在各个“账本”上的各个子交易(“托管创建”与“托管确认”)组成。“发送方--->接收方”流程全部是“托管”的创建动作,“接收方--->发送方”则全由“托管”的确认动作组成。
从图中我们可以了解到在接收方对“账本N”上的“托管”交易进行确认前,所有“账本”上被创建的“托管”交易并未被确认,些时每一个“账本”上“托管”交易里指定的源账户并未真正将自己的资产转移出去,而是由“账本”系统进行了托管。只有当接收方进行确认后,在“接收方--->发送方”的返回流程中,各个“托管”交易才被确认,此时各个“账本”的“托管”交易里指定的目标账户才真正得到源账户的资产,资产价值真正发生转移。
在交易的整个链条过程中,每一个环节上的交易在被确认之前都是处于“托管”状态,并没有发生价值转移。即使是连接者去破坏交易,比如说将交易发往另外的地址,发送者也不会有损失,因为最后托管的交易不会得到执行,超时时间条件达成后,交易中的资产会再返回给源账户。
当接收者收到一个涉及自己账户的“托管”交易的通知时,接收者会确认交易细节从而确定交易是否正确,然后提供“托管”交易所指定条件的原像,向“账本”系统发出“托管确认”操作,接收者真正得到所需要的加密电子货币。接下来整个传输链条上的每一个连接者都用同样的“条件原像”去“托管确认”属于自己的“托管”交易,最终每个连接者都收到自己应得的资产价值。
一个值得注意的细节就是:各个“连接者”在创建自己发出的“托管”交易时,设置的超时时间一定要小于自己收到的“托管”交易里所设置的超时时间,从而自己在得到条件的原像时,有时间去执行自己收到的“托管”交易的确认操作,否则会出现自己创建的“托管”交易被接收方或者其它的连接者确认,但自己来不及去确认“属于”自己的“托管”交易,从而造成损失。换句话说,在“账本B”上把资产转移给了另外一个账户,在“账本A”上未确认到对应的资产,造成资产损失。
4.2. 步骤
我们使用本文开头提出的场景来描述整个交易的详细步骤:
对象:发送方--Alice,接收方--Bob, 连接者—Cot。
账本关系:Alice拥有bitcoin的账户, Bob拥有ripple的账户, Cot拥有bitcoin与ripple账户。
场景:Alice要从网上购买Bob的笔记本电脑,定价为29230个ripple币。
1. Alice通过即时通讯软件或者其它通讯手段,得到Bob提供的一个“共享密码”。通讯一定要以加密方式进行,使得在沟通后,只有Alice与Bob知道这个“共享密码”;同时Bob会告诉Alice自己在ILP网络中对应的唯一地址,例如g.ripple. rHCvhtqhXuBvWt5g79gyXfpG8VcrvUm9E9。
2. Alice去向Cot询价,查询自己想发送29230个ripple币需要多个少BTC,此时Cot会按实时的BTC与ripple行情算出需要1个比特币,同时Cot会多收0.00001个BTC作为手续费,最终Alice得到的询价结果为:需要向Cot支付1.00001个BTC。
3. Alice按ILP规定的消息格式生成所需要的ILP包,ILP包里指明目标地址为Cot,同时基于ILP包的私有内容与“共享密码”生成一个“条件原像”,对“条件原像”进行哈希散列,得到一个“托管”交易的“条件”。
4. Alice在Bitcoin账本系统上发起一个“托管”创建操作,设置了步骤3中的“托管”条件及一个超时时间,同时设置ILP包。
5. Cot在Bitcoin上监测到一个涉及自己的“托管”创建操作。
6. Cot解析ILP包,计算出自己应该向Bob转29230个ripple币,同时修改ILP中的目标地址为Bob。
7. Cot在ripple账本系统上发起一个“托管”创建操作,设置了步骤3中的“托管”条件及一个超时时间,此超时时间要小于步骤4中的超时时间,同时设置ILP包。
8. Bob在ripple上监测到一个涉及自己的“托管”创建操作。
9. Bob解析ILP包,用自己的“共享密码”及ILP包里的私有内容生成一个“条件原像”及对应的“条件”。通过对比“托管”创建交易里携带的“条件”与自己生成的是否相同,及核实“托管”交易中指定的资产数量是否是29230,来确认“托管”交易:接收或拒绝。我们这里假定接收。
10. Bob在ripple账本系统上发起一个“托管”确认操作,设置上“条件原像”,ripple账本上的“托管”交易完成,Bob收到29230的ripple币
11. Cot在ripple上监测到一个涉及自己的“托管”确认操作。
12. Cot分析“托管”确认操作的内容,得到“条件原像”。
13. Cot在bitcoin账本系统上发起一个“托管”确认操作,设置上“条件原像”,bitcoin账本上的“托管”交易完成,Cot收到1.00001个BTC。
14. Cot在bitcoin上监测到一个涉及自己的“托管”确认操作。
4.3. 托管
从交易流程中我们可以看到,ILP是利用各个账本所提供的“托管”功能进行各子交易的实现。
从图中我们可以看到,“托管”交易包含四个主要步骤
1. 准备:此时什么事情都没发生,只进行了必要数据的准备。
2. 创建:隶属于一个“账本”系统上的某个账户的资产被“托管”。
3. 确认:“托管”交易完成,资产发生转移,从“账本”系统内的一个账户转移到了另外一个账户。
4. 拒绝:“托管”交易被取消,资产回到“账本”系统的源账户。
托管功能的特点主要有以下几个方面:
1. “托管”交易被创建后,发送方的资产并未真正转移。
2. “托管”交易不能被撤销或者在一定时间内不能撤销。
3. 任何人只要知道“托管”交易列出的“条件原像”,都可以使得“托管”交易被确认,不必要发送方去执行“托管”交易的最终确认操作。
4. 任何人只要知道“托管”交易列出的“条件原像”,都可以拒绝“托管”交易,不必要发送方去执行“托管”交易的拒绝操作。
5. “托管”交易可以设置超时时间,在规定时间内无人进行“确认”操作或者“拒绝”操作,“托管”交易自动失效。
“托管”交易是ILP实现的前提条件,实现“托管”的方式多种多样,可以是“账本”本身具有的功能,也可以是通过双方信任的第三方来代替实现。只有通过“托管”的方式,才能保证各方的利益不受侵害。
5. 安全
ILP用了一种带“条件”的交易来保证资产价值在各个“账本”系统之间传递时的安全,发送方用一种加密证明来保证发出去的资产要么被接收方接收,要么返回到发送方的账户。在整个过程中。连接者可能会遭受一定的损失,但是此风险基本可控,风险只与连接者选用的账本系统及直接连接的节点有关。
5.1. 连接者
在ILP协议中,连接者是一个重要的角色,支撑起整个跨链网络,使得跨链的资产交换得以正常进行。连接者之所以有积极性是因为在提供资产转换的过程中会收取一定的费用,像做市商时收取的佣金一样来获得收益。
但在这个过程中连接者是有一定的风险的,当连接者发出去的“托管”交易被成功确认,但是自己没有及时去确认自己收到的那个“托管”交易,这样本该发给自己的资产就会返回到源账户的地址,造成一定的损失。
当连接者未能及时确认发往自己的托管的交易时,只能靠发送方再次发送带有同样执行“条件”的同样的“托管”交易过来,当连接者拿到这个“托管”交易时,用上次记下来的“条件原像”去确认这个新的交易。
要想让发送方愿意重复再发送已经失效的交易,就需要给这样做的发送方一定的奖励,比如降低佣金、优先进行资产转换等。
5.2. 问题
1. 接收方是否会在没有确认涉及自己的“托管”交易时,泄露“条件原像”?
如果接收方正常的话,是不会有此现象发生,因为这样自己的权益不会被保证,会造成发送方已经发送,接收方收不到资产的情况,这种情况下接收方要承担责任。
2. 接收方是否会只把对方的“托管”交易确认,却不公布“条件原像”?
不会,“托管”确认交易的必要参数之一就是“条件原像”,只要“托管”交易被确
认,“账本”系统上就可以查看此交易,从而得到“条件原像”。
3. 连接者在未来得及确认涉及自己的“托管”交易时,同时发送方又不再次发送,怎么办?
没办法,确实无法回避此问题。
4. 发送方与接收方之间有多个连接者的情况下,如果第一个连接者先于第二个连接者拿到了“条件原像”,是否会给第二个连接者造成损失?
不会,因为第一个连接者创建的“托管”交易在一定时间内不能取消,只要在超时
时间内第二个连接者拿到了“条件原像”,就可以确认涉及自己的“托管”交易。
5. 谁可以做连接者?
任何拥有2个以上“账本”系统账号的个人都可以做连接者。
6. 核心
纵观本文,大家已经发现了ILP并未创建一个统一的“账本”系统,也未要求参与的各方去信任任何个人或者机构,而是依靠现有的、已经存在的“托管”交易来保证各方的利益,那ILP事实是做了什么事呢?
ILP提出了一种跨链资产转移的方法,但是其首先是一个协议,协议的核心在于以下两点:
1. 确定了各个“账本”系统上的每个账户的地址规则,即通过层级关系来确定某一个账号是属于某个范围内某个账本上的。
例如 g.ripple.bob,表示公链ripple上的一个账户bob
2. 定义了在跨链交易时的消息传递格式,使得发送方、接收方、连接者之间可以用同样的消息格式进行信息的传递,用以确认收到消息及得到自己的目标地址。
核心点一使得交易流程中的各个子交易能确定转移的账户,核心点二使得各方采用统一的格式进行消息传递。
7. 应用场景
1. 只拥有加密电子货币A的情况下以加密电子货币B的形式进行支付;
2. 拥有不同加密电子货币的账户,想在隶属于不同“账本”的账户之间进行货币的价值转换;
3. 同一集团下不同私有链之间进行同类型货币的价值互换。
8. 小结
本文系统介绍了Interledger protocal,同时以实例的形式完整说明了整个ILP交易的详细流程,同时对交易过程中的安全性能进行了深入分析,针对ILP的技术特点,本文也给出了它的一些典型应用场景。
博主QQ: 122209017