- Mining Puzzle:BTC 的 PoW 对计算要求高,所以最后都是 ASIC。而以太坊改进了 Mining Puzzle (用更多内存),被称为 Memory-hard mining puzzle (ASIC Resistance)。
- PoS (proof of stake) 替代 PoW。
- Smart contract 支持:从 Decentralised Currency 进化到 Decentralised Contract 不可篡改contract
法币(Fiat Currency)
全节点维护账户以及其余额。
-
Double Spending Attack:交易发起者是恶意的。每次交易是基于账户余额,而不是币的来源。天然防御。
-
Replay Attack:交易接收者是恶意的。攻击者重放受害者Transaction。 解决方案:每次 Tx 包含一个 Nonce(交易计数)。全节点也会在账户内记录一个Nonce。每次交易Nonce+1。
- External Owned Account (EOA)
- PK/SK
- Balance
- Nonce
- Smart Contract Account
- 无 PK/SK,无法主动发起交易(但是可以被动发起交易,即通过 EOA trige)。
- Nonce
- Balance
- Code(不变)
- Storage(会变)
智能合约需要比较固定的身份。而 UTXO 无法做到。
我们期望能够将 状态地址 Addr
(160bit=40个16进制数) 映射到 账户状态 State
$$
Addr \mapsto State\
Addr: { 0, 1 }^{160} = { 0-F}^{40}
$$
为什么不直接使用 HashTable?
对于将其直接使用 HashTable 很难进行 Merkle Proof。如果将全表组成 Merkle Tree,考虑每次 Tx,表只是很小一部分更新,而对于通过 HT 构建整个 Merkle Tree 代价会很大。
BTC 的 Merkle Tree 是 Immutable。不会改变。
为什么不直接使用 Merkle Tree?
MT 没有提供足够快速的查找。
词源 retrieval。
Trie Tree | Patricia Tree/Radix tree/Compressed Trie |
无论顺序,插入构成的树都一样。
Merkle Tree 是 Hash 指针。
TODO
ETH 使用了 Modified MPT:
注意,这里的指针仍然是哈希指针,例如 7 到 Extension Node,这个7存储的是 Hash 指针。
ETH 会保留历史状态。
因为交易可能会有回滚(roll back),例如出现了forking。不使用推算是因为ETH支持智能合约,难以推算。 $$ (\overbrace{key}^{账户地址}, \underbrace{value}_{账户状态}) $$ 对于账户状态,其会先通过 RLP (Recursive Length Prefix) 进行序列化(Serialise)再进行存储。
Virtual Mining:投入资金,根据持有货币进行区块链建设。
PoW 维护安全不是闭环。攻击可以靠外面买来(例如买大量矿机)。 PoS 维护安全是闭环。可以避免这类攻击,攻击者若通过大量购币进行攻击,那么币价大涨。
**Validator (验证者)**通过 staking(质押)一定数量的以太币获得新区块和验证交易的权益。 质押越多,被选为 Validator 的概率越大。
Validator 负责提议新区块、验证其他 Validator 提议的区块、为区块投票。称为 Validator 需要最少 stake 32 ETH。质押的货币会被锁定无法交易或转移。
惩罚:验证者行为不当(如离线、双签等),会被扣除一部分质押的以太币。严重的恶意行为可能导致全部质押币被没收。
- Stake/质押:质押一定数量以太币以成为 Validator
- 选择 Validator:系统会随机选择Validator 来提议新区块和验证其他验证者的区块 随机选择过程被称为 RANDAO + VDF
- Propose Validator Block:被选中的 Validator (Block Proposer) 创建新的区块,收集并验证交易
- Block Validation:其他 Validator 会对 Block 进行认证
- 达成 Consensus:足够多的 Validator 认证了区块,区块被加入到链上
- Reward/奖励分配:成功提议和验证区块的 Validator 会获得奖励,奖励来自网络发行的新ETH和交易费用。
- 惩罚机制:如果验证者行为不当(如离线、双签或提议无效区块),他们可能会被惩罚,失去一部分质押的ETH。严重的违规行为可能导致被踢出网络。
-
Epoch:~6.4min 包含 32 个 Slots。 激活RANDAO,计算 VDF
-
Slot:~12sec
Checkpoint:每个 Epoch 第一个 Slot 称为 Checkpoint
- 选择 Validator:(基于前一个 Epoch 的random seed)随机选择一个 Validator 为 Block Proposer(瞬时)
- Propose Block:Block Proposer 创建并广播区块(~1-2sec)
- Block Attestation:其他 Validator 验证 Block (, voting) (~8-10sec)
- Justified 需要 2/3 多数:基于总质押量的加权投票
-
Justified Epoch:epoch 被认为是 justified 当
- 其包含 32个 slot
- 且其中 checkpoint block 收到 超过 2/3 的 validator 的 attenstations
-
Finalisation:当 Justified Epoch
$E_j$ 后紧跟着另一个 Justified Epoch$E_{j+1}$ ,称$E_j$ 为 finalised。 该 Epoch 中的所有 Slots 和它们的 blocks 都被认为是最终确认的。
Sync Committees(同步委员会):每 256 epoch,512个Validator 会被选择协作并验证区块链快照。这允许新节点或已离线的节点更新(或同步),而无需单独验证每笔交易。
Reference:以太坊验证者质押奖励指南