以太坊go-ethereum客户端docker安装(二)开发(dev)环境搭建

2024-08-28 23:32

本文主要是介绍以太坊go-ethereum客户端docker安装(二)开发(dev)环境搭建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文转载:http://blog.csdn.net/wo541075754/article/details/53875604

在上一篇博客中,讲述了基于Docker怎么搭建一个Go-ethereum节点。作为开发人员,如果只是单纯的拥有一个Full node,还无法满足正常的开发。比如说,进行转账交易,你要考虑是否拥有一定的ETC,是否能够承受高昂的gas?基于这点,今天这篇博客就介绍一下如何搭建一个私有的dev环境。

方法一:利用现有开源

先给大家介绍一个现成的ethereum/client-go:test工具镜像。

下载工具

地址:https://github.com/pragmaticcoders/docker-geth-dev 
将项目通过zip包下载下来,解压到将要执行docker命令的一个目录下。目录的结构与github上面上的目录结构一样,就不在这里展示了。

构建镜像

执行以下命令,构建镜像,执行的过程中需要特别注意命令最后是有一个“.”的,否则会出现错误:

docker build -t ethereum/client-go:test .
  • 1
  • 1

启动镜像

执行以下命令启动镜像:

docker run --name geth -d -p 8110:8110  ethereum/client-go:test
  • 1
  • 1

此处需注意自己所使用的端口。 
至此一个dev环境搭建完成,其中的三个账户已经被初始化了一定的余额。

配置文件解析

genesis.json文件:

{"nonce": "0x00006d6f7264656e","difficulty": "0x20000","mixhash": "0x00000000000000000000000000000000000000647572616c65787365646c6578","coinbase": "0xde1e758511a7c67e7db93d1c23c1060a21db4615","timestamp": "0x00","parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000","extraData": "0x","gasLimit": "0x2FEFD8","alloc": {"de1e758511a7c67e7db93d1c23c1060a21db4615": {"balance": "1000"},"27dc8de9e9a1cb673543bd5fce89e83af09e228f": {"balance": "1100"},"d64a66c28a6ae5150af5e7c34696502793b91ae7": {"balance": "900"}}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

此文件为配置创世块文件。对三个账户进行了初始化金额,分别为1000,1100和900。其中初始化为1000里的为矿工奖励接收账户,随着挖矿会不断增加,你看到时候可能已经不是这个余额了。

下面再简单看一下Dockerfile文件的内容,其实很简单,就是将写好的配置文件cp到docker容器的指定位置。特别需要留意的是端口号,可根据自己的需要进行修改。其他内容请自行阅读分析。

FROM ethereum/client-go# # our own custom bult geth that mines really fast
# COPY geth /usr/bin/geth# script that invokes with all those
# command line options
COPY rungeth.docker /usr/bin/rungeth# these two files and directory of geth state belong together and must be
# kept in sync if changes  are ever made
# Note we are taking advantage of Docker's copy-on-mount feature
COPY geth.password /root/geth.password
COPY genesis.json  /root/genesis.json
COPY ethereum /root/.ethereumENTRYPOINT []
ENTRYPOINT ["/usr/bin/rungeth"]# RUN ["/usr/bin/rungeth"]# use non-standard ports so don't accidently connect to real servers
# XXX Docker inheritance doesn't override, it extends the port      list...
EXPOSE 8110
EXPOSE 30310
EXPOSE 6110
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

方法二

此方法为本人自行探索得出,经验证可以使用。 
此方法非常简单,只需在执行正常的启动容器命令后面添加“–dev”参数即可。不过此方法不会像上面方法那样创建一批初始化账户,不过可以自行挖矿,进行交易,轻易获得不同金额的账户。

docker run -td -m 512M --memory-swap -1 -p 8545:8545 -p 30303:30303 -v /mnt/docker/dev:/root/.ethereum --name gethDev  ethereum/client-go  --rpcapi "db,eth,net,web3,personal,admin,miner" --rpc --rpcaddr "0.0.0.0" --cache=512 --dev
  • 1
  • 1

以上为本人启动时调整之后的启动命令。

后记

本篇博客就写到这里,如有问题请留言沟通,本人也处于探索阶段,难免有疏漏和浅薄之处,还希望大家共同讨论进步。关注博客,共同进步。


这篇关于以太坊go-ethereum客户端docker安装(二)开发(dev)环境搭建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1116201

相关文章

Go标准库常见错误分析和解决办法

《Go标准库常见错误分析和解决办法》Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓工欲善其事,必先利其器,本文将... 目录1. 使用了错误的time.Duration2. time.After导致的内存泄漏3. jsO

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

go中空接口的具体使用

《go中空接口的具体使用》空接口是一种特殊的接口类型,它不包含任何方法,本文主要介绍了go中空接口的具体使用,具有一定的参考价值,感兴趣的可以了解一下... 目录接口-空接口1. 什么是空接口?2. 如何使用空接口?第一,第二,第三,3. 空接口几个要注意的坑坑1:坑2:坑3:接口-空接口1. 什么是空接

MySQL Workbench 安装教程(保姆级)

《MySQLWorkbench安装教程(保姆级)》MySQLWorkbench是一款强大的数据库设计和管理工具,本文主要介绍了MySQLWorkbench安装教程,文中通过图文介绍的非常详细,对大... 目录前言:详细步骤:一、检查安装的数据库版本二、在官网下载对应的mysql Workbench版本,要是

Docker镜像pull失败两种解决办法小结

《Docker镜像pull失败两种解决办法小结》有时候我们在拉取Docker镜像的过程中会遇到一些问题,:本文主要介绍Docker镜像pull失败两种解决办法的相关资料,文中通过代码介绍的非常详细... 目录docker 镜像 pull 失败解决办法1DrQwWCocker 镜像 pull 失败解决方法2总