以太坊紫皮书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
以太坊紫皮书
前言
在过去十年中,诸如Bitcoin、Namecoin和以太坊这些项目充分展现了密码经济共识网络对促成下一代去中心化系统的强大推力,并潜移默化的将开发视野从简单的数据存储和信息服务扩展到任何状态应用的后台管理。基于这个系统,在全球范围内提议和执行的应用,涵盖了全球低价支付系统,金融合同,市场预测,身份注册和现实世界产权,建立更安全的证书管理系统,甚至通过供应链对制造品进行溯源和跟踪管理。
但是,这个系统的技术基础仍然存在严重的效率问题。因为在网络上每个全节点都必须维护整个系统的状态和处理每个交易,整个区块网络效率受限于单个计算节点。现在大部分系统所采用的共识机制,工作量证明(POW),需要消耗大量的电力去运营;基于POW机制的最大的工作区块链Bitcoin,消耗了相当于整个爱尔兰的用电量。
这篇文章为上述问题提供将POS和基于分片证明进行合并的解决方案。POS本身并不是一个新奇的主意,2011年就已经存在,但新的算法展现了实质性的好处,不仅解决了前一系统的缺陷,甚至拥有POW不曾有的属性。
POS可以被想象成一种虚拟挖矿。然而在POW模式下,用户需要花费一定的金钱买一台电脑,然后消耗真实的电力,其随机获得区块链的成本与消耗的电力大致成比例。在POS模式下,用户花费金钱购买系统内的虚拟代币,然后用一个内部协议机制将虚拟代币转换成虚拟电脑,系统模拟随机产生的区块的成本与购买成本大致成
比例,达到了POW同样的出块效果,却不用消耗电力。
分片也并不新颖,在现行的分布式数据库设计中有超过10年的应用,但是到目前为止,研究将其应用在区块链上,仍有颇多限制。基本的路径是解决可扩展的挑战,通过架构中的全球验证程序集合中的节点(在我们的情况下,通过股权结合证明了)被随机分配到特定的“碎片”,其中每个碎片并行处理全局状态的不同部分,从而确保工作是跨节点分布处理,而不是每个节点都重复做。
我们渴望实现以下目标
1.通过POS提升效率:共识机制不应该由挖矿进行保证,从而大大减少电力浪
费,并且可以满足大量和持续发行ETH的需要。
2.快速的出块时间:在不威胁安全的前提下,出块速度达到最大值。
3.经济一致:一旦区块被制作,经过一定时间和事件的处理,大部分的验证者
将‘全提交’那个区块,意味着他们将损失全部的以太币保证金在没有包含这个区块的历史记录(想想1000万价值的以太币),这是非常需要的,因为意味着大部分的碰撞不能通过节点进行传递或者不用破坏掉以太币就可以51%攻击。默认的验证者战略是被设计成保守的他们愿意做出高价值的承
诺,诚信的验证者的风险应该很低。
4.可扩展性:应该不需要跑所有节点就可以运行区块链,例如在这样的情况
下,所有节点包括验证节点只保持一小部分区块的数据碎片,然后用轻客户端技术访问剩余部分的区块。采用方式下,相对单个节点处理能力,区块链可以达到更高的交易处理吞吐量,同时运行区块平台所需的只是大量的普通个人电脑,因此也可以保证去中心化。
5.跨碎片通信:构建这样一类应用并实现应用之间的互操作性在理论上是具有
最大可行性的。该类应用的资源使用达到一个临界点以至超出单个节点的计算能力和带宽限制,并且分别存储在不同节点和处于不同状态。
6.抵抗计算审查:该协议设计为可抵抗大部分的恶意验证节点跨越所有碎片而
发起的联合攻击,使得无效交易不能被打包到区块并成为整个区块链的一部分。在某种程度上,可以通过以太坊1.0的停机问题存在,但是我们可以通过引入保证调度的概念和保证交叉碎片信息使这个机制更加强健。
我们从描述一个算法开始,该算法实现目标1和2,然后在第二个算法实现了目标3,然后在第三个算法中一定程度上实现目标4,5(作为一个限制条件,对一个节点的计算能力的平方大致成比例,如(4)和一个24小时的延迟跨碎片信息,有可能建立更快的消息作为一个层上通过双用途的存款,在例(5)。对目标(4)和(5)的更强级别的满意,(6)也一样,使得重新设计2.1和3.0。
常数
我们设置:
•BLOCK_TIME: 4 seconds (aiming on the less ambitious side to reduce overhead,针对不太有野心的目标去减少开销)
•SKIP_TIME: 8 seconds (aiming on the less ambitious side to reduce overhead针对不太有野心的目标去减少开销)
•EPOCH_LENGTH: 10800 (ie. 12 hours under good circumstances,12小时的良好状态)
•ASYNC_DELAY: 10800 (ie. 12 hours under good circumstances12小时的良好状态)
•CASPER_ADDRESS: 255
•WITHDRAWAL_DELAY: 10000000, ie. 4 months
•GENESIS_TIME: some future timestamp marking the start of the blockchain, say 1500000000
•REWARD_COEFFICIENT: 3 / 1000000000
•MIN_DEPOSIT_SIZE: 32 ether
•MAX_DEPOSIT_SIZE: 131072 ether
•V_LOSS_MAXGROWTH_FACTOR: 32
•FINALITY_REWARD_COEFFICIENT: 0.6 / 1000000000
•FINALITY_REWARD_DECAY_FACTOR: 1000 (ie. 1.1 hours under good circumstances)
•MIN_BET_COEFF: 0.25
•NUM_SHARDS: 80
•VALIDATORS_PER_SHARD: 120
最小的POS
(注意,后续内容假设读者有对以太坊1.0的基本了解)
我们可以创建一个最小可行的PoS算法,没有诸如敲定确定、额外的抗审查以及分片等特性。在地址CASPER_ADDRESS存在一个合约,其主要功能是追踪验证者集合的变化。该合约没有特殊的特权,除了调用该合约是验证区块标头过程中的一部分,而且是包括在创世区块,而不是通过交易被动态添加的。验证者集合初始设置在创世区块中,并可以通过以下函数进行调整: