Docker搭建以太坊私有链

参考攻略:

使用Docker搭建以太坊私有链并部署合约

本文主要是解决部分指令的报错问题,尽量不包含原文内容。

本文环境:阿里云的centos7

创建新用户的文件信息

如果按照攻略,在创建完新用户后,对应的用户信息会存放在/workspace/dapp/miner/data/keystore路径下,可以通过ls指令查看: 在这里插入图片描述

创建挖矿节点遇到的问题

docker: Error response from daemon: OCI runtime create failed: container_linux.go:346: starting container process caused "exec: \"/workspace/dapp/init.sh\": permission denied": unknown

这是由于我们创建文件时是使用root用户创建的,而docker启动时是以一般用户来执行该文件,会出现权限不足的报错。当然如果使用一般用户创建文件应该不会出现以上报错

提供一下两种办法来解决问题:

  • 在执行docker指令前添加 sudo
  • 使用chmod 777 [文件名]将对应文件的权限设置为所有用户都可以操作

配置“从矿工节点”问题

使用admin.nodeInfo.enode可以查看当前节点对应的节点信息

在这里插入图片描述
这一段结果可以作为添加动态节点addPeer的参数,其中如果有[::],要改成对应的主机ip,如在本机就改成127.0.0.1。

但在本测试用例中,调用addPeer时并没有添加节点,可能是主机和从机都绑定了同一个端口,让系统以为是同一台设备(个人认为)

在truffle容器中指令和文件下载问题

作者提供的镜像,其内核是Alpine Linux,这一点可以使用cat /etc/issue指令进行查验,通过搜索我们可以使用apk add [软件名]下载对应软件

合约部署的问题

在使用truffle init或truffle unbox……会提示连接不到github,而在网上大多数攻略会告诉你需要在/etc/hosts中配置对应的端口号,实际上这样没有用。

分析完错误日志,发现truffle init和truffle unbox的实际功能是从github中下载可以供编译部署的box,那么我可以直接从github中将对应的box下载下来。

git clone https://github.com/truffle-box/webpack-box
cd webpack-box

使用以上命令可以下载到对应编译部署的box,然后我们进行对应的目录就可以开始我们合约的编译部署了。

  • truffle.js文件的创建是在~/webpack-box中
  • 合约文件存放路径是~/webpack-box/contracts中
  • 部署脚本的存放路径是~/webpack-box/migrations中

以下编译后的文件目录

在这里插入图片描述

合约发布的问题

  1. Error: authentication needed: password or unlock undefined

    这是因为你要部署的账号处于锁定状态,需要回到对应的容器中把账号解锁

    user1=eth.accounts[0]
    personal.unlockAccount(user1)
    

    接下输入对应密码即可部署

  2. Insufficient funds for gas * price + value

    这个说明你要部署的以太坊账户中的gas不够,需要通过挖矿获得gas

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值