您的位置:首页 > 其它

详解solidity中的入门例子(子货币例子):一个最简单的加密货币

2019-01-21 15:39 70 查看

详解solidity中的入门例子(子货币例子):一个最简单的加密货币

原文链接

https://solidity-cn.readthedocs.io/zh/develop/introduction-to-smart-contracts.html

原文代码

pragma solidity ^0.4.21;

contract Coin {
// 关键字“public”让这些变量可以从外部读取
address public minter;
mapping (address => uint) public balances;

// 轻客户端可以通过事件针对变化作出高效的反应
event Sent(address from, address to, uint amount);

// 这是构造函数,只有当合约创建时运行
function Coin() public {
minter = msg.sender;
}

function mint(address receiver, uint amount) public {
if (msg.sender != minter) return;
balances[receiver] += amount;
}

function send(address receiver, uint amount) public {
if (balances[msg.sender] < amount) return;
balances[msg.sender] -= amount;
balances[receiver] += amount;
emit Sent(msg.sender, receiver, amount);
}
}

https://solidity-cn.readthedocs.io/zh/develop/introduction-to-smart-contracts.html

引例

A是铸币者(写下这个货币合约代码的人),B向C转账100个货币。
A是唯一有权限给所有人凭空创造出货币的人(不通过交易)。

地址与货币

所有的参与者,A、B、C,都叫地址[address]。
所有的货币值,都是一个256位无符号数字[uint]。

哈希映射

每个地址都有一个余额,通过哈希表[mapping] balances映射。
balances[地址]=余额

构造函数

A存在minter(铸币者)中。

事件sent与事件发送函数send

send发送的是一条交易记录,如B向C转账100个货币:
emit sent(B,C,100)

msg.sender

永远指向当前函数的调用地址。

总结

合约 Coin{
构造函数:minter=铸币者A的地址。
mint函数:只有铸币者A能调用;给B的账户余额加10个货币。
send函数:B向C转账100个货币,先检查B的余额有没有100个,有就让B的余额减少100个货币,C的余额增加100个货币,并将B,C,100广播出去。
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: