编译代币合约
接着前面的内容,使用Remix来编译我们的代币合约。
- 启动remix服务
- 在浏览器中打开remix IDE
- 然后创建我们的两个智能合约文件
- 编译文件(Start Compile)
我这里把自动编译选项关闭了,需要手动点编译按钮,在ERC20.sol为当前页签下进行,编译器会自动找到ERC20Interface.sol文件。因为有继承关系。
现在看起来是这样的。
右边有一些黄色的警告,是编译器给出的一些语法和格式上的建议,这里我们暂时先不管。
部署代币合约
在Run -> Create 按钮是部署合约,这里我们使用默认的JavaScript VM
环境。系统给我们默认生成了5个账户,每个账户有100(ether)以太币。这里要分清楚两个概念,我们发行的是代币(token),这个代币只存在于我们的智能合约中,与以太坊的以太币是不一样的。
部署完合约后,我们发现当前账户的以太币余额变少了,这是因为部署合约是要花费以太币的。
测试代币合约
我们现在开始测试已部署的代币合约,浅蓝色的按钮代表是不需要花费以太币的访问(在函数上声明为view或者pure的),后方有输入框的是函数需要给出参数的。
调用函数后,会立即给出调用结果,返回结果中包含返回参数名,参数类型,返回值。
账户(Account)栏显示的是当前账户,后面有一个复制按钮可以把账户复制到剪切板,测试过程中注意当前账户,别弄错了。
下面的测试过程,为了阅读体验,我省略了地址中间部分,实际参数不能省略。
"0xca3...733c"
账户是合约的发布账户,初始拥有10000代币。其它账户初始余额都为0。
测试case,需要按顺序执行:
-
decimals
,返回3,小数位为3 -
totalSupply
,返回10000,总供给为10000 -
symbol
,返回MYT,代币标识符 -
name
,返回MyToken,代币名称 -
allowance "0xca3...733c","0x147...160c"
,查询帐户0xca3...733c
对账户0x147...160c
的配额。返回0,正确的,我们还没做任何配额。 -
balanceOf "0xca3...733c"
,返回为10000,正确的。因为我们在构造器函数中,将总供给都分给了合约的发布账号。 -
transfer "0x147...160c",1000
, 从当前账户发送1000代币到0x147...160c
。 -
balanceOf "0xca3...733c"
,我们再次查询合约发布账户的余额,返回9000。 -
balanceOf "0x147...160c"
,返回1000,刚刚给这个账户转入了1000代币。 -
approve "0x147...160c",2000
,当前账户(合约发布账户),给0x147...160c
批准2000代币的配额。 -
allowance "0xca3...733c","0x147...160c"
,我们再次查询配额,现在返回值为2000,说明新的配额已经生效。 -
transferFrom "0xca3...733c","0x4b0...d2db",500
(注意当前账户设置是"0x147...160c"
),"0x147...160c"
账户把0xca3...733c
的500代币发送到0x4b0...d2db
,从配额中扣除。 -
allowance "0xca3...733c","0x147...160c"
,剩余配额,现在是1500。 -
balanceOf "0xca3...733c"
,账户余额为8500。 -
balanceOf "0x4b0...d2db"
,账户余额为500。 -
balanceOf "0x147...160c"
,账户余额未变,还是1000。
测试完后是这样的: