最新内容会更新在主站深入浅出区块链社区
原文链接:实现一个可管理、增发、兑换、冻结等高级功能的代币
本文主要介绍代币高级功能的实现: 代币管理、代币增发、代币兑换、资产冻结、Gas自动补充。
写在前面
在上一篇:一步步教你创建自己的数字货币(代币)进行ICO中我们实现一个最基本功能的代币,本文将在上一遍文章的基础上,讲解如果添加更多的高级功能。
实现代币的管理者
虽然区块链是去中心化的,但是实现对代币(合约)的管理,也在许多应用中有需求,为了对代币进行管理,首先需要给合约添加一个管理者。
我们来看看如果实现,先创建一个owned合约。
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,函数修改器是一个合约属性,可以被继承,还能被重写。它用于在函数执行前检查某种前置条件。
如果熟悉Python的同学,会发现函数修改器的作用和Python的装饰器很相似。
然后让代币合约继承owned以拥有onlyOwner修改器,代码如下:
contract MyToken is owned {
function MyToken(
uint256 initialSupply,
string tokenName,
uint8 decimalUnits,
string tokenSymbol,
address centralMinter
) {
if(centralMinter != 0 ) owner = centralMinter;
}
}
代币增发
实现代币增发,代币增发就如同央行印钞票一样,想必很多人都需要这样的功能。
给合约添加以下的方法:
function mintToken(address target, uint256 mintedAmount) onlyOwner {
balanceOf[target] += m