執行模式
本頁介紹 Kaia 智能合約的執行模型、數據結構和生命週期。
執行模式
Transactions can be generated by platform APIs as described in Platform API Specification. 這些交易被髮送到_共識節點(CNs\ )_,存儲在一個區塊中。 CN 檢查收到的每筆交易是否有效。 有效的事務會保存在事務池中,否則會被丟棄。 CN 在其事務池中選擇當前區塊中的可執行事務,並逐一執行。
要執行交易,發送方必須支付一定數額的 KAIA 作為交易費。 KAIA 的這筆交易費是根據天然氣和乘數(即_)、單價計算的。 氣體是計算的基本單位。 在 Kaia 節點上執行的每個操作都會消耗預定量的氣體。 交易所需的 KAIA 確切金額按交易費中的公式計算。 如果發送方提交的交易附帶的氣體不足,交易可能會失敗。 如果發件人賬戶餘額不足,交易也可能失敗。
當一個事務成功執行後,它就會被包含在當前區塊中。 CN 收集交易,直到達到區塊氣體限制或區塊時間限制。 然後,CN 將這些交易生成一個區塊。 這一步需要在區塊中填寫幾個字段。 例如,它必須計算交易、收據、狀態等的哈希值。 填寫完所有必填字段後,CN 會生成一個區塊哈希值。
區塊生成完成後,區塊會傳播到所有其他 CN。 其他 CN 都會驗證傳播的區塊,並通過 BFT 共識算法就驗證結果達成共識。 當大多數 CN 成功完成驗證過程後,區塊就會被存儲到區塊鏈中。 由於 BFT 共識算法滿足即時終局性屬性,因此區塊是終局的,永遠不會被刪除。 一個區塊最終完成後,該區塊中所有事務的執行都將得到不可逆轉的保證,而且如果發送者提出要求,其執行結果可以返回給發送者。
增強整體提案人和委員會遴選的隨機性
Kaia 採用了一種新機制,在區塊提議者和委員會選擇過程中引入了可驗證的鏈上隨機性。 這種機制涉及到塊標頭中的兩個新字段:randomReveal "和 "mixHash"。
在這個系統中,區塊提議者生成並承諾隨機值。 區塊中的 "randomReveal "字段包含提議者的簽名,該簽名使用特定簽名方案生成,並根據當前提議的區塊編號進行計算。 然後,"mixHash "就會使用這個揭示的隨機值和其他區塊數據進行計算,從而為網絡創建一個隨機源。
區塊提案人和委員會的遴選過程就是利用這種生成的隨機性。 使用這種隨機性的目的是使選擇過程更加不可預測和公平,從而提高網絡的整體安全性。 這種機制的一個特殊用例是允許區塊提議者在上一個區塊完成之前保持隱私,從而為網絡增加了一層額外的安全性。
執行流程形成了一個循環,每個區塊的隨機性都會影響未來區塊提議者和委員會的選擇。 這就為這些過程引入了不可預測性因素,同時又保持了其可驗證性。
值得注意的是,雖然這種隨機性被用於選擇過程,但在區塊挖掘結束時,獎勵仍會根據投注金額直接修改狀態進行分配。 隨機性決定了哪些驗證者被選中成為接受獎勵的委員會成員,而不是分配獎勵的數量。
若干安全考慮因素對這一機制至關重要:
- 為防止重放攻擊,每個區塊的每個
randomReveal
值都必須是唯一的。 - 區塊提議者必須誠實地生成並提交其 "隨機揭示",以防止 "混合哈希 "被篡改。
- 提案者必須在區塊提案之前對其
randomReveal
保密,以防止其他參與者預測和可能的操縱。 - randomReveal "必須經過適當簽名和驗證,以防篡改。
這種機制的目的是在區塊創建和委員會選擇過程中引入不可預測性,同時保持可驗證性。 值得注意的是,雖然本系統提供了一個增強隨機性的框架,但隨著網絡的發展和完善,使用這種隨機性的提案人和委員會選擇算法的具體實現方式可能會隨時間推移而發生變化。
交易執行限制
Kaia Mainnet 和 Kairos Testnet 目前對交易執行有以下限制: