一、编程语言
智能合约的编写语言有好几种:
Solidity:有点类似Javascript风格, 文件的后缀名是.sol.。
Serpent:与Python风格类似的Serpent, 文件的后缀名是.se。
LLL:类似Lisp,估计好多人都没听说过这个语言。
以胶Serpent火过一段时间,不过现在智能合约的主流编程语言是Solidity,维护也很及时,比较比较健壮稳定。
举一个小例子:
pragma solidity ^0.4.8;
contract Welcome
{
function PrintWelcome() constant returns (string)
{
return "Welcome";
}
}
非常简单,返回一个固定的字符串。
二、编译
编译使用solc,这个在以太坊github上有源码供分析。不过它是用c++写的,并且涉及到了编译链接的很多知识,如果想啃,还需要学习参考一下这两方面的资料。
三、开发环境
智能合约的开发环境,也有不少,包括各种测试环境和编译工具,简单介绍一下,(略过安装,大家可去网上查找相关安装资料,都比较简单)。
testrpc:非常方便容易的创建测试网络的方法. Testrpc可以配置好一些帐户让你不必如私链等还得转来转去,它更适合测试,但是有些东西可能真正部署到链上会有一些问题,所以还是要引起注意。
Truffles:非常流行的开发框架,能够在本地编译、部署智能合约,最初用过一段时间,现在在偶尔也用。
集成环境也经过了几个变化。现在在流行的是基于web的Remix,原来还有一个mix,不过因为编写这个工具的大神从以太坊离开了。所以还是搞Remix吧。
三、部署和调用
部署可以通过Remix来完成,也可以用命令通过Web3j来实现,假如你有一个合约,把它拷贝到Remix上,编译。就会得到一个部署的命令。类似于:
var welcomeContract =
web3.eth.contract([{"constant":true,……"type":"function"}]);
var welcome = welcomeContract.new(
{
from: web3.eth.accounts[0],
data: '0x608060……',
gas: '4700000'
}, function (e, contract){
console.log(e, contract);
…….
}
})
然后把它拷贝到到geth的控制台上,执行就可以了,如果正在挖矿的私链,可以很快得到结果:
Contract mined!
address: 0x096aa2dd30751f49b62f5372150984cf1cfd3124
transactionHash: 0x17c8d760a243ee8dcf2bc9f258e3290f69c4e61ad49d2eadff0eebe525a05cb5
这样就可以使用了。使用方法:
在geth的控制台上输入:
welcomeContract. PrintWelcome ()
这时在控制台上就会显示:”Welcome”。
最后,不管是编程语言还是编译器亦或是编程环境,都在不断的变化,所以需要及时跟进。那么,现在就可以顺利的学习Solidity语言并用其开发智能合约了。
如果对c++和区块链感兴趣,欢迎关注: