Loading

以太坊智能合约以及以太坊虚拟机EVM

2021-02-07 16:34:40 32

以太坊为区块链系统添加了“智能合约”的实现。此处我们仅对以太坊本身所提供的智能合约进行简单的介绍。

相比于比特币所提供的极为受限的交易脚本语言,以太坊所提供的智能合约极大增强了区块链的功能,同时也为区块链赋予了可编程性。通过以太坊平台提供的智能合约编程语言和相应的对智能合约进行解释执行的以太坊虚拟机,区块链开发者可以直接在以太坊平台上进行各种可能的操作的开发,赋予以太坊区块链各种方向的应用。

ethereum.jpg

我们可以将以太坊视为一个可以实现去中心化应用的平台,其核心是一套用于运行以太坊的节点所要执行的智能合约进行编程的语言,及相应地在保证节点运行其他服务的环境不受影响的条件下,对所编写的智能合约语言进行解释执行的虚拟机。用户通过调用以太坊提供的接口,对自己所希望部署的去中心化应用进行编写。在调用时,通过共识协议在所有以太坊节点间,同将要执行的智能合约达成一致,进而在每个节点的EVM上执行。


具体地可以将智能合约理解为代码和数据的集合。以太坊所提供的智能合约编程语言是图灵完备的,亦即以太坊的智能合约可以做到所有能够用图灵机做到的事情,类似于常见的高级编程语言,如C ++、GoLang等。以太坊提供了几套编写智能合约的高级语言,如Soldity、Viper. Serpent 及LLL等,其中目前较为流行的是Solidity 及Viper。


以太坊默认的智能合约编程语言是Solidity,该语言编写的智能合约对应的文件扩展名为. sol,目前有许多可用的在线Solidity集成开发环境(IDE),如Browser-SolidityWebIDE等,用户可以很方便地在其上编写并编译自己所需的智能合约代码。用户通过这些高级语言编写出较为复杂的智能合约代码后,对应的代码进而被编译为可以在EVM上执行的EVM字节码,这些字节码再被上传至以太坊区块链从而使所有节点