以太坊私链搭建

安装Geth

通过PPA在Ubuntu上安装

在基于Ubuntu的发行版上安装go-ethereum的最简单方法是使用内置的启动板PPA(个人软件包档案)。我们提供的是包含了我们的稳定和开发版本的Ubuntu版本的单PPA仓库trusty,xenial,zesty和artful。

要启用我们的启动板存储库,请运行:

sudo add-apt-repository -y ppa:ethereum/ethereum

然后安装稳定版的go-ethereum:

sudo apt-get update
sudo apt-get install ethereum

 

安装golang

sudo apt-get install golang

 

搭建私链

创建创世区块文件

{
  "config": {
    "chainId": <arbitrary positive integer>,
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip155Block": 0,
    "eip158Block": 0,
    "byzantiumBlock": 0,
    "constantinopleBlock": 0,
    "petersburgBlock": 0,
    "istanbulBlock": 0
  },
  "alloc": {},
  "coinbase": "0x0000000000000000000000000000000000000000",
  "difficulty": "0x20000",
  "extraData": "",
  "gasLimit": "0x2fefd8",
  "nonce": "0x0000000000000042",
  "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "timestamp": "0x00"
}

 

启动私链节点

下面命令的主体是geth console,表示启动节点并进入交互式控制台,–datadir选项指定使用data0作为数据目录,–networkid选项后面跟一个数字,这里是1108,表示指定这个私有链的网络id为1108。网络id在连接到其他节点的时候会用到,以太坊公网的网络id是1,为了不与公有链网络冲突,运行私有链节点的时候要指定自己的网络id

geth --datadir data0 --networkid 1108 console

运行上面的命令后,就启动了区块链节点并进入了Javascript Console:

这是一个交互式的Javascript执行环境,在这里面可以执行Javascript代码,其中>是命令提示符。在这个环境里也内置了一些用来操作以太坊的Javascript对象,可以直接使用这些对象。这些对象主要包括:

eth:包含一些跟操作区块链相关的方法 
net:包含以下查看p2p网络状态的方法 
admin:包含一些与管理节点相关的方法 
miner:包含启动&停止挖矿的一些方法 
personal:主要包含一些管理账户的方法 
txpool:包含一些查看交易内存池的方法 
web3:包含了以上对象,还包含一些单位换算的方法

 

创建账户

账户默认会保存在数据目录的keystore文件夹中。

# 查看账户
eth.accounts
# 创建新账户
personal.newAccount('你的密码1')
# 可以创建多个账户
personal.newAccount('你的密码2')

 

查看账户余额

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

 

启动/停止挖矿

# 括号中的参数为挖矿的线程数,可以不设置,默认全力挖矿
miner.start(10)
# 第一次启动挖矿会先生成挖矿所需的DAG文件,这个过程有点慢,等进度达到100%后,就会开始挖矿,此时屏幕会被挖矿信息刷屏。

# 停止挖矿
miner.stop()
# 输入的字符会被挖矿刷屏信息冲掉,没有关系,只要输入完整的miner.stop()之后回车,即可停止挖矿

 

矿工的账户,叫做coinbase,默认情况下coinbase是本地账户中的第一个账户

# 查看账户
eth.coinbase

# 修改账户
miner.setEtherbase(eth.accounts[1])

 

上一篇:Nodejs Passport 系列之一:基础概念


下一篇:3D 穿梭效果?使用 UWP 也能搞定