什么是智能合约

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

智能合约是什么

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

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

智能合约是如何被执行的

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

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

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

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

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

智能合约为什么会被执行

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

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

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

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

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

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