交易
交易是由帳戶發出,帶密碼學簽名的指令。帳戶將發起交易以更新以太坊網絡的狀態。最簡單的交易是將 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 決定支付給礦工的最高交易費用。
交易對像看起來像這樣:
//{
from: "0xEA674fdDe714fd979de3EdF0F56AA9716B898ec8",
to: "0xac03bb73b6a9e108530aff4df5077c2b3d481e5a",
gasLimit: "21000",
maxFeePerGas: "300"
maxPriorityFeePerGas: "10"
nonce: "0",
value: "10000000000",
}
但交易對象需要使用發送者的私鑰簽名。這證明交易只可能來自發送者,而不是欺詐。
GPSC 這樣的PolySmartChain客戶端將處理此簽名過程。
示例 JSON-RPC 調用:
{
"id": 2,
"jsonrpc": "2.0",
"method": "account_signTransaction",
"params": [
{
"from": "0x1923f626bb8dc025849e00f99c25fe2b2f7fb0db",
"gas": "0x55555",
"maxFeePerGas": "0x1234",
"maxPriorityFeePerGas": "0x1234",
"input": "0xabcd",
"nonce": "0x0",
"to": "0x07a565b7ed7d7a678680a4c162885bedbb695fe0",
"value": "0x1234"
}
]
}
示例響應:
//{
"jsonrpc": "2.0",
"id": 2,
"result": {
"raw": "0xf88380018203339407a565b7ed7d7a678680a4c162885bedbb695fe080a44401a6e4000000000000000000000000000000000000000000000000000000000000001226a0223a7c9bcf5531c99be5ea7082183816eb20cfe0bbc322e97cc5c7f71ab8b20ea02aadee6b34b45bb15bc42d9c09de4a6754e7000908da72d48cc7704971491663",
"tx": {
"nonce": "0x0",
"maxFeePerGas": "0x1234",
"maxPriorityFeePerGas": "0x1234",
"gas": "0x55555",
"to": "0x07a565b7ed7d7a678680a4c162885bedbb695fe0",
"value": "0x1234",
"input": "0xabcd",
"v": "0x26",
"r": "0x223a7c9bcf5531c99be5ea7082183816eb20cfe0bbc322e97cc5c7f71ab8b20e",
"s": "0x2aadee6b34b45bb15bc42d9c09de4a6754e7000908da72d48cc7704971491663",
"hash": "0xeba2df809e7a612a0a0d444ccfa5c839624bdc00dd29e3340d46df3870f8a30e"
}
}
}
raw
是已簽名交易的 RLP(Recursive Length Prefix)編碼形式。tx
是已簽名交易的 JSON 形式。
如有簽名哈希,可通過加密技術證明交易來自發送者並提交網絡。
交易類型
PolySmartChain有幾種不同類型的交易:
常規交易:從一個錢包到另一個錢包的交易。
合約部署交易:沒有“to”地址的交易,數據字段用於合約代碼。
關於 Gas
如上所述,執行交易需要花費 Gas。簡單的轉讓交易需要 21000 個 Gas。
假設 Bob 要向 Alice 發送 1 PSC,需支付 190 gwei 的 baseFeePergas 和 10 gwei 的 maxPriorityFeePerGas,那麼 Bob 需要支付以下費用:
(190 + 10) * 21000 = 4,200,000 gwei
--or--
0.0042 PSC
Bob 的賬戶將會減少 1.0042 PSC
Alice 的賬戶將會增加 +1.0 PSC
扣掉 0.00399 PSC 的基本費用 礦工保留小費 +0.000210 PSC
任何智能合約交互也需要 Gas。

交易生命週期
一旦提交交易,就會發生以下情況:
一旦您發送交易,加密法生成交易哈希:
0x97d99bc7729211111a21b12c933c949d4f31684f1d6954ff477d0477538ff017
然後將該交易轉播到網絡,並且與大量其他交易一起包含在一個集合中。
礦工必須選擇您的交易並將它包含在一個區塊中,以便驗證交易並認為它“成功”。
如果網絡繁忙,礦工無法跟上,您可能會在這個階段等候。
您的交易將收到"確認"。確認的數量是自包含您交易的區塊以來創建的區塊數。這個數字越大,交易被網絡處理和承認的確定性就越強。
最近的區塊可能會被重組,給人留下交易失敗的印象;但交易可能仍然有效,但包含在另一個區塊中。
重組的概率隨著其後每一次挖掘的區塊而降低,即確認次數越多,交易就越不可改變。
拓展资源
Last updated