以太坊协议的史前史2017 年 9 月 14 日
尽管当前以太坊协议背后的理念在这两年已经大致稳定下来了,但以太坊当前的构想和完整形式并非一朝一夕形成的。在以太坊区块链面世之后,其协议经历了一系列重大的演变和决策。本文旨在回顾以太坊协议从开始到发布的演变过程。至于 Geth、cppethereum、pyethereum 以及 EthereumJ 在协议实现的过程中所做的大量工作,以及关于以太坊生态系统的应用和商业历史,将不在本文讨论的范围内。 同样不在讨论范围内的还有关于 Casper 以及分片研究的历史。毫无疑问,我们可以写更多的文章来讨论弗拉德(Vlad)、加文(Gavin)、我自己以及其他人曾经提出过并且被舍弃的各种观点,包括工作量证明的证明、轮辅式多链、超立方体、影子链(可以说是 Plamsa 的前身)、链纤维以及 Casper 的各种迭代版本,还有弗拉德提出的对在共识协议内参与者的激励机制及其性质进行推理的快速演变思想。这些观点背后的故事本身已经复杂到足以另写一篇文章。因此,暂时不讨论它们。 先从最早的版本说起。这个版本最终成了以太坊,但在当时它甚至还不叫以太坊。我在 2013 年 10 月访问以色列的时候,花了很多时间与万事达币团队在一起,甚至还建议他们添加某些功能。再三思考过他们所做的事情以后,我向团队发送了一份 提案,提议让他们的协议变得更加通用,并且能够在无需增加庞大而复杂的功能集的情况下支持更多类型的合约。 需要注意的是,这一版本与以太坊后期更广阔的愿景大相径庭:它纯粹只专注于万事达币当时正在尝试突破的技术,即双方合约。在该合约中,A 方和 B 方共同投入资金,随后双方可以根据合约中指定的某些公式将资金提取出来(例如,赌注内容为「如果 X 发生了,则把所有的资金都给 A;反之,则把所有的资金都给 B」)。实现这个合约的脚本语言不是图灵完备的。 万事达币团队对此印象深刻,但是他们并没有兴趣放弃他们所做的一切事情去朝着这个方向发展,而我越发深信这是一个正确的选择。因此,大约在 12 月,第二个版本 面世了。 在这个版本中,你可以看到完成了大量重构的结果。这些结果很大一部分都是 11 月份我在旧金山的一次长途漫步时想到的。到那时,我意识到智能合约具有完全通用化的潜力。比起脚本语言只能简单地描述双方关系,合约本身就是完成成熟的账户,并且具有持有、发送和接收资产的能力,甚至可以维持永久存储(在当时,永久存储被称为「内存」,并且唯一的临时「内存」是 256 寄存器)。只不过语言从基于栈的虚拟机转变为更符合我意愿的基于寄存器的虚拟机。我对此几乎没有异议,除了它看起来似乎更加复杂。 (责任编辑:admin) |