搭建测试用区块链(Ubuntu环境)
  iyH1TGzy3Tt9 2023年11月02日 115 0


搭建测试用区块链(Ubuntu环境)

参考链接:​​http://www.360bchain.com/article/151.html#启动geth进程​​​​https://github.com/ethereum/go-ethereum/wiki/Private-network​​​​https://github.com/ethereum/go-ethereum/wiki/Private-network​​​建议给虚拟机分配个3G或者4G的内存吧,其次还要看电脑配置好不好,初始化挖矿线程生成DAG实在太慢了,我4G内存初始化了半个小时…加上这是内存困难型(PoW共识机制)挖矿,内存不够,挖矿也非常慢啊!!!
前提首先需要安装好geth和go:
各种安装方法的链接: go安装代码如下:

apt install golang-go

查看go是否安装成功:

go version

搭建测试用区块链(Ubuntu环境)_javascript


geth安装代码如下

 apt-get install software-properties-common //安装开发工具
add-apt-repository -y ppa:ethereum/ethereum //添加源文件
apt-get update //更新源
apt-get install ethereum //安装源

查看geth的版本、查看geth是否安装成功:

geth version
geth --help

搭建测试用区块链(Ubuntu环境)_初始化_02


1、配置初始状态

首先配置私有区块链的初始状态,新建文件genesis.json,内容如下:

{
"config": {
"chainId": 98,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"difficulty": "200000000",
"gasLimit": "2100000",
"alloc": {
"7df9a875a174b3bc565e6424a0050ebc1b2d1d82": { "balance": "300000" },
"f41c74c9ae680c1aa78f42e5647a62f353b7bdde": { "balance": "400000" }
}
}

chainId指定了独立的区块链的网络ID,不同ID网络节点无法互相连接。配置文件还对当前挖矿难度difficulty、区块Gas消耗限制gasLimit等参数进行了设置
2、启动区块链
用一下命令初始化区块链,生成创世区块和初始状态:
/nychain/data指定了存放数据的位置

geth --datadir /mychain/data init genesis.json

搭建测试用区块链(Ubuntu环境)_javascript_03


生成的目录结构如下:

/mychain/data
├── data
│ ├── geth
│ │ ├── chaindata
│ │ │ ├── 000001.log
│ │ │ ├── CURRENT
│ │ │ ├── LOCK
│ │ │ ├── LOG
│ │ │ └── MANIFEST-000000
│ │ └── lightchaindata
│ │ ├── 000001.log
│ │ ├── CURRENT
│ │ ├── LOCK
│ │ ├── LOG
│ │ └── MANIFEST-000000
│ └── keystore
└── genesis.json

–datadir指定区块链数据的存储位置
接下来用一下命令启动节点,并进入Geth命令行界面:
98是当初的chainId

geth --datadir /mychain/data --networkid 98 --port 28000 --rpc --rpcaddr 192.168.197.132 --rpcport 8545 --rpcapi 'db,net,eth,web3' --rpccorsdomain '*' --nodiscover console

搭建测试用区块链(Ubuntu环境)_区块链_04


–identity:指定节点ID

–rpc:表示开启HTTP-RPC服务

–rpcport:指定HTTP-RPC服务监听端口号(默认为8545)

–datadir:指定区块链数据的存储位置

–port:指定和其他节点连接所用的端口号(默认为30303)

–nodiscover:关闭节点发现机制,防止加入有同样初始配置的陌生节点

nodiscover告诉geth最初不要找peers。这一点在这个案例中确实很重要。这是一个私有网络。不希望节点在没有指定的情况下尝试连接到其它节点,不希望这些节点在没有告诉它们的情况下被发现。

下次再进入geth控制台输入:

geth --datadir /mychain/data --nodiscover console

代码解释:
–datadir /mychain/data:–datadir是指定目录,/mychain/data是你当初创建区块链的位置,如何不指定就好像是会去/home/wuyou/e-ethereum云云的文件里去了,然后你当初创建的账号都没有了,又要重新创建过。。。。。。。唉!~~新手入门,没人带,摸了很多坑才知道的
–nodiscover:单词意思就是不被发现,也就是我们的私有区块链了,否则单纯一个geth就是进入以太坊的公链,然后一直下载以前的交易区块了。。。。。(而且8G内存的电脑要下载一周呢,以后你每次进入geth,它都自动帮你下载,你想阻止都阻止不了…)
console:当然就是控制台了~
3、创建账号
用上述geth console命令进入的命令行采用JavaScript语法,用一下命令新建一个账号

personal.newAccount()

搭建测试用区块链(Ubuntu环境)_初始化_05


Passphrase输入密码,Repeat passphrase再次确认密码

之后才显示出账号的哈希后的结果是0x19f24e1401ba93b1a13b63aa97e594746ed17c96

查看账户余额:

myAddress="0x19f24e1401ba93b1a13b63aa97e594746ed17c96"
eth.getBalance(myAddress)

搭建测试用区块链(Ubuntu环境)_初始化_06


再创第二个账号;

查看所有账户:

eth.accounts

查看各账户余额:

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

搭建测试用区块链(Ubuntu环境)_初始化_07


开始挖矿

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

一定要一套流程一起做完,否则你退出去再进入挖矿好像是在公有链上进行初始化挖矿,然后下载好多好多下不完的区块(以太坊的所有区块,一个8G内存的电脑要下载一周)

miner.start(1)

start 的参数表示挖矿使用的线程数,block reached canonical chain表示区块已经上链
停止挖矿

miner.stop()

另一种挖矿的语句(这是网课上的。。。)
开始在自己的私链上挖矿:

geth --datadir /mychain/data --networkid 98 --mine --minerthreads=1 --etherbase=0x19f24e1401ba93b1a13b63aa97e594746ed17c96

在自己单节点的私链上挖矿需要生成DAG(也就是生成挖矿的初始化线程,这个过程大约需要20~30分钟,视电脑性能而定)

搭建测试用区块链(Ubuntu环境)_区块链_08


再次挖矿的结果(Successfully sealed new block表示挖矿成功,这个过程我电脑给虚拟机分配了2G内存挖了十分钟…和比特币的TPS有的一拼):

搭建测试用区块链(Ubuntu环境)_区块链_09


修改保存挖矿收益的账户:

web3.fromWei(eth.getBalance(eth.accounts[0]),'ether')

搭建测试用区块链(Ubuntu环境)_区块链_10


退出以太坊客户端:

搭建测试用区块链(Ubuntu环境)_初始化_11


查看coinbase地址:

默认是eth.accounts[0]的地址,如果eth.acocunts为空则报错

eth.coinbase

设置coinbase地址,设置地址之后,挖矿所得将存入这个地址:

miner.setEtherbase(eth.accounts[0])


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
iyH1TGzy3Tt9