Hi 游客

更多精彩,请登录!

比特池塘 区块链技术 正文

一文回顾:以太坊协议的发展史

李悔之2015
2365 0 0
虽然当前以太坊协议背后的思想已经很大程度上稳定了两年了,但是以太坊当前的构想和形式并不是一次性完成的。在区块链推出之前,该协议经历了一些重大的演变和设计决策。本文的目的是讨论协议从开始到发布的演变过程;但是我不会一一提及例如Geth,cppethereum,pyethereum以及EthereumJ这些在协议的实现上做出的无数工作以及以太坊生态系统中应用和企业的历史。
8 T# t8 c) O6 o4 h, u: P) A4 x; v( f" @, R1 w
    同样在本文中不会提及的还有Casper以及分片研究的历史。我们当然可以写更多的博客来讨论Vlad,Gavin,我自己以及其他人提出并最终舍弃的各种各样的观点,其中包括“工作量证明之证明”,轮辐式链(hub-and-spokechains),“hypercubes”,影链(shadowchains)(可以说是Plasma的前身),链纤维(chainfibers),以及Casper的各种迭代,还有Vlad的在推理共识协议的激励机制及其性质的快速演变思想。在一篇博客中讨论这些将是一个太过复杂的事情,所以我们在此就不进一步讨论这些。( O, [) \" c  O$ }" u
0 l) u7 l4 u# u+ Z( M
    让我们从最早的版本开始,这个版本最终成为了以太坊但是当时它甚至还不叫以太坊。当我在2013年10月访问以色列的时候,我花了很多时间与Mastercoin团队在一起,甚至还给他们推荐了一些功能。在花了一些时间思考他们所做的事情后,我向该团队提出了一个建议,那就是让他们的协议更加的通用化,能够支持更多类型的合同而不需要增加同样庞大而复杂的功能集:* Q0 z' I2 B& \% P1 L4 {. A
& b* t7 J  C; E+ q4 }
    https://web.archive.org/web/2015 ... imatescripting.html/ ]& c! m. [/ `" O; }
* n4 c" d' U) j% m9 a7 |! _
    请注意,该版本与之后范围更广的以太坊版本大不相同:它单纯地专注于Mastercoin当时尝试的方向,即双方合约,该合约是指A方和B方都会投入资金,之后根据合同中规定的一些公式他们可以将钱取出来(例如,赌注内容为“如果X发生了,则所有的钱都给A,反之都给B”)。该脚本语言不是图灵完备的。/ P% Q6 Y" u" L. @

$ ^, ?; U6 \7 C! G  ?    Mastercoin团队对此印象深刻,但是他们并没有兴趣放弃他们所作的一切事情并朝着这个方向发展,我越发觉得这是一个正确的选择。接着,大约在12月,我更新了第二个版本:
- d. e6 a: Q; N! V; x
9 b: n7 _& m+ v: m. U# ]    https://web.archive.org/web/2013 ... ik.ca/ethereum.html
& n1 ~, }, l4 y# ?* P! A/ g
4 ^+ o, s. W% c7 D0 i    在这里,你可以看到进行了大量重构的结果,这很大程度上是11月份我在旧金山一次散步的结果,那时,我意识到智能合约有完全通用化的潜力。合同本身就是完全成熟的账户而不是像脚本语言那样只是单纯的描述双方关系的方式,合同具有持有,发送和接收资产的能力,甚至可以保持永久性储存(当时,永久性储存被称作“内存”,并且这仅有的临时“内存”是256个寄存器)。这种语言从基于堆栈的机器转变成自我意志为基础的基于注册的机器;我对此几乎没有异议,除了它看起来似乎更加复杂。
: b2 H( e9 ^& t' K+ J+ b1 j7 k. W5 s
    此外,可以注意到,该版本还有一个内置的收费机制:
$ e' z* X' B  [# L
2 R' M0 Y; D* k& `    在这个阶段,以太(Ether)按照字面意思是气;在每一个计算步骤之后,一个交易调用的合约的余额将会减少一些,如果合约余额耗尽,则停止执行。请注意,这个“接收者支付”机制意味着合约本身要求发送者必须向合约支付一笔费用,否则立即退出执行;该协议分配了16个免费执行步骤的许可,以允许合约拒绝不支付费用的交易。
( M  e- ]5 X1 ~; E: J5 ]; D* m0 a
    以上所述阶段的以太坊协议完全是由我自己创造的。然而,从这里开始,新的参与者开始加入。到目前为止,协议方面最突出的是GavinWood,他2013年12月在about.me用站内私信开始与我联系。
; Z1 e! W7 _' B6 g+ l5 c
6 X! b+ U6 d" R( A1 G* S    JeffreyWilcke,Go客户端(那时被称作“ethereal”)的首席开发者也在同一时期联系了我并开始进行编程。他的贡献更多的是在客户端开发方面而不是协议研究方面。
* Y+ h1 a1 G& U9 n4 k. K$ v  s9 b. _
    “嗨Jeremy,很高兴看到你对以太坊感兴趣”2 w: T) s% F1 C. y

- u" A" \+ T& @) r9 z# P    ) h' [' }+ _. [. U
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

李悔之2015 初中生
  • 粉丝

    1

  • 关注

    0

  • 主题

    13