OneLedger MVP之跨链能力
不久前,我们发布了OneLedger MVP的最初版本,它具有基本的区块链功能和身份管理功能。 对于下一个将要发布的版本,我们专注于完成跨链交易的支持功能。这将允许用户在他们自己的比特币和以太坊的账户间交换代币。
事实上,这有些言过其实。令牌可以无缝地从一个区块链移动到另一个区块链的想法很吸引人,但并不那么容易实现。在加密货币领域,像'资产'这样的概念实际上只是以二进制字符,即零和一的形式存在。
这些数字只有在创建它们的区块链系统中才有意义。 也就是说,如果您访问Google的Gmail等系统来创建用户帐户,则其他任何电子邮件系统都不知道该帐户,也无法使用该帐户执行某些有意义的操作。他们能够使用您提供的信息访问Gmail,但也仅限于此。如果要移动该账户里的信息,则必须以某种通用格式导出信息,然后将其导入下一个系统(如果这些导出导入的功能存在)。
令牌具有相同的属性。比特币令牌存在于比特币区块链网络中; 以太坊令牌存在于以太坊区块链网络中。
现在,如果一个令牌从其原始系统中删除 - 即该令牌被销毁 - 那么可以在另一个系统中创建另一个令牌来替换它。这将是在区块链之间真正的实现资产转移。但是这很难实现,特别是如果目的地区块链不能保证原始链会真正的销毁这一令牌资产。特别是在分布式的链与链之间完成原子操作,即销毁-产生这两个行为要么都发生,要么都不发生。将两个分布式系统中的两个行为,变成一个行为,这是真正的难点。
移动令牌的另一种方法是将它们锁定在一个地方,然后将它们镜像到另一个链中,再在必要的时候解锁镜像,同时在原有链解锁。 这个想法很好,但它也需要完成上面所说的原子操作,即需要链之间的信任(锁定与镜像的机制),最终归结为开发人员之间的信任。后一种情况很棘手,因为大多数区块链代码只是协议的一种实现,因此链可以运行在许多不同的,无关的编程组的工作上。所以很可能一个区块链的编程Bug可能会直接影响到另一条区块链的资产。
这就是跨链协议变得非常棘手的地方。拜占庭容错算法的基础是不信任个体,因为任何个体都可能是拜占庭错误的个体。 更重要的是整个系统达成“共识”,无论各个节点看到什么,相信什么,最终是集体意见起主导作用。
显然,确保资产被锁定在链上的最佳方法是使用链自己的协议将资产转移到特定帐户。但问题是谁拥有该帐户?不同的跨链协议很大不同是在这一点上,像闪电网络,是通道的两方共有。如果另一个链上的单个节点拥有它,问题最终变成了信任该节点。 我们不会这样做。最正确的做法是整个区块链需要拥有该帐户,只有整个链条才能访问它,而不是任何个人。这样问题就变得很复杂。
鉴于跨链交易的根本问题是棘手的,并且尚未完全被探索,我们决定将我们的最开始的实施重点放在被普遍接受的技术原则上。我们知道可以在几个不同的链上使用哈希时间锁作为基本原则,然后我们就能在区块链之间同步完成交易,即解决了原子操作的问题。 鉴于资产在其区块链之外不存在真实价值的问题,我们决定将我们最初的跨链机制称为同步交换机制。
也就是说,如果双方就汇率和交换数量达成一致,他们可以在各自的账户之间相互交易资产。一个人在比特币网络中将一些比特币发送到对方的账户,作为交换,另一个人将以太坊送到前者在以太坊的账户。 它并不像比特币和以太币从一个区块链转移到另一个区块链那样令人兴奋,但它可以提供几乎相同的结果,这样做的好处是我们最终不会依赖于对中介机构产生错误的信任,而是通过整个OneLedger的区块链网络到达这一原子操作。
我们几乎已经成功把这一功能添加到我们的MVP中,并希望在接下来的几周内完成开发并进行全面测试。 我们将确保在独立的Docker环境中进行演示,以便感兴趣的人可以直接在自己的硬件上运行它。