Skip to content

Latest commit

 

History

History
311 lines (233 loc) · 14.7 KB

Coooder-Crypto.md

File metadata and controls

311 lines (233 loc) · 14.7 KB
timezone
Asia/Shanghai

Coooder-Crypto

  1. 自我介绍: 我是 Coooder,坚定的以太坊建设者哈哈哈
  2. 你认为你会完成本次残酷学习吗? 这次应该会了

Notes

2025.02.06

今天做了什么:

  1. 整体过了一遍 https://epf.wiki/
  2. 制定了简单的计划
  3. 学习了 Prehistory 部分

以太坊:无国界、主权自决的数字经济平台的愿景。

Prehistory 内容;

  • 互联网与信息传输
  • 加密需求
  • 自由与开源遇到的阻力
  • 密码朋克
  • 比特币
  • 以太坊

加密朋克核心观点:

  • 政府不应该能够窥探我们的事物
  • 保护对话和交流是一项基本权利
  • 权利通过技术而不是法律来保障
  • 技术的力量会创造新的政治现实

一些想法

虽然接触区块链有一段时间了,也很多次听说加密朋克,但是一直没有详细了解过相关的内容。这次竟然在 prehistory 的部分看到了相对完整的介绍,密码朋克的起源竟然这么早,感觉和自己想当然的理解完全不同。

今天看的 prehistory 部分,从互联网初期开始讲起,说 “In many ways, Ethereum functions like an open Bell Labs.”,感觉这些内容怪怪的,一方面我相信区块链技术的潜力,相信以太坊的未来,"like an open Bell labs" 实至名归;另一方面截至目前以太坊并没有掀起多么大的变革,这个说法让我这个通信工程专业的学生有点老脸一红。

不过都来学习以太坊协议了,当然是一直看好的,也会一直 build,希望早日看到新的突破。From "like an open Bell labs" to "beyond Bell labs"!

2025.02.07

今天做了什么:

  1. 继续看完了协议部分的架构、设计理由、演化

两层:执行层(EL)和共识层(CL)

  1. 执行层:处理实际交易和用户交互
  2. 共识层:提供权益证明共识机制

架构指导思想:

  • 简单性:任何程序员在理想情况下都可以理解或实现整个规范,最大限度减少个人或者精英开发人员群体对协议的影响。
  • 普遍性:以太坊没有功能,以太坊提供一个内部图灵完备虚拟机,称为 EVM。
  • 模块化
  • 非歧视性:协议本身不试图主动限制或者阻止特定类别的使用。
  • 敏捷性:协议不是一成不变的。

设计原则:

  • 管理复杂性:
    • Sandwich model complexity:简化架构底层和以太坊接口,不可避免的复杂性放到协议的中间层。
    • Encapsulated complexity:优先级顺序:L2 > 客户端实现 > 协议规范
  • 自由:使用以太坊协议的目的不受限制,-> 非歧视性
  • 泛化
  • 我们没有任何功能

区块链协议

  • Accounts over UTXOs(unspent transaction outputs)
    • 节省空间
    • 极大的可替代性
    • 简单性
  • modified Merkle-Patricia Trie
  • Verkle trees
  • RLP 递归长度前缀
  • SSZ 简单序列化

一些想法

这部分难度有点大,有比较抽象的原则或许需要在后续的学习中慢慢理解。还有一些算法相关的内容,还没有完全搞懂,事已至此先睡觉吧,等后面再学~

2025.02.08

今天做了什么:

  1. 看了协议的最后一部分:变迁
  2. 开始看执行层的内容

协议变迁

  1. Frontier
  2. Homestead
  3. The Merge

执行层规范

  1. 状态转移函数:是否可以将区块附加到区块链的末尾?状态如何因此而变化
  2. 区块头验证:根据以太坊协议规则验证区块完整性
  3. 区块执行流程

一些想法

执行层规范这里也有好多难以理解的内容,好难呀。实在是啃不下来,暂时把预期调整为了解大的框架,这次共学整体先了解下,后续根据情况再看怎么深入。

2025.02.09

今天做了什么

  1. 学习了 EVM 相关知识
  2. 顺便复习了计算机组成原理的一点内容

EVM

  1. 状态机:对系统行为进行建模的抽象。说明了系统如何由一组不同的状态表示,以及输入如何驱动状态的变化。以太坊可以看作基于交易的状态机。
  2. 范例:
    1. 以虚拟机为目标,源代码被编译为字节码,每个字节码都映射到虚拟机的执行。
    2. 涉及平台的虚拟机,将字节码转换为本机代码以供执行。
  3. 如何工作:
    1. Stack
    2. 计数器
    3. Gas:保护网络免受资源密集型或者恶意活动的阻塞。
  4. Memory
  5. Storage:Storage 只能通过关联账号的代码访问。

完备图灵机

  1. 条件分支、循环、无限存储

一些想法

看了不少关于 EVM 的底层内容,因为几年前学习过计算机组成原理相关的内容,但是已经有点忘记了,顺便复习了一下

2025.02.10

今天做了什么

  1. 看完了协议层的剩余内容

区块构建、处理和应用交易状态

  1. 区块构建对于以太坊的功能至关重要,涉及验证者和节点。
  2. 有效载荷构建

数据结构

  1. Merkle 树:
    • 基于哈希,在数据完备性和验证方面很有效。
    • 叶节点保存数据值,每个非叶节点都是其子节点的哈希值。
    • 雪崩效应,数据微小变化导致哈希值发生巨大变化。
  2. Paricia 树:
    • 用于存储数据而不是验证。
    • 所有数据都存在叶节点中,每个非叶节点都是标识数据的唯一字符串。
    • 数据检索很有效。
  3. Merkle Patricia Trie
    • 使用 Paricia 功能的 Merkle 树。旨在对构成以太坊状态的项目进行高效的数据检索。
    • 三种节点:分支节点、扩展节点、叶节点。
    • 分类: // TODO 这里的解释不全。后面多学点看看能不嫩提个 pr,感觉这里不是很难理解。
      • Transaction Trie:负责特定区块中的所有 Transaction,每个区块都有自己的 Transaction Trie。一旦执行了交易并完成了区块,该区块的交易 trie 就永远无法更改。
      • World State Trie
      • Receipt Trie
      • Account State Trie
  4. Verkle 树:
    • 新的树,比 Merkle Patricia Trie 更高效。
    • 相对于 MPT,Verkle 树的宽度很大,大树的叶节点的见证数据可能很小。
  5. 为什么选择 Verkle Tree:
    • 提高存储和通信成本。
    • 过渡存在很大的挑战,因为从 MPT 生成 Verkle 树需要大量的计算和空间。

Transaction

  1. 交易时由外部账号发出的加密签名指令,使用 JSON-RPC 广播到整个网络
  2. 字段:
    • nonce:整数值,等于发送的交易数量
      • 防止重放攻击
      • 确定合约账户地址
      • 替换交易:当因为 gas 价格卡住时,允许相同的 nonce 的替换交易
    • gasPrice
    • gitLimit
    • to:接受者地址
    • value:整数值,等于要转移给接受者的 Wei 数量
    • data or init:字节数组,指定 EVM 的输入
    • Signature:发起人的 ECDSA 签名

JSON-RPC

  1. JSON-RPC 规范是基于 OpenRPC 的远程过程调用协议,以 JSON 编码。它允许在远程服务器上调用函数,并返回结果。它是执行 API 规范的一部分,该规范提供了一组与 Ethereum 区块链交互的方法。更广为人知的是用户如何使用客户端与网络交互的方式,甚至共识层 (CL) 和执行层 (EL) 如何通过 Engine API 进行交互。

一些想法

https://epf.wiki/#/wiki/EL/block-production 这里的代码实例都点进去大概看了下 然后看了数据结构、交易、RPC 相关的内容。这些东西之前都有简单了解过,这次相对系统地重新学习了一下。感觉整体的理解更深了。收获很多!

2025.02.11

今天做了什么

  1. 看完了共识层的介绍部分

共识层概述

共识协议的主要目标是构建一个在不可靠基础设施上运行的可靠分布式系统。以太坊的共识层旨在确保全球数万个独立节点保持同步,所有节点的账本状态必须完全一致。

拜占庭容错 (BFT)

拜占庭容错是分布式系统的一种特性,即使部分组件失效或恶意行为,系统仍能正常运行。这在去中心化网络中尤为重要。

工作量证明 (PoW) 和权益证明 (PoS)

PoW 和 PoS 并非共识协议,而是支持共识协议的机制,主要用于防止女巫攻击。 PoW 通过计算工作量来赋予区块链权重,而 PoS 则通过质押的价值来赋予权重。 以太坊的 PoS 转型 以太坊在 2022 年 9 月 15 日完成了从 PoW 到 PoS 的转型(称为“合并”)。 **Beacon Chain(信标链)**成为新的共识层,负责处理区块和验证者的管理。 PoS 的优点包括更高的能源效率和可扩展性。

信标链和验证者

验证者:通过质押至少 32 ETH 成为验证者,负责提议和验证区块。 插槽和纪元:每个插槽为 12 秒,每 32 个插槽组成一个纪元。 委员会:验证者被分组到委员会中,确保验证过程的去中心化和安全性。

奖励与惩罚

验证者通过正确的投票和行为获得奖励。 不活跃或恶意行为会导致罚款,严重违规(如双重提议)会被削减质押(Slashing)。

最终性和检查点

每个纪元结束时生成检查点,获得 2/3 超级多数投票的检查点会被“最终化”,确保区块链状态不可逆。

以太坊的未来

信标链的引入为以太坊提供了更高的可扩展性和去中心化能力,目前已有超过 100 万个活跃验证者。

2025.02.12

今天做了什么

  1. 看完了客户端结构部分

以太坊共识层架构

以太坊的共识协议结合了两个独立的共识协议:LMD GHOST 和 Casper FFG,它们共同被称为 Gasper。

Gasper 的作用

LMD GHOST 提供了活性(liveness),确保链能够持续运行并定期生成新区块。然而,它容易出现分叉,并且在形式上并不完全安全。 Casper FFG 提供了安全性(safety),通过定期最终确定(finalize)区块链,防止长时间的链回滚。 通过结合这两种协议,Gasper 实现了以太坊的共识机制:

LMD GHOST 确保链条不断向前推进。 Casper FFG 确保链条的稳定性,通过最终确定区块来保护链条。 这种组合使以太坊在网络条件良好的情况下,既能保持活性又能保证安全性。然而,在网络分区等极端情况下,以太坊更倾向于优先保证活性,即链条继续增长,即使可能会在安全性上出现问题。

共识层的主要组件

信标节点(Beacon Node):

使用客户端软件来协调以太坊的权益证明(Proof-of-Stake)共识。 示例客户端包括 Prysm、Teku、Lighthouse 和 Nimbus。 信标节点与其他信标节点、本地执行节点以及本地验证器通信。

验证器(Validator):

验证器客户端是允许用户在以太坊共识层中质押 32 ETH 的软件。 验证器在权益证明系统中提议区块,取代了工作量证明中的矿工。 验证器仅与本地信标节点通信,信标节点会指导验证器并将其工作广播到网络中。

共识层的职责

维护共识链(信标链):处理从其他节点接收到的共识区块(信标区块)和证明(attestations)。 与执行层(EL)通信:共识客户端通过本地 RPC 连接(Engine-API)与执行客户端通信。 共识客户端向执行客户端提供指令。 执行客户端将交易捆绑成交易包并传递给共识客户端,以包含在信标区块中。

状态转换

在区块链中,状态转换函数是核心。每个节点维护一个状态,反映其对世界的看法。通过应用区块,节点更新其状态。

信标链的状态转换:

信标链是基于插槽(slot)驱动的,而非区块驱动。 状态更新取决于插槽的进展,而不依赖于区块的存在。 状态转换包括:

每插槽转换:更新插槽状态。 每区块转换:处理区块并更新状态。 每纪元转换:在每个纪元开始时进行状态更新。

安全性与活性

安全性:确保“坏事永远不会发生”,例如防止双花或最终确定冲突的检查点。 活性:确保“好事最终会发生”,即区块链能够持续添加新区块,不会陷入死锁。

以太坊的共识协议在良好的网络条件下,力求同时提供安全性和活性。然而,在网络分区等情况下,以太坊更倾向于优先保证活性,即链条继续增长,即使可能会在安全性上出现问题。

2025.02.13

今天做了什么

  1. 看完了客户端结构部分

弱主观性

在信息理论和区块链的背景下,“客观性”和“主观性”有着不同的定义:

  • 客观性:如果一条信息的正确性可以完全验证,则它是客观的。
  • 主观性:如果一条信息的正确性无法完全验证(需要一定程度的信任),则它是主观的。 在以太坊合并(The Merge)之前,客户端可以通过从创世区块开始验证每个区块的历史,从而客观地验证整个区块链的正确性。然而,合并后,以太坊引入了新的共识机制(权益证明,Proof-of-Stake),并将共识层(CL)与执行层(EL)逻辑上分离。这种变化使得基于创世区块的同步变得“不安全”,从而引入了“弱主观性”。

弱主观性中的同步

在弱主观性中,同步机制与传统的全节点同步有以下几个主要区别:

同步方向的改变

在信标链(Beacon Chain)中,同步方向被反转。节点从弱主观性检查点开始回填区块,直到创世区块,而不是从创世区块向前同步。

信任锚点的主观性

由于链的历史在某些条件下可能被更改,同步目标(即弱主观性检查点)无法被完全客观验证。因此,同步目标需要通过可信渠道(如离线方式)共享,而不是通过以太坊的点对点网络。

时间因素的影响

如果节点长时间未同步,可能会受到攻击(例如,足够多的验证者退出并重新投票以创建分叉历史)。这种时间窗口被称为“弱主观性周期”。如果同步时间过长,目标检查点可能会变得过时。

弱主观性同步的步骤

  • 从可信渠道获取弱主观性检查点。
  • 从检查点回填区块至创世区块。
  • 更新执行链的目标头部。
  • 乐观地跟随链的最新头部,同时持续更新目标头部。
  • 执行层完成同步后,验证共识层的插槽,节点即可被视为完全同步。

一些想法

这两天被一个专利折磨坏了hhh,打卡过了这些内容,但是扩展的是一点没看,总算搞的差不多了,明天把错过的两次会议回看下~