<!-- .slide: data-background="https://upload.cc/i1/2022/10/24/Zacl5b.png"-->
<style>
.small {font-size: 24px;}
.medium {font-size: 30px;}
.hl {color: #fcba03;}
</style>
# 以太坊坎昆升級
# EIP-4844
# Proto-Danksharding
---
## 坎昆升級

No schedule for testnet & mainnet yet
<span class="small">Ref: [Cancun Network Upgrade Specification](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/cancun.md)</span>
---
## 坎昆升級

- EIP-1153: Transient storage opcodes
- EIP-2537: Precompile for BLS12-381 curve operations
---
## Client Diversity

<span class="small">Ref: https://clientdiversity.org/</span>
---
## Deneb (CL)

Ref: [consensus-specs](https://github.com/ethereum/consensus-specs/blob/dev/README.md)
---
## Ethereum 擴容路線之爭
原:Shard chains
- Sharding:一種水平擴展技術,把一份大數據,切割分散在不同的鏈/DB上

---
## Rollup-centric roadmap
Short Term
- Advancing Eth1 for Rollups
-- 專注於提高處理更多的block,而不是計算或IO效率
- Adapting Infrastructure for Rollups
-- ENS 支援 L2
-- wallet 內建 L2 協議
-- 跨 L2 轉帳
-- 更標準化的 Yul 或是其他高階語言
---
## Rollup-centric roadmap
Long Term
- A single high-security <span class="hl">execution shard</span> that everyone processes, plus a scalable <span class="hl">data availability layer</span> (DAL)
- everyone moves to rollups:~15 TPS => ~3000 TPS
- rollups + shading DA:theoretical max of ~100000 TPS
<span class="hl">sharding data availability is much safer than sharding EVM computation</span>
---
### Proto-Danksharding
<span class="medium">降低存儲要求</span>
<span class="medium">=> 嚴格來說,不是Sharding技術 </span>
- <span class="medium">增加新的交易類型,此交易包含額外的儲存空間 blob</span>
- <span class="medium">blob 有 128k 空間</span><span class="medium">
-- <span class="medium">一個 Transaction 最多有2個blob,即 256k</span>
-- <span class="medium">一個 Block 最多 16個blob,即2m,Target目標是8個,即1m</span>
- <span class="medium">blob 以 KZG Commitment Hash 作為 proof</span>
- <span class="medium">node 同步 blob transaction 後,blob部分一段時間(1個月)後可刪除</span>
---
```javascript
class BlobTransaction():
nonce: uint64
gas: uint64
max_basefee: uint256
priority_fee: uint256
to: Address
value: uint256
data: Bytes
blob_versioned_hashes: List[VersionHash]
blobs: List[Blob] // 一段時間後刪除
```
---
### Rollup整合
- 改用 blob transaction 提交 transction batch
- Rollup自行存儲歷史數據,建立 state

---
### Blob存儲
- Blob Transactions 會放在 Consensus Layer (CL)儲存
- CL 網路跟儲存壓力遠小於 Execution Layer (EL)
- 未來應該有獨立的 Data Availability layer (DA)

---
# Danksharding
進一步減少 bandwidth
- 若block包含更多的blob,則node的bandwith將難以支持即時同步block
-- 最大 2m, 目標 1m => 最大 32m, 目標 16m
- 下載 blob => 抽查 blob
---
### Data Availability Sampling (DAS)
- <span class="medium">對blob進行隨機抽查,然後對block提交 Attestation</span>
- <span class="medium">只要有更多的 Attestation,就可視為 block 中的 blob 是 Available</span>
- <span class="medium">blob分散地存儲在Ethereum網路中</span>
- <span class="medium">雖然每個 Node 只存了部份的數據,但是全網是有完整的數據</span>
- <span class="medium">安全性降低,須有足夠多的Node,才能保證blob充分抽查與備份</span>

---
### Data Availability Sampling (DAS)
如何高效地抽查Blob
1. 安全:數據遺漏則無法通過大多數節點抽查
2. 頻寬:使用頻寬儘量減少
3. 計算:抽查過程所需計算量小
---
# Reference
- Ethereum [execution-specs
](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/cancun.md)
- Ethereum [consensus-specs](https://github.com/ethereum/consensus-specs/blob/dev/README.md)
- <span class="medium">https://www.youtube.com/watch?v=V85VTrSkSdo</span>
- <span class="medium">https://medium.com/taipei-ethereum-meetup/rollup-and-the-boost-from-proto-danksharding-85d2fe0566b6</span>
- <span class="medium">https://notes.ethereum.org/@vbuterin/proto_danksharding_faq</span>
- <span class="medium">https://ethresear.ch/t/a-design-of-decentralized-zk-rollups-based-on-eip-4844/12434</span>
- <span class="medium">https://hackmd.io/@vbuterin/sharding_proposal</span>
- <span class="medium">https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698</span>
---
# Q & A
---
## EIP-4488
- 先前提案,跟 EIP-4844 想解決相同問題 (DA in L1)
- calldata 每byte 從 16gas => 3gas
- 目前 [block size](https://etherscan.io/chart/blocksize) 平均為 100k
- EIP-4488 calldata: <span class="hl">1 MB + 300 Byte * number_of_txs</span>
number_of_txs: 30m / 21k = 1400
blocksize: 1 MB + 300 Byte * 1400 = 1.4m
- 極端blocksize: 1.78m => 1.4m
(30m / 16 = 1.78m)
- 最差情境估算,一年要多 3T 的存儲空間
---
### Proposer / Builder Separation (PBS)
- <span class="medium">驗證block所需bandwidth減少,但是創建block仍需要很大bandwidth</span>
-- <span class="small">download: 下載blob transaction創建block</span>
-- <span class="small">upload: 廣播block給其他 node 抽查</span>
- <span class="medium">PBS 原設計目的是 anti-MEV</span>
- <span class="medium">Builder</span>
-- <span class="small">負責創建和廣播 block body (tx list)</span>
-- <span class="small">數據量大,bandwidth要求高,Centrailized</span>
- <span class="medium">Proposer</span>
-- <span class="small">選取 block body,創建和廣播 block header</span>
-- <span class="small">數據量小,bandwith要求低,Decentrailized</span>
{"metaMigratedAt":"2023-06-18T03:35:06.401Z","metaMigratedFrom":"YAML","title":"以太坊坎昆升級","breaks":true,"contributors":"[{\"id\":\"9ef7cf5b-bb4a-4e8b-a4ec-3decd4deef26\",\"add\":5273,\"del\":0}]"}