首页
赞助博主
友链
关于
随机CG图
推荐
我的B站主页
我的歌单
我的bgm
井字棋
待办事项
github加速
Search
1
iOS永久不续签随意装软件,trollstore巨魔商店安装教程
3,494 阅读
2
进入自己原神服务器
1,776 阅读
3
linux云服开原神服务器
1,634 阅读
4
从零开始的mc联机教程
1,147 阅读
5
win上开原神服务器
1,128 阅读
默认分类
原神
MC
iOS
galgame
ReinaManager
学习笔记
开发笔记
日常
登录
Search
标签搜索
reinamanager
原神
私服
win
rust
seaorm
安卓
tauri
react
mui
react router
tauri-plugin-sql
migration
sea-orm-cli
基线迁移
数据库迁移
dto
repository
sql
火神80
累计撰写
14
篇文章
累计收到
18
条评论
首页
栏目
默认分类
原神
MC
iOS
galgame
ReinaManager
学习笔记
开发笔记
日常
页面
赞助博主
友链
关于
随机CG图
推荐
我的B站主页
我的歌单
我的bgm
井字棋
待办事项
github加速
搜索到
1
篇与
的结果
2025-10-15
以太坊区块结构:从数字账本到世界计算机
前言:区块的骨架 —— 区块头与区块体+------------------------------------------------------+ | 以太坊区块 (Block) | +======================================================+ | 区块头 (Block Header) - 元数据与指纹 | |------------------------------------------------------| | - Parent Hash: 0xabc...def | | - State Root: 0x123...456 | | - Timestamp: 1678886400 | | - ... (其他元数据) | +======================================================+ | 区块体 (Block Body) - 交易列表 | |------------------------------------------------------| | +-----------------+ +-----------------+ +----------+ | | | Transaction 1 | | Transaction 2 | | ... | | | +-----------------+ +-----------------+ +----------+ | +------------------------------------------------------+每个以太坊区块都由两大部分组成:区块头 (Block Header) 和 区块体 (Block Body)。你可以把区块头想象成一本书的“扉页”和“摘要”,它包含了这个区块的所有元数据,像是身份证明和索引。而区块体,则是这本书的“正文”,记录了实际发生的所有事件。首先看区块头。它像一个高效的压缩包,里面装满了关键信息。例如,它会记录父哈希 (Parent Hash),这是上一个区块的加密指纹,正是它将所有区块像链条一样环环相扣,形成了不可篡改的区块链。它还有时间戳 (Timestamp),记录了区块被创建的确切时间。更有趣的是,区块头在过去的PoW时代还包含了一个被称为 Nonce 的字段。Nonce 是矿工为了解决加密难题而尝试的“幸运数字”,找到它就意味着获得了打包区块的权利。同时,难度 (Difficulty) 字段则量化了这个难题的复杂程度,它会动态调整,确保以太坊的出块速度保持在预期的稳定水平。接着是区块体,它就是这个区块内发生的所有交易列表 (Transaction List)。每一次ETH转账、每一次与智能合约的交互,都会被打包在这里。这些交易经过加密处理,最终会生成一个唯一的“交易根哈希”,这个哈希值被安全地储存在区块头中,确保了区块内所有交易的完整性和不可篡改性。模块一:以太坊的“独门绝技” —— 叔块 (Ommers/Uncles)讲完区块的骨架,现在要揭示以太坊一个非常独特且智慧的设计——“叔块”。这个概念是它在面对“分叉”问题时,给出的一个巧妙解决方案,也是以太坊区别于比特币的关键之一。在去中心化的区块链网络中,由于网络延迟和矿工之间的竞争,有时会发生两个区块几乎同时被创建的情况,导致区块链暂时出现分叉。在比特币的网络里,这种分叉中的“短链”会被完全抛弃,其上的工作量也随之浪费。但以太坊却不希望白白浪费这些计算资源,于是引入了叔块 (Ommers/Uncles) 的概念。你可以用一个家族树来理解:如果一个区块和当前区块有相同的“祖父区块”,但它自己却没能成为主链的一部分,那么它就成了当前区块的“叔叔”。当前区块在打包时,会将这些没能上主链的“叔块”的区块头包含进来。以太坊处理分叉的方式如下: [ 祖父区块 ] | +----+----+ | | [ 父区块 ] [ 叔块 (Ommer) ] | [ 当前区块 ] (包含了叔块的信息)比特币只会选择最长的链,而以太坊则允许当前区块引用这些叔块,从而部分承认它们的工作量。 [ ... 前一个区块 ... ] | [ 区块 A ] | +------+------+ | | [ 区块 B1 ] [ 区块 B2 ] <-- B2 成为“孤块”(Orphan Block),被彻底抛-弃 | [ 区块 C ] <-- C选择在B1后面继续,使得这条链成为无可争议的“最长链”为什么这个设计如此独特和重要?提高安全性与效率:叔块的工作量不会被完全浪费,而是会被主链部分承认。这使得整个网络的总计算能力得到了更充分的利用,增加了51%攻击的难度。即便一个区块没有成为主链的一部分,它的算力贡献也被吸收,变相提升了网络的健壮性。增加网络公平性:发现叔块的矿工也能获得一部分奖励。这鼓励了那些可能因网络延迟而略慢一步的参与者继续贡献算力,有助于维护网络的去中心化和公平性,避免算力过度集中。所以,叔块是以太坊在追求效率和去中心化之间找到的一个精妙平衡点,它让以太坊的网络更具韧性。模块二:以太坊的“双重灵魂”——两种核心账户类型 (EOA vs. 合约账户)了解了区块结构和叔块的独特设计后,接下来把视角转向区块链里的“主角”——账户。以太坊的世界状态,就是由无数账户共同构成。但这里的“账户”并非单一类型,而是分为两种,分别承载着主动与被动、意志与逻辑的双重灵魂。+------------------------------------------+------------------------------------------+ | 外部账户 (Externally Owned Account) | 合约账户 (Contract Account) | +==========================================+==========================================+ | 🧑💻 | 🤖 | | (用户 / 实体) | (程序 / 规则) | |------------------------------------------+------------------------------------------| | 控制方式: 私钥 🔑 | 控制方式: 内部代码 </> | |------------------------------------------+------------------------------------------| | 核心能力: ✅ 主动发起交易 | 核心能力: ❌ 不能主动发起交易 | | | ✅ 被动执行代码 | +------------------------------------------+------------------------------------------+这两种账户分别是外部账户(EOA)和合约账户(Contract Account)。理解它们的区别,是理解以太坊一切应用如何运作的钥匙。首先,外部账户(EOA),你可以把它想象成“人”或“实体”。我们每个人用钱包(比如MetaMask)创建的账户,就是EOA。它有一个独一无二的私钥,只有你自己能控制。EOA最核心的能力,就是主动发起交易。无论是简单的转账,还是启动一个DeFi协议,都是EOA在“按下启动键”。EOA有ETH余额,但本身没有代码。而合约账户,则像一台自动售货机,是区块链上的“程序”或“规则”。它没有私钥,不能主动发起交易,只能被EOA或其他合约账户“唤醒”后,自动执行预设的代码逻辑。合约账户不仅可以有ETH余额,更重要的是拥有与之关联的代码和内部存储。打个比方,EOA是“发起者”,合约账户是“执行者”。整个以太坊的运作模式,就是EOA发起一笔交易,去“激活”合约账户。合约账户被激活后,执行代码,可能会改变自己的数据,或者向其他EOA转账,甚至调用另一个合约账户,形成链式反应。正是这个“双账户”系统,让以太坊从一个简单的支付网络,演变成可以运行复杂应用的去中心化平台。它为构建一个无限可能的去中心化世界奠定了基础。模块三:交易的“DNA”——解剖以太坊的通用指令包(输入指令)理解了账户的双重属性后,自然会好奇:这些账户之间的互动是如何发生的?推动以太坊世界不断变化的“能量”,正是每一笔交易。接下来,聚焦于以太坊交易的内部结构,看看它如何成为驱动“世界计算机”运转的通用指令包。先对比一下,比特币的交易像一张银行支票,只能转账。而以太坊的交易,是一个“万能指令包”,不仅能转账,还能下达各种复杂指令。+---------------------------------------------+ | 以太坊交易 (Universal Packet) | |---------------------------------------------| | - to: 0xRecipient... | | - value: 1 ETH | | - nonce: 12 | | - gasLimit: 21000 | | - ... | |---------------------------------------------| | ▼ data 字段 (核心指令) ▼ | +---------------------------------------------+ | +---------------------+---------------------------------+ | IF data is EMPTY | IF data has CONTENT | +---------------------+---------------------------------+ | 结果: 简单ETH转账 | 结果: 调用智能合约 | | (像银行转账) | e.g., "transfer(0x..., 100)" | | | "mintNFT()" | | | (像发送程序指令) | +---------------------+---------------------------------+一笔以太坊交易,主要包含这些关键字段:to:接收方地址,可以是EOA,也可以是合约账户。value:转账的ETH数量。gasLimit:你愿意为这笔交易最多支付多少Gas。maxFeePerGas / maxPriorityFeePerGas:你愿意为每单位Gas支付的最高费用和小费。nonce:账户发出的交易序号,防止重复执行。最核心、最能体现以太坊可编程性的,是 data 字段。你可以这样理解:如果 data 为空,这就是一笔普通的ETH转账。如果 data 有内容,这就是一条“遥控指令”,比如mint NFT、投票、DeFi操作等。data里包含了要调用的合约函数和参数。正是这个 data 字段,让以太坊的交易变得灵活、可编程,支撑起丰富的应用生态。模块四:交易的“执行回执”与“事件索引” —— Receipts Root & LogsBloom(返回“输出”和“日志”)交易的结构阐释了了“指令”如何下达,但每一次指令执行后,结果如何被记录和追溯?以太坊为此设计了专门的机制,确保每笔交易的执行结果都可验证、可检索。下面,介绍一下 Receipts Root 和 LogsBloom 这两个关键字段。+-------------------------------------------------+ | [区块头] | | +-------------------------------------------+ | | | Receipts Root <----(聚合所有收据的指纹)----+ | | | LogsBloom <----(聚合所有日志的索引)------+ | | +-------------------------------------------+ | +-------------------------------------------------+ | +-------------------------------------------------+ | [区块体] | | +-------------------------------------------+ | | | Transaction 1 -----(执行)-----> [收据 1] | | | | | | | | | +-> Log A | | | | +-> Log B | | | | | | | | Transaction 2 -----(执行)-----> [收据 2] | | | | | | | | | +-> Log C | | | +-------------------------------------------+ | +-------------------------------------------------+你可能会问,交易发出后,怎么知道结果?在以太坊里,每笔交易执行后,都会生成一份“交易回执”(Transaction Receipt)。你可以把它理解为一张超详细的小票,上面会写明:这笔交易到底成功了还是失败了(Status)。实际消耗了多少Gas(Gas Used),也就是你为这次操作付了多少“手续费”。过程中有没有触发合约事件(Logs),比如ERC-20代币的转账事件。这些“回执”不是单独存放的,而是被打包进区块里。区块头有个Receipts Root(收据根),它其实是所有回执的加密指纹,保证这些回执内容不可篡改。那么,LogsBloom又是什么?你可以把它想象成区块的“事件关键词索引”。它是一个特殊的过滤器,能帮你快速判断某个区块里有没有发生过你关心的事件。比如你想查“某个地址有没有收到过某种代币”,不用把所有日志都翻一遍,只要看LogsBloom就能大致判断,大大提升了查询效率。举个生活例子:Receipts就像你每次购物后拿到的小票,详细记录了买了什么、花了多少钱;Receipts Root就像商场后台的总账本,确保所有小票都真实有效;LogsBloom则像商场的“活动索引牌”,让你一眼就能知道本月有没有搞促销。这套机制让以太坊的交易结果既透明又高效,既方便开发者做数据分析,也方便用户追溯和验证。模块五:共识的“迁徙”与经济的“变革” —— 难度与Gas机制演进(资源计费系统)随着对区块结构各个组成部分的逐步剖析,人们也见证了以太坊的不断进化。最后,聚焦于那些见证以太坊历史变迁的动态字段——难度与Gas机制,感受这台“世界计算机”在共识与经济模型上的重大变革。可以把以太坊的进化史分为两个部分:共识机制的迁徙和经济模型的变革。先简单介绍一下PoW和PoS:PoW(工作量证明)是比特币和早期以太坊采用的共识机制。矿工需要用算力去解数学难题,谁先解出来谁就能记账并获得奖励。这种方式安全性高,但能耗巨大。PoS(权益证明)则完全不同。它不靠算力竞争,而是根据你持有和质押的ETH数量来决定谁有权记账。你质押的币越多,被选中的概率越大,能耗极低。以太坊在转型过程中,做了一个非常巧妙的设计——“难度炸弹”(Difficulty Bomb)。你可以把它理解为一个倒计时装置。随着时间推移,难度会指数级增加,最终让PoW挖矿变得几乎不可能,强制推动以太坊从PoW转向PoS。PoW挖矿难度 ^ | | ****** | ** | ** <--- 难度炸弹“引爆” | ** “冰河时代”来临 | ** | * |**************************** | (难度平稳增长,维持出块稳定) +---------------------------------------------------> 时间以太坊的“大合并”(The Merge)实现了主链和PoS信标链的无缝切换。切换时,所有历史数据和账户余额都被完整保留,用户几乎无感知。PoS上线后,区块生产者从“矿工”变成了“验证者”,他们通过质押ETH参与共识,整个网络能耗骤降,安全性和去中心化依然得以保障。大合并后,difficulty 字段永久归零,PoW时代宣告结束。再说Gas机制。Gas可以理解为以太坊的“燃料费”,每次操作都要消耗Gas。EIP-1559升级前,Gas费像拍卖市场,谁出价高谁优先,用户体验很差。EIP-1559后,交易费被拆分为基础费(Base Fee)和优先费(Priority Fee)。基础费由协议根据网络拥堵自动调整,并且直接销毁(burn),这让ETH有了通缩的可能性,也防止了矿工操纵费用。优先费则是你自愿给验证者的小费,用来让自己的交易更快被打包。举个例子,基础费就像打车时的起步价,优先费就像你愿意多给司机的小费,让他优先接你。一笔交易的总费用构成 (EIP-1559) [==========================================|+++++++++++++] ^ ^ ^ | | | 基础费 (Base Fee) 优先费 (Priority Fee) - 由网络根据拥堵情况自动定价 - 用户自愿添加的小费 - 最终会被燃烧销毁 🔥 - 直接支付给验证者作为激励 💰通过这些变革,以太坊实现了更可预测的交易费用,更高效地管理了网络拥堵,也让经济模型更可持续。
2025年10月15日
9 阅读
0 评论
1 点赞