在服务器中搭建quorum-maker遇到某个服务器创建并且运行节点后UI界面不显示节点列表,并且不出块,其他节点无法连接。
节点日志显示
json:cannot unmarshal string into Go struct field Protocols.eth of type client.Eth
这是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
使用geth连接quorum 提示没有raft方法
是因为使用的geth是go-ethereum编译的,不支持raft
下载quorum的源码进行编译获得geth
编译方法是进入quorum源码目录后 make geth 即可在当前目录下的build目录里找到geth
UnhandledPromiseRejectionWarning: Error: Invalid JSON RPC response: ""
检查一下连接的供应商地址及端口是否正确
改一下供应商即可
后续错误可以跟我提,我将把它加入到本文档中。节省大家时间
Error: Invalid number of parameters for "undefined". Got 0 expected 2!
这个问题是在部署合约的时候会碰到 原因是 合约有构造函数 需要输入参数来部署。
错误3:
部署的时候卡住没有任何报错或者提示:
需要检查部署脚本里连接的供应商IP及端口是否填错
调用合约的时候可能会出现这个提示:
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 [email protected] --save
注意:调用私有合约写入的时候需要指定对端的节点公钥,如果不输入可能报错也可能不报错、但是数据是一定写入不进去的。
如果加上了公钥字段和信息后报错如下:
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:}
说明你的公钥输入错误。务必检查一遍
使用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只有在本地节点已启动的时候才会出现.
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文件就是个代理的功能.把你对应的配置项端口改一下就行了
如果是在连接或者调用合约过程中出现这个提示的话我也无能为力。