第1章 一台全球计算机
以太坊 历史 以太坊 发展阶段 以太坊 特色第2章 账户是什么
以太坊 基础知识 Keystore 与私钥保存 以太坊 常用钱包 以太坊 EIP-55 账户地址第3章 交易是驱动力
以太坊 交易是驱动力 以太坊 交易发送 以太坊 交易方法 以太坊 交易生命周期 共识与工作量证明 矿工与挖矿奖励第4章 数据结构
以太坊 数据结构 以太坊 Radix树 以太坊 Merkle树 Merkle Patricia树 以太坊 RLP编码 以太坊 状态树 以太坊 交易树 以太坊 收据树 以太坊 区块第5章 构建私链
以太坊 安装geth 以太坊 启动私链 以太坊 接收挖矿奖励 以太坊 转账与收款第6章 部署智能合约
以太坊 部署智能合约 以太坊 什么是智能合约 以太坊 安装编译器 Solc 编译智能合约 智能合约发布准备 部署智能合约 调用智能合约第7章 以太坊虚拟机
以太坊虚拟机 虚拟机的执行结果 虚拟机的执行资源 合约调用合约 虚拟机的输入输出 Gas 花费与退回 虚拟机指令集第8章 Solidity 语法
Solidity 语法练习 Solidity 基础语法 Solidity 语法进阶 Solidity 高级语法 Solidity 安全第9章 Truffle 开发
Truffle 合约开发 编译、测试工具安装 Truffle 启动样例 Truffle ERC20合约 Truffle ERC20合约测试Truffle 冷知识
Truffle 冷知识 短地址攻击 比特币的区块 以太坊与比特币账户的区别 “不可能的三角”问题 ETHASH 挖矿算法第1章 一台全球计算机
以太坊 历史 以太坊 发展阶段 以太坊 特色第2章 账户是什么
以太坊 基础知识 Keystore 与私钥保存 以太坊 常用钱包 以太坊 EIP-55 账户地址第3章 交易是驱动力
以太坊 交易是驱动力 以太坊 交易发送 以太坊 交易方法 以太坊 交易生命周期 共识与工作量证明 矿工与挖矿奖励第4章 数据结构
以太坊 数据结构 以太坊 Radix树 以太坊 Merkle树 Merkle Patricia树 以太坊 RLP编码 以太坊 状态树 以太坊 交易树 以太坊 收据树 以太坊 区块第5章 构建私链
以太坊 安装geth 以太坊 启动私链 以太坊 接收挖矿奖励 以太坊 转账与收款第6章 部署智能合约
以太坊 部署智能合约 以太坊 什么是智能合约 以太坊 安装编译器 Solc 编译智能合约 智能合约发布准备 部署智能合约 调用智能合约第7章 以太坊虚拟机
以太坊虚拟机 虚拟机的执行结果 虚拟机的执行资源 合约调用合约 虚拟机的输入输出 Gas 花费与退回 虚拟机指令集第8章 Solidity 语法
Solidity 语法练习 Solidity 基础语法 Solidity 语法进阶 Solidity 高级语法 Solidity 安全第9章 Truffle 开发
Truffle 合约开发 编译、测试工具安装 Truffle 启动样例 Truffle ERC20合约 Truffle ERC20合约测试Truffle 冷知识
Truffle 冷知识 短地址攻击 比特币的区块 以太坊与比特币账户的区别 “不可能的三角”问题 ETHASH 挖矿算法比特币的区块
作为比特币的继承者和后起之秀,以太坊在区块的设计上大幅扩容了比特币的区块结构。
我们具体看看较为简单的比特币。
| 长度(byte) | 命名 | 描述 |
| 4 | Version | 区块版本,各版本共识算法、打包方法各异 |
| 32 | Previous Block Header Hash | 前一区块头的哈希值(父区块) |
| 32 | Merkle Root Hash | 本区块交易树的根哈希值 |
| 4 | Unix Time | 矿工哈希该区块头时候的起始时间戳 |
| 4 | nBit Format | 该区块头哈希必须遵从的文本格式 |
| 4 | Nonce | 在计算符合条件的哈希过程中可变换的输入参数 |
如果我们把比特币区块头和区块体画成示意图,是这样的

比特币区块
比特币的区块头的哈希值是矿工产生工作量的地方。 当矿工随机从交易池子中选中 1MB 大小的大约 4000 条交易时,将其组织成一棵 Merkle树 的形态。
在这棵树中,每笔交易都是叶子节点,它们两两结合产生一个哈希值的树中节点,再将树中的节点两两串联起来进一步哈希,递归直到算出根节点哈希值。
根节点哈希值作为一个输入参数,参与到区块头部的哈希值的计算中来(另一个输入参数是nonce值,这是一个任意 32bit 的值)。
矿工反复修改 nonce 值,直到区块头部哈希值的计算结果符合规定的 000... 开头数量。
如果 nonce 遍历完毕还没找到合适的区块头哈希,则只能被迫更改交易的排列组合,计算出新的根节点哈希值。
再尝试新一轮nonce值,直到成功计算出符合条件的头部哈希值(或者放弃)。
比特币高度为# 541,099的区块, 头部的哈希值如下:
| #541,099 | 0000000000000000000ec8769a995429b85e6301c97fa76de6fb9bc5162b27de |
下一章:以太坊与比特币账户的区别
以太坊与比特币的账户模型,从根本设计出发点来讲是不同的。根据以太坊黄皮书的描述,以太坊账户的概念与“银行储蓄账户”的概念相似。每个人都能开设账户,且账户初始余额为0。 当以太坊区块链运行时, ...
AI 中文社