> For the complete documentation index, see [llms.txt](https://etherzero.gitbook.io/doc/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://etherzero.gitbook.io/doc/shen-du-jie-du-yi-tai-ling-mpos-de-bu-ke-neng-yu-ke-neng.md).

# 深度解读：以太零MPoS的不可能与可能

&#x20;2008年，中本聪发布《比特币：一种点对点的电子现金系统》白皮书，首次提出了区块链概念，并创造了比特币。而后十年，比特币巨大的财富效应，把区块链行业带入了一个飞速发展的时期。期间各种概念和应用层出不穷，其中核心的共识算法也已经从传统的分布式系统中脱离出来，成为了一个独立的、新兴的、并且发展迅速的学术研究领域。

![](/files/-LPA6s74FJNKG6G8ixu1)

&#x20;       然而，在区块链技术飞速发展的今天，也同时饱受着高成本和低效率的诟病。随着EOS主链的上线，尽管其解决了交易低效的问题，但这种通过牺牲去中心化为代价的高效率，常常被行业指责和攻击。效率、安全、去中心化这个不可能三角中，一直被行业所纠结。

&#x20;      以太零团队在研究了目前主流公链技术后，提出了创新性的Masternode+PoS的共识算法，简称为MPoS，同时采用了零交易手续费，社区自治等主流的公链发展方式。

### 以太零项目的主要框架

![](/files/-LR5sRbl_XVDvvM4zfJl)

### 什么是MPoS

&#x20;        以太坊有以Casper为基础的长期PoS目标，但这是一个繁琐的研究，所以我们不能依靠这个来很快的解决今天网络拥堵、到账慢的问题。于是我们提出了MPoS共识算法。这种共识算法的特点是：采用主节点的方案，取代了EOS21个超级节点，降低了节点加入门槛，所有人只要拥有2万个以太零和一台云服务器，便可轻松参加主节点挖矿以及拥有自治社区的投票权。

&#x20;       要解释MPoS算法的实现逻辑得介绍下以太坊的二种传统的出块方法。第一个：把所有的交易和区块从创世块开始一个接一个地连接起来，这种方式已经被证实在以太坊这种复杂的网络中非常耗费计算资源；第二个：是只有授权的机器才拥有出块权，节点之间通过投票的方式来授权或者解除授权，这些额外的投票机制被记录在了区块extra data字段中。采用这种方式降低了网络的出块难度和维护成本，节点只需下载区块头并验证它们的有效性，此后可以从网络上下载一个任意的最近的状态并检查最近的header，这种共识机制目前运行在以太坊的测试网络中名叫Clique。

&#x20;        以太零MPoS共识算法，正是基于第二种想法，即块只能由可信签署人完成。因为各个节点看到的每个块都可以与可信任的见证者列表进行匹配。这里面临的挑战是如何维护一个可以及时更改的授权见证者列表，这一点我们是采用的系统智能合约来保障，每一轮次的维护授权见证者列表的协议包含在区块中，同时在区块头的ExtraData部分，我们将节点的签名放进去。 这将允许任何获得一个区块的节点可以根据授权见证者的名单对其进行验证。 同时它也使得区块头中的矿工地址的字段作废。这也从另外一个角度增加了主节点账户的安全。下图解释了我们的区块存储情况：

![](/files/-LR5sVfBitFnus7s4OOz)

&#x20;       为了保证授权见证者的列表是动态随机变化的，我们采用了区块的Hash值来和主节点ID进行计算并根据计算结果进行排序，这样就保证了见证者列表的不可预估和随机性，也能保证所有节点计算出来的结果是一样的，达成共识的一致。

### 授权策略

&#x20;     只要见证者符合上述规范，他们可以授权和分配他们认为合适的块， 通过采用以下策略减少网络流量和分叉：

&#x20;       计算下一个块的最佳签名时间（父+ BLOCK\_PERIOD）。

若轮到了，等待准确的时间到达，立即签名和广播。

&#x20;        若未轮到，则延迟 rand（SIGNER\_COUNT \* 500ns）的时间签名。 这个的策略将确保当前轮到的见证者对签名和传播相较外转见证者有稍微的优势。

### 面临的挑战

&#x20;       影响以太坊性能的另外一个因素：我们目前的出块时间是1s，需要进一步考虑以太坊EVM在执行智能合约时的状态读取速度，比特币体系中，在比特币网络的交易延迟问题上从来不会考虑比特币脚本的执行时间，主要是因为比特币脚本是非图灵完备的，且非常短，自然实现的功能就非常单一了。而以太坊是采用的账户模型，其本身是一个状态机并支持图灵完备的智能合约，比起比特币脚本来说非常强大，以太坊底层的WorldState 采用MPT(Merkle Patricia tree)记录整个以太坊状态的变迁。以太坊的EVM在执行智能合约时很大一部分耗时是花费在读取WorldState上面。

下面这张图描述了MPT状态树根散列的存储情况:

![](/files/-LR5sZp72wIz6PFFpj3d)

&#x20;        由于这种独特的数据结构会随着记录的交易量的增加，每读取一个特定的值与底层数据库交互次数会以O(n)的次数增加，这些访问不是顺序存储，而是离散随机存储，底层leveldb在面对这样大量的读取时，性能表现十分低下。

而目前以太坊的矿工为了保证出块率，更多是关注于HashRate，但这一块是由GPU来完成，故不太关心上面所讲到的关于智能合约执行时对状态读取的整体性能。解决这个问题，给网络的处理速度和稳定性进一步的提升，将是以太零下一步的目标。

### 以太零与EOS的区别

DPoS对去中心化的伤害太大，为了保障其出块速度，超级节点的参与者必须要付出巨大的成本，这样就隔离了大部分的用户。以太零参考了达世币的Masternode网络，研发出MPoS算法，从性能、去中心化、和安全性这个不可能三角中找到了一个最佳的平衡点。从性能上来说，我们只用了EOS近百分之一的成本，便达到了1400+的TPS，几乎与EOS性能相当，完全能够满足目前DAPP应用的正常运行。以太零极大的降低了加入门槛，让几乎所有人都能参与到区块链这个伟大的实验中来。

### MPoS的安全性

在PoW共识中，算力的过度集中，让51%的算力攻击隐患加重，而在以太零网络，想要发动攻击，必须要控制整个网络51%的主节点，才能达到篡改交易的目的。随着主节点的不断增加，以太零网络的安全性也将进一步提升。目前主节点网络上线仅一天时间，便吸引了超过100个主节点加入，未来，还会增加越来越多的主节点。

### 主节点的收益:

![](/files/-LR5scJK11Us7676WqpR)

主节点为以太零网络的运行做出了贡献，按照共识也应该得到等值的回报。以太零每年会增发1200万个币，每新增一个区块奖励0.45个ETZ。这1200万个币，有75%的币奖励给主节点，即主节点每年可平分的ETZ为900万个，剩余的25%，将留给自治社区使用。所以，越早加入主节点，收益越高。<br>

另外，除去币数量的收益，还可以享受二级市场价格增长带来的增值，随着主节点个数的增加，二级市场的买入需求也会增大，币价随之走高，双重收益，穿越牛熊。
