搭建智能合约开发环境

搭建智能合约开发环境_第1张图片

本地安装remix-ide在线编译器

首先选择一块风水宝地

mkdir tools/solidity-browser -p

cd tools/solidity-browser 

下载remix安装包

git clone https://github.com/ethereum/remix-ide

进入目录编译即可

npm install

搭建智能合约开发环境_第2张图片

启动服务

    npm start

访问localhost:8080

搭建智能合约开发环境_第3张图片

安装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个私钥
搭建智能合约开发环境_第4张图片

安装web3.js

npm install [email protected]

或者

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文件

搭建智能合约开发环境_第5张图片

添加新的工具:

这里只产生bin和abi文件

 progarm: solcjs
 parameters: --bin --abi $FileName$ -o $OutputPaht$
 working directory: $FileDir$

搭建智能合约开发环境_第6张图片

设置完成后

搭建智能合约开发环境_第7张图片
搭建智能合约开发环境_第8张图片

执行我们自定义的工具之后我们可以看见生成我们预期的文件了

搭建智能合约开发环境_第9张图片

到这里我们Idea的环境也基本搭建完成了

你可能感兴趣的:(技术杂记,solidity,区块链,以太坊)