【區塊鏈安全 | 第三篇】主流公鏈以太坊運行機制

文章目錄

    • 1. 以太坊賬戶類型
    • 2. 以太坊網絡架構
      • 2.1 節點類型
      • 2.2 交易流程
    • 3. 共識機制
    • 4. Gas 機制
      • 4.1 Gas 計算方式
      • 4.2 以太坊 EIP-1559 交易機制
    • 5. EVM(以太坊虛擬機)
      • 5.1 EVM 結構
      • 5.2 EVM 指令
      • 5.3 EVM 運行機制
    • 6. 智能合約
    • 7. ERC 代幣標準
      • 7.1 ERC-20
      • 7.2 ERC-721
      • 7.3 ERC-1155
    • 8. Layer 2 解決方案
      • 8.1 Optimistic Rollups
      • 8.2 ZK-Rollups(零知識匯總)

在這里插入圖片描述

1. 以太坊賬戶類型

以太坊的賬戶分為 外部賬戶(EOA) 和 合約賬戶(CA),兩者在控制方式和交易能力上有所不同。

1.1 外部賬戶(EOA, Externally Owned Account)
EOA 由用戶私鑰控制,可以主動發起交易。EOA 沒有代碼邏輯,僅用于存儲余額和簽署交易。用戶錢包(如 MetaMask)即為 EOA。EOA 主要用于發送 ETH 轉賬、與智能合約交互或發起交易。

EOA 交易的有效性由私鑰簽名保證,礦工驗證簽名后執行交易。如果 EOA 沒有足夠的 ETH 支付 gas 費用,則交易無法執行。由于 EOA 可以主動發起交易,因此在 DeFi、NFT 交易等應用中,EOA 主要負責調用合約。

例如,Alice 擁有一個 EOA 地址,她可以向 Bob 發送 1 ETH,也可以調用 Uniswap 合約來兌換代幣。每次交易都需要 Alice 使用私鑰進行簽名。

1.2 合約賬戶(CA, Contract Account)
CA 由智能合約代碼控制,沒有私鑰,不能主動發起交易,只能響應 EOA 或其他 CA 的交易請求。合約代碼在部署時寫入區塊鏈,并且在執行時只能按照預設邏輯運行。

合約賬戶可以存儲數據和執行復雜操作,例如去中心化交易所(DEX)合約可以管理多個用戶的資產,并根據市場規則進行交易撮合。CA 的執行依賴 EVM(以太坊虛擬機),并且所有合約調用都會消耗 gas 費。

由于 CA 不能主動發起交易,因此它的行為完全受制于外部調用。例如,Uniswap 智能合約本身不會主動買賣代幣,而是等待用戶(EOA)發送交易請求,觸發合約執行 swap 邏輯。

2. 以太坊網絡架構

以太坊網絡由多個分布式節點組成,這些節點共同維護區塊鏈的運行,并執行交易驗證、共識達成和數據存儲等關鍵任務。不同類型的節點在網絡中的作用各不相同,包括全節點、輕節點和驗證者節點。

2.1 節點類型

全節點
作用:全節點存儲整個以太坊區塊鏈數據,驗證所有交易和智能合約執行,并向其他節點提供數據同步服務。它可以獨立驗證區塊和交易,而無需依賴其他節點的信任。

特點:

  • 存儲完整的區塊數據,包括區塊頭、交易和賬戶狀態。
  • 通過 P2P 網絡傳播交易和新區塊,支持網絡同步。
  • 驗證所有交易和智能合約的執行,確保數據完整性。
  • 可以作為 RPC 提供商,為 DApp 和錢包提供區塊鏈數據查詢服務。

全節點的類型:

  • 存檔節點(Archive Node):存儲從創世區塊到最新區塊的所有狀態數據,包括所有賬戶的歷史狀態。適用于區塊瀏覽器(如 Etherscan)、分析平臺和開發者。
  • 普通全節點(Full Node):存儲完整的區塊數據,但不保留歷史狀態,僅保存當前的賬戶狀態和合約數據。適用于大多數普通用戶和礦工/驗證者。

輕節點
作用:輕節點不存儲完整的區塊鏈數據,而是僅下載區塊頭,并通過簡化支付驗證(SPV, Simplified Payment Verification)向全節點請求所需的數據,以驗證交易或查詢賬戶狀態。

特點:

  • 僅存儲區塊頭,而不保存完整的交易和賬戶狀態數據。
  • 需要向全節點請求數據,以查詢賬戶余額、交易狀態等信息。
  • 消耗較少的存儲空間和計算資源,適用于移動設備或低性能設備。

驗證者
作用:以太坊在升級為 PoS(權益證明)后,礦工被驗證者取代。驗證者負責參與共識,打包交易并提議新區塊,同時對其他驗證者的提議進行投票。

特點:

  • 需要 質押 32 ETH 才能成為驗證者,并被添加到以太坊的驗證者集合。
  • 通過 Casper FFG + LMD-GHOST 共識機制 選出驗證者,每 12 秒出塊一次。
  • 如果被選為出塊者(提議者),需收集交易、執行合約,并生成新區塊。
  • 其他驗證者對區塊進行投票(Attestation),確保區塊的有效性。
  • 作惡(如雙簽、離線)會被懲罰(Slash),質押 ETH 可能部分或全部被罰沒。

2.2 交易流程

1、用戶構造一個交易(包含發送者、接收者、Gas 費用、簽名等信息)。
2、將交易布局到區塊鏈網絡。
3、驗證者檢查交易(余額檢查、簽名驗證、Nonce 驗證等)。
4、驗證成功后,交易被打包進區塊,并被存儲。
5、區塊被添加到區塊鏈,交易完成確認。

3. 共識機制

在【區塊鏈安全 | 第二篇】區塊鏈概念詳解有介紹過。

4. Gas 機制

在以太坊中,Gas 是計算資源的度量單位,用于衡量執行智能合約或交易所需的計算量。每個操作(例如存儲數據、執行計算)都有固定的 Gas 費用。

在鏈上交易會消耗一定金額,作為支付給礦工(PoW)或驗證者(PoS)的手續費,即Gas。

4.1 Gas 計算方式

Gas 計算方式:
在這里插入圖片描述

4.2 以太坊 EIP-1559 交易機制

以太坊倫敦升級(EIP-1559)引入了一種新的交易費用機制:

  • 基礎費用(Base Fee):隨網絡負載動態調整,直接銷毀,不給礦工。
  • 優先費用(Priority Fee,小費):給礦工的額外獎勵,加快交易確認。

在這里插入圖片描述

5. EVM(以太坊虛擬機)

以太坊虛擬機(Ethereum Virtual Machine,EVM)是以太坊智能合約執行的核心,它提供了一個圖靈完備的計算環境,能夠在不同的以太坊節點上執行智能合約代碼,并保持一致性。EVM 運行字節碼(Bytecode),由 Solidity、Vyper 等高級語言編譯而成。

5.1 EVM 結構

EVM 運行時主要由存儲(Storage)、內存(Memory)和堆棧(Stack)組成,負責數據存儲和指令執行。

存儲(Storage)
存儲合約的持久化數據,例如變量狀態、映射、數組等。
每個合約擁有獨立的存儲空間,不同合約的存儲互不影響。
數據存儲在 Merkle Patricia Trie 結構中,可通過 SSTORE(存儲) 和 SLOAD(讀取) 操作。
存儲成本高,存儲新數據需要大量 Gas,而減少存儲(例如刪除變量)可以返還 Gas。

內存(Memory)
運行時的臨時數據存儲區域,適用于函數執行期間的計算數據。
交易執行結束后,內存數據會自動清空。
訪問內存比存儲便宜,但仍然有 Gas 成本,內存大小隨著使用增加而擴展,增長時消耗 Gas。
Solidity 中的 bytes、string 等動態數據結構在函數執行時存儲于內存中。

堆棧(Stack)
EVM 的核心計算區域,用于存儲操作數和執行計算。
堆棧最大深度為 1024 層,超出限制會導致 STACK OVERFLOW 錯誤。
EVM 指令大多數是基于堆棧操作的,例如 PUSH(壓入)、POP(彈出)、ADD(加法)等。
Solidity 的局部變量和函數參數通常存放在堆棧中。

5.2 EVM 指令

EVM 運行的是字節碼(Bytecode),字節碼由一系列低級指令(Opcode)組成,每個指令對應一個 1 字節的操作碼(如 0x60 代表 PUSH1)。指令主要分為堆棧操作、算術運算、存儲操作 和 控制流 等。

1、堆棧操作
在這里插入圖片描述

2、算術運算
在這里插入圖片描述

3、存儲和內存操作
在這里插入圖片描述

4、控制流
在這里插入圖片描述

5.3 EVM 運行機制

1、智能合約執行
用戶或合約調用合約函數,EVM 解析交易數據,調用相應的合約代碼。
代碼由 Solidity 編譯成字節碼,并在 EVM 內執行。
交易結束后,EVM 確保合約狀態一致性,成功交易被打包進區塊鏈。

2、Gas 機制
計算資源(CPU、存儲、內存)消耗 Gas,防止死循環和資源濫用。

操作復雜度越高,消耗 Gas 越多。例如:

  • ADD(加法):3 Gas
  • SSTORE(存儲變量):最大 20,000 Gas
  • CALL(合約調用):700 Gas + 額外計算費用

3、沙盒環境
EVM 運行智能合約時,不能訪問外部網絡、文件系統或系統資源,確保去中心化安全性。

6. 智能合約

在【區塊鏈安全 | 第二篇】區塊鏈概念詳解有介紹過。

Solidity 是以太坊的主要智能合約語言。

7. ERC 代幣標準

以太坊上的 ERC(Ethereum Request for Comments)標準定義了智能合約的接口,使開發者可以創建兼容的錢包、交易所和 DApp(去中心化應用)。最常見的代幣標準是 ERC-20(同質化代幣) 和 ERC-721(非同質化代幣),它們分別用于代表可替代代幣(如 USDT、DAI) 和NFT(如 BAYC、CryptoPunks)。

7.1 ERC-20

ERC-20 是最廣泛使用的代幣標準之一,用于創建可替代代幣(Fungible Token)。這些代幣具有相同的屬性,可以自由交換,沒有唯一性。例如,1 USDT 和另一個 1 USDT 沒有區別。

ERC-20 規定了一組智能合約的接口,使代幣可以在錢包、交易所和 DApp 之間互操作。

在這里插入圖片描述

應用場景:

  • 穩定幣(Stablecoin):USDT、DAI、USDC
  • DeFi(去中心化金融)代幣:UNI、AAVE、COMP
  • 治理代幣:MKR、ENS
  • 游戲內資產:AXS、SAND

7.2 ERC-721

ERC-721 是 NFT(Non-Fungible Token,非同質化代幣)的標準。NFT 具有唯一性,每個代幣都是獨一無二的,適用于數字藝術、游戲資產、收藏品、虛擬土地等場景。

ERC-721 規定了一組智能合約的接口,使 NFT 可以在NFT 交易市場(如 OpenSea)、游戲和 DApp 之間互操作。

在這里插入圖片描述

應用場景:

  • NFT 藝術:Bored Ape Yacht Club(BAYC)、CryptoPunks
  • 虛擬土地:Decentraland(MANA)、The Sandbox(SAND)
  • 游戲資產:Axie Infinity、Gods Unchained

7.3 ERC-1155

ERC-1155 結合了 ERC-20 和 ERC-721,允許單個合約管理多種代幣(同質化 + 非同質化)。

關鍵特點
支持同質化(FT)和非同質化(NFT)代幣。
一個交易可以批量轉移多個代幣,減少 Gas 費。
智能合約更高效,減少部署和管理多個代幣合約的成本。

關鍵方法
在這里插入圖片描述

8. Layer 2 解決方案

以太坊主網(Layer 1)面臨以下問題:
以太坊當前 TPS(每秒交易數)約為 15-30,吞吐量有限,無法滿足大規模應用需求。
由于區塊空間有限,交易費用經常飆升。
交易需要多個區塊確認,延遲高,導致用戶體驗較差。

Layer 2(L2)是針對以太坊主鏈(Layer 1)擴展性問題的解決方案,主要目標是提高交易吞吐量、減少 Gas 費用,同時確保安全性。L2 通過在主鏈之外執行大部分交易計算,并僅將最終結果提交到以太坊,來減少主鏈的負擔。

Rollups 是目前最主流的 Layer 2 解決方案,它將交易計算放在鏈下,僅將壓縮后的交易數據提交到以太坊主網。Rollups 主要分為:

  • Optimistic Rollups(樂觀匯總)

  • ZK-Rollups(零知識證明匯總)

8.1 Optimistic Rollups

Optimistic Rollups 采用"樂觀假設",默認所有交易都是有效的,只有在交易被挑戰時才會執行計算。

特點
無需即時計算,只提交交易數據,降低成本。
挑戰機制:如果有惡意交易,用戶可提交欺詐證明(Fraud Proof),要求 Rollup 重新執行交易。
適用于 DeFi 和復雜智能合約,如 Arbitrum、Optimism。

工作原理
交易在 L2 執行,結果提交到 L1。
交易有 7 天的挑戰期,如果有欺詐行為,挑戰者可以提供欺詐證明。
如果交易未被挑戰,則默認有效。

8.2 ZK-Rollups(零知識匯總)

ZK-Rollups 采用零知識證明(Zero-Knowledge Proofs, ZKP),每批交易都會生成有效性證明,并提交到主鏈。

特點
所有交易提交時都會生成數學證明,主鏈無需等待挑戰期。
采用 Merkle 樹和 SNARK/STARK 技術,減少數據提交量。
適用于支付、NFT 交易等高頻交易,如 zkSync、StarkNet。

工作原理
交易在 L2 執行,并生成零知識證明(SNARK/STARK)。
證明連同交易數據提交至以太坊 L1。
以太坊驗證 ZK 證明,確保交易正確性。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/899505.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/899505.shtml
英文地址,請注明出處:http://en.pswp.cn/news/899505.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計算機三級信息安全部分英文縮寫

eip,指令寄存器,用于存放指向下一條將執行指令的指針,即返回地址棧頂指針esp基址指針寄存器EBP,基地址數據執行保護DEP(Data Execute Prevention)技術可以設置內存堆棧區的代碼為不可執行狀態,從而防范溢出后代碼的執行…

【Goalng】第九彈-----文件操作、JSON處理

🎁個人主頁:星云愛編程 🔍所屬專欄:【Go】 🎉歡迎大家點贊👍評論📝收藏?文章 長風破浪會有時,直掛云帆濟滄海 目錄 1.文件操作 1.1文件介紹 1.2.文件流 1.3.打開和關閉文件 1…

C#高級:啟動、中止一個指定路徑的exe程序

一、啟動一個exe class Program {static void Main(string[] args){string exePath "D:\測試\Test.exe";// 修改為你要運行的exe路徑StartProcess(exePath);}private static bool StartProcess(string exePath){// 創建一個 ProcessStartInfo 對象來配置進程啟動參…

猜猜我用的是哪個大模型?我的世界游戲界面簡單的模擬效果

我的羅里吧嗦的,根據小朋友的要求,邊聽邊寫邊輸入的提示詞: 請生成一段完整的在網頁中用html5和javascript代碼模擬“我的世界”中游戲場景的互動畫面,要求提供若干人物選項可以選擇,請自行選擇需要使用哪些庫或框架來…

AI知識補全(八):多模態大模型是什么?

名人說:人生如逆旅,我亦是行人。 ——蘇軾《臨江仙送錢穆父》 創作者:Code_流蘇(CSDN)(一個喜歡古詩詞和編程的Coder😊) 上一篇:AI知識補全(七):AI Agent 智能…

更新docker 容器時,提前換后端jar 包,為什么會存在異常

我們現場更新時,通常都是提前將后端jar 包替換了,然后到了更新的時間,只需要更新相關的前端文件和修改各種配置,就行了。 但是最近一次更新操作中,忽然發現,提前更新后端包,會存在依賴丟失問題…

LoRA 模型微調框架核心原理及實現步驟

LoRA(Low-Rank Adaptation)模型微調框架通過低秩矩陣分解原理,實現了對大型預訓練模型的高效微調。其核心原理是:在凍結預訓練模型權重的基礎上,向特定層注入可訓練的低秩矩陣,以極少量參數(通常…

XHR.readyState詳解

XHR.readyState詳解 引言 XHR.readyState是XMLHttpRequest對象的一個屬性,它反映了當前請求的狀態。在Ajax編程中,正確理解和使用XHR.readyState對于調試和確保異步請求的正確執行至關重要。本文將詳細介紹XHR.readyState的屬性值、含義以及在Ajax請求中的具體應用。 XHR.…

MySQL8.4 InnoDB Cluster高可用集群使用指南

簡介 高可用方案 Orchestrator: 可視化 Web 界面管理 MySQL 拓撲結構,并且兼容多種復制架構(異步、半同步、GTID),提供自動和手動的故障轉移。但是8.0.21后 MySQL 更新了主從復制相關命令,Orchestrator無…

擴散模型總結

目錄 定義與原理 發展歷程 正向擴散過程 反向擴散過程 噪聲預測網絡 離散時間模型 連續時間模型 條件擴散模型 生成質量 訓練穩定性 采樣靈活性 圖像生成 音頻合成 文本生成 計算效率 模型復雜度 定義與原理 擴散模型是一種新型的生成模型,其核心原理源于熱力…

【Java】Java核心知識點與相應面試技巧(七)——類與對象(二)

Java 類與對象篇 1.上期面試題解析: 上文鏈接:https://blog.csdn.net/weixin_73492487/article/details/146607026 創建對象時的內存分配過程? ① 加載類 ② 堆內存分配空間 ③ 默認初始化 ④ 顯式初始化 ⑤ 構造器執行 this和super能否同時…

筆記:遇見未來——6G協同創新技術研討會

https://www.cww.net.cn/article?id564308 研討會由中國移動研究院首席科學家易芝玲博士主持。來自清華大學-中國移動聯合研究院、北京郵電大學-中國移動研究院聯合創新中心、東南大學-中國移動研究院聯合創新中心、中關村泛聯移動通信技術創新應用研究院等合作載體的知名教授…

Python Cookbook-4.14 反轉字典

任務 給定一個字典,此字典將不同的鍵映射到不同的值。而你想創建一個反轉的字典,將各個值反映射到鍵。 解決方案 可以創建一個函數,此函數傳遞一個列表推導作為dict的參數以創建需要的字典。 def invert_dict(d):return dict([(v,k) for …

深度學習在測距模型中的應用

一、單目視覺測距和雙目視覺測距簡介 1、單目視覺測距 模型:深度估計(Depth Estimation) 原理:通過深度學習模型(如MonoDepth2、MiDaS)或傳統的計算機視覺方法(如單目相機結合物體大小推斷&am…

Linux Mem -- Slub內存分配器的幾點疑問及解答

目錄 1 怎樣通過object地址獲取其對應的struct slab? 2 struct page、struct folio和struct slab類型之間轉換,怎么保證內部關鍵數據的傳遞? 3 怎樣判斷一個內存空間是屬于slab、page管理? 4 struct page 結構中 __mapcou…

pip install cryptacular卡住,卡在downloading階段

筆者安裝pip install cryptacular卡在downloading階段,但不知道為何 Collecting cryptacularCreated temporary directory: /tmp/pip-unpack-qfbl8f08http://10.170.22.41:8082 "GET http://repo.huaweicloud.com/repository/pypi/packages/42/69/34d478310d6…

Lag-Llama時間序列模型簡單實現數據預測

前言: 最近在大模型預測,簡單了解了lag-llama開源項目,網上也有很多講解原理的,這里就將如何快速上手使用說一下,只懂得一點點皮毛,有錯誤的地方歡迎大佬指出。 簡單介紹: Lag-Llama 是一個開…

Plastiform復制膠泥:高精度表面復制與測量的高效工具

在工業制造和質量檢測領域,表面復制和測量是確保產品質量的關鍵環節。Plastiform復制膠泥作為一種創新材料,憑借其出色的性能和多樣化的應用,為用戶提供了可靠的解決方案。它能夠快速捕捉復雜表面的細節,確保測量結果的準確性&…

AI大模型、機器學習以及AI Agent開源社區和博客

以下梳理了適合學習 AI大模型、機器學習、AI Agent和多模態技術 的英文網站、社區、官網和博客,按類別分類整理: 一、官方網站與開源平臺 1. AI大模型 (Large Language Models) ? OpenAI ? 官網: openai.com ? 內容: GPT系列模型文檔、研究論文、AP…

python 上下文管理器with

with 上下文管理器 上下文管理器示例如下:若想不使用with關鍵字 上下文管理器 任何實現了 enter() 和 exit() 方法的對象都可稱之為上下文管理器,上下文管理器對象可以使用 with 關鍵字。 必須同時具有__enter__和__exit__,就可以使用with語句…