详解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广播出去。
}
相关文章推荐
- 一个简单的例子入门Vue.js
- 一个简单的hibernate入门例子!
- 一个简单的ant入门例子
- WCF 一步一步从入门到精通(一)建立一个简单入门的例子(适合一点不会的朋友阅读)
- 一个简单的ant入门例子
- WCF 一步一步从入门到精通 建立一个简单入门的例子(适合一点不会的朋友阅读)
- Maya插件开发入门(2):一个简单的例子
- Java编写CORBA的一个简单例子(CORBA入门)
- 一个简单的DWR入门例子
- 三大框架学习:Struts2简单入门(通过一个简单的登陆实例详解)
- 一个简单的C#多线程间同步的例子 from 小菜鸟之家~ASP.NET 入门中
- IOCP入门详解(重加文章:一个简单的完成端口(服务端/客户端)类)
- 一个简单的iBatis入门例子
- 一个简单的Struts Hibernate入门例子(上)
- OpenGL编程轻松入门之一个简单的例子
- 一个简单的iBatis入门例子
- 一个简单的Struts Hibernate入门例子(下)
- 一个简单的MD5,SHA1,SHA512加密的例子
- Android读写文件的一个简单入门的例子
- 一个简单的AJAX入门例子