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

详解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广播出去。
}

你可能感兴趣的:(区块链)