<!-- .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 --- ## 坎昆升級 ![image](https://i.imgur.com/4ZLCYdX.png =500x) 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> --- ## 坎昆升級 ![](https://i.imgur.com/F8SvpZp.png =600x) - EIP-1153: Transient storage opcodes - EIP-2537: Precompile for BLS12-381 curve operations --- ## Client Diversity ![](https://i.imgur.com/gjzMZkw.png =700x) <span class="small">Ref: https://clientdiversity.org/</span> --- ## Deneb (CL) ![](https://i.imgur.com/2jogTiy.png) Ref: [consensus-specs](https://github.com/ethereum/consensus-specs/blob/dev/README.md) --- ## Ethereum 擴容路線之爭 原:Shard chains - Sharding:一種水平擴展技術,把一份大數據,切割分散在不同的鏈/DB上 ![](https://i.imgur.com/cbYuOVk.png =700x) --- ## 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 ![](https://i.imgur.com/LSSOYjR.png) --- ### Blob存儲 - Blob Transactions 會放在 Consensus Layer (CL)儲存 - CL 網路跟儲存壓力遠小於 Execution Layer (EL) - 未來應該有獨立的 Data Availability layer (DA) ![](https://i.imgur.com/7ckynwb.png) --- # 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> ![](https://i.imgur.com/JPYllh0.png =500x) --- ### 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}]"}
    238 views