Skip to content

Latest commit

 

History

History
150 lines (94 loc) · 5.65 KB

Week2-ETH.md

File metadata and controls

150 lines (94 loc) · 5.65 KB

以太坊 Ethereum

Introduction

  • 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)

Account Model 账户模型

攻击

全节点维护账户以及其余额。

  • 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 无法做到。

State Trie 状态树

我们期望能够将 状态地址 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 没有提供足够快速的查找。

Trie Tree

词源 retrieval。

Trie Tree Patricia Tree/Radix tree/Compressed Trie

无论顺序,插入构成的树都一样。

Merkle Patrica Tree (MPT)

Merkle Tree 是 Hash 指针。

TODO

https://docs.alchemy.com/docs/patricia-merkle-tries

ETH 使用了 Modified MPT:

注意,这里的指针仍然是哈希指针,例如 7 到 Extension Node,这个7存储的是 Hash 指针。

ETH 会保留历史状态。

因为交易可能会有回滚(roll back),例如出现了forking。不使用推算是因为ETH支持智能合约,难以推算。 $$ (\overbrace{key}^{账户地址}, \underbrace{value}_{账户状态}) $$ 对于账户状态,其会先通过 RLP (Recursive Length Prefix) 进行序列化(Serialise)再进行存储。

Proof of Stake (PoS)

Virtual Mining:投入资金,根据持有货币进行区块链建设。

PoW 维护安全不是闭环。攻击可以靠外面买来(例如买大量矿机)。 PoS 维护安全是闭环。可以避免这类攻击,攻击者若通过大量购币进行攻击,那么币价大涨。

**Validator (验证者)**通过 staking(质押)一定数量的以太币获得新区块和验证交易的权益。 质押越多,被选为 Validator 的概率越大。

Validator 负责提议新区块、验证其他 Validator 提议的区块、为区块投票。称为 Validator 需要最少 stake 32 ETH。质押的货币会被锁定无法交易或转移。

惩罚:验证者行为不当(如离线、双签等),会被扣除一部分质押的以太币。严重的恶意行为可能导致全部质押币被没收。

Mint/铸币过程

  1. Stake/质押:质押一定数量以太币以成为 Validator
  2. 选择 Validator:系统会随机选择Validator 来提议新区块和验证其他验证者的区块 随机选择过程被称为 RANDAO + VDF
  3. Propose Validator Block:被选中的 Validator (Block Proposer) 创建新的区块,收集并验证交易
  4. Block Validation:其他 Validator 会对 Block 进行认证
  5. 达成 Consensus:足够多的 Validator 认证了区块,区块被加入到链上
  6. Reward/奖励分配:成功提议和验证区块的 Validator 会获得奖励,奖励来自网络发行的新ETH和交易费用。
  7. 惩罚机制:如果验证者行为不当(如离线、双签或提议无效区块),他们可能会被惩罚,失去一部分质押的ETH。严重的违规行为可能导致被踢出网络。
  • Epoch:~6.4min 包含 32 个 Slots。 激活RANDAO,计算 VDF

  • Slot:~12sec

    Checkpoint:每个 Epoch 第一个 Slot 称为 Checkpoint

    1. 选择 Validator:(基于前一个 Epoch 的random seed)随机选择一个 Validator 为 Block Proposer(瞬时)
    2. Propose Block:Block Proposer 创建并广播区块(~1-2sec)
    3. 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以太坊验证者质押奖励指南

Eth2 之书