最近正在学习以太坊Solidity智能合约,学习过程遇到很多问题。看了很多的博客,经过多次试错解决。终于让我成功部署和测试了第一个Solidity合约,于是激动的写下来。
apt-get命令安装Node.js
命令如下,其他安装方式请参考Nodejs
$ sudo apt-get install nodejs
$ sudo apt-get install npm
$ npm install -g truffle
$ npm install -g ethereumjs-testrpc
$ testrpc
如果提示找不到上面命令,还需进行软连接的配置(具体nodejs安装目录下):
$ ln -s /app/softwares/nodejs/bin/truffle /urs/local/bin/
$ ln -s /app/softwares/nodejs/bin/testrpc /urs/local/bin/
1、使用命令创建一个工程项目:
$ mkdir ContractDemo
$ cd ContractDemo/
$ truffle init
创建完成后可以在相应目录下看到如下内容:
2、在contracts目录下创建一个HelloWorld.sol 文件 ,写入以下内容:
pragma solidity ^0.4.4;
contract HelloWorld {
function sayHello() public returns (string) {
return ("Hello World");
}
}
创建完成后:
3、打开 truffle.js文件,输入以下内容:
module.exports={
networks:{
development:{
host:"localhost",
port:8545,
network_id:"*"//匹配任何netword id
}
}
};
4、在migrations目录下创建一个2_initial_contract.js 文件 ,写入以下内容:
var HelloWorld = artifacts.require("./HelloWorld.sol");
module.exports = function(deployer) {
deployer.deploy(HelloWorld);
}
完成后如下,文件如下:
5、当创建完成,进入工程根目录下,在终端中进行编译:
$ truffle compile
有个警告,暂时先不管。编译是成功了的
6、启动安装好的EthereumJS RPC客户端
$ testrpc
7、重新打开一个终端,部署刚刚写好的合约:
$ truffle migrate
此时我们发现testrpc终端有变化:
说明合约部署成功!恭喜,那么怎么利用控制台与合约进行交互呢?
8、使用 truflle console功能:
$ truffle console
9、 接着输入
HelloWorld.deployed().then(instance => contract = instance)
10、最后,见证奇迹的时刻:
contract.sayHello.call()
这就是调用合约成功,希望你能成功!!!具体还有更多好玩的内容,笔者也在学,后续再写。