Skip to content

交易

交易是指由賬戶發起的改變區塊鏈狀態的動作。為了有效地執行狀態更改,每筆交易都會廣播到整個網絡。

任何節點都可以廣播請求在區塊鏈狀態機上執行的交易;發生這種情況後,驗證器將驗證、執行交易並將產生的狀態更改傳播到網絡的其餘部分。

為了處理每筆交易,網絡上的計算資源都會被消耗。因此,gas的概念是作為驗證者處理交易所需的計算的參考而出現的。

用戶必須為此計算付費,所有交易都需要相關費用。該費用是根據執行交易所需的 gas 和 gas 價格計算的。

此外,交易需要使用發送方的私鑰進行簽名。這證明交易只能來自發件人,而不是欺詐性發送。

簡而言之,將簽名交易提交到網絡後的交易生命週期如下:

  • 交易哈希是加密生成的。
  • 該交易被廣播到網絡並添加到由所有其他未決網絡交易組成的交易池中。
  • 驗證者必須選擇你的交易並將其包含在一個塊中,以驗證交易並認為它“成功”。

關於交易生命週期的更詳細解釋,請參見相應部分

交易哈希是一個唯一標識符,可用於檢查交易信息,例如,發出的事件是否成功。

交易可能因各種原因而失敗。例如,提供的 gas 或費用可能不足。此外,交易驗證可能會失敗。

每筆交易都有特定的條件,必須滿足這些條件才能被視為有效。一個廣泛的驗證是發送者是交易簽名者。

在這種情況下,如果您在發件人地址與簽名者地址不同的地方發送交易,即使費用足夠,交易也會失敗。

如今,交易不僅可以在提交的鏈上進行狀態轉換,還可以在另一條區塊鏈上進行交易。

鏈間交易可以通過 區塊鏈間通信協議 (IBC) 實現。

在下面的部分中找到更詳細的解釋。

交易類型

Daodst 支持兩種交易類型:

  1. Cosmos 交易
  2. Ethereum 交易

這是可能的,因為 Daodst 使用 Cosmos-SDK 並實現了 以太坊虛擬機 作為一個模塊。

通過這種方式,Daodst 提供了以太坊和 Cosmos 鏈組合的特性和功能,等等。

儘管這兩種交易類型中包含的大部分信息相似,但它們之間存在差異。

一個重要的區別是,Cosmos 交易允許在同一交易中發送多條消息。

相反,以太坊交易則沒有這種可能。

為了將這兩種類型結合在一起,Daodst 將以太坊交易實現為單個 sdk.Msg 包含在 auth.StdTx 中。

此消息中包含所有相關的以太坊交易信息。

這包括簽名、氣體、有效載荷等。

在以下部分中找到有關這兩種類型的更多信息。

Cosmos 交易

在 Cosmos 鏈上,事務由上下文中保存的元數據和通過模塊的 Protobuf Msg 服務 觸發模塊內狀態更改的 sdk.Msg 組成/消息服務)。

當用戶想要與應用程序交互並更改狀態(例如發送硬幣)時,他們會創建交易。 Cosmos 交易可以有多個 sdk.Msg。 在將交易廣播到網絡之前,必須使用與適當帳戶關聯的私鑰對其中的每一個進行簽名。

一筆 Cosmos 交易包括以下信息:

  • Msgs:一組消息(sdk.Msg
  • GasLimit:用戶選擇的選項,用於計算他們需要支付多少 gas
  • FeeAmount:用戶願意支付的最大費用
  • TimeoutHeight:交易有效的區塊高度
  • Signatures:來自 tx 的所有簽名者的簽名數組
  • Memo:與交易一起發送的註釋或評論

要提交 Cosmos 交易,用戶必須使用提供的客戶端之一。

Ethereum 交易

以太坊交易是指由 EOA(外部擁有的賬戶,由人管理)發起的操作,而不是內部智能合約調用。 以太坊交易會改變 EVM 的狀態,因此必須廣播到整個網絡。

以太坊交易也需要費用,稱為 gas。 (EIP-1559) 引入了基本費用的概念,以及優先費用,以激勵礦工將特定交易包含在區塊中.

以太坊交易分為幾類:

  • 常規交易:從一個賬戶到另一個賬戶的交易
  • 合約部署交易:沒有 to 地址的交易,合約代碼在 data 字段中發送
  • 合約的執行:與部署的智能合約交互的交易,其中 to 地址是智能合約地址

以太坊交易包括以下信息:

  • recipient: 接收地址
  • signature: 發件人的簽名
  • nonce:來自賬戶的 tx 編號的計數器
  • value:要轉移的 ETH 數量(以 wei 為單位)
  • data:包括任意數據。在部署智能合約或進行智能合約方法調用時使用
  • gasLimit:要消耗的最大氣體量
  • maxPriorityFeePerGas:作為驗證者小費的 mas gas
  • maxFeePerGas:為 tx 支付的最大 gas 量

有關以太坊交易和交易生命週期的更多信息,轉到此處

Daodst 支持以下以太坊交易。

📣 提示 : 默認情況下不支持未受保護的遺留事務。 :::

Daodst能足夠通以太坊交易包在sdk.Msg上來處理它們。 Daodst 通過使用 MsgEthereumTx 來實現這一點。 此消息將以太坊交易封裝為SDK消息,並包含必須的交易數據字段。

關於MsgEthereumTx 的一個說明是它同時實現了sdk.Msgsdk.Tx 接口(一般SDK消息只出現在前者,而後者是一組消息在剝落。

這樣做的原因是因為 MsgEthereumTx 不能包含在 auth.StdTx(SDK 的標準交易類型)中,因為它使用 Geth 的以太坊發送而不是 Cosmos SDK `在權杖An中。

鏈間交易

跨鏈交易是指數字資產或數據在兩個或多個不同區塊鍊網絡之間的轉移。

每個區塊鍊網絡都有自己獨特的協議和數據結構,因此很難將資產或數據從一個區塊鏈直接轉移到另一個區塊鏈。 跨鏈交易允許通過使用中介機製或協議在不同區塊鏈之間傳輸資產和數據。

一種這樣的機制是跨鏈橋,它充當不同區塊鏈之間的連接器,實現資產或數據的傳輸。

跨鏈橋通常需要某種形式的信任或共識機制來確保交易的安全性和完整性。

另一種可能性是使用 IBC(區塊鏈間通信) 協議。

要使用 IBC 進行跨鏈交易,用戶需要:

  • 選擇用戶想要在其間傳輸資產或數據的源和目標區塊鍊網絡。
  • 確保兩個區塊鍊網絡都實現了 IBC 協議
  • 確保使用 IBC 在兩個區塊鍊網絡之間建立連接和通道
  • 啟動資產或數據的轉移:這是通過 IBC 通道從源區塊鏈向目標區塊鏈發送交易來完成的

隨著不同區塊鍊網絡和應用程序數量的持續增長,跨鏈交易變得越來越重要。 它們支持不同區塊鍊網絡的互操作性,從而在數字資產和數據的傳輸中實現更大的靈活性和效率。

交易憑證

交易收據顯示以太坊客戶端返回的數據以表示特定交易的結果,包括交易的哈希值、區塊編號、使用的氣體量,以及在部署智能合約的情況下,合约地址。 此外,它還包括來自智能合約中發出的事件的自定義信息。

收據包含以下信息:

  • transactionHash:交易的哈希值。
  • transactionIndex:區塊中交易索引位置的整數。
  • blockHash:該交易所在區塊的哈希值。
  • blockNumber:該交易所在的區塊編號。
  • from:發件人的地址。
  • to: 接收者的地址。當它是合約創建交易時為 null。
  • cumulativeGasUsed:在區塊中執行此交易時使用的氣體總量。
  • effectiveGasPrice:基本費用和每單位 gas 支付的小費的總和。
  • gasUsed:僅此特定交易使用的氣體量。
  • contractAddress:創建的合約地址,如果交易是合約創建,否則為空。
  • logs:此事務生成的日誌對像數組。
  • logsBloom:用於輕客戶端的 Bloom 過濾器,用於快速檢索相關日誌。
  • type:交易類型的整數,舊交易為 0x00,訪問列表類型為 0x01, 0x02 用於動態費用。它也返回。
  • root:事務狀態根(拜占庭之前)
  • status:1(成功)或 0(失敗)