# 什么是智能合约

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

## 智能合约是什么

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://andelf.gitbook.io/tron/smart-contract/introduction.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
