以太坊智能合约实战篇-创建并运行一个最简单的转账合约
在比特币网络中的每一笔转账交易都可以被记录,而且无法篡改,这是比特币最核心也是最具价值的特性。
受比特币的启发,以太坊创新性的提出了智能合约,将单纯的转账交易泛化为可以支持复杂规则的合约,让每笔合约的执行都被记录在以太坊网络中,而且合约的执行结果无法被篡改,这就是以太坊相对于比特币的核心特点,也是质的飞跃。
智能合约的作用可以说是无穷无尽,其中之一就是发行虚拟货币。下面,我们将一步一步演示如何使用智能合约发布虚拟货币。希望读者可以和我一起思考,以太坊从哪里来,又到哪里去的这个深刻的问题。
- 初始化项目
在发行虚拟货币前,需要先给它取一个漂亮的名字。最近元宇宙(metaverse
)的概念比较火,拾人牙慧,不如就称它为metacoin
。
使用下面的命令初始化项目
$ mkdir metacoin
$ cd metacoin
$ truffle init
初始化完成以后,metacoin文件夹中将出现三个文件夹和一个配置文件:
-
\contracts
文件夹用来存放智能合约源代码,可以看到里面已经有一个sol
文件。 -
\migrations
文件夹用来存放部署智能合约的脚本,可以看到里面已经有一个js
文件。 -
\test
用来存放测试智能合约的代码,支持js
与sol
测试。 -
truffle-config.js
是Truffle
的配置文件,在这里可以配置智能合约需要部署的以太坊网络的位置。
构建完成后的文件夹结构如下图所示:
- 创建合约
下面,我们创建一个合约和针对这个合约的测试
$ truffle create contract Metacoin
$ truffle create contract MetacoinTest
此时,再来查看目录结构,新增了两个文件,Metaconin.sol
表示的就是合约文件、metacoin_test.js
表示的就是合约的测试文件:
正如下面这段代码所示,使用truffle
创建的合约文件Metacoin.sol
中,除了必要的声明,并没有包含任何合约逻辑,真正的合约逻辑,还需要我们自己来编写。
// SPDX-License-Identifier: MIT
pragma solidity >=0.4.22 <0.9.0;
contract Metacoin {
constructor() public {
}
}
下面是一个可以运行的最简单的合约,这个合约包含一个构造函数和两个普通函数,构造函数用来给合约创建地址初始化10000
枚Metacoin
代币,sendConin
函数用来发送代币,getBalance
函数用来参数提供账户地址中代