☰
一张思维导图打通《精通以太坊》密钥、钱包与交易核心链路
2026/10/14 1:47:32 网站建设 项目流程

1. 为什么我要把《精通以太坊》4到6章画成一张思维导图

如果你正在啃《精通以太坊》这本书,大概率会有一种感觉:前三章讲背景和基础还算友好,到了第4章开始,信息密度突然拉满,密钥、地址、钱包、交易、Gas、签名、重放保护一股脑全砸过来,看完一遍好像懂了,合上书又什么都串不起来。我当初也是这样,书翻了两遍,笔记记了一堆,真到要跟别人讲清楚“一笔交易从构造到上链到底经历了什么”的时候,还是卡壳。

后来我换了个思路,不再按书的顺序线性记笔记,而是把第4章到第6章这三章的核心概念抽出来,画成一张思维导图。画完那一刻我才发现,这三章其实是一条完整的链路:密钥决定你是谁,钱包决定你怎么管这些身份,交易决定你怎么用这些身份去改变链上状态。三者环环相扣,单独看每一章都容易迷路,放到一张图上,逻辑一下就通了。

这篇内容就是把我画这张思维导图的全过程拆开讲。我会告诉你这三章各自的核心骨架是什么、哪些概念是必须吃透的、哪些是容易混淆的坑、导图应该怎么分层才不糊成一团。不管你是刚接触区块链开发的新手,还是已经写过一些合约但底层概念一直没理顺的开发者,都能照着这篇文章自己画出一张属于自己的导图。我踩过的那些坑,你大概率也会踩,提前说清楚能省你不少时间。

2. 第4章到第6章的整体骨架拆解

2.1 三章之间的逻辑关系到底是什么

很多人把这三章当成三个独立的知识块来学,这是最容易走弯路的地方。我一开始也是这么干的,结果就是密钥学完学钱包,钱包学完学交易,每一块单独看都还行,但一到实际场景就懵:为什么钱包里能放多个账户?为什么一个助记词能恢复出所有地址?为什么交易签名要用私钥而不是地址?这些问题的答案,恰恰藏在三章的连接处。

我的理解是,这三章构成了一个“身份—管理—行动”的三角结构。第4章讲的是身份的最小单元,也就是密钥和地址,它回答的是“链上你是谁”。第5章讲的是身份的组织方式,也就是钱包,它回答的是“你如何持有和管理这些身份”。第6章讲的是身份如何行动,也就是交易,它回答的是“你如何用身份去改变链上状态”。三者不是并列关系,而是层层递进、互相依赖的关系。

画导图的时候,我建议把这三章放在同一张图上,而不是分开画三张。因为一旦分开,你就看不到它们之间的连线了。而恰恰是这些连线,才是真正理解以太坊的关键。比如钱包章节里的“确定性钱包”这个概念,如果你不结合第4章的密钥派生知识,就理解不了为什么一个种子能生成无数个密钥;再比如交易章节里的“签名”过程,如果你不结合第4章的椭圆曲线签名原理,就理解不了为什么签名能验证身份却不能伪造。

2.2 导图分层的三个原则

画思维导图最怕的就是把所有东西都堆在一层,最后变成一团乱麻。我试过好几种分层方式,最后总结出三个原则,分享给你。

第一个原则是按抽象层级分层。最外层是章节主题,第二层是核心概念,第三层是概念的属性或操作,第四层是具体的例子或参数。比如“密钥”是第二层,“私钥的生成方式”是第三层,“随机数生成”是第四层。这样分层的好处是,你从任何一个节点都能快速定位到它所在的抽象层级,不会迷失。

第二个原则是按流程顺序连线。有些概念之间不是包含关系,而是先后关系,比如“私钥→公钥→地址”就是一条明确的流程链。这种关系不要用树形结构表示,而要用箭头连线表示。我在导图里专门用不同颜色的连线来区分“包含关系”和“流程关系”,一眼就能看出哪些是结构、哪些是过程。

第三个原则是给每个节点标注关键词而非完整句子。思维导图不是笔记,它的价值在于快速唤起记忆,而不是替代阅读。每个节点写三五个字就够了,比如“椭圆曲线签名”写成“ECDSA签名”,看到这几个字你脑子里就能展开一整段知识。写太多反而会让导图变得臃肿,失去快速浏览的意义。

2.3 我用的工具和画法

工具这块其实没什么讲究,纸笔、XMind、MindNode、甚至用画图软件手绘都行。我一开始用的是纸笔,因为画起来快,改起来也方便,但缺点是画大了之后不好调整,加一个节点可能要重画半张图。后来换成了电子工具,主要图的是能随时拖拽调整,而且可以折叠展开,复习的时候能按需查看细节。

我的画法是“先粗后细”。第一遍先把三章的一级和二级节点画出来,不求全,只求把骨架搭起来。第二遍再往每个二级节点下面补充三级和四级节点,这时候会发现自己哪里理解得不够,回头翻书补上。第三遍是复习的时候,把已经记住的节点折叠起来,只看那些还不太熟的,反复几次就全记住了。

提示:不要试图一次画完。我第一版导图画了整整一个下午,结果画完就再也没看过。后来改成每天画一点、复习一点,反而记得牢。导图的价值在画的过程,不在画完的结果。

3. 第4章核心内容拆解:密钥与地址

3.1 私钥、公钥、地址这条主线怎么理

第4章的核心就是一条线:私钥生成公钥,公钥生成地址。这条线看起来简单,但里面藏着好几个容易搞混的点。我当初就犯过一个错误,以为公钥和地址是一回事,只是叫法不同。后来才明白,地址是公钥经过哈希运算后截取的一部分,两者在数学上有关联,但在使用场景上完全不同。

私钥的本质是一个随机数,范围在1到2的256次方之间。这个范围大到什么程度呢?大概相当于宇宙中所有原子的数量级。所以理论上你随便生成一个私钥,撞上别人私钥的概率几乎为零。但这里有个坑:随机数必须是真的随机,不能用伪随机或者有规律的数。我见过有人用“123456”当私钥测试,结果资产直接被转走,这就是典型的随机性不足导致的悲剧。

公钥是由私钥通过椭圆曲线乘法推导出来的。这里的关键是,这个推导过程是单向的,也就是说你知道私钥能算出公钥,但知道公钥算不出私钥。这就是整个加密体系安全性的基石。椭圆曲线乘法不是普通的乘法,而是一种定义在椭圆曲线上的特殊运算,它的单向性来自于离散对数问题的困难性。你不用去深究数学细节,但必须理解“单向”这个特性,否则后面讲签名的时候你会想不通为什么签名能验证身份。

地址是公钥经过Keccak-256哈希后取最后20个字节得到的。注意这里用的是Keccak-256,不是标准的SHA3-256,虽然它们很像,但在填充方式上有区别。这个细节在实际开发中很重要,如果你用错了哈希函数,生成的地址就跟以太坊网络不兼容。我当初写代码的时候就踩过这个坑,用Python的hashlib.sha3_256生成地址,结果怎么都对不上,后来换成pysha3才搞定。

3.2 助记词和种子:为什么它能恢复所有密钥

助记词是第4章里我觉得最巧妙的设计。它的核心思想是:用一个人类可读的单词序列来代表一个随机种子,然后从这个种子推导出所有密钥。这样做的好处是备份方便,你只需要记住12个或24个单词,就能恢复整个钱包的所有账户。

助记词的标准叫BIP-39,它定义了一个2048个单词的词库,每个单词对应11位二进制数。12个单词就是132位,其中128位是随机熵,4位是校验和。24个单词则是264位,256位随机熵加8位校验和。校验和的作用是防止你输错单词,如果输入的助记词校验和不匹配,钱包就会提示你输入有误。

从助记词到种子用的是PBKDF2函数,迭代次数是2048次,盐值可以自定义,默认是“mnemonic”加一个可选的密码短语。这个密码短语是个很有意思的设计,它相当于给助记词加了一层保护,即使别人拿到了你的助记词,不知道密码短语也恢复不出正确的种子。但反过来,如果你自己忘了密码短语,那助记词也救不了你。我建议如果你要用密码短语,一定要单独记在一个安全的地方,不要跟助记词放在一起。

从种子到具体密钥用的是BIP-32定义的层级确定性派生。简单说就是种子生成主密钥,主密钥派生子密钥,子密钥再派生子密钥,形成一棵树。每个节点都有一个派生路径,比如“m/44'/60'/0'/0/0”就是以太坊常用的路径。这个路径里的每个数字都有含义:44'表示BIP-44标准,60'表示以太坊的币种编号,后面的0'、0、0分别表示账户、外部链、地址索引。理解这个路径结构,你就能明白为什么同一个助记词在不同钱包里能生成相同的地址,也能明白为什么改一个数字就能生成完全不同的地址。

3.3 密钥存储的几种方式及各自的风险

私钥生成出来之后,怎么存是个大问题。我见过太多人因为存储方式不当导致资产丢失,所以这块我想多说几句。

最原始的方式是明文存储,就是把私钥直接写在文件里或者数据库里。这种方式的风险不用我多说,一旦文件泄露或者数据库被拖,私钥就没了。但在某些场景下,比如本地开发测试,明文存储也不是不能接受,关键是你要清楚它的风险边界,不要把它用在生产环境。

稍微好一点的方式是加密存储,用密码对私钥进行对称加密,比如用AES或者scrypt。这样即使文件泄露,攻击者还需要破解密码。但这里的关键是密码的强度,如果你用“123456”当密码,那跟明文存储没什么区别。我建议密码至少16位,包含大小写字母、数字和特殊符号,而且不要跟其他服务的密码重复。

更安全的方式是硬件钱包,私钥永远不离开设备,签名操作在设备内部完成。这种方式的安全性最高,但成本也最高,而且使用起来没有软件钱包方便。我的建议是,大额资产用硬件钱包,小额日常用的可以放软件钱包,但软件钱包的助记词一定要离线备份。

还有一种方式是托管钱包,私钥由第三方保管。这种方式最方便,但你实际上放弃了对自己资产的控制权。我不推荐这种方式,除非你完全信任那个第三方,而且能接受它跑路的风险。

注意:不管你用哪种方式存储私钥,都不要截图、不要发聊天工具、不要存云盘。我见过有人把私钥截图存在手机相册里,结果手机丢了,资产也跟着丢了。私钥一旦泄露,没有任何办法可以挽回。

4. 第5章核心内容拆解:钱包的运作机制

4.1 钱包到底“装”的是什么

很多人以为钱包里装的是币,这是个常见的误解。钱包里装的其实是密钥,币始终在链上,钱包只是帮你管理访问这些币的凭证。理解这一点很重要,因为它意味着“转账”并不是把币从一个钱包移到另一个钱包,而是用私钥签名一笔交易,把链上某个地址的余额转到另一个地址。

钱包的核心功能有三个:生成密钥、存储密钥、签名交易。生成密钥用的是第4章讲的那些算法,存储密钥用的是第3章讲的那些方式,签名交易用的是第6章要讲的流程。所以你看,钱包其实是连接第4章和第6章的桥梁,它把密钥管理和交易签名串起来了。

钱包还负责跟节点通信,查询余额、估算Gas、广播交易。这部分功能通常是通过JSON-RPC接口实现的,钱包会连接到一个以太坊节点,把用户的请求转发给节点,再把节点的响应展示给用户。有些钱包自己运行节点,有些钱包用第三方节点服务,各有优劣。自己运行节点更安全但更麻烦,用第三方节点更方便但需要信任第三方。

4.2 确定性钱包的派生路径详解

确定性钱包是第5章的重点,也是我觉得最值得花时间搞懂的部分。它的核心思想是:所有的密钥都从一个种子派生出来,只要备份了种子,就备份了所有密钥。这个设计解决了传统钱包的一个大问题:每生成一个新地址就要备份一次,备份次数多了容易丢三落四。

派生路径是确定性钱包的关键概念。以以太坊常用的“m/44'/60'/0'/0/0”为例,我来逐段解释一下。最前面的“m”表示主密钥,这是整棵树的根。“44'”表示使用BIP-44标准,这个标准定义了多币种钱包的层级结构。“60'”是以太坊的币种编号,这个编号是注册过的,比特币是0',以太坊是60'。“0'”表示第一个账户,如果你有多个账户,这里就是0'、1'、2'这样递增。后面的“0”表示外部链,用于接收地址,“1”表示内部链,用于找零地址。最后的“0”是地址索引,同一个账户下可以有多个地址。

这里有个容易搞混的地方:带撇号的数字和不带撇号的数字有什么区别?带撇号表示硬化派生,不带撇号表示普通派生。硬化派生的意思是,从父公钥和父链码无法推导出子公钥,必须要有父私钥才行。普通派生则可以从父公钥推导出子公钥。这个区别在安全性上有意义:如果你只暴露了扩展公钥,普通派生下的子公钥可能被推导出来,但硬化派生下的不会。所以一般建议在账户层级用硬化派生,在地址层级用普通派生。

4.3 扩展密钥与钱包的安全边界

扩展密钥是确定性钱包里的一个重要概念,它由密钥和链码两部分组成。扩展私钥可以派生出所有子私钥,扩展公钥可以派生出所有子公钥但不能派生出子私钥。这个特性让扩展公钥有了一个很有用的应用场景:你可以把扩展公钥放在服务器上,让它生成接收地址,但服务器上没有私钥,即使被攻破也转不走资产。

但这里有个安全边界需要注意:扩展公钥加上任何一个子私钥,就能推导出扩展私钥。所以如果你用了扩展公钥方案,千万不要把任何一个子私钥暴露出去。我见过有人为了调试方便,把某个地址的私钥导出来用,结果整个钱包的扩展私钥都能被推导出来,所有地址的资产都处于风险之中。

钱包的安全边界还体现在密码短语上。前面提到过,密码短语相当于给助记词加了一层保护,但它也带来了一个新的风险:如果你忘了密码短语,助记词也恢复不了钱包。而且密码短语没有校验机制,你输错一个字母,钱包不会提示你错误,而是直接生成一个全新的空钱包。所以如果你要用密码短语,一定要确保自己记得住,或者单独备份。

5. 第6章核心内容拆解:交易的完整生命周期

5.1 一笔交易从构造到上链的全过程

第6章讲的是交易,这是三章里最复杂也最实用的一章。我把它拆成五个阶段:构造、签名、广播、打包、确认。每个阶段都有很多细节,我逐个来说。

构造阶段是确定这笔交易要做什么。一笔交易包含几个核心字段:nonce、gasPrice、gasLimit、to、value、data。nonce是发送方已经发送的交易数量,用来防止重放攻击。gasPrice是你愿意为每个Gas支付的价格,gasLimit是你愿意支付的最大Gas数量。to是接收方地址,如果是合约创建,这个字段为空。value是转账金额,data是附加数据,调用合约时用来指定调用哪个函数、传什么参数。

签名阶段是用私钥对交易进行签名。签名的过程是:先把交易字段用RLP编码,然后对编码后的数据做Keccak-256哈希,再用私钥对哈希值进行椭圆曲线签名。签名结果包含三个值:v、r、s。v表示恢复标识,r和s是签名的两个部分。这三个值加上原来的交易字段,就构成了签名后的交易。

广播阶段是把签名后的交易发送到网络。钱包通常会把交易发送给连接的节点,节点再转发给其他节点,最终传播到整个网络。这里有个细节:交易广播出去之后,你并不能保证它一定会被打包,因为矿工可以选择打包哪些交易。如果Gas价格设得太低,交易可能会长时间停留在待打包池里。

打包阶段是矿工把交易包含进区块。矿工会从待打包池里挑选Gas价格高的交易,打包进自己挖出的区块。打包之后,交易状态从“待处理”变成“已打包”,但这时候还不能算最终确认,因为区块可能被重组。

确认阶段是等待足够多的区块确认。一般来说,等6个区块确认之后,交易就可以认为是最终确定了。等待的区块数越多,被重组回去的概率越低。对于大额交易,建议等12个甚至更多区块确认。

5.2 Gas机制:为什么你的交易会卡住

Gas是以太坊里最让人头疼的概念之一,但也是最必须搞懂的概念。简单说,Gas是衡量计算工作量的单位,每笔交易都要消耗Gas,Gas的价格由市场决定。你支付的手续费等于Gas用量乘以Gas价格。

Gas用量取决于交易做了什么。简单的转账只需要21000 Gas,这是固定的。调用合约则取决于合约代码的复杂度,可能几万也可能几百万。如果Gas用量超过了gasLimit,交易会失败,但已经消耗的Gas不会退还。所以设置gasLimit的时候要留一些余量,但也不能设得太高,因为gasLimit乘以gasPrice就是你要预付的最大金额,设太高会冻结你太多余额。

Gas价格是动态变化的,取决于网络的拥堵程度。网络空闲的时候,Gas价格可能只有几Gwei;网络拥堵的时候,可能涨到几百Gwei。如果你设的Gas价格太低,交易就会卡在待打包池里,迟迟不被矿工打包。这时候你有两个选择:要么等网络空闲下来,要么用同样的nonce发一笔Gas价格更高的交易来覆盖它。

EIP-1559之后,Gas机制有了变化,引入了基础费用和小费的概念。基础费用由网络自动计算,会被销毁;小费是给矿工的激励。这种机制让Gas价格更可预测,但理解起来也更复杂。我的建议是,如果你只是做简单转账,用钱包的默认设置就行;如果你要调优Gas成本,那就需要花时间研究一下当前的网络状况和EIP-1559的机制。

5.3 签名与重放保护:交易安全的核心

签名是交易安全的核心,它保证了只有私钥持有者才能发起交易。签名的过程前面简单提过,这里我再展开说一下。

椭圆曲线签名的数学原理是:用私钥对消息哈希进行签名,生成r和s两个值;验证者用公钥、消息哈希和签名值进行验证,如果验证通过,说明签名确实是由对应的私钥生成的。这个过程的关键是,没有私钥就无法生成有效的签名,而且签名跟消息是绑定的,改一个字节签名就会失效。

重放保护是另一个重要的安全机制。在没有重放保护的情况下,一笔在主网上的交易可以被复制到测试网或者其他分叉链上重新执行,造成意外的资产转移。EIP-155引入了链ID的概念,签名的时候把链ID也包含进去,这样一笔交易就只能在特定的链上执行,换到别的链上签名就失效了。

v值的含义也跟重放保护有关。在EIP-155之前,v只能是27或28;EIP-155之后,v变成了链ID乘以2加35或36。这个变化让签名跟链ID绑定,实现了重放保护。如果你在代码里手动构造交易,一定要注意v值的计算方式,算错了签名就无效。

提示:如果你在测试网上测试交易,发现签名总是验证失败,先检查一下链ID设对了没有。我当初在测试网上调试的时候,就是因为链ID设成了主网的1,怎么都签不过去,折腾了半天才发现问题。

6. 把三章画成一张导图的实操步骤

6.1 导图结构设计与节点规划

现在到了动手画导图的时候。我的建议是先用一张白纸或者空白画布,把三章的一级节点列出来。一级节点就是三个:密钥与地址、钱包、交易。这三个节点横向排列,中间留出足够的空间,因为后面要往下面挂很多子节点。

然后给每个一级节点挂二级节点。密钥与地址下面挂四个:私钥、公钥、地址、助记词与种子。钱包下面挂四个:钱包类型、确定性钱包、派生路径、扩展密钥。交易下面挂五个:交易结构、签名、Gas机制、广播与打包、重放保护。这些二级节点就是导图的骨架,先把它们摆好,再往下面填细节。

三级节点是二级节点的展开。比如私钥下面挂:生成方式、随机性要求、存储方式。公钥下面挂:椭圆曲线乘法、单向性、压缩与非压缩格式。地址下面挂:Keccak-256哈希、校验和、地址格式。助记词下面挂:BIP-39标准、种子生成、密码短语。这样一层层展开,直到你觉得够用为止。

四级节点是具体的例子或参数。比如随机性要求下面可以写“256位随机数”,Keccak-256哈希下面可以写“取后20字节”,BIP-39标准下面可以写“2048词库、12/24单词”。这些具体数字能帮你快速回忆细节,但不要写太多,否则导图会变得很臃肿。

6.2 连线与标注的技巧

节点摆好之后,接下来是连线。连线分两种:一种是层级连线,表示包含关系,用直线就行;另一种是流程连线,表示先后关系,用箭头表示。比如私钥到公钥到地址就是流程连线,用箭头串起来;钱包到确定性钱包到派生路径就是层级连线,用直线连接。

我还会用不同颜色来区分不同的知识块。密钥相关的用蓝色,钱包相关的用绿色,交易相关的用橙色。这样一眼看过去,就知道哪个节点属于哪个知识块。如果你用的是电子工具,还可以给节点加图标或者标签,进一步区分类型。

标注方面,我会在关键节点旁边加一些小注释。比如在“硬化派生”旁边写“带撇号”,在“EIP-1559”旁边写“基础费用+小费”,在“v值”旁边写“链ID*2+35/36”。这些注释不用太长,几个字就行,但能帮你快速回忆起关键细节。

6.3 复习与迭代:让导图真正发挥作用

导图画完不是终点,而是起点。我的做法是每隔几天就拿出来复习一遍,复习的时候先不看细节,只看一级和二级节点,试着在脑子里把下面的内容展开。如果某个节点展开不出来,就翻书补上,然后在导图上做个标记,下次重点复习。

复习的时候我还会做一件事:把导图上的节点跟实际代码对应起来。比如看到“私钥生成”,就去翻一下自己写的代码,看看用的是哪个库、哪个函数;看到“签名”,就去翻一下交易签名的代码,看看v、r、s是怎么算出来的。这样把理论和实践对应起来,记忆会深刻很多。

导图也需要迭代。随着理解的深入,你会发现有些节点可以合并,有些节点需要拆分,有些连线需要调整。我第一版导图跟第三版导图差别很大,但每一版都比上一版更清晰。所以不要怕改,导图就是越改越好的。

7. 常见问题与避坑指南

7.1 密钥与地址部分的常见坑

第一个坑是混淆公钥和地址。前面说过,地址是公钥哈希后截取的,两者不能混用。我见过有人在代码里把地址当公钥传给签名函数,结果怎么都签不对。记住:签名用私钥,验证用公钥,转账用地址。

第二个坑是助记词顺序搞错。助记词是有顺序的,顺序错了校验和就不对,钱包会提示错误。但有些钱包不校验顺序,只是生成一个不同的种子,结果就是你恢复出一个空钱包。所以输入助记词的时候一定要按顺序来,不要觉得单词对了就行。

第三个坑是密码短语丢失。前面说过,密码短语没有校验机制,忘了就恢复不了。我建议如果你要用密码短语,把它跟助记词分开存放,但都要确保自己能找到。不要存在脑子里,人的记忆是靠不住的。

第四个坑是随机数生成不安全。有些编程语言的随机数函数默认是不安全的,比如Python的random模块,它生成的是伪随机数,可以被预测。生成私钥一定要用密码学安全的随机数生成器,比如Python的secrets模块或者os.urandom。

7.2 钱包与派生路径部分的常见坑

第一个坑是派生路径不匹配。同一个助记词,用不同的派生路径会生成不同的地址。如果你在一个钱包里生成的地址,在另一个钱包里恢复不出来,大概率是派生路径不一样。以太坊常用的路径是“m/44'/60'/0'/0/0”,但有些钱包用“m/44'/60'/0'/0”或者“m/44'/60'/0'”,恢复的时候要选对路径。

第二个坑是扩展公钥泄露。前面说过,扩展公钥加上任何一个子私钥就能推导出扩展私钥。所以如果你用了扩展公钥方案,千万不要把任何子私钥暴露出去。我建议扩展公钥只用来生成接收地址,不要用来做任何需要私钥的操作。

第三个坑是钱包文件损坏。软件钱包通常会把加密后的密钥存在文件里,如果文件损坏或者丢失,又没有助记词备份,资产就找不回来了。所以一定要备份助记词,而且要备份在多个安全的地方。

7.3 交易与Gas部分的常见坑

第一个坑是nonce管理混乱。nonce是递增的,如果你并发发送多笔交易,nonce可能会冲突。我建议串行发送交易,等前一笔确认了再发下一笔。如果确实需要并发,那就手动管理nonce,确保每笔交易的nonce都是唯一的。

第二个坑是Gas价格设得太低。网络拥堵的时候,低Gas价格的交易会卡很久。我建议参考当前网络的Gas价格,设一个稍高于平均值的价格,这样能更快被打包。如果交易已经卡住了,可以用同样的nonce发一笔高Gas价格的交易来覆盖它。

第三个坑是gasLimit设得太低。如果gasLimit低于实际消耗的Gas,交易会失败,但已经消耗的Gas不会退还。我建议gasLimit设得比预估用量高20%到30%,留一些余量。但也不要设太高,因为gasLimit乘以gasPrice会冻结你的余额。

第四个坑是链ID设错。前面说过,链ID是重放保护的一部分,设错了签名就无效。主网的链ID是1,测试网各有各的链ID。如果你在测试网上测试,一定要确认链ID设对了。

7.4 常见问题速查表

问题现象可能原因排查方法
签名验证失败链ID设错、v值计算错误检查链ID和v值计算公式
恢复出的地址跟预期不符派生路径不匹配、助记词顺序错误检查派生路径和助记词顺序
交易长时间未打包Gas价格太低、nonce冲突提高Gas价格或用相同nonce覆盖
交易失败但扣了GasgasLimit低于实际用量提高gasLimit,留20%余量
地址格式不合法校验和错误、哈希函数用错检查Keccak-256和校验和计算
钱包恢复后余额为零密码短语错误、派生路径错误检查密码短语和派生路径

8. 我画完这张导图之后的几点体会

画完这张导图之后,我最大的感受是:以太坊的底层设计其实非常优雅,只是被太多细节掩盖了。密钥、钱包、交易这三块,单独看每一块都有很多琐碎的知识点,但放到一起看,你会发现它们其实是在解决同一个问题的不同层面:如何安全地证明身份、如何方便地管理身份、如何可靠地使用身份。

另一个感受是,画导图的过程比导图本身更有价值。我在画的过程中被迫去梳理概念之间的关系,被迫去回答“这个节点为什么挂在这里而不是那里”,这种主动思考比被动阅读有效得多。我建议你不要直接抄我的导图,而是自己动手画一遍,哪怕画得没我好,收获也会比我直接给你一张图大得多。

最后分享一个小技巧:如果你觉得三章一起画太复杂,可以先分开画三张,每张只画一章的内容,画完之后再把三张拼到一起,用连线把相关的节点连起来。这样既降低了单次画图的难度,又能保证最后看到全貌。我第一遍就是这么干的,效果不错。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询