了解为什么以太币不仅仅只是另一种加密货币的终极指南。
“比特币”和“以太坊”是常常结对出现的术语,实际上他们之间有着天壤之别。 两者唯一的共同点就是他们均为基于区块链运作的加密资产。
相比于仅仅是单纯的加密货币,比如比特币,以太坊还有着一些其他的功能性,使得它某种意义上成为一个巨大的去中心化式计算机。
要了解以太坊,就必须明白区块链是怎么回事。 如果你已经对它非常熟悉,或已看过我的《区块链终极指南》,请直接跳转下一小节。
注:《区块链终极指南》https://hackernoon.com/wtf-is-the-blockchain-1da89ba19348
什么是区块链?
一个区块链,简单地说,就是一个数据库。 它是一个不断增长地含有特定种类数据的数据库,具有非常显著的特性:
- 一旦数据存储在数据库中,它就永远不会被修改或删除。 区块链上的每一个记录都是永久保存的。
- 不是一个人或一个组织机构在维护这个数据库,而是成千上万的人在做这事,每一个人都有自己的数据库副本。
要想了解人们是如何能够将其拥有的数据库副本与其他人保持同步的,我们先来想象一下十个人在网络中的情形。 每个人面前都有一个空白文件夹和一个空白页面。 每当网络中有人做了重要的事情,比如转账汇款,网络中的每个人都会收到公告。
每个人都在他们的页面上记录这些公告,直到页面填满。当页面被填满后,每个人都必须通过解决一个数学难题来加密页面。 解决这个数学难题是为了确保每个人的页面都具有相同的内容,而且永远不会被修改。 谁先完成这个过程,谁就会获得一些加密货币作为奖励。
一旦页面被密封加密,该页面将会被添加到文件夹中,一个新的页面会随之产生,该过程将循环往复永远持续。
区块链
随着时间的流逝,包含重要记录(交易信息)的这些页面(区块)将不断地被添加到文件夹中(链),从而形成数据库(区块链)。
区块链存储的究竟是什么?
任何种类的数据都是可以用区块链来存储的,而区块链的价值也正是由其所存储的数据的类型来赋予的。 比特币的区块链就是用于存储金融交易记录的,因此其成为了类似于像美元或英镑这样的货币。 比特币拥有和美元完全一样的功能和特性,而以太坊则不同。
以太坊不仅仅是一种像类似美元、英镑或者比特币这样的货币。相较于成为一种货币,以太坊有着更高的目标使命。 以太坊如同下图:
以太坊基本上本质上就是一台巨大的计算机! 然而,这是一个非常慢的计算机——比当今的普通电脑慢五到一百倍——而且非常昂贵。 “以太坊计算机”与90年代罕见的智能手机的能力相同, 大致只能做一些非常微不足道的事情。
这听起来并不是会有大作为的样子,为什么以太坊的热度会这么高? 这是一个很好的问题。 以太坊正在如暴风般席卷世界的原因是,它是一种可分布式部署在全球的完全去中心化的计算机。 了解以太坊区块链的运行原理将会揭示它如何作为一个世界级计算机来运行。
以太坊是如何运行的?
像任何其他的区块链一样,以太坊需要几千人在他们的计算机上运行一个软件来为网络供以动力。网络中的每个节点(计算机)都运行着一个被称为Ethereum Virtual Machine(EVM)的脚本语言。 EVM可以被看做是一个操作系统,它可以理解并执行用以太坊特定编程语言编写的软件。而 这些用Ethereum Virtual Machine执行的软件或应用程序则被称为“智能合同”(smart contracts)。
不管你要在这台世界级计算机上做什么,你都需要付出一定的报酬。 不过,你并不需要用像美元或英镑这样的常规货币来支付,一切都必须以一种网络的本地加密货币来支付,称为ether(以太币)。 Ether(以太币)和比特币几乎是完全一样的性能,除了它也可以用来支付执行以太坊的智能合同(smart contracts)。
无论是一个人还是一个智能合同 (smart contracts),在以太坊上都被看作是用户。 人类用户可以做什么,智能合同(smart contracts)也可以做同样的事情,两者都可以像流通其他货币一样支付和接收以太币(ether)。
但与人类用户不同的是,智能合同还可以执行预定义的计算机程序,在被触发时执行各种操作。 为了理解智能合同的威力,我们来举一个例子。
智能合同的威力
想象一下,我们来打赌明天的天气。 我押明天是晴天而你押明天下雨,输家必须给赢家100美金。 我们如何来完成这个赌约,并确保输家将履行自己的承诺呢? 我可以想到三种方法:
1. 相互信任
最简单的做法就是选择相互信任。 如果我们长期以来一直是朋友,相互信任是相当容易的。 我知道你住在哪里,而你知道有关我的任何糗事。 但如果我们之间完全是陌生人,那么事情就会变得比较困难。 你没有理由相信我,而我也没有理由去相信你。
2. 签一个法律协议
另一个貌似可行的方法是将我们的赌注制定为一个法律协议,双方都要签署这个协议。协议详细规定了关于我们赌注的各项条款,包括如果输家违反协议将会发生什么。
这个协议使我们有法律义务去向赢家支付赌金,但它其实不具有任何实际意义,因为使用法律手段去制定这个协议的成本,将比这个赌注本身贵得多。
3.寻求我们共同朋友的帮助
我们可以寻求一位我们都十分信任的朋友,分别给她/他100美金来保管。第二天,她/他根据天气结果给胜者200美金。很简单吧,除非出现意外,比如这位被信任的朋友卷款逃跑。
目前我们有三种不同的方法来完成赌约,每一种选项都有它的缺点。因为我们互为陌生人,我们无法相信彼此;强制达成一个法律协议太过昂贵以至于难以实行;寻求共同朋友的帮助再次引发信任问题。
以太坊的智能合约能够解决这类问题。智能合约就像共同信任的朋友,只不过写在代码中。以太坊允许我们开发一款向双方收取价值100美金的以太币的软件,第二天通过开源天气API来查询天气结果,将价值200美金的以太币都转交给胜者。
一旦智能合约被签署,它无论如何都不可能被修改。因此,你可以确保它在任何情况下被执行,无论合约发出了什么指令。
但是智能合约如何被执行呢?它如何关联区块链呢?
智能合约如何与区块链关联?
当智能合约被执行时,它会将执行信息作为一次交易记录在区块上。从一个很高的层面来看,在以太坊的区块链上的一次交易执行如下:
这些字段除了一个地方外,都较好理解。“data”字段赋予了以太坊特殊性,它用来记录一次交易中智能合约的创建与执行。任何以太坊的区块链上的区块能够包含三种交易:
1.在一个用户和另一个用户之间常见的转移交易
这些都是网络中常见的类似比特币的交易。如果你直接将以太币发给你的朋友,那么“data”字段将置空。
2. 将以太币从一个账户发送出来,但目标账户为空
当没有目标账户的交易进行时,意味着交易的目的是使用“data”字段中的内容在网络中创建一个新的智能合约。“data”字段包含的软件代码使它看起来就像网络中的另一个用户 。
3. 将以太币从一个账户发送到一份智能合约
每当一个账户用户(或一个智能合约)想要执行一份智能合约时,他/她/它就需要与智能合约进行交易,并在“数据”字段中存储执行指令。
就像其他的区块链,无论上文提及的三种交易在任何时间发生,都会向全网发出通知,每个账户用户都会记下。除了注意到记录,每个节点都会执行指定的智能合约,使得EVM状态与网络其他节点保持同步。
每个节点执行软件中的一部分,从而使整个网络充当一个巨大的(但速度较慢)的去中心化计算机。为了永久化,每一次执行都会存储到区块链中。
等会儿,我听说听到有个词叫GAS,这是什么?
我刚告诉你执行智能合约的账户必须付一定的费用。它付给那些消耗了内存、存储空间、计算能力和电力来执行智能合约的节点。
为了计算智能合约的费用,每一条语句都有一个指定的费用。举例来说,如果你执行的这条语句使用了节点的内存,这种语句就有一个特定的费用。如果你执行的语句使用那个节点的磁盘空间,这种语句就有附加的具体的费用。这种费用就叫做Gas。最终,Gas通过一定的汇率转变成以太币。
当你执行智能合约,你必须预定义要消耗的Gas的最大值。当Gas达到这个值时,执行将被终止。这是为了避免智能合约中出现无限循环,使得程序重复一个语句集合时而不再往下执行。
这种情况往往是因为编程者粗心大意。每一次重复消耗一些指定的Gas,这使得无限循环成为有限。因为一个编程者的失误而使得节点执行停滞没有任何意义。Gas的概念解决了这个问题。
同学们,这就是以太坊
以太坊不仅仅用于交易加密货币,它真正的价值存在于它的使命。以太坊的使命是让用户能够使用包含数千个动力节点的世界级去中心化计算机。
当然,由于每一个简单的语句都被网络中的每一个节点执行,去中心化、分布式电脑计算机会变得缓慢而昂贵。但是慢的反面是什么?是更快的,但是中央化控制的服务器。
为了享受使用中央计算机带来的较低消耗,我们给予它们控制我们的权利。如果中央计算机(服务器)宕机或者被攻击,它将连累所有连接的用户。而一台去中心化的计算机只有在所有节点都被攻克后才会宕机,所以它总是能工作的。只要有网络,就有以太坊。
本文作者:Mohit Mamoria
来源:51CTO