# 什么是智能合约

自 Ethereum 以来，智能合约和区块链就常常被一同提起，也成为区块链 2.0 的核心。 通常意义的区块链 2.0 即可编程金融，其中的可编程，就体现在智能合约。也有人将之称作可编程货币(Programmable Money).

## 智能合约是什么

广义上，智能合约是以计算机程序代码定义的，由某种电子记账系统自动执行的协议。

而在区块链加密货币领域，智能合约特指定义在区块链上的应用程序。 它们通过区块链的合约调用功能或某种触发条件执行，并将执行结果反馈到区块链上。

## 智能合约是如何被执行的

区块链的运行，离不开矿工(或是超级代表，超级节点等)为其验证打包交易，传统意义上的交易，单指代币转账。 而在区块链 2.0 背景下，交易是广义的，可以是任意被各矿工认可的数据或操作，通过共识，进入区块链，并影响到区块链的状态。

由此引出智能合约相关的交易，包括智能合约的创建，触发调用，销毁等等。

合约代码在完成编写后，由作者将其发布到区块链上，即将合约代码保存在区块链。同时可能初始化若干合约状态。

用户调用合约某一功能时，交易打包者会通过智能合约虚拟机去加载合约的逻辑代码，执行相关功能调用，完成对链上状态的修改或查询。

相关虚拟机内容，参考: TODO.

## 智能合约为什么会被执行

离开虚拟机的智能合约，其实就像离开了 CPU 的计算机程序，只是一段无意义的二进制。

智能合约的执行，离不开矿工打包交易。

对于联盟链或私有链来说，节点是有义务去打包执行交易的，无论节点从中有没有获利。

而对于公链平台来说，节点通过打包交易，执行合约代码，获得矿工费或出块奖励。而由于其他节点的监督，合约执行的正确性得以保证。

由此，在区块链平台上，智能合约相关交易被顺利执行。

个人观点：区块链公链的成熟运行离不开经济体系的激励。联盟链则基于组织或个人的功能需求。
