- 区块链教程
- 区块链 - 首页
- 区块链基础
- 区块链 - 简介
- 区块链的历史
- 区块链 - 技术
- 区块链与密码学
- 区块链超越加密货币
- 区块链 - 高级概念
- 区块链 - 去中心化
- 区块链 - 去中心化应用(DApp)
- 区块链 - 去中心化金融(DeFi)
- 区块链 - 未来展望
- 区块链中的智能合约
- 区块链 - 里卡迪安合约
- 区块链 - 预言机
- 区块链 - 去中心化自治组织(DAO)
- 比特币
- 比特币 - 无形的黄金
- 比特币的工作原理?
- 比特币 - 网络
- 比特币 - 钱包
- 比特币 - 创新
- 以太坊
- 以太坊替代加密货币
- 以太坊生态系统
- 以太坊虚拟机
- 以太坊高级
- 以太坊钱包
- 以太坊矿工节点
- 其他
- 区块链 - 双重支付
- 公钥密码学
- 区块链 - 哈希
- 比特币 - 挖矿
- 区块链 - 区块链
- 区块链 - 工作量证明
- 区块链 - 网络与挖矿
- 区块链 - 矿工激励
- 区块链 - 梅克尔树
- 区块链 - 支付验证
- 区块链 - 解决冲突
- 区块链 - 隐私
- 比特币 - 缓解攻击
- 区块链 - 结论
- 区块链资源
- 区块链 - 快速指南
- 区块链 - 资源
- 区块链 - 讨论
区块链 - 以太坊高级
以太坊区块链已成为现代社会中非常流行的区块链。在本章中,我们将讨论一些以太坊高级主题,例如创世区块、区块难度、Gas 等等。接下来,后续章节将讨论以太坊区块链的一些重要概念,例如以太坊钱包和以太坊矿工的作用。
以太坊中的区块和区块链
区块是区块链的基本结构组件。在以太坊中,每个区块都由几个关键元素组成,包括:
1. 交易列表
区块包含所有已发生的交易的完整列表,以及与其关联的任何叔区块的头部列表。
2. Ommers 或叔区块的头部
叔区块是指一个块是父块的后代,但本身没有任何子块。Ommers 或叔区块被认为是有效的但陈旧的区块,不属于主链,尽管它们增强了区块链的整体安全性。
3. 区块头部
区块头部表示以太坊区块的基本和复杂元素。每个头部包含多个组件,如下所述:
- **父哈希** - 这指的是前一个区块头部的 Keccak 256 位哈希。
- **Ommers 哈希** - 这是表示包含在当前区块中的 Ommers(或叔区块)列表的 Keccak 256 位哈希。
- **受益人** - 此字段保存指定在成功挖矿区块后接收挖矿奖励的实体的 160 位地址。
- **状态根** - 状态根字段包含状态默克尔树中根节点的 Keccak 256 位哈希。
- **交易根** - 这是交易默克尔树中根节点的 Keccak 256 位哈希。
- **回执根** - 回执根是交易回执默克尔树中根节点的 Keccak 256 位哈希,其中包含区块中所有交易的回执。
- **日志布隆过滤器** - 日志布隆过滤器是一个布隆过滤器,它聚合了区块交易列表中每个交易回执的日志条目中的记录器地址和日志主题。
- **难度** - 这表示与当前区块关联的难度级别。
- **编号** - 这表示所有先前区块的累积计数,创世区块被指定为区块零。
- **Gas 限额** - 此字段表示区块允许的最大 Gas 消耗量。
- **Gas 使用量** - 此字段反映了区块中包含的交易消耗的总 Gas 量。
- **时间戳** - 时间戳表示初始化区块时的 Unix 时间戳。
- **额外数据** - 额外数据字段可用于存储与区块相关的任何任意信息。
- **Mixhash** - Mixhash 字段包含一个 256 位哈希,用于证明已付出足够的计算工作(工作量证明,或 PoW)来创建区块。
- **Nonce** - Nonce 是一个 64 位哈希(数值),它与 Mixhash 字段一起用于验证是否已应用足够的计算工作(PoW)。
创世区块
创世区块表示区块链网络中的第一个区块。它在内容和创建方法方面与标准区块略有不同。此区块包含 15 个特定项目,例如时间戳、Nonce、哈希等等。
区块验证
如果以太坊区块满足以下条件,则被视为有效:
- 它与叔块和交易保持一致,确保所有 Ommers 都被识别为叔块,并且这些叔块的**工作量证明 (PoW)** 是合法的。
- 前一个区块必须存在且有效。
- 区块的时间戳必须有效,这意味着它应该晚于父区块的时间戳,并且不超过未来 15 分钟。
- 如果任何这些条件未满足,则该区块将被拒绝。
区块终结
**区块终结** 是矿工进行的一个关键过程,用于验证区块的内容并分配奖励。此过程包含四个不同的步骤,如下所述:
Ommers 验证
在挖矿中,识别 Ommers 至关重要。这涉及验证陈旧区块的头部以确保其合法性,并确认叔块和当前区块之间的关系是否符合最大深度六个区块。
交易验证
在挖矿中,识别交易至关重要。此步骤需要验证区块中使用的总 Gas 是否对应于最后一次交易后的最终 Gas 消耗,从本质上反映了区块内交易消耗的累积 Gas。
奖励应用
此步骤涉及奖励的分配,包括使用相应的奖励余额更新受益人的账户。在以太坊中,矿工也会收到陈旧区块的补偿,相当于区块奖励的 1/32。
状态和 Nonce 验证
最后一步需要验证状态和区块 Nonce。在挖矿的上下文中,需要计算有效的状态和区块 Nonce。
Gas
在以太坊区块链上执行的每个操作都需要支付 Gas。鉴于**以太坊虚拟机 (EVM)** 的**图灵完备**特性,此机制对于防止无限循环导致整个区块链冻结至关重要。交易费用以**以太坊**表示,从发起交易的账户的余额中扣除。
矿工需要费用才能将其交易包含在他们的挖矿工作中。如果此费用设置得太低,则可能不会处理该交易;相反,更高的费用会增加矿工选择将交易包含在区块中的可能性。但是,如果包含了一个具有足够费用的交易,但涉及过于复杂的运算,如果分配的 Gas 不足,则可能会触发 Gas 不足异常。在这种情况下,交易将失败,但仍将记录在区块中,发起者将不会收到退款。
交易成本可以使用以下公式计算:
Total cost = gasUsed * gasPrice
费用计划
在三种特定情况下需要支付 Gas 才能执行操作:
- 计算操作时
- 在创建合约或进行消息调用时
- 当内存使用量增加时