以太坊开发环境
1. 测试网络
可以使用以下命令将以太坊的 Go 语言客户端 Geth 连接到测试网络
[admin@daolian ~]$geth --testnet
下图显示了示例输出,该图显示了所选网络的类型以及有关区块链下载的其他各种信息。
Geth 客户端的下载地址如下:
https://geth.ethereum.org
用于测试网络的区块链浏览器可从以下网址获得:
https://ropsten.etherscan.io
该浏览器可用于跟踪以太坊测试网络中的交易和区块。
此外,也有其他测试网络可用,如 Frontier、Morden、Ropsten 和 Rinkeby。可以向 Geth 发出命令行标志以连接到所需的网络:
2. 建立以太坊私有网络
私有网络允许创建一个全新的区块链,这与测试网络或主网都有所不同,因为它使用了自己的创世块和网络 ID。为了创建私有网络,需要 3 个组件:
- 网络 ID
- 创世文件
- 存储区块链数据的数据目录。虽然对数据目录并未做严格的要求,但是如果系统上已经有多个处于活动状态的区块链,则应指定数据目录,以便将单独的目录用于新的区块链。
在主网上,以太坊 Geth 客户端默认情况下能够发现引导节点(Boot Node),因为它们在 Geth 客户端中被硬编码并自动连接;但是在私有网络上,需要通过指定适当的标志和配置来设置 Geth,以便它能够被其他对等方发现或能够发现其他对等方。
除了上面提到的 3 个组件,最好还要禁用节点发现(Node Discovery) ,以使互联网上的其他节点无法发现你的私有网络,这样它就是安全的。如果其他网络恰好具有相同的创世文件和网络 ID,则它们可能会连接到你的私有网络。具有相同网络 ID 和创世区块的机会非常少,尽管如此,还是建议禁用节点发现功能。
2.1 网络 ID
网络 ID 可以是 1 和 3 以外的任何正数,因为 1 和 3 已经分别被以太坊主网和测试网使用。在下面的示例中,为私有网络选择的网络 ID 是 786。
2.2 创世文件
创世文件(Genesis File) 包含自定义创世区块所需的必要字段,这是网络中的第一个区块,并且不指向任何先前的区块。以太坊协议将执行检查以确保互联网上没有其他节点可以参与共识机制,除非它们具有相同的创世区块。网络 ID 通常用作网络的标识。
以下显示了一个自定义的创世文件,该文件在后面的示例中会用到:
另外,可以通过指定收款人的地址和 Wei 数量的方式来预先分配以太币,但是一般来说并不需要这样做,因为在私有网络上可以非常快地开采以太币。
要预先分配以太币,可以将其添加到创世文件中,如下所示:
“alloc”:{"0xcf61d213faa9acadbf0d110e1397caf20445c58f":{"balance":"100000"},
}
现在来看看这些参数的含义:
- nonce (随机数):这是一个 64 位哈希值,用于证明 PoW 已充分完成。该参数可与 mixhash 参数结合使用。
- timestamp (时间戳):这是该区块的 UNIX 时间戳,用于验证区块的顺序并用于难度调整。例如,如果生成区块的速度太快,则难度会更高。
- parentHash (父哈希):由于创士块没有父代,因此对于该区块来说,该参数的值始终为 0。
- extraData (额外数据):该参数允许将 32 位任意值与区块一起保存。
- gasLimit (燃料限制):这是每个区块燃料消耗的限制。
- difficulty (难度):此参数用于确定挖矿目标,它代表证明 PoW 所需的哈希难度级别。
- mixhash (混合哈希):这是一个 256 位哈希,可与 nonce 结合使用,以证明已花费了足够数量的计算资源来满足 PoW 要求。
- coinbase (币基):这是成功挖矿后将挖矿奖励发送到的 160 位地址。
- alloc (分配):此参数包含预分配的钱包列表。它采用长十六进制格式的帐户,然后将余额分配到其中。
- config(配置):此部分包括各种配置信息,这些信息将定义网络 ID 和区块链硬分叉区块编号。在私有网络中不需要使用此参数。
2.3 数据目录
这是用于保存以太坊网络的区块链数据的目录。例如,在下面的示例中,该目录是~/etherprivate/。
在 Geth 客户端中,还指定了许多参数以启动(或进一步微调配置) 私有网络。
2.4 标志及其含义
以下是与 Geth 客户端一起使用的标志(Flags):
- --nodiscover:此标志禁用了节点发现,可确保如果碰巧有相同的创世文件和网络 ID 时,无法自动发现该节点。
- --maxpeers:此标志用于指定允许连接到私有网络的对等者(Peers) 的数量。如果将其设置为 0,则将没有人能够连接,这在某些情况下(例如私有测试)可能是比较理想的。
- --rpc:用于在 Geth 中启用 RPC 接口。
- --rpcapi:此标志采用允许使用的 API 列表作为参数。例如,Eth 和 Web3 将通过 RPC 启用 Eth 和 Web3 接口。
- rpcport:这将设置 TCP RPC 端口,如 9999。
2.5 静态节点
如果需要连接到一组特定的对等方,则可以将这些节点添加到保存 chaindata 和 keystore 文件的文件夹。
3. 启动私有网络
启动私有网络的初始命令如下所示:
这将产生如下图所示的输出:
如下图所示,这将为正在运行的私有网络会话打开交互式 JavaScript 控制台。
挖矿开始后,将首次生成有向非循环图(Directed Acyclic Graph,DAG),并产生类似于下图所示的输出
一旦 DAG 生成完毕,即可开始挖矿,Geth 将产生类似于下图所示的输出。在这里可以清楚地看到 Mined 5 blocks back...(已开采 5 个区块)这类的消息。
查看可用对象列表有一个通用技巧,那就是依次按下键盘上的空格键两次和 Tab 键两次。这样将显示可用对象的完整列表,如下图所示:
此外,输入命令后,可以通过按下两次 tab 键自动完成命令。如果按下两次 Tab 键,则还会显示可用方法的列表,如下图所示:
除了上面提到的命令外,为了获得对象可用方法的列表,在输入命令后,还可以输入分号(;)。下图就是一个示例,它显示了适用于 net 的所有方法的列表。
3.1 在私有网络上运行 Mist
该消息如下图所示
这将允许连接到正在运行的私有网络 Geth 会话,并提供所有功能,例如通过 Mist 在私有网络上进行钱包、帐户管理和合约部署等操作,如下图所示:
一旦启动以太坊 Mist 浏览器,它将显示如下图所示的界面,以红底白字明确表示它正在 PRIVATE-NET (私有网络) 模式下运行。
3.2 使用 Mist 部署合约
作用 Mist 部署新合约非常容易。Mist 提供了一个界面,可以在访界面中以 Solidity 语言编写合约,然后将其部署在网络上。
接下来,我们将进行一项简单合约的练习,该合约可以对输入参数执行各种简单的算术计算。以下显示了使用 Mist 部署此合约的步骤。
在 Mist 浏览器的 CNTRACTS (合约)部分下,将上述源代码复制到其中,如下图所示:
在左侧复制了源代码之后,一旦验证通过,并且未检测到语法错误,则部署合约的选项将显示在右侧的下拉菜单中,它显示的是 SELECT CONTRACT TO DEPLOY(选择要部署的合约)。只需选择合约,然后单击屏幕底部的 Deploy (部署)按钮即可。
Mist 将向你询问帐户密码,并显示一个如下图所示的窗口。
输入帐户密码,然后单击 SEND TRANSACTION (发送交易)以部署合约。
成功部署和挖矿后,合约将出现在 Mist 的交易列表中,如下图所示:
合约可用后,可以通过 Mist 使用可用的函数进行交互。这些函数显示在右侧下拉列表中,如下图所示:
在上图中,可以看到 READ FROM CONTRACT (从合约中读取) 和 WRITE TO CONTRACT (写入合约) 选项。在右侧可以看到合约公开的函数。选择所需的函数后,即可为该函数输入适当的值,并在 Execute From (执行自) 下选择帐户,然后单击 EXECUTE (执行) 按钮以执行交易,这将导致调用选定的合约函数。
下图显示了此过程
如上图所示,为该帐户输入适当的密码,然后单击 SEND TRANSACTION (发送交易) 将该交易发送到合约。
3.3 私有网络/本地以太坊的区块浏览器
本地以太坊区块浏览器是一个有用的工具,可用于浏览本地私有网络区块链。
注意: Github 上有一个开源的免费区块浏览器,网址如下: https://github.com/etherparty/explorer |
该区块浏览器的安装步骤如下:
(1)在 Linux Ubuntu 计算机或 macOS 系统上运行以下命令:
[admin@daolian ~]$git clone https://github.com/etherparty/explorer
这将显示类似于以下内容的输出:
Cloing into 'explorer' ...
remote: Counting objects: 269, done.
remote: Total 269 (delta 0), reused 0 (delta 0),pack-reused 269
Receiving objects: 100% (269/269),59.41 KiB | 134.00 KiB/s, done.
Resolving deltas: 100% (139/139), done.
(2) 将目录更改为 explorer 并运行以下命令:
[admin@daolian ~]$cd explorer/
[admin@daolian ~]$npm start
注意: 如果正在使用的计算机上需要安装 Node.js, 则可以查看官方网站上的安装说明并下载节点。官方网址如下: https://nodejs.org/en/ |
一旦安装完成(可能需要接近 5 分钟),将显示类似于下图所示的输出,其中,将启动以太坊浏览器的 HTTP 服务器。
(3)Web 服务器启动后,应使用以下命令启动 Geth:
[admin@daolian ~]$geth --datadir .ethereum/privatenet/ --networkid 786 --rpc --rpccorsdomain 'http://localhost:8000'
也可以使用以下命令:
[admin@daolian ~]$geth --datadir .ethereum/privatenet/ --networkid 786 --rpc --rpccorsdomain '*'
(4)成功启动 Geth 之后,导航到 TCP 端口 8000 上的 localhost,如下图所示,以便访问本地以太坊区块浏览器。
也可以使用 Python 或任何其他适当的提供程序来启动 Web 服务器。当使用 Python 时,可以启动一个快速的 Web 服务器,如以下代码所示:
[admin@daolian ~]$python -m SimpleHTTPServer 7777
Serving HTTP on 0.0.0.0 port 7777 ...
Geth 客户端将需要使用适当的参数启动,否则可能会发生错误,如下图所示:
重新启动 Geth 以允许 rpccorsdomain:
[admin@daolian ~]$./geth --datadir ~/etherprivate/ --networkid 786 --rpc --rpcapi 'web3,eth,net,debug,personal' --rpccorsdomain '*'
注意: * 表示任何 IP 都可以连接,也可以使用计算机的本地 IP 地址 |
相关文章:

以太坊开发环境
1. 测试网络 可以使用以下命令将以太坊的 Go 语言客户端 Geth 连接到测试网络 [admindaolian ~]$geth --testnet 下图显示了示例输出,该图显示了所选网络的类型以及有关区块链下载的其他各种信息。 Geth 客户端的下载地址如下: https://geth.ethereum…...

深入理解Java虚拟机:Jvm总结-虚拟机字节码执行引擎
第八章 虚拟机字节码执行引擎 8.1 意义 不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式。输入的是字节码二进制流,处理过程是字节码解析执行的等效过程,输出的是执行结果 8.2 运行时栈帧结构…...

第十一周:机器学习
第十一周周报 摘要Abstract机器学习1. 注意力机制(下)1.1 multi-head self-attention(多头注意力机制)1.2 Positional Encoding(位置编码)1.3 truncated self attention(截断式注意力机制&#…...

碰撞检测 | 详解圆-矩形碰撞检测与N圆覆盖模型(附ROS C++可视化)
目录 0 专栏介绍1 N N N圆覆盖碰撞模型2 圆与矩形的碰撞检测3 算法仿真与可视化3.1 核心算法3.2 仿真实验 0 专栏介绍 🔥课设、毕设、创新竞赛必备!🔥本专栏涉及更高阶的运动规划算法轨迹优化实战,包括:曲线生成、碰…...
pandas读取Excel文件单元格中的百分数时保持数据格式及精度
pandas读取Excel文件单元格中的百分数时保持数据格式及精度 在使用Pandas读取Excel文件时,通常Excel中的百分数会被转换为浮点数。在这种情况下,如果你希望保留数据的格式和精度,有几个步骤可以帮助你实现这个目标: 读取数据:使用Pandas的read_excel函数来读取Excel文件。…...

【重学 MySQL】二十五、等值连接vs非等值连接、自连接vs非自连接
【重学 MySQL】二十五、等值连接vs非等值连接、自连接vs非自连接 等值连接(Equijoin) vs 非等值连接(Non-equijoin)等值连接(Equijoin)非等值连接(Non-equijoin) 自连接(…...
Springboot工程配置https访问
背景 因为前端工程使用nginx配置了https访问,在https直接请求我们Springboot后端的http接口会报错。那么我们就需要配置使得我们后端的springboot服务支持https访问。 证书生成 在配置springboot工程https之前,我们需要生成自签名证书以及Spring Boot…...

智慧水务建设的核心内容
智慧水务解决方案的主要对象客户是全国各地水务投资集团、水务局、水司、水厂、农水办,也会有少量项目涉及到住建局或城管局。解决方案通常会以具体的某个业务单位的职能工作为切入点,配合物联感知、大数据分析、人工智能等技术手段,为城市供水、乡村供水的水质安全、供水调…...

opencv之图像轮廓
文章目录 前言查找并绘制轮廓查找图像轮廓:findContours函数绘制图像轮廓:drawContours函数轮廓实例 矩特征Hu矩Hu矩函数形状匹配 前言 图像轮廓指的是图像中物体边缘或形状的外部线条,通常通过图像处理技术来检测和提取。轮廓是用于描述物体…...

shader 案例学习笔记之step函数
step函数 参数是float step(edge,x):当x>edge时返回1,否则返回0 #ifdef GL_ES precision mediump float; #endifuniform vec2 u_resolution;void main(){vec2 st gl_FragCoord.xy/u_resolution.xy;float f step(0.5, st.x);gl_FragColor vec4(f…...

node快速复制文件或文件夹,排除部分文件(node_modules)
const fs require(fs) const path require(path)/*** description: 获取完整的文件路径* param {*} url 路径* return {*} 返回完整的文件路径*/ const getPath (url) > {return path.join(__dirname, url) }/*** description: 获取参数* return {*} target【目标文件夹】…...

网络层 VIII(网络层设备——路由器)【★★★★★★】
一、冲突域与广播域 这里的“域”表示冲突或广播在其中发生并传播的区域。 1. 冲突域 冲突域是指连接到同一物理介质上的所有结点的集合,这些结点之间存在介质争用的现象(能产生冲突的所有设备的集合)。也就是说,若这些设备同时发…...

302.AI学术论文搜索工具的智能体验
Hey朋友们, 你是否曾在学术的海洋里迷失方向,为了找到一篇论文而苦苦挣扎? 就像在茫茫大海中寻找灯塔,我们渴望一盏明灯,指引我们前行。 别担心,今天我来给你介绍一个超级给力的工具——302.AI学术论文…...
arm平台常用工具和动态库编译
目录 perf 交叉编译交叉编译zlib交叉编译 elfutils交叉编译 perfperf 使用 libconfig 交叉编译openssl 交叉编译libpcap 交叉编译统信、龙芯等平台编译QT交叉编译编译QT源码编译QtCreator 编译ssl编译libsrtp(2.3.0版本)编译libyuvlibopus编译libopenh264编译libusrsctp编译lib…...
代码随想录训练营day45|115.不同的子序列,583. 两个字符串的删除操作,72. 编辑距离
115.不同的子序列 题目 dp[i][j]表示的是在以是s[j]为结尾的字符串中最多可以找到几种组成以t[i]为结尾的字符串的方式。 如果s[i]t[j], 1.利用第i个和第j个匹配,在j-1中寻找i-1. 2.不适用这两个进行匹配,在j-1中寻找i 如果s[i]!…...
椋鸟C++笔记#7:标准模板库STL初识
文章目录 标准模板库(Standard Template Library)STL的版本P.J.版RW版SGI版 STL的组成部分 萌新的学习笔记,写错了恳请斧正。 标准模板库(Standard Template Library) 标准模板库STL,是C标准库的一个非常重…...
滴滴嘀嗒,出行行业响起Robotaxi“倒计时”
文:互联网江湖 作者:刘致呈 前几天,各大出行平台的半年报陆续披露完毕,有的还在亏损,但也有人开始盈利。 如祺出行上市后的首份半年报营收10.37亿,同比增长13.6%。上半年运营亏损为2.56亿元,同…...

【MATLAB源码-第264期】基于matlab的跳频通信系统仿真,采用MSK调制方式,差分解调;输出误码率曲线和各节点波形图。
操作环境: MATLAB 2022a 1、算法描述 跳频通信系统是一种能够提高通信抗干扰能力的技术,它通过在传输过程中不断地改变载波频率来避开干扰或者窃听。在这套跳频通信系统中,我们采用了最小频移键控(MSK)作为调制方式…...
如何在多台电脑上同步 VSCode配置和插件
上一篇文章最新前端开发VSCode高效实用插件推荐清单总结了前端开发实用的插件,换电脑的时候怎么同步这些配置与插件呢,难道又要重新安装一遍吗😱 现在就来聊聊要在多台电脑上同步 VSCode配置和插件的几种方法: 方法一࿱…...
深度优先算法,广度优先算法,hill climbing,贪心搜索,A*算法,启发式搜索算法是什么,比起一般搜索法算法有什么区别
深度优先算法(Depth-First Search, DFS) 深度优先搜索是一种用于遍历或搜索树或图的算法。它沿着树的深度遍历树的节点,尽可能深地搜索树的分支。当节点v的所在边都已被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...

视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
BLEU评分:机器翻译质量评估的黄金标准
BLEU评分:机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域,衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标,自2002年由IBM的Kishore Papineni等人提出以来,…...