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

相关文章

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

JAVA中安装多个JDK的方法

《JAVA中安装多个JDK的方法》文章介绍了在Windows系统上安装多个JDK版本的方法,包括下载、安装路径修改、环境变量配置(JAVA_HOME和Path),并说明如何通过调整JAVA_HOME在... 首先去oracle官网下载好两个版本不同的jdk(需要登录Oracle账号,没有可以免费注册)下载完

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

go中的时间处理过程

《go中的时间处理过程》:本文主要介绍go中的时间处理过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 获取当前时间2 获取当前时间戳3 获取当前时间的字符串格式4 相互转化4.1 时间戳转时间字符串 (int64 > string)4.2 时间字符串转时间

Go语言中make和new的区别及说明

《Go语言中make和new的区别及说明》:本文主要介绍Go语言中make和new的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 概述2 new 函数2.1 功能2.2 语法2.3 初始化案例3 make 函数3.1 功能3.2 语法3.3 初始化