windows以太坊私有链开发环境搭建

若是你不喜欢浪费时间在开发环境的搭建上,可使用汇智网的在线教程:node

1、安装DApp开发环境

1.1 安装Node.js

咱们使用官方长期支持的8.10.0LTS版本,点击这个连接下载32位安装包,32位安装包便可用于32位系统,也可用于64位系统。 若是你确认你的系统是64位,也能够下载64位包装包。 下载后直接安装便可。安装完毕,打开一个控制台窗口,可使用node了:webpack

C:\Users\hubwiz> node –v
v8.10.0

1.2 安装Geth

下载64位或32位Geth安装程序,而后进行安装。 安装完毕后打开一个控制台,执行命令验证安装成功:git

C:\Users\hubwiz> geth version
Geth
Version: 1.8.3-stable

1.3 安装solidity编译器

solidity是开发以太坊智能合约的编程语言,不熟悉的话能够查看以太坊solidity开发语言简介web

C:\Users\hubwiz> npm install –g solc

安装完毕后,执行命令验证安装成功npm

C:\Users\hubwiz> solcjs –version
0.40.2+commit.3155dd80.Emscripten.clang

1.4安装web3

Web3的安装过程使用了git,所以须要先安装windows版的git命令行。下载64位或32位的git安装程序,本地安装后在继续安装web3。编程

C:\Users\hubwiz> npm install –g web3@0.20.2

安装验证:json

C:\Users\hubwiz> node –p 'require("web3")'
{[Function: Web3]
  providers:{…}}

1.5安装truffle框架

执行如下命令安装truffle开发框架:ubuntu

C:\Users\hubwiz> npm install –g truffle

验证安装:windows

C:\Users\hubwiz> truffle.cmd version
Truffle v4.1.3 (core 4.1.3)

1.6安装webpack

执行如下命令安装webpack:跨域

C:\Users\hubwiz> npm install –g webpack@3.11.0

验证安装

C:\Users\hubwiz> webpack –v
3.11.0

2、运行私链节点

2.1创世块配置

建立一个节点目录node1,并在其中建立私链的创世块配置文件:

C:\Users\hubwiz> mkdir node1
C:\Users\hubwiz> cd node1
C:\Users\hubwiz\node1> notepad private.json

而后编辑内容以下:

{
    "config": {
        "chainId": 7878,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
    "difficulty": "200",
    "gasLimit": "2100000",
    "alloc": {
        "7df9a875a174b3bc565e6424a0050ebc1b2d1d82": { "balance": "300000" },
        "f41c74c9ae680c1aa78f42e5647a62f353b7bdde": { "balance": "400000" }
    }
}
  • config.chainId用来声明以太坊网络编号,选择一个大于10的数字便可。
  • difficulty用来声明挖矿难度,越小的值难度越低,也就能更快速地出块。

2.2初始化私链节点

执行geth的init命令初始化私链节点:

C:\Users\hubwiz\node1> geth --datadir .\data init private.json

这会在当前目录下建立data目录,用来保存区块数据及帐户信息:

C:\Users\hubwiz\node1> dir
data private.json

能够上述命令写到一个脚本init.cmd里,这样避免每次都输入那么多记不住的东西。文件内容以下:

geth --datadir .\data init private.json

在部署下一个节点时,就能够直接执行这个脚本进行初始化了。例如,在另外一台机器上:

C:\Users\hubwiz\node1> init.cmd

2.3启动私链节点

从指定的私链数据目录启动并设定一个不一样的网络编号来启动节点:

C:\Users\hubwiz\node1> geth --rpc --datadir .\data --networkid 7878 console

一样,你能够用一个脚本console.cmd来简化启动节点时的输入,文件内容以下:

geth --rpc \
      --rpcaddr 0.0.0.0 \
      --rpccorsdomain "*" \
      --datadir ./data \
      --networkid 7878 \
      console
  • rpcaddr参数用来声明节点RPC API的监听地址,设为0.0.0.0就能够从其余机器访问API了;
  • rpccorsdomain参数是为了解决web3从浏览器中跨域调用的安全限制问题。 之后启动节点,只要直接执行这个脚本便可:
C:\Users\hubwiz\node1> console.cmd

2.4 帐户管理

2.4.1 查看帐户列表

在geth控制台,使用eth对象的accounts属性查看目前的帐户列表:

> eth.accounts
[]

由于咱们尚未建立帐户,因此这个列表仍是空的。

2.4.2建立新帐户

在geth控制台,使用personal对象的newAccount()方法建立一个新帐户,参数为你本身选择的密码:

> personal.newAccount('78787878')
0xd8bcf1324d566cbec5d3b67e6e14485b06a41d49

输出就是新建立的帐户地址(公钥),你的输出不会和上面的示例相同。geth会保存到数据目录下的keystore文件中。密码要本身记住,之后还须要用到。

2.4.3查询帐户余额

在geth控制台,使用personal对象的getBalance()方法获取指定帐户的余额,参数为帐户地址:

> eth.getBalance(eth.accounts[0])
0

或者直接输入帐户地址:

> eth.getBalance('0xd8bcf1324d566cbec5d3b67e6e14485b06a41d49')
0

新建立的帐户,余额果真为0。

2.4.4挖矿

没钱的帐户什么也干不了,须要挖矿来挣点钱。 在geth控制台执行miner对象的start()方法来启动挖矿:

> miner.start(1)

等几分钟之后,检查帐户余额:

> eth.getBalance(eth.accounts[0])
2.695e+21

钱很多了,2695ETH了,目前市值将近500万人民币了,哈。 执行miner对象的stop()方法中止挖矿:

> miner.stop()

2.4.5解锁帐户

在部署合约时须要一个解锁的帐户。在geth控制台使用personal对象的unlockAccount()方法来解锁指定的帐户,参数为帐户地址和帐户密码(在建立帐户时指定的那个密码):

> eth.unlockAccount(eth.accounts[0],'78787878')
true

3、构建示例项目

3.1 新建DApp项目

执行如下命令建立项目目录并进入该目录:

C:\Users\hubwiz> mkdir demo
C:\Users\hubwiz> cd demo

而后用webpack模版初始化项目骨架结构:

C:\Users\hubwiz\demo> truffle.cmd unbox webpack
Downloading…
Unpacking…
Setting up…
Unbox successful. Sweet!

3.2 安装项目依赖的NPM包

执行如下命令安装nmp包:

C:\Users\hubwiz\demo$ npm install

3.3 修改truffle配置

若是你使用图形版的ganache,不须要修改truffle.js配置文件。不然,须要在truffle.js中,修改port为8545,由于ganache-cli在8545端口监听:

module.exports = {
  networks:{
    development: {
      port: 8545
    }
  }
}

3.4 启动节点

执行如下命令启动节点仿真器,以便部署合约并执行交易:

C:\Users\hubwiz\node1> console.cmd

注意:为了在节点上部署合约,别忘了启动geth后先解锁帐户:

> personal.unlockAcount(eth.accounts[0],'78787878')
true

3.5 编译合约

执行如下命令编译项目合约:

C:\Users\hubwiz\demo> truffle.cmd compile

3.6 部署合约

执行如下命令来部署合约:

C:\Users\hubwiz\demo> truffle.cmd migrate

若是你以前忘了在geth控制台解锁帐户,会看到以下错误,参考前面说明进行解锁便可:

Error: authentication needed: password or unlock

若是已经正确地解锁了帐户,你会看到部署过程中止在以下状态:

Replacing Migrations…
… 0x3088762a5bc9…

这是由于truffle在等待部署交易提交,可是咱们在私链中尚未启动挖矿。 如今切换回geth终端窗口,查看交易池的状态:

> txpool.status
{
  pending:1,
  queued:0
}

果真有一个挂起的交易!启动挖矿就是了:

> miner.start(1)

稍等小会儿,再查看交易池的状态:

> txpool.status
{
  pending:0,
  queued:0
}

交易已经成功提交了。咱们能够中止挖矿了,由于它太占CPU了:

> miner.stop()

如今切换回truffle那个终端,部署过程也正确地执行完了。

3.7 启动DApp

执行如下命令来启动DApp:

C:\Users\hubwiz\demo> npm run dev

在浏览器里访问http://localhost:8080便可

若是你但愿从别的机器也能够访问你的DApp应用,修改一下package.json:

{
  scripts:{
    "dev": "webpack-dev-server –-host 0.0.0.0"
  }
}

相关教程

相关文章
相关标签/搜索