交易
Last updated
Last updated
交易是由帳戶發出,帶密碼學簽名的指令。帳戶將發起交易以更新以太坊網絡的狀態。最簡單的交易是將 PSC 從一個賬戶轉到另一個帳戶。
PolySmartChain交易是指由外部持有賬戶發起的行動,換句話說,是指由人管理而不是智能合約管理的賬戶。例如,如果 Bob 發送 Alice 1 PSC,則 Bob 的帳戶必須減少 1 PSC,而 Alice 的賬戶必須增加 1 PSC。此項操作發生在交易中,會變更狀態。
改變 EVM 狀態的交易需要廣播到整個網絡。任何節點都可以在 EVM 上廣播交易請求;此後,礦工將執行交易並將由此產生的狀態變化傳播到網絡的其他部分。
交易需要收費並且必須開採才能有效。為了使這種概述更加簡單,我們將其稱為 Gas 費和挖礦。
所提交的交易包括下列信息:
recipient
– 接收地址(如果為一個外部持有的帳戶,交易將傳輸值。 如果為合約帳戶,交易將執行合約代碼)
signature
– 發送者的標識符。當通過發送者的私鑰簽名交易來確保發送者已授權此交易時,生成此簽名。
value
– 從發件人向收件人轉移 ETH 的金額 (以 WEI 為單位,ETH 的一種面值單位)
data
– 可包括任意數據的可選字段
gasLimit
– 交易可以消耗的 Gas 的最大數量。 Gas 單位代表了計算步驟
maxPriorityFeePerGas
- 作為礦工小費包含的最大 gas 數量
maxFeePerGas
- 願意為交易支付的最大 gas 數量(包括 baseFeePerGas 和 maxPriorityFeePerGas)
Gas 是指礦工處理交易所需的算力。用戶必須為此計算支付費用。 gasLimit 和 gasPrice 決定支付給礦工的最高交易費用。
交易對像看起來像這樣:
但交易對象需要使用發送者的私鑰簽名。這證明交易只可能來自發送者,而不是欺詐。
GPSC 這樣的PolySmartChain客戶端將處理此簽名過程。
示例 JSON-RPC 調用:
示例響應:
raw
是已簽名交易的 RLP(Recursive Length Prefix)編碼形式。
tx
是已簽名交易的 JSON 形式。
如有簽名哈希,可通過加密技術證明交易來自發送者並提交網絡。
PolySmartChain有幾種不同類型的交易:
常規交易:從一個錢包到另一個錢包的交易。
合約部署交易:沒有“to”地址的交易,數據字段用於合約代碼。
如上所述,執行交易需要花費 Gas。簡單的轉讓交易需要 21000 個 Gas。
假設 Bob 要向 Alice 發送 1 PSC,需支付 190 gwei 的 baseFeePergas 和 10 gwei 的 maxPriorityFeePerGas,那麼 Bob 需要支付以下費用:
Bob 的賬戶將會減少 1.0042 PSC
Alice 的賬戶將會增加 +1.0 PSC
扣掉 0.00399 PSC 的基本費用 礦工保留小費 +0.000210 PSC
任何智能合約交互也需要 Gas。
一旦提交交易,就會發生以下情況:
一旦您發送交易,加密法生成交易哈希:0x97d99bc7729211111a21b12c933c949d4f31684f1d6954ff477d0477538ff017
然後將該交易轉播到網絡,並且與大量其他交易一起包含在一個集合中。
礦工必須選擇您的交易並將它包含在一個區塊中,以便驗證交易並認為它“成功”。
如果網絡繁忙,礦工無法跟上,您可能會在這個階段等候。
您的交易將收到"確認"。確認的數量是自包含您交易的區塊以來創建的區塊數。這個數字越大,交易被網絡處理和承認的確定性就越強。
最近的區塊可能會被重組,給人留下交易失敗的印象;但交易可能仍然有效,但包含在另一個區塊中。
重組的概率隨著其後每一次挖掘的區塊而降低,即確認次數越多,交易就越不可改變。