本地安装remix-ide在线编译器
首先选择一块风水宝地
mkdir tools/solidity-browser -p
cd tools/solidity-browser
下载remix安装包
git clone https://github.com/ethereum/remix-ide
进入目录编译即可
npm install
启动服务
npm start
访问localhost:8080
安装solcJs编译器
全局安装
npm install solc -g
编写智能合约
pragma solidity ^0.4.4;
/**
pragma : 版本声明
solidity : 开发语言
0.4.4 : 当前合约的版本, 0.4 代表朱版本, 后面代表修改的版本
^ : 代表向上兼容,0.4.4 ~ 0.4.9 都可以对当前的代码进行编译
*/
contract Person {
uint _height;
uint _age ;
address _owner;
//构造函数
function Person() public {
_height = 180;
_age = 29;
_owner = msg.sender;
}
function setAge(uint age) public {
_age = age;
}
function setHeight(uint height) public {
_height = height;
}
function getAge() constant returns (uint) {
return _age;
}
function getHeight() constant returns (uint) {
return _height;
}
//析构函数
function kill() {
//判断是否是合约的拥有者调用
if( msg.sender == _owner){
selfdestruct(_owner);
}
}
}
查看编译器的版本
solcjs --version
编译命令
solcjs --abi --bin xx.sol
这个命令会生成2个文件。
–bin : 生成以太坊的二进制文件(EVM的字节码)
–api : 接口文件
全局安装testrpc
sudo npm install -g ethereumjs-testrpc
启动(默认的端口号是8545)
testrpc
testrpc会自动生成10个测试的地址,和10个私钥
安装web3.js
npm install web3@0.20.1
或者
npm install web3
web3初始化操作
进入node交互控制台,引入web3模块创建web3对象,并连接testrpc环境
node
> require('web3')
> var Web3 = require('web3');
var web3Provider = new Web3(new Web3.providers.HttpProvider('http://localhost:8545'));
eth = web3Provider.eth
装载编译好的bin,abi文件
> abi = JSON.parse(fs.readFileSync('~/Person_sol_Person.abi').toString());
> bin = fs.readFileSync('~/Person_sol_Person.bin').toString()
发布智能合约
> contract = eth.contract(abi)
> deployed = contract.new({from:eth.accounts[0],data:code,gas:470000})
通过web3js与合约互动
> deployed.address
> c1 = eth.contract(abi)
> instance = c1.at(deployed.address)
> instance.setAge.call(1)
> instance.getAge.call();
BigNumber { s: 1, e: 1, c: [ 29 ] }
这种方式比较原始,走一遍熟悉一下还是不错的。
ps:
call是本地的函数调用
远程调用方式
> instance.setAge(3,{from:eth.accounts[0]});
'0xa0d493eb1285d10ad2b58d3065cbaab137558e0865e041158d5b8bece15a2358'
返回的交易地址,这个交易会被testrpc自动挖挂的。
安装InteliJ solidity插件
直接在插件上搜索:Intellij Solidity
利用自定义的扩展工具类编译我们的Sol文件
添加新的工具:
这里只产生bin和abi文件
progarm: solcjs
parameters: --bin --abi $FileName$ -o $OutputPaht$
working directory: $FileDir$
设置完成后
执行我们自定义的工具之后我们可以看见生成我们预期的文件了
到这里我们Idea的环境也基本搭建完成了