-
安装go环境
- 从参考链接选择Linux版本的go的安装包
- 使用命令 mv go(Tab补全)/usr/local 移动go安装包到/usr/local目录下
- 使用命令解压 sudo tar -xvzf go(Tab补全)
- 配置环境
- sudo gedit ~/.profile
- export PATH=$PATH:/usr/local/go/bin
- 激活生效 source ~/.profile
- 验证 go version 如果输出结果类似 go version go1.14.2 linux/amd64 表示安装成功
参考链接
- 如何在 Ubuntu 20.04 上安装 Go - 云+社区 - 腾讯云
- Downloads - go.dev 官网下载安装包
安装以太坊Geth
- 安装之前需要确保已经安装了git
- sudo apt-get update
- sudo apt-get install git
- 查看安装是否成功
- git --version
- 安装Geth
- sudo apt-get install software-properties-common
- sudo add-apt-repository -y ppa:ethereum/ethereum
- sudo apt-get update
- sudo apt-get install ethereum
- 查看安装是否成功
- geth --help
参考链接
- Ubuntu18.04下安装geth_KaryDean的博客-CSDN博客
搭建联盟链
- 联盟链使用私有化部署,只有使用同一个创世区块才可以加入到同一个组织内部,创世区块信息写在一个json格式的配置文件中
- 使用genesis.json 对其进行命名
- 前提操作
- genesis.json文件内容如下,直接拷贝复制即可
{"config": {"chainId": 666999, "homesteadBlock": 0,"eip150Block": 0,"eip155Block": 0,"eip158Block": 0},"alloc" : {},"coinbase" : "0x0000000000000000000000000000000000000000","difficulty" : "0x20000","extraData" : "","gasLimit" : "0x2fefd8","nonce" : "0x0000000000000042","mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000","parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000","timestamp" : "0x00"
}
- 参数解释
- 注意事项,我参考好多文章都缺失eip150Block:0这一句,这会出现错误。
- 报错情况为Failed to wirte genesis block:unsupported ordering
新的方案
- 在/home/chy-cpabe/Test_chain_ipfs/文件夹下面创建chain-first和chain-second两个文件夹
- 将这两个节点组合在一起构成联盟链
- 在chain-first和chain-second文件夹下面各自创建chaindata文件夹用于数据存储,和存储同一份genesis.json文件,将chainid设置为一样的
- 分别进行初始化操作
- –datadir:指定区块链数据的存储位置;这个需要大家根据实际的情况进行调整,进行自己路径的替换
- --networkid:指定创世脚本中的chainId
- 启动运行 初始化的命令
geth --datadir "/home/chy-cpabe/Test_chain_ipfs/chain-first/chaindata" init "/home/chy-cpabe/Test_chain_ipfs/chain-first/genesis.json"
geth --datadir "/home/chy-cpabe/Test_chain_ipfs/chain-second/chaindata" --networkid 666999 --port 30306 console 2>output.log
- 启动节点
geth --datadir "/home/chy-cpabe/Test_chain_ipfs/chain-first/chaindata" --networkid 666999 --port 30303 console 2>output.log
geth --datadir "/home/chy-cpabe/Test_chain_ipfs/chain-second/chaindata" --networkid 666999 --port 30306 console 2>output.log
- 查看进程
- 使用命令 ps aux | grep "geth" 查看当前的geth进程
- 使用命令 sudo kill -9 进程ID即可杀死进程
为两个节点都进行用户的创建
- personal.newAccount():创建账户
- eth.accounts:枚举系统中的账户;
- admin.peers 查看节点的peers的情况
- 通过分享enode地址的方式来让两个节点建立链接 使用命令 admin.nodeInfo.enode
- 通过上面命令,我们获得了节点的encode信息。encode信息主要用于连接到不同节点,在这些不同的节点它们能够分享交易和成功挖掘信息。
联盟链互通
- 使用命令admin.addPeer添加分享enode地址的方式来让两个节点建立链接
- admin.addPeer("enode://5dac7e1cbe892387f5ff403b5b79f4235789ba322fbc69f128ff5e5ef78c1475440e48444a6a39582d3742124647877dd7c4b75eceb746917b3cb0de433e5c97@127.0.0.1:30306")
- 返回true表示链接成功
- 在两个节点的终端输入 admin.peers 查看互联的节点信息,具体输入内容如下
交互式执行环境
- 这是一个交互式的 JavaScript 执行环境,在这里面可以执行 JavaScript 代码,其中 > 是命令提示符。在这个环境里也内置了一些用来操作以太坊的 JavaScript 对象,可以直接使用这些对象。这些对象主要包括:
- eth:包含一些跟操作区块链相关的方法;
- net:包含一些查看p2p网络状态的方法;
- admin:包含一些与管理节点相关的方法;
- miner:包含启动和停止挖矿的一些方法;
- personal:主要包含一些管理账户的方法;
- txpool:包含一些查看交易内存池的方法;
- web3:包含了以上对象,还包含一些单位换算的方法。
常用命令:
- personal.newAccount():创建账户;
- personal.unlockAccount():解锁账户;
- eth.accounts:枚举系统中的账户;
- eth.getBalance():查看账户余额,返回值的单位是 Wei(Wei 是以太坊中最小货币面额单位,类似比特币中的聪,1 ether = 10^18 Wei);
- eth.blockNumber:列出区块总数;
- eth.getTransaction():获取交易;
- eth.getBlock():获取区块;
- miner.start():开始挖矿;
- miner.stop():停止挖矿;
- web3.fromWei():Wei 换算成以太币;
- web3.toWei():以太币换算成 Wei;
- txpool.status:交易池中的状态;
- admin.addPeer():连接到其他节点;
获取完整节点地址
- 但是执行这个命令之后, 无法进入JavaScript console终端,使用其余命令进入终端
参考链接
- 区块链以太坊学习笔记_xpj55975的博客-CSDN博客
- https://www.i4k.xyz/article/qq_42532598/109333344
- 以太坊之Metamask钱包(Metamask简介,安装,使用,导入账户,挖矿,转账)_Rose J 的博客-程序员宅基地_metamask - 程序员宅基地
参考链接
- 以太坊如何搭建私有连联盟链_程序新视界-CSDN博客_以太坊搭建联盟链教程
- 以太坊搭建联盟链详细教程_weixin_34183910的博客-CSDN博客
- 以太坊联盟链-多节点私链搭建手册【附源码】_暗黑魔君_51CTO博客
- 自己动手部署以太坊联盟链 - 掘金
- https://www.i4k.xyz/article/qq_42532598/109333344
- 以太坊私有链 使用dev模式_CHYabc123456hh的博客-CSDN博客
- 基于Mac环境搭建以太坊私有区块链进行挖矿模拟_CHYabc123456hh的博客-CSDN博客_mac挖矿eth
- https://github.com/xianfeng92/Love-Ethereum/blob/master/notes/%E8%87%AA%E5%B7%B1%E5%8A%A8%E6%89%8B%E9%83%A8%E7%BD%B2%E4%BB%A5%E5%A4%AA%E5%9D%8A%E8%81%94%E7%9B%9F%E9%93%BE.md