实现一个可管理、增发、兑换、冻结等高级功能的代币
作者:守护平井一夫【链客】
写在前面
在上一篇:一步步教你创建自己的数字货币(代币)进行 ICO 中我们实现一个最基本功能
的代币,本文将在上一遍文章的基础上,讲解如果添加更多的高级功能。
实现代币的管理者
虽然区块链是去中心化的,但是实现对代币(合约)的管理,也在许多应用中有需求,为了
对代币进行管理,首先需要给合约添加一个管理者。
我们来看看如果实现,先创建一个 owned 合约。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
contract owned {
address public owner;
function owned() {
owner = msg.sender;
}
modifier onlyOwner {
require(msg.sender == owner);
_;
}
// 实现所有权转移
function transferOwnership(address newOwner) onlyOwner {
owner = newOwner;
}
}
这个合约重要的是加入了一个函数修改器(Function Modifiers)onlyOwner,函数修改
器是一个合约属性,可以被继承,还能被重写。它用于在函数执行前检查某种前置条件。
关于函数修改器可进一步阅读 Solidity 教程系列 10 - 完全理解函数修改器
如果熟悉 Python 的同学,会发现函数修改器的作用和 Python 的装
饰器很相似。
然后让代币合约继承 owned 以拥有 onlyOwner 修改器,代码如下:
1
2
3
4
5
6
7
8
9
10
11
contract MyToken is owned {
function MyToken(
uint256 initialSupply,
string tokenName,
uint8 decimalUnits,
string tokenSymbol,
address centralMinter
) {
if(centralMinter != 0 ) owner = centralMinter;
代币/函数/修改器/Owner/合约/owned/
代币/函数/修改器/Owner/合约/owned/
-->