美文网首页MIXIN链接未来世界Mixin
Mixin 如何在不可能三角的限制下设计一个高并发和快速确认的闪

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

作者: myrual | 来源:发表于2019-01-23 11:24 被阅读3次

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

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

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机制的高速转账网络。

相关文章

  • Mixin 如何在不可能三角的限制下设计一个高并发和快速确认的闪

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

  • Chrome下,能否通过打开指向同一个域名的多个标签页,突破最大

    和小伙伴聊天的时候聊到chrome浏览器下,一个页面最大并发请求限制只有6个的问题,突然灵光一闪。一个页面限制最大...

  • 如何设计一个高并发系统

    整理了设计高并发系统的15个锦囊,相信大家看完会有帮助的。 如何理解高并发系统 所谓设计高并发系统,就是设计一个系...

  • 高并发架构设计

    面对高并发你怎么处理? 如何设计一个高并发高可用系统? 如何限流?工作中是怎么做的?说一下具体实现? 如何熔断?熔...

  • JAVA-每日一面 2022-02-14

    接⼝限流⽅案 限制 总并发数(⽐如 数据库连接池、线程池) 限制 瞬时并发数(如 nginx 的 limit_co...

  • 不可能三角

    在我们的投资理财中,存在一个不可能三角:低风险、高流动性和高收益三个要素不会同时存在。不可能三角告诉我们最重要的思...

  • UI快速设计和确认

    这是山猫的第14篇原创 大家好,原型设计确认后,接下来就是UI设计了,本节课给大家介绍如何快速的做UI设计和确认。...

  • 高并发高可用系统以及面试分析

    1.高并发,高可用系统的一些思考 高并发依赖于场景和逻辑 不一定每个场景都会产生高并发,不要为了高并发而盲目的设计...

  • 幂等性-库存扣减

    如何在高并发场景下,库存扣减可能出现的数据不一致性问题。 示例: 如两个线程同时查询到库存num=5,其中一个线程...

  • RabbitMQ base 01

    RabbitMQ特点 基于erlang语言开发,因此也具有高可用、高并发的优点。 健壮、稳定。 消息确认机制和持久...

网友评论

    本文标题:Mixin 如何在不可能三角的限制下设计一个高并发和快速确认的闪

    本文链接:https://www.haomeiwen.com/subject/pvrjjqtx.html