Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
luffythink committed Feb 11, 2025
2 parents 579d6aa + 9e54902 commit 3faa569
Show file tree
Hide file tree
Showing 37 changed files with 1,053 additions and 83 deletions.
Binary file added .starrydeserts_image/blob-gas-and-price.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .starrydeserts_image/gasused-basefee.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
21 changes: 21 additions & 0 deletions CHENFANGC.md
Original file line number Diff line number Diff line change
Expand Up @@ -144,4 +144,25 @@ EOA 可以发起交易,交易类型包括:

执行层(EL)仅关注执行区块和更新状态,而 共识层(CL) 负责确定哪些区块被最终确认。EELS 通过形式化定义 STF,使得执行逻辑更加清晰、可验证,并与共识层解耦。

### 2025.02.10

### Consensus Layer 共识层

以太坊的共识层(Consensus Layer,CL)负责确保网络中所有节点对区块链状态达成一致。自以太坊从工作量证明(PoW)转向权益证明(PoS)以来,共识层的设计和实现发生了重大变化。

共识机制
以太坊目前采用权益证明(PoS)作为其共识机制。在 PoS 中,验证者(Validators)通过质押以太币(ETH)来获得提议和验证新区块的权利。这一机制提高了网络的能源效率,并增强了安全性。

验证者角色
验证者在以太坊共识层中扮演关键角色。他们的主要职责包括:

- 提议区块:验证者被随机选中提议新区块。
- 验证区块:其他验证者对提议的区块进行验证和投票,以确保其有效性。
- 参与共识:通过投票和签名,验证者共同维护网络的一致性和安全性。
共识协议
以太坊采用了特定的共识协议来协调验证者的活动。该协议定义了验证者如何提议、验证和最终确定区块的规则和流程。

共识层客户端
共识层客户端是实现以太坊共识协议的软件。不同的客户端可能在性能、编程语言和功能上有所差异,但它们都遵循相同的协议规范,以确保网络的互操作性。

<!-- Content_END -->
128 changes: 115 additions & 13 deletions Coooder-Crypto.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,29 +13,29 @@ timezone: Asia/Shanghai

### 2025.02.06

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

#### [Prehistory](https://epf.wiki/#/wiki/protocol/prehistory)
## [Prehistory](https://epf.wiki/#/wiki/protocol/prehistory)
以太坊:无国界、主权自决的数字经济平台的愿景。

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

##### 加密朋克核心观点:
### 加密朋克核心观点:
- 政府不应该能够窥探我们的事物
- 保护对话和交流是一项基本权利
- 权利通过技术而不是法律来保障
- 技术的力量会创造新的政治现实

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

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

### 2025.02.07

#### 今天做了什么:
## 今天做了什么:
1. 继续看完了协议部分的架构、设计理由、演化

#### [协议架构](https://epf.wiki/#/wiki/protocol/architecture)
## [协议架构](https://epf.wiki/#/wiki/protocol/architecture)

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

#### [设计理念](https://epf.wiki/#/wiki/protocol/design-rationale)
## [设计理念](https://epf.wiki/#/wiki/protocol/design-rationale)

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

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

##### 区块链协议
### 区块链协议
- Accounts over UTXOs(unspent transaction outputs)
- 节省空间
- 极大的可替代性
Expand All @@ -81,7 +81,109 @@ timezone: Asia/Shanghai
- 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 相关的内容。这些东西之前都有简单了解过,这次相对系统地重新学习了一下。感觉整体的理解更深了。收获很多!

<!-- Content_END -->
38 changes: 38 additions & 0 deletions JC13043DB.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,9 @@ Merkle Root Hash --> hABCD,hEFGH --> hEF,hGH --> hE,hF -->hE

### 2025.02.09

學習 Kademlia分散式哈希表


閱讀week1相關資料

Unix哲学:
Expand All @@ -75,6 +78,41 @@ Ethereum繼承了Unix哲學提出設計原則 \
3. Ethereum.org docs(資料太多只看了一小部份)
4. Asymmetric cryptography


### 2025.02.10

學習Kademlia分散式雜湊表

觀看 Week2 Ethereum Execution Layer Overview影片(看到一半)

#### STF(State Transition Function)
1.用來驗證新的區塊是否符合規範 \
2.驗證通過時更新狀態 \

#### verifyHeader 驗證區塊標頭
1.Extra 不超過 32 bytes \
2.Nonce 符合共識機制規則 \
3.UncleHash 必須是 EmptyUncleHash \
4.時間戳 , 必須 大於 parent.Time \
5.Difficulty header.Difficulty 必須與 beaconDifficulty 相等 \
6.GasLimit header.GasLimit 不能超過 params.MaxGasLimit\
7.GasUsed header.GasUsed 不能超過 header.GasLimit \

#### newPayload 用來檢查區塊是否有效

#### build 負責區塊構建
1.從交易池中選擇交易,執行並驗證 \
2.確保交易不超過 Gas 限制,並持續處理直到交易池為空或達到 Gas 限制 \
3.最後透過 core.Finalize() 產生新區塊 \

#### Process 核心部分, 執行區塊內的所有交易,並將結果寫入 statedb
1.驗證區塊基本資訊 \
2.初始化 Gas 池(GasPool) \
3.執行 DAO 硬分叉邏輯 \
4.建立 EVM 虛擬機,準備執行智能合約 \

#### TransitionDb 處理交易的狀態轉換,確保交易符合以太坊的共識規則,否則拒絕執行
1.preCheck 負責交易的 基本驗證,確保交易符合共識規則 \
2.Tracing (交易追蹤) 用於記錄 Gas 消耗,幫助調試 \

<!-- Content_END -->
Loading

0 comments on commit 3faa569

Please sign in to comment.