以太坊智能合约是什么?
以太坊是最早提出做智能合约的平台。由于以太坊区块链被普遍接受,因此多数区块链的智能合约采取与以太坊相似的设计。本文将详细介绍以太坊的智能合约:它是什么?它有什么用?
以太坊的智能合约并非现实中常见的合同,而是存在区块链上,可以被触发执行的一段程序代码,这些代码实现了某种预定的规则,是存在于以太坊执行环境中的“自治代理”。以太坊的账户与合约如图 1 所示。
以太坊的智能合约设计很简明。
- 任何人都可以在以太坊区块链上开发智能合约,这些智能合约的代码是存在于以太坊的账户中的,这类存有代码的账户叫合约账户。对应地,由密钥控制的账户可称为外部账户。
- 以太坊的智能合约程序,是在以太坊虚拟机(Ethereum Virtual Machine,EVM)上运行的。
- 合约账户不能自己启动运行自己的智能合约。要运行一个智能合约,需要由外部账户对合约账户发起交易,从而启动其中的代码的执行。
以太坊和比特币的一个重大不同是,前者提供了图灵完备的编程语言(Solidity)和相应的运行环境(EVM)。所谓图灵完备,指的是这个脚本编程语言可以运行所有可能的计算,而比特币的UTXO模型和脚本只能运行部分计算。
以太坊的智能合约有什么用
以太坊的智能合约被广泛应用的一个用途是创建通证,通证对应的多是以太坊区块链之外的资产。
图 2 是一个简明的图示,这是从 Komhar 咨询公司的一个图示重绘而来的。图示是一个典型的 ERC20 通证发行过程:一个项目通过智能合约创建通证,这个通证是实体资产或线上资产的价值表示物。投资者(用户)发起交易,向智能合约转入以太币(ETH),智能合约自动运转,在满足一定规则后,它向投资者账户转入相应数量的通证。
以太坊智能合约的技术与组件
要在以太坊上编写一个智能合约,所涉及的技术和组件有:
- Solidity,以太坊的图灵完备编程语言,用于编写智能合约。
- 虚拟机(Ethereum Virtual Machine,EVM),即智能合约运营的环境。
- 预言机(Oracle),用于链上和链下数据信息的交换。
- Web3.js,与以太坊区块链节点进行交互的JavaScript API。
常见的以太坊通证标准有两种:
- ERC20标准,可互换通证。
- ERC721标准,不可互换通证。
2014 年 12 月 31 日,维塔利克曾画了一张名为“Silos”的图,展示了他理解的以太坊架构(见图1),从下而上分别是:共识、经济、链上与链下服务、互操作、浏览器、分布式应用(DAPPs)。
一般来说,以太坊的体系架构可分为六层,与比特币系统对比,它的重要特点是把合约层从共识机制中分离出来(见图2)。