【ETH】DAPP开发环境搭建

1. 安装geth

brew tap ethereum/ethereum
brew install ethereum

验证:geth version

2. 安装solidity编译器

npm install -g solc

3. 安装web3

npm install –g web3

验证:node –p ‘require(“web3”)’

4. 安装truffle

npm install –g truffle

验证:truffle version

问题:Error: EACCES: permission denied, access
解决方案:sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}

5. 安装testrpc

testrpc不同于geth,它不是真正的以太坊客户端,而是一个模拟器。当合约在testrpc中测试通过后,再部署到geth中去

sudo npm install -g ethereumjs-testrpc

验证:testrpc

6. 在truffle工程里创建合约

创建文件夹,执行 truffle init

创建一个HelloContract.sol合约

pragma solidity ^0.4.17;

contract HelloWorld {
    function sayHello() returns (string) {
        return ("Hello World");
    }
}
7. 编译、部署、执行合约

备注:在测试环境下,安装testrpc后不需要geth,truffle默认包含了web3的包

7.1 编译: truffle compile

执行完后生成一个build文件夹,存在XX.json文件

7.2 启动testrpc

7.3 部署:

  1. 修改工程目录下truffle.js指定测试网络
module.exports = {
    networks: {
        development: {
            host: "localhost",
            port:8545,
            network_id:"*" 
        }
    }
};
  1. 在migrate文件夹下创建2_deploy_contract.js
var HelloWorld = artifacts.require("HelloWorld");
module.exports = function(deployer) {
    deployer.deploy(HelloWorld);
};
  1. 执行truffle migrate,此时testrpc界面会显示新增了合约

7.4 执行

  1. 在工程目录下执行 truffle console,进入一个控制台
  2. 执行如下脚本
let h  
HelloWorld.deployed().then(instance => h = instance)  
h.sayHello.call()

这里将一个合约的实例赋予h,并执行方法sayHello

备注:执行多次实例后,合约的地址是同一个

truffle(development)> console.log(contract.address);
0x91a13dd8587ccce4b196323f99ad5070da66c0bb
undefined
truffle(development)> console.log(con2.address);
0x91a13dd8587ccce4b196323f99ad5070da66c0bb

你可能感兴趣的:(区块链)