智能合约开发自测环境搭建并简单示例

智能合约环境搭建

编辑器

vscode + solidity插件

编译器solc

npm install -g solc// 前提安装nodenpm,需要sudo权限sudo apt install nodejs/npm

或者

sudo add-apt-repository ppa:ethereum/ethereum

sudo apt-get update

sudo apt-get install solc

参考

http://solidity.readthedocs.io/en/v0.4.23/installing-solidity.html

测试testrpc

//pip installeth-testrpc // 前提sudoapt install python-pip, --这个是错误的

sudo npm install -g ethereumjs-testrpc

开发框架Truffle

npm install -gtruffle

5 truffle命令

1.      创建项目目录

mkdir conference

cd conference

2.      创建项目

truffle init

3.      部署

truffle migrate / deploy

//另一个终端里通过执行testrpc来启动一个节点(你也可以用geth):

回到之前的终端中,输入truffledeploy。这条命令会部署之前truffleinit产生的模板合约到网络上。任何你可能遇到的错误信息都会在testrpc的终端或者执行truffle的终端中输出。

在使用trufflemigrate进行智能合约test环境发布时如果未配置正确会出现以下异常:

truffle migrate

Error: No network specified. Cannotdetermine current networkat Object.detect (/usr/local/lib/node_modules/truffle/build/cli.bundled.js:43157:23)at /usr/local/lib/node_modules/truffle/build/cli.bundled.js:200497:19atfinished (/usr/local/lib/node_modules/truffle/build/cli.bundled.js:43085:9)at/usr/local/lib/node_modules/truffle/build/cli.bundled.js:198408:14at/usr/local/lib/node_modules/truffle/build/cli.bundled.js:68162:7at/usr/local/lib/node_modules/truffle/build/cli.bundled.js:163793: at/usr/local/lib/node_modules/truffle/build/cli.bundled.js:160353:16at replenish(/usr/local/lib/node_modules/truffle/build/cli.bundled.js:160873:25)atiterateeCallback(/usr/local/lib/node_modules/truffle/build/cli.bundled.js:160863:17)at/usr/local/lib/node_modules/truffle/build/cli.bundled.js:160838:16

导致上面异常的原因为是因为truffle.js里面未配置链接合约发布的环境地址,找到对应的truffle.js文件,修改代码为类似如下配置即可解决问题:

module.exports = {networks: {development:{   host: "localhost",     port: 8545, network_id: "*" //匹配任何NETID}}

};

4.       编译

truffle compile

5.       测试

truffle test

6.   交互 truffle console



6 Sample

1.      创建项目

mkdir HelloWorld

cd HelloWorld

truffle init

目录如下:contractsmigrations testtruffle-config.js truffle.js

2.      编写代码

contracts目录下

vim HelloWorld.sol

内容如下:

pragmasolidity^0.4.4; 
contract HelloWorld {
       functionsayHello()returns (string){ 
               return("HelloWorld"); 
       }
}


3.      编写部署脚本:migrations/2_deploy_contracts.js

4.      var HelloWorld =artifacts.require("HelloWorld");
module.exports = function(deployer) {
deployer.deploy(HelloWorld);
} 


5.      编译:truffle compile

6.      修改部署文件truffle.js,内容如下:

module.exports={ 
 // See<http://truffleframework.com/docs/advanced/configuration> 
 //to customize your Truffle configuration! 
       networks:{ 
               live:{ 
                       host:"localhost",
                       port:8545,
                       network_id:"*" 

from : “0x2a04129f0c9d8c62ab639952d9f9bb4919d96bdf”

gas: 3000000
               }
       } 
};


7.      在另一个终端启动testrpc

testrpc

8.      部署:trufflemigrates deploy

Truffle migrates  --network live  //对应truffle.js中的live

9.      truffle console

输入:

HelloWorld.deployed().then(instance=>{

contract=instance

});

10.     执行合约

contract.sayHello()

 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值