Linux(Ubuntu)上搭建基于以太坊go-ethereum的私有链环境

自己学习这个过程也很艰难,记录下自己犯的错,对自己和他人都有帮助。

基于Windows搭建以太坊私有链可以参考这篇文章:搭建基于以太坊的Windows私有链

这篇是在Linux上操作的:

首先参考https://github.com/ethereum/go-ethereum/wiki/Installation-Instructions-for-Ubuntu,命令如下:

sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install ethereum

我遇到了这个问题:

解决方法如下:

解决了,我们继续往下走: 

sudo apt-get install -y build-essential

这是我现在的路径:/home/wdg

 创建一个eth的根目录

mkdir eth

进入目录下,新建创世块json文件piccgenesis.json

内容如下: 

{
"nonce":"0x0000000000000042", 
    "mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000",
    "difficulty": "0x4000",
    "alloc": {},
    "coinbase":"0x0000000000000000000000000000000000000000",
    "timestamp": "0x00",
    "parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",
    "extraData": "0x00000000",
    "gasLimit":"0xffffffff",
        "config":{
                "chainId": 666,
                "homesteadBlock": 0,
                "eip155Block": 0,
                "eip158Block": 0
        }
}

然后给文件增加执行权限

 初始化,写入创世块

解释一下:“./",我这是让它自己在当前目录下存放区块链数据,也可以像这个样子,新建一个目录来存放数据,like this:

,我这里没用创建目录

创建私有链:

geth --datadir "./" --nodiscover console 2>>geth.log

看到Welcome to the Geth JavaScript console!的提示,说明已经启动成功

创建一个新账号

personal.newAccount("123456")

 可以查看现有账号

eth.accounts

退出私有链,就是exit

看一下当前目录下都有啥:

我们可以再进入私有链

geth --datadir "./" --nodiscover console 2

看一下账户余额和当前的区块号

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

当前余额都是0 

我们可以再新增加第二个账号:

然后开始挖矿

 首先:

挖到一个区块会奖励以太币,挖矿所得的奖励会进入矿工的账户,这个账户叫做coinbase,默认情况下coinbase是本地账户中的第一个账户。要想使挖矿奖励进入其他账户,通过miner.setEtherbase()将其他账户设置成coinbase。所以将coinbase改一下:

miner.setEtherbase(eth.accounts[0])

 开始挖矿

其中start的参数表示挖矿使用的线程数。第一次启动挖矿会先生成挖矿所需的DAG文件,这个过程有点慢,等进度达到100%后,就会开始挖矿,此时屏幕会被挖矿信息刷屏。

miner.start()

 

要等到percentage=100。

挖矿过程大致是这样子的,其中有successfully sealed new block,说明有new block出现。

如果想停止挖矿,并且进度已经达到100%之后,可以输入 

miner.stop()

 

现在区块号增加到了112。

btw:我这里miner.stop()=null,不是true,我也不知道为什么。。。有知道的请留言告知,谢谢!

看一下余额

getBalance()返回值的单位是wei,wei是以太币的最小单位,1个以太币=10^{18}个wei。要查看有多少个以太币,可以用web3.fromWei()将返回值换算成以太币: 

你可以查看特定block的详细信息

eth.getBlock(0)

关于这些字段的意思,可以看这篇博客以太坊区块的数据结构解析 


 

 reference:

https://blog.csdn.net/u012107512/article/details/79322645

https://blog.csdn.net/wo541075754/article/details/53064877

https://www.jianshu.com/p/8a2bb280a712

猜你喜欢

转载自blog.csdn.net/salmonwilliam/article/details/88795705