正文
像任何其他的区块链一样,以太坊需要几千人在他们的计算机上运行一个软件来为网络供以动力。网络中的每个节点(计算机)都运行着一个被称为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”字段赋予了以太坊特殊性,它用来记录一次交易中智能合约的创建与执行。任何以太坊的区块链上的区块能够包含三种交易: