查看原文
其他

以太坊是如何运作的——零基础了解以太坊(五)

闪电 黄世亮 闪电HSL 2019-05-08

第0章 引言

我们介绍了以太坊是什么,现在让我们继续深入了解,这个平台的底层是如何运作的。


第1章 以太坊是如何运作的

请回想一下我们在《什么是以太坊》一文里笔记本APP的例子。

使用以太坊,这样的APP不需要某个实体来存储和控制它的数据。以太坊为了实现这点,大量借鉴了比特币的协议和区块链设计,但是以太坊进行了调整,它不仅可以作为货币,还支持(开发)应用程序。

以太坊的目的是提取出比特币的设计,让开发者可以创建具有额外步骤、新所有权规则、替代交易格式或是不同状态转换方式的应用程序或协议。

以太坊“图灵完备的”编程语言的目的是让开发者可以编写更多的程序,在这些程序中区块链交易可以管理和自动得出特定的结果。

这样的灵活性也许是以太坊的主要创新。

以太坊区块链

以太坊区块链的结构和比特币非常相似,区块链的整个交易历史都是共享的。网络上所有节点都可以保存一份交易历史记录的副本。

以太坊最大的不同在于,它的节点除了存储所有以太币的交易信息外,还会存储所有智能合约的最新状态。(实际要比这复杂得多,不过下面我们会带你入门)。

网络需要保持记录所有以太坊应用的“状态”或当前信息,包括所有用户的余额、智能合约代码以及数据存放在什么地方。

比特币使用未花费输出来记录用户拥有多少比特币。

虽然这个概念听起来好像更为复杂,但其实很简单。每一次一笔比特币交易完成,网络就会像使用纸币一样“破开”总金额,而打回给发送者的比特币就类似于找零。

为了以后创建交易,比特币网络必须把你所有的零钱都加起来,统归为”花费的”或“未花费的”。

另外一方面,以太坊使用的是账户制。

像银行账户里的资金一样,以太币存放在钱包里并且可以转到另外一个账户(这里是比喻)。资金总是在某个账户里,但是不存像与银行之间的持续关系。

什么是以太坊虚拟机?

以太坊网络上,一个程序每次被使用的时候都是一个由数千台计算机组成的网络在运行处理。

智能合约由一种智能合约专用的编程语言编译成“字节码”,可以通过以太坊虚拟机(EVM)读取和执行。

所有节点都是用其EVM执行合约。

记住,网络所有节点除了追踪当前的“状态”外,都会保存一份网络交易和智能合约历史记录的副本。每次用户执行某些操作的时候,网络所有节点都需要在更改上达成一致。

网络矿工和节点负责完成从状态到状态的转换,而不是像PayPal或银行这样的权威机构。比特币矿工负责验证比特币所有权从一个人到另外一个人的转换。无论最初开发者编写的规则是什么,EVM都会按照规则执行合约。

EVM的实际计算是通过基于栈的字节码语言(机器可以读取的0和1)实现,但是开发者也可以使用像Solidity和Serpent这样更易于人类读取和编写的高级语言编写智能合约。

矿工负责防止出现不良行为,例如防止有人同一笔资金花费两次,以及拒绝执行已经完成支付的智能合约。

现在网络有几千个以太坊节点,所有节点都在编译和执行相同的代码。

但是,你可能会想:成本岂不是比普通的计算高出很多?是,确实是。这就是为什么这个网络可能只会被用于特定的使用场景。

官方的以太坊开发指南里坦承存在低效的问题:

大致上可以这么说,你将在EVM上做不了任何事,就像1999年你没法在智能手机上做什么一样。

作者:Alyssa Hertig

图片来源:Maria Kuznetsov

原文链接:

https://www.coindesk.com/information/how-ethereum-works


第2章 结束语

只要一个一个概念搭建,就能建立起对以太坊系统的全面认识。



今天卖Ledger硬件钱包

我开了一个周边产品的网店,欢迎捧场




(欢迎加我微信号:HSL13116885 加入我的知识星球)







另请阅读:比特币和以太坊的记账方式——UTXO和账户余额


上一篇:什么是以太币——零基础了解以太坊(三)


-----点左下角,阅读好文-----

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存