当前位置:首页>区块链文章>区块链推广>实验:Ubuntu虚拟机实现geth私有链搭建和双节点连接

实验:Ubuntu虚拟机实现geth私有链搭建和双节点连接

环境:宿主系统:Windows 10家庭版 虚拟机: VMware Workstation Pro 16.1.2 操作系统:Ubuntu 20.04.364位 geth版本:1.9.25 一.安装geth (1)通过apt-get方式在线安装sudo apt-get install software-properties-commonsudo add-apt-repository -y ...

环境:

      宿主系统:Windows 10家庭版

      虚拟机:   VMware Workstation Pro 16.1.2 

      操作系统:Ubuntu 20.04.3 (LTS) 64位(两台,一台一节点)

      geth版本: 1.9.25

           

一.安装geth

        (1)通过apt-get方式在线安装

sudo apt-get install software-properties-commonsudo add-apt-repository -y ppa:ethereum/ethereumsudo apt-get updatesudo apt-get install ethereum

        但是通过apt-get会自动安装最新版本的(最新版本一般都不够稳定)所以为了更顺利地完成实验,我使用源代码安装的方式来安装1.9版本的geth。

        (2)源代码安装

 注:下述操作如果出现命令没安装的情况,根据命令行给出的提示信息安装即可。

1.克隆github仓库:

git clone https://github.com/ethereum/go-ethereum.git

2.从源码构建Geth :

①进入ethereum目录:cd go-ethereum

cd go-ethereum

②切换geth版本 :

git checkout release/1.9

③打包安装:

make geth

④配置环境变量:

export GETHROOT=/home/khaz/下载/go-ethereum(go-ethereum路径)export PATH=$PATH:$GETHROOT/build/bin

注:发现每次进入命令行都要重新配置环境变量,否则会报错找不到geth命令

解决方法: source /etc/profile关闭终端后失效要重新输入的原因_一名普通码农的菜地-CSDN博客_source 失效实验:Ubuntu虚拟机实现geth私有链搭建和双节点连接https://blog.csdn.net/cdnight/article/details/86653006?spm=1035.2023.3001.6557&utm_medium=distribute.pc_relevant_bbs_down.none-task-blog-2~default~OPENSEARCH~default-12.nonecase&depth_1-utm_source=distribute.pc_relevant_bbs_down.none-task-blog-2~default~OPENSEARCH~default-12.nonecase

⑤查看安装是否成功:

geth version

实验:Ubuntu虚拟机实现geth私有链搭建和双节点连接

二.配置节点

保证节点之间是互相连通的,并且不受外网影响。

(nat模式下,将网络设置改为本地链路,重启或者重新加载网络设置即可)

节点1 ping:实验:Ubuntu虚拟机实现geth私有链搭建和双节点连接

节点2 ping: 实验:Ubuntu虚拟机实现geth私有链搭建和双节点连接

建立私有链:只需要完成一次后,将文件复制一份到克隆的虚拟机中即可

①创建创始域文件(用来生成属于我们自己的私有链的文件)

mkdir ethereumcd ethereummkdir datavi genesis.json

vi操作: Ubuntu中的Vi编辑器的基本操作命令_自我总结,分享所有,快乐每一天-CSDN博客_ubuntu系统vi编辑器

genesis.json文件内容

{  \"config\": {    \"chainId\": 666,    \"homesteadBlock\": 0,    \"eip150Block\": 0,    \"eip150Hash\": \"0x0000000000000000000000000000000000000000000000000000000000000000\",    \"eip155Block\": 0,    \"eip158Block\": 0,    \"byzantiumBlock\": 0,    \"constantinopleBlock\": 0,    \"petersburgBlock\": 0,    \"istanbulBlock\": 0,    \"ethash\": {}  },  \"nonce\": \"0x0\",  \"timestamp\": \"0x5ddf8f3e\",  \"extraData\": \"0x0000000000000000000000000000000000000000000000000000000000000000\",  \"gasLimit\": \"0x47b760\",  \"difficulty\": \"0x00001\",  \"mixHash\": \"0x0000000000000000000000000000000000000000000000000000000000000000\",  \"coinbase\": \"0x0000000000000000000000000000000000000000\",  \"alloc\": { },  \"number\": \"0x0\",  \"gasUsed\": \"0x0\",  \"parentHash\": \"0x0000000000000000000000000000000000000000000000000000000000000000\"}

②创建创世区块(在ethereum目录下)

geth --datadir data init genesis.json

三.连接节点

前提:两节点要加入同一条私链,即这两个节点初始化的创世区块(即genesis.json)必须要一模一样。启动节点的时候要使用同样的networkid(即genesis.json中chanlid参数)。节点间的port和rpcport要不同。

启动私有链

注:如果是最新版本的geth需要把rpc改为http,rpcxxx改为http.xxx

节点1

geth --port 3000 --networkid 666 --datadir=\"data\" --maxpeers=3 --rpc --rpcport 8545 --rpcaddr 127.0.0.1 --rpccorsdomain \"*\"  --rpcapi=\"db,eth,web3,personal,admin,txpool\" console --allow-insecure-unlock

节点2

geth --port 3001 --networkid 666 --datadir=\"data\" --maxpeers=3 --rpc --rpcport 8546 --rpcaddr 127.0.0.1 --rpccorsdomain \"*\"  --rpcapi=\"db,eth,web3,personal,admin,txpool\" console --allow-insecure-unlock

实验:Ubuntu虚拟机实现geth私有链搭建和双节点连接

出现上图说明启动成功。

创建账户,这里为了方便密码都设为“123”

personal.newAccount(\"123\")

节点1:

实验:Ubuntu虚拟机实现geth私有链搭建和双节点连接

节点2:

实验:Ubuntu虚拟机实现geth私有链搭建和双节点连接

返回的绿色信息是创建的账户所对应的哈希地址

开始连接

获取节点2信息

admin.nodeInfo.enode

实验:Ubuntu虚拟机实现geth私有链搭建和双节点连接

\”enode://eb72c7e321e68f07c4113668fab81a8b098fb0518c167a50e6c6e4f1f99f411359dc111064fa58869b4646635cbf588df3a39f176e27556c9246d2e88737cc81@169.254.128.131:3001\”

实验:Ubuntu虚拟机实现geth私有链搭建和双节点连接

注意将红色部分改为节点2的真实ip地址(查看网络设置中的IPv4地址),因为admin.nodeInfo.enode输出的不一定是正确的

在节点1中加入节点2:

admin.addPeer(\"enode://eb72c7e321e68f07c4113668fab81a8b098fb0518c167a50e6c6e4f1f99f411359dc111064fa58869b4646635cbf588df3a39f176e27556c9246d2e88737cc81@169.254.128.131:3001\")

用net.peerCount和admin.peers命令查看是否连接成功

实验:Ubuntu虚拟机实现geth私有链搭建和双节点连接

 可以看到节点数为1,并且展示了连接的节点,说明连接成功。

四.挖矿

(1)开始挖矿

miner.start(1)

实验:Ubuntu虚拟机实现geth私有链搭建和双节点连接实验:Ubuntu虚拟机实现geth私有链搭建和双节点连接

会先出现上述情况,为挖矿初始化,当参数percentage的值到达100后,就会正式开始挖矿。

初始化完成后等待一会儿就会出现下图,说明挖矿成功。

实验:Ubuntu虚拟机实现geth私有链搭建和双节点连接

节点2中会自动进行同步区块信息

实验:Ubuntu虚拟机实现geth私有链搭建和双节点连接

 在节点1和节点2 中使用eth.blockNumber查看区块高度(刚刚挖的区块数量)都显示下图,说明同步成功。

实验:Ubuntu虚拟机实现geth私有链搭建和双节点连接

 (2)停止挖矿

miner.stop()

五.交易

(1)查询账户余额

eth.getBalance(eth.accounts[0])

节点1

实验:Ubuntu虚拟机实现geth私有链搭建和双节点连接

节点二

实验:Ubuntu虚拟机实现geth私有链搭建和双节点连接

 (2)解锁钱包

因为以太坊钱包大概每5分钟就会被锁住,所以交易和创建合约都需要先解锁账户。

personal.unlockAccount(eth.accounts[0])

 实验:Ubuntu虚拟机实现geth私有链搭建和双节点连接

返回true说明解锁成功。

(3)转账

设置转账额度:参数(金额,单位)

amount = web3.toWei(8,\'ether\')  

实验:Ubuntu虚拟机实现geth私有链搭建和双节点连接

转账:参数({from:转账人钱包地址,to:接收人钱包地址,value:amount})

eth.sendTransaction({from:eth.accounts[0],to:eth.accounts[1],value:amount})

 实验:Ubuntu虚拟机实现geth私有链搭建和双节点连接

图中最后一行为此次交易的hash值。

 注意如果此时去查看账户余额会发现余额没有变化,这是因为要处于挖矿状态下,交易才会进行。

miner.start(1)启动挖矿后再查看,

实验:Ubuntu虚拟机实现geth私有链搭建和双节点连接

 可以看到节点2的账户的余额为刚刚转账的额度,说明转账成功。

(4)查询交易:参数(交易的hash值)

eth.getTransaction(\"0xf308c404dfcccaec2bef5aaf427ca453f6cca2d9565f4a3cab7e48133e3e5cc4\")

实验:Ubuntu虚拟机实现geth私有链搭建和双节点连接

参考: Ubuntu中的Vi编辑器的基本操作命令_自我总结,分享所有,快乐每一天-CSDN博客_ubuntu系统vi编辑器
Linux系统下安装Geth客户端_shciily的博客-CSDN博客_linux安装geth

( 全网最详细的Ubuntu挖矿教程(私有链搭建、挖矿、转账和交易)_自我总结,分享所有,快乐每一天-CSDN博客_ubuntu挖矿

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
区块链推广

有关区块链的一些理解

2021-12-25 8:55:44

区块链推广

元宇宙区块链游戏开发成本 链游开发成本 深圳链游开发成本

2021-12-26 8:01:48

重要说明

本站资源大多来自网络,如有侵犯你的权益请联系管理员 区块链Bi站  或给邮箱发送邮件834379394@qq.com 我们会第一时间进行审核删除。 站内资源为网友个人学习或测试研究使用,未经原版权作者许可,禁止用于任何商业途径!请在下载24小时内删除!


如果你遇到支付完成,找不到下载链接,或者不能下载,或者解压失败,先不要忙,加客服主的QQ:834379394 (客服有可能有事情或者在睡觉不能及时的回复您,QQ留言后,请耐心等待即可!)

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索