區塊鏈技術原理(11)-以太坊交易

文章目錄

  • 什么是交易?
  • 交易類型
  • 交易生命周期
  • 關鍵概念:Gas 與交易費用
  • 交易狀態與失敗原因
  • 總結


什么是交易?

“交易(Transaction)” 是從一個賬戶向另一個賬戶發送的經過數字簽名的指令 。例如,如果 Bob 發送 Alice 1 ETH,則 Bob 的帳戶必須減少 1 ETH,而 Alice 的帳戶必須增加 1 ETH。 交易會造成狀態的改變(如轉移以太幣、調用智能合約、部署合約等)。

改變 EVM 狀態的交易需要廣播到整個網絡。 任何節點都可以廣播在以太坊虛擬機上執行交易的請求;此后,驗證者將執行交易并將由此產生的狀態變化傳播到網絡的其他部分。

交易需要付費并且必須包含在一個有效區塊中。

所提交的交易包括下列信息:

字段作用
from發起賬戶地址(EOA,必須有私鑰簽名,合約賬戶無法主動發起交易)。
to接收賬戶地址:
若為 EOA 地址(如0x…),則為普通轉賬;
若為合約賬戶地址,則為調用該合約;
若為空(null),則為部署新智能合約(此時data字段為合約字節碼)。
value轉移的以太幣數量(以 wei 為單位,1 ETH = 101? wei),僅在轉賬或向合約支付 ETH 時有效。
gasLimit交易允許消耗的最大 Gas 量(防止交易因邏輯錯誤無限消耗資源),若實際消耗 Gas ≤ gasLimit,剩余 Gas 退還;若超過,則交易失敗,已消耗 Gas 不退還。
maxFeePerGas(EIP-1559 后)用戶愿意支付的最高 Gas 單價(以 gwei 為單位,1 gwei = 10? wei),包含基礎費(base fee)和優先級費(priority fee)。
maxPriorityFeePerGas(EIP-1559 后)用戶額外支付給驗證者的 “小費”,激勵驗證者優先打包交易。
nonce發起賬戶的交易計數器(從 0 開始),確保每筆交易唯一,防止 “重放攻擊”(同一筆交易被重復提交)。
data附加數據(可選):
調用合約時,為函數名 + 參數的編碼(如調用transfer(address,uint256)的編碼);
部署合約時,為合約的字節碼;普通轉賬時可留空。
signature發起賬戶的數字簽名(由私鑰生成),用于驗證交易的合法性(確實由from地址的所有者發起)。

燃料是指驗證者處理交易所需的計算。 用戶必須為此計算支付費用。 gasLimit 和 maxPriorityFeePerGas 決定支付給驗證者的最高交易費。

下面是一個模擬交易信息

{from: "0xEA674fdDe714fd979de3EdF0F56AA9716B898ec8",to: "0xac03bb73b6a9e108530aff4df5077c2b3d481e5a",gasLimit: "21000",maxFeePerGas: "300"maxPriorityFeePerGas: "10"nonce: "0",value: "10000000000",
}

交易類型

以太坊有幾種不同類型的交易:

  • 常規交易:從一個帳戶到另一個帳戶的交易。
  • 合約部署交易:沒有“to”地址的交易,數據字段用于合約代碼。
  • 執行合約:與已部署的智能合約進行交互的交易。 在這種情況下,“to”地址是智能合約地址。

交易生命周期

交易提交后,就會發生以下情況:

  1. 用戶發起與簽名
    用戶通過錢包(如 MetaMask)輸入交易參數(to、value、gas等),錢包用用戶私鑰對交易進行簽名(生成signature),確保交易不可篡改且確實由用戶發起。
  2. 廣播至網絡
    簽名后的交易被發送到以太坊 P2P 網絡,由節點(全節點或輕節點)接收并轉發,快速擴散至全網。
  3. 節點驗證
    全節點收到交易后,驗證其合法性:
    • 簽名是否有效(from地址是否為私鑰持有者);
    • nonce是否正確(與from賬戶的當前nonce一致);
    • from賬戶余額是否足夠支付value + 預估Gas費;
    • 若調用合約,驗證data字段的函數編碼是否符合合約接口。
  4. 進入交易池(mempool)
    驗證通過的交易被放入節點的 “交易池”,等待驗證者(PoS)或礦工(PoW 時期)打包。交易池中的交易按 “Gas 價格” 排序,高 Gas 費的交易通常被優先處理。
  5. 打包進區塊
    驗證者從交易池中選擇交易(優先高 Gas 費),打包進新生成的區塊,并廣播區塊至全網。此時交易狀態從 “pending(待處理)” 變為 “included(已打包)”。
  6. 全網確認
    其他節點驗證區塊合法性后,將其添加到區塊鏈末尾。隨著后續區塊的生成(通常認為 6 個區塊后),交易被 “最終確認”(不可篡改的概率極高),全局狀態按交易指令更新(如余額變更、合約存儲更新)。

關鍵概念:Gas 與交易費用

以太坊交易必須支付 “交易費用”(以 ETH 計價),費用高低由 Gas 決定,這是防止網絡濫用的核心機制:

  • Gas:衡量交易計算復雜度的單位(如簡單轉賬需 21,000 Gas,復雜合約調用可能需數百萬 Gas)。
  • 實際費用:EIP-1559 后,費用 = 基礎費(base fee) + 優先級費(priority fee),其中基礎費會被銷毀(減少 ETH 流通量),優先級費歸驗證者。
  • 費用計算:總費用 = Gas 消耗 ×(基礎費 + 優先級費),若用戶設置的maxFeePerGas ≥ 實際費用,則交易有效。

交易狀態與失敗原因

  • 常見狀態:
    • pending:已廣播但未被打包;
    • success:已打包并確認,狀態更新成功;
    • failed:已打包但執行失敗(如合約邏輯錯誤、Gas 不足)。
  • 失敗原因:
    • Gas 不足(實際消耗 Gas > gasLimit);
    • 合約執行出錯(如轉賬給不接收 ETH 的合約、條件判斷不滿足);
    • 簽名無效或nonce錯誤。

注意:失敗的交易仍會消耗 Gas(因驗證者已執行計算),費用不會退還。

總結

以太坊交易是連接用戶與網絡的核心接口,不僅支持簡單的價值轉移,更通過data字段實現了與智能合約的復雜交互,支撐了 DeFi、NFT、DAO 等豐富生態。理解其結構、類型和生命周期,是使用以太坊和開發 DApp 的基礎 —— 它既是 “數字現金” 的轉移工具,也是 “去中心化應用” 的操作指令,體現了以太坊 “世界計算機” 的核心價值。

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

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

相關文章

小兔鮮兒-小程序uni-app(二)

小兔鮮兒-小程序uni-app7.小兔鮮兒 - 用戶模塊會員中心頁(我的)靜態結構參考代碼會員設置頁分包預下載靜態結構退出登錄會員信息頁靜態結構獲取會員信息渲染會員信息更新會員頭像更新表單信息8.小兔鮮兒 - 地址模塊準備工作靜態結構地址管理頁地址表單頁動態設置標題新建地址頁…

BLE 廣播信道與數據信道:沖突避免、信道映射與自適應跳頻實現

低功耗藍牙(BLE)技術憑借低功耗、短距離、低成本的特性,已廣泛應用于智能家居、可穿戴設備、工業物聯網等領域。在 BLE 協議中,信道管理是保障通信可靠性的核心機制,其中廣播信道與數據信道的設計、沖突避免策略、跳頻技術更是面試中的高頻考點。本文將從基礎原理到實戰真…

nodejs03-常用模塊

nodejs 常用的核心模塊 Node.js 是一個基于 Chrome V8 引擎的 JavaScript 運行環境, 它允許 JavaScript 運行在服務器端。Node.js 擁有豐富的標準庫,也就是核心模塊, 這些模塊提供了各種功能, 使得開發服務器端應用程序變得簡單高…

多路混音聲音播放芯片型號推薦

以下是唯創知音旗下主流的多路聲音播放芯片深度解析,結合精準參數、豐富場景及技術特性,滿足智能設備多樣化音頻需求:一、WTV380/890 系列:高集成多模態交互芯片核心參數通道能力:支持8 路獨立語音輸出,可同…

【C++】自研基 2 Cooley–Tukey

“自研基 2 Cooley–Tukey:倒位序 逐級蝶形,入口 fft(int N, complex f[])”拆成三件事它在講什么 “基 2 Cooley–Tukey” 指的是最常見的 FFT 算法:長度 N 必須是 2 的整數次冪,把離散傅里葉變換分解成一層一層的“2 點蝶形”運…

小白挑戰一周上架元服務——ArkUI04

文章目錄前言一、ArkUI是何方神圣?二、聲明式UI三、組件1.基礎組件2.布局容器組件3.導航組件4.自定義組件5.組件生命周期四、狀態管理1.State裝飾器: 狀態變量2.Prop裝飾器:父子單向同步3.Link裝飾器:父子雙向同步4.Provide/Consume裝飾器&am…

劇本殺小程序系統開發:構建劇本殺社交新生態

在社交需求日益多樣化的今天,劇本殺憑借其獨特的社交屬性,成為了人們熱衷的社交娛樂方式之一。而劇本殺小程序系統開發,則進一步拓展了劇本殺的社交邊界,構建起一個全新的劇本殺社交新生態,讓玩家在推理與角色扮演中&a…

AI提高投放效率的核心策略

內容概要人工智能技術正深刻改變著廣告投放領域,其核心價值在于顯著提升投放效率。通過融合智能算法優化、實時數據分析與自動化投放流程,AI系統能夠以前所未有的速度和精度處理海量信息,驅動更精準的營銷決策。這不僅大幅縮短了傳統人工操作…

OpenBMC 中命令模式的深度解析:從原理到實現

引言 在 OpenBMC 的設計中,命令模式(Command Pattern)被廣泛應用于各種場景,特別是 IPMI 命令處理、異步操作封裝和用戶請求管理等。本文將深入分析 OpenBMC 中命令模式的實現原理、架構設計以及完整的執行流程,并通過…

從0開始跟小甲魚C語言視頻使用linux一步步學習C語言(持續更新)8.15

第十七天 第五十七,五十八,五十九和六十集 第五十六集 刪除鏈表結點 沒什么好說的關鍵部分代碼如圖 鏈表的插入操作 依舊沒有啥可以說的代碼部分大家看視頻就能看懂,大家應該是沒有什么問題的吧? 第五十七集 共用體形式結構與結構…

云服務器網站無法訪問的系統化故障排查指南及多維度解決方案

當云服務器上的網站突然無法訪問時,這種突發狀況往往讓人措手不及。別擔心,我們可以通過系統化的排查流程快速定位問題根源。以下是經過實戰驗證的故障排除指南,幫您分步解決網站訪問異常問題。一、基礎狀態確認 服務器的生命體征就像人體的脈…

strings命令和findstr命令驗證iso文件中ntkrnlmp.exe系統版本

strings命令和findstr命令驗證iso文件中ntkrnlmp.exe系統版本D:\chsads3647\i386>expand.exe Microsoft (R) File Expansion Utility Version 5.2.3647.0 版本所有 (c) Microsoft Corporation. 保留所有權利。未指定文件。D:\chsads3647\i386>strings.exe ntkrnlmp.exe …

C語言:指針(5)

1. sizeof與strlen的對比1.1 sizeofsizeof屬于是操作符,用于計算變量所占的空間大小,單位為字節。如果操作數是類型的話,計算的是使用類型創建的變量所占內存空間的大小。sizeof只計算數據在內存中所占的空間大小,而不在乎內存中存…

rent8 安裝部署教程之 Windows

1. Apache 安裝與配置 1.1. 獲取并解壓 Apache 在 Apache Lounge 網址下載編譯版的 Apache。下載完成后,將壓縮包解壓到 d:\web\Apache24 作為 Apache 的安裝目錄。 1.2. 配置 Apache 打開配置文件 conf\httpd.conf,找到第 37 行配置。 ? Define SRVROO…

邊緣智能實戰手冊:攻克IoT應用三大挑戰的AI戰術

前言:在當前的AIoT(人工智能物聯網)賽道上,將AI能力下沉至邊緣設備已不再是“要不要做”的選擇題,而是“如何做好”的必答題。然而,在實際項目中,工程師們常常會遇到性能、功耗和隱私這“三座大…

【React】use-immer vs 原生 Hook:誰更勝一籌?

1.概述 use-immer 不屬于官方 Hook,是社區維護的第三方庫!use-immer 通過封裝 Immer 的不可變更新機制,為 React 開發者提供了一種更直觀、高效的狀態管理方式。它尤其適合處理復雜嵌套狀態或需要頻繁更新的場景,同時保持了與 Re…

【案例】Vue3 實現高性能級橫向循環滾動生產線效果:基于 requestAnimationFrame 的流暢動畫方案

動畫效果在工業監控系統、生產看板等場景中,經常需要模擬生產線的動態運行效果。本文將基于 Vue3 和 requestAnimationFrame 實現一個高性能的橫向循環滾動效果,完美模擬生產線傳輸帶的視覺體驗。我們將從代碼實現到原理分析,全面講解如何打造…

萬字長文解碼如何玩轉Prompt(附實踐應用)

在AI技術迅猛發展的今天,如何與大型語言模型高效“對話”已成為釋放其潛力的關鍵。本文深入探討了提示詞工程(Prompt Engineering)這一新興領域,系統解析了從基礎概念到高級技巧的完整知識體系,并結合“淘寶XX業務數科…

easyExcel嵌套子集合導出Excel

我想要的Excel效果說明: 1.創建兩個自定義注解:ExcelMerge(表示主對象內的單個屬性,后續會根據子集合的大小合并下面的單元格),ExcelNestedList(表示嵌套的子集合) 2.NestedDataConverter.java 會把查詢到的數據轉換為一行一行的,相當于主表 left join 子表 ON 主.id子.主id的形…

基于 C# WinForm 字體編輯器開發記錄:從基礎到進階

目錄 基礎版本實現 進階版本改進 字體設置窗體增強 主窗體改進 功能對比 項目在本文章的綁定資源中免費的,0積分就可以下載哦~ 在 Windows Forms 應用開發中,字體編輯功能是許多文本處理軟件的基礎功能。本文將分享一個簡易字體編輯器的開發過程&a…