上QQ阅读APP看书,第一时间看更新
4.2 智能合约
到底什么是智能合约呢?那就是以太坊上运行的程序,和其他程序一样,它也是由代码和数据组成的。智能合约中的数据也称为“状态”,因为整个区块链就是由所有数据确定的一个状态机。
智能合约的英文是smart contract,和人工智能(AI:Artificial Intelligence)所说的智能没有关系,智能合约的概念最早由尼克·萨博提出,就是将法律条文写成可执行代码,让法律条文的执行中立化,这和区块链上的程序可以不被篡改地执行在理念上不谋而合,因此区块链引入了智能合约这个概念。
以太坊智能合约是“图灵完备”的,因此理论上我们可以用它来编写能做任何事情的程序。
智能合约现在的主要编程语言是Solidity和Vyper,Solidity更为成熟一些,本书中的智能合约代码都是用Solidity编写,通常合约文件的扩展名是.sol。下面就是一个简单的计数器合约。
这段代码有一个类型为uint(无符号整数)名为“counter”的变量。counter变量的内容(值)就是该合约的状态。每当我们调用count()函数时,此智能合约的区块链状态将增加1,这个状态是对任何人都可见的。
图4-2很好地表示了智能合约的内容 。
图4-2 智能合约包含的内容
从本书第5章开始,我们会进一步介绍智能合约开发。