资讯动态

Windows 部署 Geth 节点:磁盘规划、快照同步与 RPC 配置

发布时间:2026/9/30 10:06:03 来源:尧图企业网站定制
1. 先把话说清楚GETH 在 Windows 上到底解决什么问题很多人第一次听到 Geth是因为想自己跑一个以太坊节点而不是只想装个钱包点几下。钱包是别人帮你连节点、你只管签名Geth 是你自己变成那个节点。它是以太坊执行层最主流的客户端实现之一用 Go 写的干的事情很具体连 P2P 网络、下载并校验区块、维护一份本地世界状态、对外提供 JSON-RPC 接口同时让你能在本机创建和管理账户、发原始交易、查链上数据。这篇内容面向的是在 Windows 上从零把 Geth 跑起来的人。你可能只是想在自己的机器上搭一个本地 RPC 端点给开发调试用也可能是想认真跑一个全节点不想把每一次查询都交给第三方服务。不管哪种诉求安装这一步本身不难难的是装完之后的一堆细节磁盘到底要留多少、同步模式怎么选、为什么同步到某一块就不动了、防火墙和杀软怎么处理、后台怎么常驻。这些才是真正消耗时间的地方。我用 Windows 跑 Geth 断断续续有几年踩过的坑基本都集中在两件事上——存储规划和同步模式理解不到位。所以下面不会只给你一条装完就完的命令而是把每个参数为什么这么给讲清楚。Windows 不是跑区块链节点最舒服的系统但它足够用前提是你得知道它的脾气在哪。1.1 Geth 是什么和钱包到底差在哪Geth 的全名是 Go Ethereum属于以太坊的执行层客户端。执行层负责的事情是交易执行、状态存储、EVM 运算而自从合并之后出块和共识这件事被拆给了另一类软件叫共识层客户端。这个拆分非常关键因为它直接决定了你装完 Geth 之后会遇到什么单跑 Geth它不会自己往前走。你可以把执行层理解成一个巨大的账本 计算引擎共识层理解成谁来记账、按什么顺序记的裁判。Geth 自己把账本存好、把计算做完但新账页得由共识层递过来。所以如果你只启动 Geth 不做别的它会同步到合并那个高度附近就停住然后一直等一个永远不会来的东西。这是我见过最多的同步卡死报障其实根本不是卡死是架构就这样。那为什么还有那么多人只跑 Geth因为它对外提供的 JSON-RPC 已经覆盖了绝大多数使用场景查余额、查交易回执、估算 gas、读取合约状态、发已签名的原始交易。只要你不需要自己验证新区块一个 Geth 加上快照同步的存量数据就够支撑本地开发、数据抓取、监控看板这类活儿了。1.2 Windows 作为运行环境的真实处境Windows 跑 Geth 的体验和 Linux 有差距但差距没想象中大。真正麻烦的三个点第一是文件系统NTFS 处理海量小文件的读写性能明显不如 ext4而 Geth 的数据库恰恰就是海量小文件的读写第二是后台常驻Linux 有 systemd 一行配置搞定的事Windows 得靠任务计划程序或者第三方服务封装工具第三是安全软件实时防护会扫描 Geth 的每一次数据库写入直接把同步速度砍半。反过来说Windows 的优势也很实在图形化排查工具多、磁盘管理直观、驱动和硬件兼容性好尤其是 NVMe SSD 的发挥往往比某些 Linux 发行版还稳。所以我的判断是如果你手头的机器就是 Windows没必要为了跑个节点专门装双系统把上面三个点针对性处理掉就行。下面这一节先把硬件和目录规划讲透因为装 Geth 最贵的成本从来不是安装动作而是它吃掉的磁盘和带宽。2. 装之前先算账硬件、系统与目录规划先把账算清楚能省掉后面 90% 的返工。Geth 对 CPU 的要求其实不高四核现代处理器就够显卡完全不参与真正决定你能不能舒服跑下去的是磁盘容量、磁盘类型和内存大小这三项。尤其是磁盘容量它不是一个静态数字而是每天都在涨的。我见过太多人把 Geth 装在系统盘上同步到一半 C 盘飘红然后开始手忙脚乱地搬数据目录。数据目录迁移不是不能做但涉及几十万到上百万个文件在 Windows 上复制一遍可能要好几个小时。所以这一步的前置规划是整个流程里性价比最高的准备工作。2.1 磁盘是最先卡住你的地方先说类型。必须是 SSDNVMe 更好机械硬盘直接放弃。原因不是慢一点而是差一个数量级。快照同步阶段涉及大量随机读写和状态树重建机械硬盘上同步一遍完整数据可能需要几周NVMe 上几天就能完成这个差距不是靠耐心能弥补的。再说容量。一个快照同步的全节点当前实际占用在 1 TB 出头并且持续增长考虑到后续增长和临时文件峰值我建议直接准备 2 TB 的 NVMe 分区。如果你要跑归档模式也就是保留每一个历史区块的完整状态那就是 3 TB 起步而且增长速度快得多一般个人用户没必要碰。轻节点占用只有几百 MB但功能受限严重。有几点细节值得注意分区格式用 NTFS簇大小保持默认的 4 KB不要手动调大不要在这个分区上开启 NTFS 压缩Geth 的数据库文件本身就接近不可压缩开压缩只会白白消耗 CPU不要把数据目录放在网络映射盘或者外接 USB 硬盘上延迟和断连风险都不可接受留出至少 15% 的剩余空间数据库在合并整理时需要额外空间周转建议如果你的机器只有一块盘优先考虑加装一块独立 NVMe 专门放链数据而不是把系统盘分区切一半给它。系统盘被写满会连带影响整个 Windows 的稳定性。2.2 内存、CPU 与缓存参数的对应关系内存这块8 GB 是底线16 GB 舒服32 GB 可以给更大的缓存。Geth 有个--cache参数单位是 MB用来控制数据库内部使用的内存缓存大小。这个参数给得合理同步速度和后续查询响应会有明显区别。我的经验值是这样物理内存 8 GB 给 102416 GB 给 409632 GB 给 8192。不要贪心把内存全喂给 GethWindows 本身、杀软、你开着的一堆浏览器都要吃饭。一个粗略的公式是取物理内存的四分之一到三分之一然后在这个范围内取值。CPU 方面Geth 会在同步阶段吃满几个核心做签名校验和状态计算。现代的四核八线程处理器完全够用不需要为了跑节点上服务器级 CPU。真正影响体感的是磁盘 IOPS不是主频。所以如果你在纠结升级方案先换盘再考虑内存CPU 排最后。另外提一句虚拟内存。Windows 默认的页面文件管理有时候会跟不上 Geth 的峰值内存申请我习惯手动把页面文件设成固定大小比如物理内存的 1.5 倍放在 NVMe 盘上。这个操作能避免同步过程中因为内存峰值导致进程被杀。2.3 数据目录怎么放比装在哪更重要程序装在哪其实无所谓默认的C:\Program Files\Geth挺好。真正要规划的是数据目录也就是--datadir指向的位置。默认情况下 Geth 会把数据写到%APPDATA%\Ethereum也就是C:\Users\你的用户名\AppData\Roaming\Ethereum。这个默认值对只想试试的人没问题对认真跑节点的人来说是个陷阱因为它会静静地把系统盘吃光。我的习惯是给链数据单独开一个顶层目录比如D:\chaindata\geth。这个目录里 Geth 会自动生成几样东西geth\chaindata存区块和状态数据库geth\lightchaindata存轻节点数据keystore存加密后的账户私钥geth.ipc是命名管道文件用于本地进程通信。有一个容易被忽略的点路径里尽量不要带空格和中文。虽然 Geth 本身能处理但你后面写脚本、配服务、挂计划任务的时候带空格的路径每次都要加引号很容易漏。用纯英文、短路径能省掉一大堆低级麻烦。注意keystore目录是整个数据目录里最值钱的东西它保存着账户私钥的加密文件。删掉链数据可以重新同步删掉 keystore 就真的找不回来了除非你另有备份。3. 三种安装路径的取舍与实操安装 Geth 有三种路子官方发布的 Windows 安装包、包管理器一键装、从源码编译。这三种我全都试过结论很明确——绝大多数人应该走第一种少数需要固定版本或者做二次开发的人走第三种的变体包管理器适合已经在用那套工具链的人。判断标准其实就一个你是要能用还是要可控。官方安装包给你的是最新稳定版开箱即用源码编译给你的是任意版本和自定义构建代价是环境配置时间。中间那条包管理器的路在 Windows 上体验不如 Linux 上丝滑因为 Windows 的包管理器生态本身就在演进中。3.1 官方安装包最省事的一条路官方发布的 Windows 版本有两类文件一类是压缩包一类是安装程序。压缩包解压出来就是一个geth.exe绿色免安装适合放到固定目录然后手动加环境变量。安装程序会把文件放到Program Files顺手帮你处理一些路径问题。我个人的偏好是压缩包。原因很实际升级的时候直接替换 exe 就行不用走卸载安装流程出问题的时候回滚也是换个文件而且不会在系统里留下一堆注册表项。缺点是每次升级要手动操作如果你有几台机器要维护确实麻烦一点。下载的时候务必核对哈希值。这不是形式主义Geth 是要处理私钥和交易的软件拿到一个被篡改的二进制后果非常严重。官方页面通常会同时给出 SHA256 校验值Windows 上可以用 PowerShell 一行命令算出来Get-FileHash -Algorithm SHA256 .\geth-windows-amd64.zip把输出和你看到的官方校验值逐字符比对。如果对不上重新下载不要抱侥幸心理。注意压缩包里通常还会有一些辅助工具比如用于账户管理的独立程序。如果你只需要主程序把geth.exe单独拎出来放到一个固定目录即可。3.2 包管理器与源码编译什么时候才值得走如果你已经在用 Chocolatey 或 Scoop 管理开发环境那用它们装 Geth 确实方便一条命令的事升级也是一条命令。这类工具会自动帮你把可执行文件挂到 PATH 里省掉手动配置。但它们的问题在于版本更新有时滞后而且你很难精确控制装的是哪个版本。源码编译这条路的门槛主要在 Go 环境。需要先装 Go 工具链版本要满足项目要求然后从代码仓库拉取源码在项目目录下执行构建。编译出来的产物在build\bin下面。这条路适合两类人一是需要特定历史版本做兼容测试二是有自定义修改需求。不过我要提醒一句自己编译出来的二进制没有官方签名Windows Defender 的 SmartScreen 大概率会拦你一下需要手动放行。如果你所在的环境对可执行文件来源有管控这一步会很麻烦。所以除非有明确理由别为了看起来更专业去折腾编译。三条路径的对比我整理了一下你可以对着自己的情况挑方式上手难度版本可控性升级便利性适合人群官方压缩包低中手动替换大多数个人用户官方安装程序最低中重装完全不想碰命令行配置的人包管理器低中低一条命令已有对应工具链的人源码编译高最高重新编译需要特定版本或二次开发3.3 把 geth 挂进 PATH 并验证不管你选了哪种方式最后都要确认一件事在任何目录下敲geth都能跑起来。如果解压完直接双击 exe它会在当前目录找不到数据目录然后报错退出这是新手最常见的第一次失败。手动加 PATH 的步骤是在系统属性里找到环境变量设置在用户变量或系统变量的Path里新增一项值就是geth.exe所在的那个目录。改完之后必须重开命令行窗口旧窗口读不到新变量。验证只需要一条命令geth version正常的话会输出客户端名称、版本号、Git 提交哈希、Go 版本、操作系统和架构信息。如果提示不是内部或外部命令说明 PATH 没生效如果提示缺少某个 DLL说明压缩包没解压完整重新解压一次。顺便也跑一下geth --help。这个输出的参数列表很长不用现在全看完但你要知道它能输出因为后面遇到问题时第一反应应该是去 help 里找对应参数而不是搜索引擎。4. 第一次启动同步模式怎么选参数怎么给环境准备好了接下来是真正决定体验的一步。很多人装完之后随手敲个geth就开始等等了两天发现磁盘涨了但区块数涨得慢然后开始怀疑人生。问题不在 Geth在于没搞明白同步模式这四个字背后的机制差异。这一节我会把三种同步模式的原理差异讲清楚然后给出三条可以直接抄的命令最后解决后台常驻的问题。命令里的每个参数我都会解释为什么这么给因为你的机器配置和我的不一样盲目复制粘贴很容易出问题。4.1 快照、完整、轻节点三种同步方式的差别快照同步是当前默认的模式。它的思路是先下载最近的区块头找到一批可用的状态快照直接拉过来作为起点然后只重新执行最近一段区块来校验。好处是快几天内可以完成代价是会跳过大部分历史状态的验证理论上信任了提供快照的节点。对开发和个人使用来说这是性价比最高的选择。完整同步会从创世块开始逐个区块执行所有交易重建完整状态。这才是真正意义上自己验证了整条链。代价是慢在 NVMe 上也要以周为单位计算而且中间一旦关机被打断虽然能续传但状态重建那一段可能要重来。除非你有明确需求否则不建议第一次就跑完整模式。轻节点只下载区块头不下载交易和状态通过向其他节点请求来获取需要的数据。占用极小几分钟就能跟上链头。但它的功能被砍掉一大半很多 RPC 方法不可用连接的对端节点质量也不稳定。适合做演示或者资源极度受限的场景。还有一个前面提到的关键点要再强调一次合并之后Geth 单独跑是走不到链头的。快照同步会推进到合并高度附近然后停住因为再往后的区块需要共识层客户端提供。所以如果你要的是一个能跟到最新块的节点必须再配一个共识层客户端两者通过引擎 API 端口通信。4.2 一条可以直接抄的启动命令假设你的数据目录是D:\chaindata\geth内存 16 GB只想在本机用 RPC下面这条命令可以直接参考geth --datadir D:\chaindata\geth ^ --syncmode snap ^ --cache 4096 ^ --http --http.addr 127.0.0.1 --http.port 8545 ^ --http.api eth,net,web3 ^ --ws --ws.addr 127.0.0.1 --ws.port 8546 --ws.api eth,net,web3 ^ --authrpc.port 8551 ^ --maxpeers 50逐项解释一下。--datadir指定数据目录一定要加引号。--syncmode snap显式声明快照模式虽然它是默认值但写出来能让日志更清楚。--cache 4096是 16 GB 内存下的合理值。--http.addr 127.0.0.1是关键它把 HTTP 接口限制在本地回环外部机器连不上这个默认值不要改。--http.api决定开放哪些接口模块。eth是链数据查询net是网络状态web3是客户端信息这三个足够日常使用。绝对不要图省事写成admin,debug,personal这类尤其是把接口暴露出去的时候那些模块能干的事情远超你的想象。--authrpc.port 8551是给共识层客户端预留的引擎接口。就算你现在不接共识层也建议显式指定方便以后扩展。--maxpeers 50控制最大连接数家用网络环境下 50 足够太大反而会因为频繁握手浪费带宽。如果你在 PowerShell 里跑续行符不是^而是反引号或者干脆写成一行。这是 Windows 上两个 shell 的老区别容易踩。4.3 让它以后台方式稳定运行命令行窗口关掉Geth 就退出了这显然不能接受。Windows 上做后台常驻有两个可靠方案。第一个是任务计划程序。新建任务触发器设为计算机启动时操作设为启动geth.exe把参数填在添加参数里起始位置填数据目录。关键是要勾选不管用户是否登录都要运行和使用最高权限运行否则可能出现权限不足写不进数据目录的情况。这个方案的好处是纯系统自带不引入额外依赖。第二个是用 PowerShell 的Start-Process拉起配-WindowStyle Hidden隐藏窗口Start-Process -FilePath D:\geth\geth.exe -ArgumentList --datadir D:\chaindata\geth --syncmode snap --cache 4096 --http --http.addr 127.0.0.1 --http.port 8545 --http.api eth,net,web3 -WindowStyle Hidden这个方式适合临时用或者写进自己的启动脚本但它不解决开机自启也不解决崩溃自动重启。真要长期跑还是任务计划程序更稳或者考虑用第三方服务封装工具把 Geth 包装成 Windows 服务那样就能在服务管理器里看到它启停都规范。注意不要用最小化窗口这种方式假装后台运行。窗口最小化之后进程依然挂在用户会话上注销或者远程桌面断开都可能影响它。5. 装完之后真正会用账户、控制台与 RPC 接口到这一步节点已经在跑了很多人反而不知道接下来干什么。Geth 的价值不在于它自己在后台跑而在于你能通过它做事情。这一节讲三件最常用的事管理账户、用控制台交互、从外部程序调接口。账户这块我要多啰嗦几句因为它直接关系到资产安全。Geth 的账户管理设计是把私钥加密后存在本地密码不存。这意味着密码丢了私钥就永远打不开没有任何找回途径。这个设计在安全上是对的在体验上很残酷你必须自己承担备份责任。5.1 账户的创建、导入与备份创建一个新账户geth account new --datadir D:\chaindata\geth它会让你输入两次密码然后输出一个地址。这个地址对应的私钥被加密后写进datadir\keystore目录文件名是一串时间戳加地址。列出所有账户用geth account list --datadir D:\chaindata\geth如果你想批量或者脚本化操作可以用--password指定一个密码文件文件里就是明文密码。这个方式方便但危险用完必须立刻删掉那个文件而且别放在会被同步或者备份到云端的目录里。备份的时候整个keystore目录复制走就行。我建议至少做两份放在两个不同的物理位置。同时把地址和对应的用途记在一个地方因为几年之后你很可能忘了哪个地址是干什么用的。注意keystore文件是被密码加密的但密码强度直接决定它的安全性。别用生日、别用常见词用密码管理器生成的长随机串然后把那个串单独备份好。5.2 控制台里最常用的几组命令Geth 自带一个 JavaScript 控制台可以交互式地查询和操作。连接方式有两种本地推荐走命名管道geth attach \\.\pipe\geth.ipcWindows 上的进程间通信走的是命名管道路径格式就是这样写的时候注意反斜杠。如果管道方式连不上退回 HTTPgeth attach http://127.0.0.1:8545进去之后下面这几条是我用得最多的eth.blockNumber看当前同步到的高度eth.syncing看同步进度返回 false 说明已经跟上net.peerCount看连上了多少个对端节点web3.clientVersion确认客户端版本eth.getBalance(0x你的地址)查余额返回的是最小单位eth.getTransactionReceipt(0x交易哈希)查交易回执admin.nodeInfo看本节点信息eth.syncing这个命令特别有用。如果它返回一个对象里面有currentBlock和highestBlock两个字段你可以算出大致进度如果它返回false说明已经同步完成。很多人判断节点状态全靠猜其实一条命令就清楚了。控制台还支持直接执行脚本文件把一串操作写进.js文件然后geth attach --exec一次性跑完做批量查询的时候很省事。5.3 从外部程序调用 JSON-RPC真正让 Geth 发挥价值的场景是你的其他程序去调它的接口。开了--http之后它就是一个标准的 JSON-RPC 服务端任何能发 HTTP 请求的语言都能用。先用 PowerShell 测一下连通性$body {jsonrpc:2.0,method:eth_blockNumber,params:[],id:1} Invoke-RestMethod -Uri http://127.0.0.1:8545 -Method Post -ContentType application/json -Body $body如果返回一个带result字段的对象说明接口正常工作。同样的事情用 curl 也可以curl -X POST http://127.0.0.1:8545 ^ -H Content-Type: application/json ^ -d {\jsonrpc\:\2.0\,\method\:\web3_clientVersion\,\params\:[],\id\:1}在 Python 里就是一个普通的 POST 请求把 payload 序列化成 JSON 发过去就行。要注意的是eth_blockNumber返回的是十六进制字符串不是十进制数需要自己转换。这个坑几乎每个人都踩过一次查出来的高度看着像乱码。如果你要频繁调用建议把请求封装成一个函数统一处理错误码和重试。Geth 在高负载下会返回限流错误直接裸调很容易失败。6. Windows 环境下的坑与排查手册前面讲的都是怎么装、怎么用这一节讲出问题怎么办。我把自己和身边人遇到过的典型故障整理了一下按现象分类。这些问题在 Linux 上也有但 Windows 上因为系统层面的差异表现和排查路径都不太一样。排查的基本原则是先看日志。Geth 的日志默认打到标准输出如果你用任务计划程序跑的得想办法把输出重定向到文件否则出问题的时候什么都没留下。我习惯在启动参数里加上日志相关的配置并且定期检查日志文件大小。6.1 同步不动、磁盘写满、端口被占同步长时间停在同一高度。先跑eth.syncing看状态。如果它显示快完成了但一直不动先看net.peerCount对端数量是 0 说明网络层有问题检查防火墙有没有放行 30303 端口的 TCP 和 UDP。如果对端数量正常但高度不涨而且高度正好在合并附近那就是前面说的共识层缺失问题不是故障。磁盘突然写满。快照同步后期状态树重建阶段会有明显的空间峰值如果剩余空间本来就不多很容易撞线。撞线之后 Geth 会报写入失败然后退出。处理办法是把数据目录迁到更大的盘上迁移前先关闭 Geth用系统自带的复制工具整目录复制别用那种会改文件时间的同步工具。端口被占用。报错信息里会明确写端口。8545 被占最常见的原因是上一次 Geth 没退干净进程还在后台。打开任务管理器搜geth结束掉再重启。30303 被占一般是你同时跑了两个节点实例各自用不同数据目录和不同端口就行。提示排查同步问题时先把--verbosity调到 3 或者 4日志会详细很多。默认级别在正常运行时够用出问题时信息量不足。6.2 杀软、防火墙与文件系统层的干扰Windows Defender 的实时防护会检查每一次文件写入而 Geth 恰恰是高频小文件写入的模式。这个组合的结果是同步速度可能只有正常情况的一半甚至更低。解决办法是把数据目录和geth.exe加进排除列表在安全中心的病毒和威胁防护设置里能找到排除项。防火墙这块Windows 第一次运行 Geth 时会弹窗询问是否允许网络访问。必须允许而且要同时放行专用网络和公用网络否则 P2P 连接建立不起来。如果当时点了拒绝需要去防火墙的允许应用列表里手动加回来。另外 30303 端口最好手动建一条入站规则TCP 和 UDP 各一条。文件系统层面还有两个细节。一是索引服务Windows 默认会对文件内容建索引对 Geth 那种海量小文件目录纯属浪费资源可以在数据目录属性里取消勾选除了文件属性外还允许索引此驱动器上文件的内容。二是定期碎片整理对 SSD 来说不需要也不应该做反而增加写入量。6.3 常见报错速查表下面这些报错我都实际遇到过整理成表方便你对照现象或报错可能原因处理方向not found或命令不可用PATH 未生效重开命令行窗口检查变量启动即退出无输出数据目录权限不足用管理员权限运行对端数量长期为 0防火墙拦截放行 30303 TCP/UDP高度停在合并附近缺共识层客户端接入共识层或接受现状写入失败后退出磁盘空间不足迁移数据目录或清理空间同步速度异常慢杀软实时扫描添加排除项接口连不上监听地址不是本地检查--http.addr配置账户列表为空datadir 指向错误确认--datadir一致排查的心法是先确认进程活着再确认网络通然后确认磁盘够最后才怀疑数据损坏。绝大部分报障在前三步就解决了真正需要重新同步的情况很少。7. 长期运行的维护习惯节点跑起来只是开始能不能长期稳定运行取决于你有没有形成维护习惯。这一节讲两件事升级和备份怎么做安全边界在哪里。这两件事平时不出问题出问题就是大事。7.1 升级与数据备份Geth 的升级频率不算低尤其是合并之后的这几年协议层面的调整比较密集。升级的原则很简单关注官方发布说明看清楚有没有需要特别注意的变更然后按流程操作。升级前先停进程替换可执行文件再启动。数据目录一般不需要动但偶尔会有数据库格式变更那种情况发布说明里会明确写出来。备份分两个层次。keystore目录必须定期备份而且备份要脱离这台机器。链数据本身理论上可以重新同步所以不必做整目录备份那太占空间了。但如果你做过一些自定义配置配置文件最好也一起备份走。我自己的做法是keystore 每次新增账户后立刻备份一次加密压缩后放两个不同的物理位置配置文件改动后同步到版本管理里链数据不备份坏了就重同步。7.2 安全边界哪些端口绝不能对外这是全文最需要严肃对待的一段。Geth 默认只监听本地环回这个默认值背后是有充分理由的。把 JSON-RPC 接口暴露到公网等于把一个能读你账户信息、能构造交易的接口交给所有人。历史上因为这个配置失误造成的损失不在少数。具体来说--http.addr保持127.0.0.1。--http.api里绝对不要出现管理类、调试类、账户解锁类模块。如果确实需要远程访问正确的做法是在中间加一层反向代理做认证和限流而不是直接把 Geth 的端口开出去。P2P 端口 30303 是要对外开放的它只做节点间通信属于正常且必要的暴露。引擎接口 8551 也不应该对外它只服务于本机的共识层客户端。如果你的机器上有其他服务注意别让它们和这些端口冲突。注意任何时候看到网上有人教你用--http.addr 0.0.0.0并且开放全部 API 模块请直接忽略。那个配置组合在公网上就是敞开的门。另外提醒一下如果你把数据目录放在共享目录或者开了文件共享keystore目录会被一并暴露。检查一下目录权限确保只有你自己的账户能读。我个人在实际操作中的体会是Windows 上跑 Geth 最大的成本不在安装而在前期的存储规划和对架构拆分的理解。把这两件事想明白后面的流程会顺很多。装之前先确认盘够不够、内存给多少装完先搞清楚自己要不要接共识层比装完再回头补课省时间得多。最后分享一个小技巧把启动命令写成一个.bat或者.ps1文件参数分行写清楚每改一次参数就留一份带日期的副本。节点这种长期运行的东西三个月后你一定会忘记当初为什么给了某个参数值。有一份带注释的启动脚本在旁边能省掉大量回忆时间。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑