搭建开发模式下的以太坊私有链【Geth:1.14.5】

news2024/12/22 9:46:09

一、为什么用到私有链?

在以太坊的公有链上部署智能合约、发起交易需要花费以太币。而通过修改配置,可以在本机搭建一套以太坊私有链,因为与公有链没关系,既不用同步公有链庞大的数据,也不用花钱购买以太币,很好地满足了智能合约开发和测试的要求,开发好的智能合约也可以很容易地切换接口部署到以太坊公有链上。

二、以太坊客户端

以太坊客户端用于接入以太坊网络,进行账户管理、交易、挖矿、智能合约相关的操作。目前有多种语言实现的客户端,常用的有 Go 语言实现的 go-ethereum 客户端 Geth,支持接入以太坊网络并成为一个完整节点,也可作为一个 HTTP-RPC 服务器对外提供 JSON-RPC 接口。
其他的客户端有:

  • Parity:Rust 语言实现;
  • cpp-ethereum:C++ 语言实现;
  • ethereumjs-lib:JavaScript 语言实现;
  • Ethereum(J):Java 语言实现;
  • ethereumH:Haskell 语言实现;
  • pyethapp: Python 语言实现;
  • ruby-ethereum:Ruby 语言实现;

三、Geth 简介

官方文档:https://geth.ethereum.org/

geth 是以太坊的客户端,其全称是go-ethereum,它支持以太坊区块链的所有功能,包括智能合约执行、钱包功能和节点同步。它是由以太坊的官方开发团队开发和维护的,但也有许多社区贡献者参与其开发。

以下是 geth 的几个关键特点:

  1. 完整的节点geth 可以运行一个完整的以太坊节点,这意味着它可以验证区块链上的交易和区块,并与其他节点通信以保持网络的一致性。
  2. 钱包:它还提供了一个内置的钱包,允许用户存储、发送、接收和交易以太币和智能合约代币。
  3. 智能合约执行geth 支持智能合约的创建和部署,允许开发者在其上运行自定义的智能合约。
  4. RPC接口:提供了一个JSON-RPC接口,允许开发人员使用各种编程语言与以太坊区块链进行交互。
  5. 命令行界面geth 通过命令行界面(CLI)进行操作,这使得无需图形用户界面即可进行交互。
  6. 可扩展性:它支持插件和模块,允许开发者增加新的功能或修改现有功能。
  7. 跨平台geth 可以在多种操作系统上运行,包括Windows、macOS和Linux。
  8. EVM兼容性:作为以太坊的客户端,geth 运行在以太坊虚拟机(EVM)上,这使得它能够支持任何符合EVM标准的智能合约。

geth 常用于以太坊的开发、测试和部署,也被许多企业用于构建基于以太坊的应用程序和平台。由于其开源特性和强大的社区支持,geth 成为了最受欢迎的以太坊客户端之一。

注意:

Geth 是一个执行客户端。从历史上看,仅一个执行客户端就足以运行一个完整的以太坊节点。然而,由于以太坊从工作量证明 (PoW) 切换到基于权益证明 (PoS) 的共识,Geth 需要与另一个称为“共识客户端”的软件相结合。

通过执行客户端和共识客户端相结合足以形成一个完整的以太坊节点

目前有五个共识客户端可以与 Geth 一起运行。这些是:

  • Lighthouse:用 Rust 编写
  • Nimbus:用 Nim 编写
  • Prysm:用 Go 语言编写
  • Teku:用 Java 编写
  • Lodestar:用TypeScript编写

四、为什么要用开发模式下的私有链

对于开发人员来说,在这样一个环境中工作通常很方便,在这个环境中,可以快速部署和测试对客户端或应用程序软件的更改,而不会将实际用户或资产置于风险之中。为此,Geth 有一个 --dev 标志,可以在“开发者模式”下启动 Geth。这将创建一个单节点以太坊测试网络,不与任何外部对等节点连接。它仅存在于本地计算机上。在开发人员模式下启动 Geth 将执行以下操作:

  • Initializes the data directory with a testing genesis block
    使用测试创世块初始化数据目录
  • Sets max peers to 0 (meaning Geth does not search for peers)
    将 max peers 设置为 0(表示 Geth 不搜索对等节点)
  • Turns off discovery by other nodes (meaning the node is invisible to other nodes)
    关闭其他节点的发现(意味着该节点对其他节点不可见)
  • Sets the gas price to 0 (no cost to send transactions)
    将 gas 价格设置为 0(发送交易无需支付任何费用)
  • Simulates a consensus client which allows blocks to be mined as-needed without excessive CPU and memory consumption
    模拟共识客户端,允许根据需要挖掘区块,而不会消耗过多的 CPU 和内存
  • Uses on-demand block generation, producing blocks when transactions are waiting to be mined
    使用按需区块生成,在交易等待挖掘时生成区块

五、开发模式搭建教程

①去官网下载最新稳定版的geth-64位

在这里插入图片描述

温馨提示:建议下载带有tools的,这样可以更好的帮助我们开发

②下载完毕后进行解压。解压后会得到很多.exe的可执行文件

⑤进入到这些.exe的可执行文件的目录下,创建password.txt文档,在文档里面输入一个密码

这个密码很重要,将私钥导入钱包的时候需要用到这个密码

在这里插入图片描述

⑥在含有geth.exe的目录下使用cmd进入命令行

⑦输入以下指令来启动开发模式下的以太坊私链

geth --datadir "./data" --dev --dev.period 12 --networkid 10 --http --http.port 8545 --http.addr 127.0.0.1 --http.corsdomain "*" --http.api eth,web3,net  --password password.txt 
  • geth:这是执行 Geth 客户端的命令。

  • --datadir :这个选项指定了数据目录的路径,Geth 将在这个目录中存储区块链数据和相关文件。

  • --dev:–dev.period 12 来创建实际的区块创建频率,而不是仅在交易处于待处理状态时创建区块。遵循本教程所需的其他配置选项。这里选的是12秒

  • --networkid 10:指定私有链的网络标识符,这个值用于在不同私有链之间进行区分。

  • --http:启用 HTTP-RPC 通信接口,允许通过 HTTP 请求与 Geth 进行交互。

  • --http.port 8545:指定 HTTP-RPC 服务的端口号,一般是 8545。

  • --http.addr 127.0.0.1:设置 HTTP-RPC 服务监听的地址,127.0.0.1表示允许来自本地的连接。

    • 如果是在服务器上,可以设置为0.0.0.0这样允许任何地址连接
  • --http.corsdomain "*":配置允许跨域请求的域名,设置为 “*” 表示允许任何域名进行跨域请求。

  • --http.api eth,web3,net:指定启用的 HTTP-RPC 接口,这里列出了一些常用的接口,包括api、以太坊操作、网络信息、Web3 功能。

  • --password:指定自动创建的私钥JSON文件的密码

–http.api eth,web3,net`:指定启用的 HTTP-RPC 接口,这里列出了一些常用的接口,包括api、以太坊操作、网络信息、Web3 功能。

  • --password:指定自动创建的私钥JSON文件的密码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1843492.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024GLEE生活暨教育(上海)博览会,8月20-22日,国家会展中心(上海)

2024GLEE生活暨教育(上海)博览会将于8月20-22日在中国国家会展中心(上海)举行,博览会总面积近万平方米,设有美好生活和教育产品两大主力展区,全面覆盖婴幼儿、学龄前、小学、初中、高中、大学、中年、老年各个年龄段的…

2024年了,上大学可以不需要用到电脑吗?

前言 在2024年的今天,电脑已经成为了人们工作生活的一大部分。Oh, no!好像手机才是。 好像每个人都是这样的:可以没有电脑,但不能没有手机…… 所以2024年的今天,上大学的小伙伴们可以不需要用到电脑吗?…

DDMA信号处理以及数据处理的流程---cfar检测

Hello,大家好,我是Xiaojie,好久不见,欢迎大家能够和Xiaojie一起学习毫米波雷达知识,Xiaojie准备连载一个系列的文章—DDMA信号处理以及数据处理的流程,本系列文章将从目标生成、信号仿真、测距、测速、cfar检测、测角、目标聚类、目标跟踪这几个模块逐步介绍,这个系列的…

SpringBoot 实现全局异常处理

为什么要使用全局异常处理? 减少冗余代码: 在不使用全局异常处理器的情况下,项目中各层可能会出现大量的try {…} catch {…} finally {…}代码块,这些代码块不仅冗余,还影响代码的可读性。全局异常处理器允许我们在一…

第二十五篇——信息加密:韦小宝说谎的秘诀

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 加密这件事,对于这个时代的我们来说非常重要,那么…

数据分析中的数学:从基础到应用20240617

数据分析中的数学:从基础到应用 数据分析离不开数学的支持,统计学和概率论是其重要组成部分。本文将通过几个具体的实例,详细讲解数据分析中常用的数学知识,并通过Python代码演示如何应用这些知识。 1. 描述性统计 基本概念和用…

java学习--集合(大写二.2)

看尚硅谷视频做的笔记 2.collection接口及方法 jdk8里有一些默认的方法,更多的是体现的是一种规范,规范更多关注的是一些抽象方法。 看接口里面的抽象方法,选一个具体的实现类。 测试collection的方法,存储一个一个数据都有哪些…

ENVI实战—一文搞定监督分类

实验1:利用ROI建立样本训练集和验证集 目的:学会利用ROI建立计算机分类时的样本集 过程: ①导入影像:打开ENVI,选择“打开→打开为→光学传感器→ESA→Sentinel-2”,将Sentinel-2影像导入到ENVI平台中。…

LabVIEW与3D相机开发高精度表面检测系统

使用LabVIEW与3D相机开发一个高精度表面检测系统。该系统能够实时获取三维图像,进行精细的表面分析,广泛应用于工业质量控制、自动化检测和科学研究等领域。通过真实案例,展示开发过程中的关键步骤、挑战及解决方案,确保系统的高性…

MySQL客户端与服务端建立连接抓包分析

文章目录 MySQL客户端与服务端建立连接流程抓包分析1.连接建立流程2.各类数据包介绍2.1挑战数据包2.2认证数据包2.3切换认证插件请求数据包2.4切换认证插件响应数据包2.5成功数据包2.6失败数据包3.注意点4.测试代码MySQL客户端与服务端建立连接流程抓包分析 抓包工具采用的是W…

大厂的 404 页面都长啥样?看到最后一个,我笑了~

每天浏览各大网站,难免会碰到404页面啊。你注意过404页面么?猿妹搜罗来了下面这些知名网站的404页面,以供大家欣赏,看看哪个网站更有创意: 腾讯 网易 淘宝 百度 新浪微博 新浪 京东 优酷 腾讯视频 搜狐 携程 去哪儿 今…

C#——装箱与拆箱详情

装箱与拆箱 装箱: 将值类型转换成引用类型的过程; 拆箱: 把引用类型转为值类型的过程,就是拆箱 装箱 拆箱

usb摄像头应用编程

作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生在读,研究方向无线联邦学习 擅长领域:驱动开发,嵌入式软件开发,BSP开发 作者主页:一个平凡而乐于分享的小比特的个人主页…

JUC并发编程-第二天:线程高级部分

线程高级部分 线程不安全原子性可见性有序性(指令重排)更多的解决线程安全 线程不安全 多线程下并发同时对共享数据进行读写,会造成数据混乱线程不安全 当多线程下并发访问临界资源时,如果破坏其原子性、可见性、有序性&#xff…

账号和权限的管理

文章目录 管理用户账号和组账号用户账号的分类超级用户普通用户程序用户 UID(用户id)和(组账号)GIDUID用户识别号GID组标识号 用户账号文件添加用户账号设置/更改用户口令 管理用户账号和组账号 用户账号的分类 超级用户 root 用户是 Linux 操作系统中默认的超级…

《米小圈动画汉字》汉字教育动画化:传统与创新的完美融合!

汉字,作为中华文化的瑰宝,承载着千百年来中华民族的智慧和思想。每一个汉字不仅仅是一个符号,更是一段历史的见证,一种文化的传承。在当今全球化的背景下,汉字教育面临着新的挑战与机遇。在这种背景下,如何…

LabVIEW程序退出后线程仍在运行问题

LabVIEW程序退出后,线程仍在运行的问题可能源于资源管理不当、未正确终止循环、事件结构未处理、并发编程错误以及外部库调用未结束等方面。本文将从这些角度详细分析,探讨可能的原因和解决方案,并提供预防措施,帮助开发者避免类似…

FPGA PCIe加载提速方案

目录 1.bit流压缩 2.flash加载速度 3.Tandem模式 1.bit流压缩 set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design] 2.flash加载速度 打开bitstream setting,设置SPI的线宽和速率(线宽按原理图设置,速率尽可能高&#xff09…

redis-基础篇(2)

黑马redis-基础篇笔记 3. redis的java客户端-Jedis 在Redis官网中提供了各种语言的客户端,地址:https://redis.io/docs/clients/ 标记为❤的就是推荐使用的java客户端,包括: Jedis和Lettuce:这两个主要是提供了Redi…

Vant2组件库的基础应用

目录 一、Picker 选择器 1.1、数组对象处理 1.2、每个选项颜色设置 二、滚动分页加载列表 三、Calendar 日历(可选范围限制) 四、input值过滤 官网:Vant 2 - Mobile UI Components built on Vue 一、Picker 选择器 官网示例数据: columns: [杭州…