以太坊代币代码相关解释

第一行pramga solidity ^0.0.4 声明合约源码适用的solidity编译器版本,^ 0.0.4代表次源码使用solidity0.0.4或以上的版本编写,但是不适用包括0.5.0及以上的版本,这可以确保合约在先谷底固定的编译器版本上实现编译的稳定性。
address public minter,声明一个地址类型的状态变量,地址是20个字节的账户地址,public关键字会自动生成一个对状态变量的外部访问方法,其他合约就可以访问这个状态变量
mapping (address =>uint ) public balances 中mapping是一个更加复杂的类型,维护一组键值对。由于无法枚举或循环获取key或value,使用时需要记录加入mapping的key,并使用key获取对应的值。
event send(address from ,address to ,uint amount)由交易执行的方法触发,客户端可以监听事件,当时间发生时,进行回调处理。例如,时间监听和回调的处理逻辑如下:
Coin.Sent().watch({},”,function(err,result)){
if(!err){
console.log(“Coin transfer :”+result.args.amount+ “coins werer sent from “+ result.args.from +” to “+result.args.to+”.”);
console.log(“Balance now:\n”+”Senser:”+Coin.balances.call(result.args.from)+”receiver:”+Coin.balances.call(result.args.to));
}
}

functiiion Coin() 是合约的构造函数,构造器函数在合约创建时执行,创建者发送合约创构建交易,并设定构造器的参数。此处,构造器的逻辑是把合约创建者地址作为铸币者,只有铸币者才可以铸造代币。此处的msg(还有tx和block)是内置的全局对象变量,可以通过对象的属性访问区块链相关的值。

function mint()可以接受有合约创建者发起的铸币交易,如果不是合约创建者发起的mint交易,则忽略。
function send()可以由任何账户发起调用,只要其拥有的余额足够支付交易中指定的金额。
Sent(msg。sender,receiver,amout)可以在执行完转账后触发一个event通知,所有监听这个event的客户端 都可以即使得到事件通知,并执行相关的回调函数。

阅读更多 登录后自动展开

更多精彩内容