# 如何理解智能合约

By [Chris Gao](https://paragraph.com/@sec-dao) · 2022-05-12

---

智能合约是一种可以运行在区块链上的代码。

它是以太坊上一种特殊的账户，即智能合约账户；另外还有用户账户。

智能合约账户与用户账户的区别：

### 用户账户：

1、地址：即钱包地址

2、余额：金额，指以太币（针对以太坊）

### 智能合约账户：

1、地址：存放以太币余额，同时也是智能合约的唯一标识；创建后生成的。PS：智能合约创建，是以太坊交易的其中之一；

2、余额

3、状态：智能合约中变量的状态，这个可以更改（通过针对智能合约的函数调用）

4、代码：智能合约的字节码，这个在区块链中是不可改变的。

### 如何调用智能合约

1、转换要调用的函数为hex，一个hash地址，取前几位作为标识；

2、将这个hex作为data放入交易data中

3、交易的to设置为智能合约地址；from为当前调用者。

4、利用私钥将本次的交易数据进行签名；

5、将本笔交易transaction发送到以太坊网络等待记录。

    { 
    from: 调用者的地址
    to: '0x1111....’, //合约地址
    value: 0.0 
    data: ‘0x1111106……………000011111’ 函数标识和参数信息
    }
    

### 智能合约账户的地址

1、针对NFT，如果mint，默认会将金额转到NFT所在的智能合约地址；？

2、针对代币，默认会将购买的以太币转入到代币所在的智能合约地址；？

---

*Originally published on [Chris Gao](https://paragraph.com/@sec-dao/6rutoA8q3FGctKEYty3D)*
