quorum-maker中遇到的问题

问题1:

在服务器中搭建quorum-maker遇到某个服务器创建并且运行节点后UI界面不显示节点列表,并且不出块,其他节点无法连接。

节点日志显示

json:cannot unmarshal string into Go struct field Protocols.eth of type client.Eth

问题原因: 跟docker有关,可能是docker配置问题、特别是网络配置。

解决方法:我是直接对docker进行删除完全删除

这是centos系统下的脚本

#! /bin/bash
sudo yum remove docker -y
sudo yum remove docker-client -y
sudo yum remove docker-client-latest -y
sudo yum remove docker-common -y
sudo yum remove docker-latest -y
sudo yum remove docker-latest-logrotate -y
sudo yum remove docker-logrotate -y
sudo yum remove docker-engine -y
sudo yum remove docker-ce -y
sudo yum remove docker-compose -y
sudo yum -y remove $(yum list installed | grep docker) -y
sudo yum remove docker-selinux -y
#删除所有docker镜像以及容器和卷
sudo rm -rf /var/lib/docker

以上命令保存为脚本x.sh后赋予权限sudo chomd 777 x.sh,然后进行删除。但这还不够

我们 cd / 来进入 / 目录然后通过查找所有包含docker的文件名的文件。

把它们输出到我们的用户目录下面生成一个文件。里面包含了所有包含docker的文件及文件夹

然后写一个脚本对这些文件和文件夹进行删除然后重启即可.

如果重启完后重装docker出现问题可以查看我的另一篇安装docker的文章

sudo find ./ -name '*docker*'  >> /home/zyc/docker.logg

 问题2:

使用geth连接quorum 提示没有raft方法


问题原因:

是因为使用的geth是go-ethereum编译的,不支持raft

 解决方法:

下载quorum的源码进行编译获得geth

编译方法是进入quorum源码目录后 make geth   即可在当前目录下的build目录里找到geth

以下是各种错误大杂烩

常见错误

错误1:

UnhandledPromiseRejectionWarning: Error: Invalid JSON RPC response: ""
检查一下连接的供应商地址及端口是否正确

改一下供应商即可

后续错误可以跟我提,我将把它加入到本文档中。节省大家时间

错误2:

Error: Invalid number of parameters for "undefined". Got 0 expected 2!
这个问题是在部署合约的时候会碰到 原因是 合约有构造函数 需要输入参数来部署。

错误3:

部署的时候卡住没有任何报错或者提示:

需要检查部署脚本里连接的供应商IP及端口是否填错

错误4:

调用合约的时候可能会出现这个提示:

 

 Error: Returned values aren't valid, did it run Out of Gas?

如果是用node的web3来调用的话 

这个是因为web3j的一个bug如果你是web3 1.0.0-beta.36版本的话降级到web3 1.0.0-beta.35即可解决

运行这个命令降级web3的版本

sudo npm i web3@1.0.0-beta.35 --save

错误5:

注意:调用私有合约写入的时候需要指定对端的节点公钥,如果不输入可能报错也可能不报错、但是数据是一定写入不进去的。

如果加上了公钥字段和信息后报错如下:

Error: Returned error: Non-200 status code: &{Status:500 Internal Server Error StatusCode:500 Proto:HTTP/1.1 ProtoMajor:1 ProtoMinor:1 Header:map[Date:[Mon, 22 Jul 2019 03:38:30 GMT] Server:[Warp/3.2.13]] Body:0xc42020f7c0 ContentLength:-1 TransferEncoding:[chunked] Close:false Uncompressed:false Trailer:map[] Request:0xc4200ec600 TLS:<nil>}

说明你的公钥输入错误。务必检查一遍

错误6:

使用geth附加IPC报错

示例代码

geth attach '../quorum-maker-master/node2/node/qdata/geth.ipc'

错误提示:

connect: permission denied

原因是因为你没有获取对geth.ipc文件及所在文件夹的权限

解决方法

cd && sudo chmod 777 * -R

同样我这里使用node来访问ipc

let web3 = new Web3('/home/zyc/quorum-maker-master/node2/node/qdata/geth.ipc',net)

错误提示:

ERROR: Couldn't connect to node on IPC.

这个问题也可以用上面的方法解决。也是因为权限问题.  还有就是geth.ipc必须存在。geth.ipc只有在本地节点已启动的时候才会出现.

错误7:

Error: Error: Number can only safely store up to 53 bits

解决方法:

如果是用truffle框架部署遇到这个报错的话解决方法如下:
首先去这个Github里面拷贝这个项目

https://github.com/edgraaff/quorum-rpc-proxy

然后进入这个项目目录里面更改config.js文件内容改成如下

module.exports = {
  rpcUrl: 'http://localhost:22000', //你当前的供应商地址及端口
  port: 7545
};

再把truffle的配置文件truffle-config.js改成

module.exports = {
  networks: {
    development: {
      host: "127.0.0.1",
      port: 7545, // was 8545
      network_id: "*", // Match any network id
      gasPrice: 0,
      gas: 4500000
    },
    nodefour:  {
      host: "127.0.0.1",
      port: 22003,
      network_id: "*", // Match any network id
      gasPrice: 0,
      gas: 4500000
    },
    nodeseven:  {
      host: "127.0.0.1",
      port: 22006,
      network_id: "*", // Match any network id
      gasPrice: 0,
      gas: 4500000
    }
  },
  // Set default mocha options here, use special reporters etc.
  mocha: {
    // timeout: 100000
  },

  // Configure your compilers
  compilers: {
    solc: {
      version: "0.4.25",    // Fetch exact version from solc-bin (default: truffle's version)
    }
  }
}

之后在quorum-rpc-proxy目录下

sudo npm install
sudo npm run start

大概就是这个意思。如果你的配置跟我不一样你只需要注意到config.js文件就是个代理的功能.把你对应的配置项端口改一下就行了

如果是在连接或者调用合约过程中出现这个提示的话我也无能为力。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值