现在,我们已经讨论了ethereum的内容,让我们深入了解一下这个平台在底层的功能。
考虑一下在线笔记本应用程序在“什么是Ethereum?”
使用ethereum,这个应用程序不需要一个实体来存储和控制它的数据。为了做到这一点,ethereum大量借鉴了比特币的协议和区块链的设计,但它调整了它来支持超出金钱的应用。
然而,Ethereum的目标是抽象出比特币的设计,这样开发者就可以创建应用程序或协议,这些应用程序或协议具有额外的步骤、新的所有权规则、可供选择的交易格式或不同的传输方式。
ethereum的“Turing-complete”编程语言的目标是允许开发人员编写更多的程序,其中区块链事务可以管理和自动化特定的结果。
这种灵活性可能是ethereum的主要创新,正如指南中所解释的“以太的智能合同是如何工作的”。
Ethereum区块链
ethereum区块链的结构与比特币非常相似,因为它是整个交易历史的共享记录。网络上的每个节点都存储了这段历史的副本。
与ethereum的最大区别在于,它的节点存储了每个智能契约的最新状态,除了所有的以太交易。(这比描述的要复杂得多,但是下面的文字可以帮助你把脚弄湿。)
对于每个ethereum应用程序,网络需要跟踪“状态”,或所有这些应用程序的当前信息,包括每个用户的余额、所有智能合同代码以及它们都存储在哪里。
比特币使用未经处理的交易输出来追踪谁拥有多少比特币。
虽然听起来更复杂,但这个想法相当简单。每次比特币交易完成时,网络就会“打破”总金额,就好像它是纸币一样,以某种方式发行比特币,使数据的行为与实物硬币或变化类似。
为了进行未来的交易,比特币网络必须把你所有的改变都加起来,这些改变被归类为“花费”或“未使用”。
另一方面,Ethereum使用帐户。
就像银行账户基金一样,以太令牌出现在钱包里,可以被移植到另一个账户上。资金总是在某个地方,但却没有你所说的持续的关系。
什么是ethereum虚拟机?
使用ethereum,每当一个程序被使用时,一个由数千台计算机组成的网络就会处理它。
用智能契约特定编程语言编写的契约被编译成“字节码”,该特性被称为“ethereum virtual machine”(EVM)可以读取和执行。
所有节点使用它们的EVMs执行此契约。
请记住,网络中的每个节点都保存着该网络的事务和智能合同历史的副本,并跟踪当前的“状态”。每当用户执行某个操作时,网络上的所有节点都需要达成协议,该更改发生了。
这里的目标是让矿商和节点网络负起责任,将转移从国家转移到国家,而不是像贝宝或银行这样的权威机构。比特币矿商证实,比特币的所有权从一个人转移到了另一个人。EVM执行与开发人员最初编程的任何规则的契约。
在EVM上的实际计算是通过基于堆栈的字节码语言(机器可以读取的1和0)来实现的,但是开发人员可以用高级语言编写智能合同,例如Solidity和蟒蛇,这样便于人们阅读和编写。
就像我们的指南“Ethereum Mining Works”中所解释的那样,矿工是防止不良行为的人——比如确保没有人会不止一次地花费他们的钱,并且拒绝那些没有得到报酬的智能合同。
在那里有几千个ethereum节点,每个节点都在编译和执行相同的代码。
但是,你可能会想,这难道不比一个普通的计算昂贵得多吗?是的,它是。这就是为什么网络只能用于特定的用例。
官方的ethereum dev教程承认这种低效率,说明:
“粗略地说,使用一种好的启发式方法是,你将无法在EVM上做任何事情,而这在1999年的智能手机上是无法做到的。”