极客学院翻译的中文文档链接:http://wiki.jikexueyuan.com/project/solidity-zh/
对一些demo尝试用基于浏览器的编译器跑一下
在Solidity中,一个合约由一组代码(合约的函数)和数据(合约的状态)组成。
代币的例子
contract Coin {
//Coin是合约名,即Coin.sol
address public minter;
//address类型存储合约的地址或其他人的公私钥
mapping (address => uint) public balances;
//mapping类型将一些address映射到无符号整数,理解为特殊的数组
//关键字“public”使变量能从合约外部访问。
//事件让轻客户端能高效的对变化做出反应,监听传过来的参数值。
//由send函数的最后一行代码触发。
event Sent(address from, address to, uint amount);
//这个构造函数的代码仅仅只在合约创建的时候被运行。永久存储合约创建者的地址在minter中。
//msg.sender 总是存放着当前函数的外部调用者(可以是任何人)的地址。
function Coin() {
minter = msg.sender;
}
//只有合约创建者调用mint才有效果。
function mint(address receiver, uint amount) {
if (msg.sender != minter) return;
balances[receiver] += amount;
}
//send可以被任何人(拥有一定数量的代币)调用,发送一些币给其他人。
function send(address receiver, uint amount) {
if (balances[msg.sender] < amount) return;
balances[msg.sender] -= amount;
balances[receiver] += amount;
Sent(msg.sender, receiver, amount);
}
}
在基于浏览器的编译器环境中调试:
https://ethereum.github.io/browser-solidity/#version=soljson-v0.4.7+commit.822622cf.js
调试过程参考:
http://blog.csdn.net/sportshark/article/details/52497176