EOS系統合約總體介紹

BSN研习社發表於2024-01-26

01

概述

EOSIO區塊鏈的設計需要許多在特權許可權級別執行的智慧合約,以支援區塊生產者註冊和投票、CPU和網路頻寬的代幣質押、RAM購買、multi-sig等功能。這些智慧合約被稱為bios、system、msig、wrap(以前稱為sudo)和代幣合約。

下面介紹了在EOS中的五個基礎的智慧合約:eosio.bios、eosio.system、eosio.token、eosio.msig和eosio.wrap

02

eosio.bios

(一) eosio.bios合約概述

bios的全稱是 Basic Input/Output System (基本輸入輸出系統)。eosio.bios合約是eos的系統啟動合約。該合約是eos許多命令的基礎合約,該合約允許賬戶直接透過eosio賬戶控制eos私鏈。eosio.bios合約是一個最低限度的系統合約,它只提供對引導鏈至關重要的操作,沒有其他操作。

(二)eosio.bios合約模組介紹

eosio.bios合約在EOSIO系統中負責初始化和配置區塊鏈網路,並管理生產者節點、許可權設定、系統引數等。以下是eosio.bios合約的主要模組介紹:

1、生產者註冊模組

eosio.bios合約的生產者註冊模組用於啟動和配置區塊鏈網路,包括生產者節點的註冊和許可權設定等關鍵任務。在EOS網路中,生產者是負責生產出區塊的節點,他們透過eosio.bios合約進行註冊,並可以透過合約進行撤銷註冊或更新資訊。生產者會根據其持有的資產數量進行定期輪換,而選擇下一個生產者的規則也透過該模組進行設定。生產者註冊模組是eosio.bios合約的重要組成部分,用於管理區塊鏈的出塊生產者。

2、初始化模組

eosio.bios合約的初始化模組用於設定系統合約、資源分配、系統引數和許可權等關鍵要素,為區塊鏈網路構建了初始狀態。這樣確保了區塊鏈網路的正確配置和啟動,併為後續的操作和交易提供必要的基礎。初始化模組透過合約的部署、資源建立、引數設定和許可權配置等一系列步驟,使EOSIO系統進入可用和可操作的狀態。它為EOSIO系統的各種功能和機制打下了堅實的基礎,為區塊鏈網路的正常執行和發展奠定了重要基礎。

3、許可權模組

eosio.bios合約的許可權模組用於設定和更新系統賬戶的許可權。這些許可權控制著系統賬戶的操作範圍和能力。透過eosio.bios合約,系統管理員可以更新賬戶的許可權,但只有具有足夠許可權的賬戶才能修改其他賬戶的許可權。許可權修改需要進行簽名驗證,確保許可權修改操作的合法性和可靠性。

03

eosio.system

(一)eosio.system合約概述

eosio.system是EOSIO中最重要的系統合約之一,它實現了區塊鏈上所有使用者賬戶和交易的管理。透過該合約,使用者可以建立新賬戶、投票選擇區塊生產者、購買RAM資源等。此外,eosio.system還包括資源管理模組(Rex)和抵押模組(Stake),允許使用者向網路提供計算能力和儲存空間,並獲得相應獎勵。

(二)eosio.system合約模組介紹

eosio.system合約在EOSIO系統中負責管理和維護EOSIO區塊鏈網路的核心功能。它包含了幾個關鍵模組,用於實現賬戶管理、資源配額、生產者選舉和投票等功能。以下是對eosio.system合約的各個模組進行詳細介紹:

1、賬戶管理模組

eosio.system合約的賬戶管理模組用於建立賬戶、賬戶授權、賬戶登出等。eosio.system合約允許賬戶建立者透過執行newaccount操作來建立新的賬戶,執行rmvaccount操作來登出賬戶。合約還提供了updateauth操作,用於更新賬戶的許可權和金鑰對。

2、資源管理模組

eosio.system合約的資源管理模組用於資源分配、RAM交易、資源抵押贖回等。eosio.system合約實現了資源配額的分配,包括CPU、NET和RAM。賬戶需要抵押EOS來獲獲取資源配額。合約還提供了buyram和sellram操作,用於賬戶購買和出售RAM資源。同時,透過delegatebw和undelegatebw操作,賬戶可以抵押和贖回自己的資源。

3、生產者選舉模組

eosio.system合約的生產者選舉模組用於註冊生產者等。eosio.system合約允許驗證節點透過regproducer操作將自己註冊為生產者,並參與區塊的生產。另外,系統將根據生產者的得票數和一定的輪換規則,更新生產者節點的順序,確保區塊的連續產生和網路的穩定執行。

4、投票模組

eosio.system合約的投票模組用於抵押投票、代理投票、取消投票等。eosio.system合約允許使用者透過voteproducer操作給超級節點投票,也可透過取消抵押資源的方式取消投票。eosio.system合約還允許賬戶進行代理投票,即先投票給代理,再由代理投票給生產者,代理的作用就是替別人做出選擇投票,本身不需要抵押。注意:合約只允許使用者選擇一種投票方式:直接投票或者代理投票。

5、系統引數設定模組

eosio.system合約的系統引數設定模組用於設定賬號資源限制、設定出塊間隔、設定特權開關、設定系統引數、設定通脹率等。由於EOS網路中的資源有限,合約透過setalimits操作設定賬號資源的最大限制,避免資源濫用。為了平衡區塊鏈網路的效能、安全性和穩定性,合約還允許透過setprods操作設定區塊的出塊間隔。合約允許賬戶設定特權開關,設定成功後,該賬戶成為特權帳戶,可以跳過標準授權檢查執行交易。合約透過setparams操作對鏈引數eosio::blockchain_parameter進行設定。合約還允許賬戶透過setinflation操作進行通脹率設定,用以實現產塊獎勵與代幣增發。

04

eosio.token

(一)eosio.token合約概述

eosio.token合約是EOSIO系統中的一個標準代幣合約。該合約允許使用者為基於eosio的區塊鏈建立、釋出和管理token的結構和操作,為使用者和開發者提供了構建了基於EOSIO的代幣經濟體系的基礎。

(二)eosio.token合約模組介紹

eosio.token合約在EOSIO系統中負責建立代幣、發行代幣、轉賬代幣等功能。它包含了幾個關鍵模組,用於實現建立代幣、發行代幣、轉賬代幣、查詢代幣餘額等功能。以下是對eosio.token合約的各個模組進行詳細介紹:

1、建立代幣模組

eosio.token合約用於賬戶建立新的代幣,在建立代幣之前,使用者需要設定代幣的總量、符號(symbol)和精度(precision),以便確保代幣被正確地識別和轉移。這些引數既可以在建立代幣時設定,也可以在未來進行修改。建立代幣將生成一個新的系統賬戶,用於管理該代幣的餘額和轉賬記錄。

2、發行代幣模組

eosio.token合約提供了發行(issue)代幣的操作,允許授權賬戶發行額定數量的代幣到指定賬戶,同時,發行操作需要指定接收代幣的賬戶、發行的數量、代幣符號等引數。並在呼叫發行操作後,驗證許可權並確保發行數量不超過代幣的最大供應量,最後,在代幣發行記錄中建立新的代幣,並將相應數量的代幣轉賬給指定的賬戶。發行的代幣數量將會反映在接收賬戶的代幣餘額中。

3、轉賬代幣模組

eosio.token合約用於賬戶間進行代幣的轉賬操作,透過執行transfer操作來實現。轉賬操作需要檢查轉賬發起者的許可權以及轉賬發起者賬戶是否有足夠的代幣餘額來執行轉賬操作,確保其具備執行轉賬操作的許可權,驗證透過後,轉賬操作還需要指定傳送方、接收方和轉賬數量,轉賬成功會扣除傳送方賬戶的代幣餘額並增加接收方賬戶的代幣餘額。

4、查詢代幣餘額模組

eosio.token合約用於查詢代幣餘額的操作,允許賬戶查詢自己或其他賬戶的代幣餘額。

05

eosio.msig

(一)eosio.msig合約概述

eosio.msig合約是eos的提案合約,EOS持有人可以使用合約方法提出一個提案,其他人可以表決透過或者不透過這個提案,透過這個合約能實現交易的多重簽名方案。作為多簽名合約,eosio.msig支援將一個交易分成多個步驟,並且在每個步驟中都需要經過特定數量的賬戶簽名確認後才能繼續下一步。這有效地防止了一些非法操作和攻擊,確保了交易執行的可靠性。

(二)eosio.msig合約模組介紹

eosio.msig合約作為EOSIO系統中的一個多重簽名合約,擴充套件了系統合約的功能,使多個賬戶能夠協作進行事務的授權和執行。為使用者提供了一種安全和可靠的方式來管理和執行需要多個參與者授權的交易。以下是eosio.msig合約的主要模組:

1、建立提案模組

建立提案模組允許提案建立者使用合約中的propose操作建立一個新的提案,指定提案的名稱、執行交易的許可權和生效時間等引數,將需要執行的事務封裝為一個提案。提案可以包含一系列的操作,可以是轉賬、許可權修改或其他合約操作。

2、稽核模組

稽核模組允許賬戶使用合約的approve或unapprove操作來表示對提案的稽核。approve操作表示賬戶同意提案,而unapprove操作則表示賬戶撤銷對提案的同意。每個賬戶只能以投票的方式參與提案的稽核。

3、執行模組

執行模組用於檢查提案是否獲得了足夠的批准票數。一旦提案達到指定的授權閾值,可由任何授權賬戶執行提案,若提案未達到預設的批准閾值,則無法執行,同時,被呼叫的合約會對呼叫者的許可權進行驗證,以確保只有具備相應許可權的賬戶才能成功執行操作,執行成功後,執行模組會對涉及的賬戶、資料和狀態進行相應的更新,同時,提案將被標記為已完成,並從待執行列表中移除。提案完成後,相應的操作將被永 久寫入區塊鏈,成為不可逆轉的交易。

4、取消提案模組

取消提案模組允許發起提案的賬戶隨時取消尚未達到授權閾值的提案,並進行修改、取消或者延遲提議的執行時間,同時,解除已參與的投票,並將提案從待執行列表中移除。這些特性使得EOS賬戶具有更大的控制權和可調性,有助於提高交易和操作的安全性和可靠性。

06

eosio.wrap

(一)eosio.wrap合約概述

eosio.wrap系統合約允許區塊生產者繞過授權檢查或在15/21生產者批准的情況下執行特權操作,從而簡化了區塊生產者的超級使用者操作。使這些操作更易於稽核。使用eosio.wrap合約可以方便地在EOSIO平臺上執行以太坊智慧合約,並使得各種型別的DApps更加靈活和可擴充套件。eosio.wrap系統合約為開發者們提供了一種將區塊鏈技術應用到實際場景中的創新方式。

(二)eosio.wrap合約模組介紹

eosio.wrap合約提供了與其他智慧合約進行互動的介面。eosio.wrap合約允許使用者將普通的EOSIO事務封裝為特殊的交易,以便在已部署的智慧合約上執行。以下是eosio.wrap合約的主要模組:

1、執行模組

eosio.wrap合約實現的唯 一操作是exec操作。此操作允許執行事務,該事務透過trx引數和執行事務的executor帳戶以json格式的打包事務的形式傳遞給exec方法。同樣的“執行人”賬戶也將用於支付執行交易所需的RAM和CPU費用。eosio.wrap合約允許區塊生產者在繞過常規授權檢查的同時執行事務,前置條件是需要eosio.wrap的授權,它需要是一個特權帳戶,後置條件是延遲的事務RAM使用計費給“執行者”,這項操作簡化了區塊生產者的超級使用者操作。


來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70012206/viewspace-3005303/,如需轉載,請註明出處,否則將追究法律責任。

相關文章