最近报名参加了硅谷区块链举办的《智能合约开发课》第二期培训班,根据培训要求,不能完全透露课程的内容,但我会在steemit上记录我的成长过程。
由于正式开课在2018年1月7日,最近先零散地学习一点Solidity智能合约的编程语言。从网上查到,要写智能合约有好几种语言可选:有点类似Javascript的Solidity,文件扩展名是.sol,与Python接近的Serpent,文件名以.se结尾,还有类似Lisp的LLL。Serpent曾经流行过一段时间,但现在最流行而且最稳定的要算是Solidity了,因此还是学Solidity最有用。
Solidity英文官方文档在这里:http://solidity.readthedocs.io/en/develop/ 。在微信公众号里找到一篇中文翻译,先对照着学习一下。
pragma solidity ^0.4.0;
contract SimpleStorage {
uint storedData;
function set(uint x) public {
storedData = x;
}
function get() public constant returns (uint) {
return storedData;
}
}
官方文档从一个非常简单的合约代码入手,感觉一个合约contract有点像面向对象编程语言中的类class。
这个官方教程有一点不太好,这里应该马上教大家如何编译和运行这段代码,即使无法在区块链上正常地工作,也应该快速反馈出一些结果。
pragma solidity ^0.4.0;
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;
Sent(msg.sender, receiver, amount);
}
}
单位开了一下午的会议,会上玩手机,发现这样几篇素材:
本文由币乎(bihu.com)内容支持计划奖励
2017年年底前与 @yellowbird 共同发起了一项2017年终总结抽奖活动,参与链接:https://steemit.com/cn/@yellowbird/steemit-2017 ,欢迎大家踊跃参加。