2018年,Mixin 如何在不可能三角的限制下设计一个高并发和快速确认的闪电网络

2,280 阅读7分钟

不可能三角 : 一个分布式记账系统,不可能同时满足 可扩展性,安全性,和去中心化。

  1. 可扩展性 :指性能,或者并发能力
  2. 安全性 :指账本一致
  3. 去中心化 :这个最有迷惑性,因为人们会把去中心化当作目的。但是去中心的目的是提高生存能力,去中心化越彻底,生存能力越强。

比特币如何选择

以比特币为例,比特币选择了安全性和去中心化,因此牺牲了性能。但是从其诞生的时代和目的看,这种选择是合理的。比特币白皮书发布10年后,可以做一个乐观的预测,只要还有电脑和网络,比特币就不会被消灭。举个例子,你现在拿出一台有1T硬盘的电脑,有网络,就可以下载比特币的客户端和全部账本。就可以创建钱包,接受和发送比特币,还可以参与挖矿,无需任何人批准,不需要再花一笔钱。如果全世界矿池和专业矿工都放弃挖矿,你的笔记本电脑还能继续挖矿。

不仅仅是比特币,包括以太坊,Zcash,Monero,Dash等基于 POW 算法的公链彻底死亡的概率都很小,甚至包括 DogeCoin。

趋势

会有更多的基于 POW 的区块链出现,会有基于 POW 的区块链项目逐渐消亡。成功的区块链项目会尝试提供快速确认机制,比如比特币闪电网络和 Liquid,还有以太坊的分片技术。也会有新的分布式账本系统提供快速确认的方案。

什么样的闪电网络是相对安全的

我们认为在闪电网络方向上的创新是有些是安全的,有些是危险的。

安全的创新

我们知道交易所本身经营好坏并不影响在交易所挂牌的企业。因为交易所只是一个高速交易平台,本身只提供记账,并因此获得收入。即使交易所逐渐没落,人们可以选择把股票寄存在其他交易所。企业也可以选择在别的地方挂牌。

目前已经生存下来的比特币,以太坊等资产可以定义为某种资产,只提供资产交易机会的交易所,闪电网络是安全的,因为即使交易所或者闪电网络逐渐没落,人们的资产本身不受影响,依然可以提到其他地方。

危险的创新

有些闪电网络试图创建一种新资产,以某种价格与外界数字货币资产进行交换,我们认为这种方法是危险的,因为这种资产就是一种承兑债券。一旦企业陷入经营困境(从概率上看所有企业都会遇到这个问题),所有已经把资产投入该闪电网络的人就成了债主,而此时企业往往已经陷入困境,无法承兑了。 即使该企业在没有经营困难的情况下想停止经营也是非常困难的,因为他发出去的债券已经在流通中,已经在别人钱包里面。企业始终欠着钱。

Mixin的选择

Mixin 非常清楚任何产品都有生命周期,从尊重用户选择,保护用户资产的角度出发,以实现1秒确认,超大吞吐量为设计目标,舍弃终极的去中心化,追求可扩展性和安全性是非常合理的。 基于这个前提,Mixin 节点的物理基础只能是高速,高性能服务器。这是一个重要假设,后面会提到。

具体的思路:

  1. 放弃账户思路,使用 utxo

    实现账户,意味着对账户余额或者其他属性有一个共识,该属性可变,导致账户就是一个状态机。就必然要求对账户的操作有一定的顺序,否则不同的节点上产生的结果会不一样。举个例子,一个商户,通过向 1000 个客户售卖虚拟商品,获得了 1000 个以太坊,假设该商户现在需要给另外 1000 个客户每人付款 1 个以太坊,商户的账户可以生成 1000 交易请求,然后将交易请求发送给 50 个全节点以加快速度,即使所有这些交易都是正确的,但是在账户模型体系下他们是不能同时被确认的,他们必然要按着顺序一个一个或者一批一批的确认。

    基于 utxo,这个账户已经拥有 1000 个有效的 utxo,他可以生成 1000 个有效的交易,而且这些交易请求直接发送给50个节点,所有交易都能立刻被确认,因为utxo 不需要账户。uxto 数据的特点是没有状态,甚至不能认为是数据库,因为只有添加操作,没有删除和修改操作。不存在状态共享,因此可以完全异步并发处理。

  2. 使用 DAG,而不是 block 存储账本。

    DAG 本身是非常成熟的存储技术方案。Byteball,IOTA,NANO 都在使用。通过 DAG 实现了非线性存储,存储块不再按着单一顺序排列,而是可以随时插入。基于utxo 交易模型本身已经解除了交易顺序的依赖,再结合dag再可以实现无顺序依赖的存储单元。

    同时由于 DAG 结构里面后面的交易都要引用之前的交易,这使的篡改旧的交易记录变的极度困难。因为这需要我能够得到所有引用我交易的人的统一配合。

  3. 用 BFT 确认交易,而不是依赖指定见证人,或者引用数。

    在使用 DAG 作为账本需要解决的问题是如何识别双花和影子链攻击。 Byteball 的方案是引入可信见证人机制,两笔交易都被断定合理的情况下,拥有可信见证人多的那笔交易被认定为合理交易。IOTA 是通过算法来选定见证人。NANO 是通过 balance-weighted-voting DPOS 投票来处理双花。hashgraph 是节点根据 BFT 算法投票认定存储记录上的交易是否有效。

    Mixin 防止双花和影子链的方法是只有经过BFT签名过的交易才会被记录到 DAG 上。

  4. 基于 BFT 和 utxo 可以实现1秒确认交易

    客户把交易发给某一个节点,该节点验证过之后先签名,然后将交易在节点群内广播,其他节点收到广播进行检查,检查通过的交易使用自己的私钥签名,然后发还给源节点。 源节点根据BFT 统计节点签名结果就可以验证该交易是否有效,有效的签名结果将发送给所有节点进行持久化同步。根据要求,所有节点在收到持久化同步块的时候,会验证该块内的交易是否具有足够的签名,如果发现有错误的签名,那么将被认为是攻击块。回顾这个流程,我们可以发现 Mixin 节点在验证交易时只验证 utxo 是否有效,不做其他检查,工作量是几乎固定的。耗费时间只和cpu性能,和硬盘读取速度大小有关。还记得我们的假设么?Mixin 就是要用高速高性能服务器。Mixin 测试网的测试结果表明:服务器验证单一交易有效的往返传输时间最大在 300 毫秒,最快在 40 毫秒。所以 50 个节点 1 秒确认交易是完全可以做到的。

结论

通过这4个措施,结合我们的目标和设计前提,可以实现只受物理性能限制的交易系统,提高网速,加大内存,提高CPU性能,提高硬盘读写速度都可以有效的提高整体性能。

去中心化程度/生存能力对比:

Mixin 网络的生存能力弱于比特币网络,无审批机制使得其生存能力高于DPOS机制的高速转账网络。