在 Ethereum 智能合约能够被别人使用前,必须先被部署到区块链上。
从智能合约的代码到使用智能合约,大概包含几个步骤:
- 编写智能合约的代码(通常是用 Solidity 写)
- 编译智能合约的代码变成可在 EVM 上执行的 bytecode(binary code)。同时能够经过编译取得智能合约的 ABI
- 部署智能合约,其实是把 bytecode 存储在链上(经过一个transaction),并取得一个专属于这个合约的地址。
- 若是要写个程序调用这个智能合约,就要把信息发送到这个合约的地址(同样的也是经过一个 transaction)。Ethereum 节点会根据输入的信息,选择要执行合约中的哪个 function 和要输入的参数
而要如何知道這这个智能合约提供哪些 function 以及应该要传入什么样的参数呢?这些信息就是记录在智能合约的 ABI。
小结:API是一个明码编程的接口,而ABI是ABI是定义以太坊合约调用的一种格式。