虽然当前以太坊协议背后的思想已经很大程度上稳定了两年了,但是以太坊当前的构想和形式并不是一次性完成的。在区块链推出之前,该协议经历了一些重大的演变和设计决策。本文的目的是讨论协议从开始到发布的演变过程;但是我不会一一提及例如Geth,cppethereum,pyethereum以及EthereumJ这些在协议的实现上做出的无数工作以及以太坊生态系统中应用和企业的历史。
同样在本文中不会提及的还有Casper以及分片研究的历史。我们当然可以写更多的博客来讨论Vlad,Gavin,我自己以及其他人提出并最终舍弃的各种各样的观点,其中包括“工作量证明之证明”,轮辐式链(hub-and-spoke chains), “hypercubes”, 影链(shadow chains)(可以说是Plasma的前身),链纤维( chain fibers),以及Casper的各种迭代,还有Vlad的在推理共识协议的激励机制及其性质的快速演变思想。在一篇博客中讨论这些将是一个太过复杂的事情,所以我们在此就不进一步讨论这些。
让我们从最早的版本开始,这个版本最终成为了以太坊但是当时它甚至还不叫以太坊。当我在2013年10月访问以色列的时候,我花了很多时间与Mastercoin团队在一起,甚至还给他们推荐了一些功能。在花了一些时间思考他们所做的事情后,我向该团队提出了一个建议,那就是让他们的协议更加的通用化,能够支持更多类型的合同而不需要增加同样庞大而复杂的功能集:
https://web.archive.org/web/20150627031414/http://vbuterin.com/ultimatescripting.html
请注意,该版本与之后范围更广的以太坊版本大不相同:它单纯地专注于Mastercoin当时尝试的方向,即双方合约,该合约是指A方和B方都会投入资金,之后根据合同中规定的一些公式他们可以将钱取出来(例如,赌注内容为“如果X发生了,则所有的钱都给A,反之都给B”)。该脚本语言不是图灵完备的。 Mastercoin 团队对此印象深刻,但是他们并没有兴趣放弃他们所作的一切事情并朝着这个方向发展,我越发觉得这是一个正确的选择。接着,大约在12月,我更新了第二个版本: https://web.archive.org/web/20131219030753/http://vitalik.ca/ethereum.html