Ubuntu搭建联盟链,实现节点之间数据同步

  • 安装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 表示安装成功

参考链接

安装以太坊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

参考链接

搭建联盟链

  • 联盟链使用私有化部署,只有使用同一个创世区块才可以加入到同一个组织内部,创世区块信息写在一个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终端,使用其余命令进入终端

 

参考链接

参考链接

请使用手机"扫一扫"x
1. 安装Ubuntu系统 首先需要在服务器上安装Ubuntu系统(建议使用16.04及以上版本)。可以使用云服务器或者本地安装。 2. 安装Geth Geth是以太坊的官方客户端,可以用于搭建私有链和联盟链。可以使用以下命令安装: sudo add-apt-repository -y ppa:ethereum/ethereum sudo apt-get update sudo apt-get install -y ethereum 安装完成后,可以使用以下命令查看版本号: geth version 3. 创建创世块 首先需要创建创世块,创世块是区块链的第一个区块,包含了一些初始化的信息,如初始账户、初始余额、挖矿难度等。可以使用以下命令创建创世块: geth --datadir /path/to/chaindata init /path/to/genesis.json 其中,/path/to/chaindata为存储区块链数据的路径,/path/to/genesis.json为创世块的配置文件。 4. 启动节点 使用以下命令启动节点: geth --datadir /path/to/chaindata --networkid 1234 --nodiscover --rpc --rpcaddr "0.0.0.0" --rpcport 8545 --rpcapi "eth,web3,personal,net" console 其中,/path/to/chaindata为存储区块链数据的路径,--networkid指定联盟链的ID,--nodiscover禁用节点发现功能,--rpc启用RPC服务,--rpcaddr指定RPC服务监听的IP地址,--rpcport指定RPC服务监听的端口号,--rpcapi指定可用的RPC接口,console表示启动控制台。 5. 创建账户 在控制台中使用以下命令创建账户: personal.newAccount("password") 其中,password为账户的密码。 6. 启动挖矿 使用以下命令启动挖矿: miner.start() 7. 部署智能合约 使用Solidity编写智能合约代码,并使用Remix或Truffle等工具进行编译和部署。 以上就是在Ubuntu系统上搭建以太坊联盟链的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值