eosio.forum 智能合約開發教程第一期: EOSIO 公投系統

本文爲 dfuse 與 EOS Studio 合作內容,原文由 EOS Studio 發佈




我們將在近一段時間內陸續推出多期的系列教程,深度詳解一些開源的 EOS 智能合約項目。我們將仔細挑選那些內容優質、設計精心、並可以成功構建的合約示例,其中的一些已經在 EOS 主網上廣泛使用。通過本次系列教程,我們希望能爲 EOSIO 上的 dApp 開發者提供更多的學習資料,並幫助他們瞭解更多智能合約的設計模式和應用場景。

Eosio.forum

我們要談論的第一個智能合約是由 EOS Canada(dfuse 的開發團隊)創建的 eosio.forum 。通過將提案及其相關投票存儲在 EOS 鏈上的 RAM 資源中,eosio.forum 可以用來支持 EOS 的公投系統 EOS Referendum system 。目前,eosio.forum 已經被 EOS 主網作爲了系統合約的一部分,專門用於實現一些定期的鏈上治理活動。

本期教程分爲三部分,我們將分別介紹 eosio.forum 的動機和開發過程(第1部分),如何使用它創建提案和投票(第2部分),並整體詳解他們的源代碼(第3部分)。

動機

「好人對於公衆事務冷漠的代價就是,被邪惡的人奴役」– 柏拉圖 (古希臘哲學家)

EOSIO 是一個崇尚自治的區塊鏈公鏈,它鼓勵其持幣者通過提案和投票來分享自己的聲音,來作爲達成共識的一種手段。

Block.one 曾提議社區創建一個鏈上的論壇,用來將各種消息發佈上去,並驗證社區用戶和持幣者對這些消息的意見和看法。EOS Canada 則進一步意識到,如果我們能用這個消息傳遞系統來批准某項提案,一個全民公投系統 (EOS Referendum system) 的基礎架構就有了。它可以用於對社區進行民意測驗,調查有關某個主題或問題的公衆意見。

作爲高度自治的區塊鏈,持幣者可以使用其抵押的EOS 代幣對提案進行投票,共同決定那些可能會影響到 EOS 底層的系統治理規則,架構級的李嘉圖合約 (Ricardian Contracts) ,或 EOSIO 代碼庫變更等相關問題。有些簡單的提議或投票,需要在不更改任何系統合約或底層代碼的情況下,收集社區在具體細節方面的反饋。而一個提案,如果通過了公投,則應遵照社區持幣者的共同決議,在 EOS 主網上生成一個執行層面的改動。

公投系統對於確保 EOSIO 區塊鏈在保持去中心化的同時不斷自我發展至關重要。 EOSIO 代碼庫,底層的系統治理規則,治理基金的使用情況等都需要在持幣者們提出共識的基礎上,以公投的方式在提案、投票和條約議定書中進行修改。該原則被寫入在 EOS 用戶協議中 EOS User Agreement, EUA :

Article IV Governing Documents — 

所有對 EUA 和系統治理規則進行的修改都在 eosio.prods 中執行。這意味着,所有公投提案的修訂草案都需要預先通過 eosio.forum 合約中的 eosio.prods 來進行擬定和發佈。

Article VII Network Funds — 

如需進行任何關於治理基金帳戶中代幣狀態的更改,或進行任何關於可直接或間接控制治理基金賬戶的現存代碼的改動,配置、執行方面的修改之前,都應預先通過 eosio.forum 合約中的  eosio.prods 來對改動進行具體描述,並擬定和發佈提案。

執行

EOS Canada 主導了 EOS 主網提議的公投系統的代碼編寫工作。他們採用了 Block.one 的示例合約,並對其進行重構以滿足社區的需求。這種需求是通過與其他參與團隊長期反覆討論過後發現的。2018 年 7 月,EOS  Canada 首次將 beta 版本部署到了 eosforumdapp 賬戶中,並運行它來進行更進一步的測試和收集一些社區反饋。後來,這個智能合約被部署到了另一個帳戶 eosforumrcpp ,代表着 EOS Forum 正式上線前的預先測試版本。 EOS Canada 還將該帳戶的權限修改爲共享多重簽名,由 EOS Canada 和其他合作的超級節點共同設立。

EOS 主網

經過數週的測試,eosio.forum 合約代碼已經蓄勢待發。EOS Canada 建議將該合同部署到 eosio.forum 的系統合約帳戶中,以便所有用戶都意識到這是他們可以信任的官方公投合約。部署完成後,這個智能合約的控制權也將完全交由所有的 EOS 超級節點,也就是 EOS 主網本身。

EOS 社區於 2019 年 1 月通過了該提議,eosio.forum 正式成爲了 EOS 主網的官方公投系統。自那之後,EOS 的持幣者們已經陸續在這條合約中提交了許多關於改善 EOS 主網治理能力和促進 EOS 主網發展的提案。例如,EOS 用戶協議本身就是通過 2019 年 5 月在 eosio.forum 上進行的公投中通過的。

爲了鼓勵 EOS 持幣者積極參與投票和社區治理,一些團隊都創建了屬於自己的用戶界面,來幫助大家更方便的查看提案並進行投票。

這些團隊包括:

EOS 側鏈

與此同時,相同的智能合約也被採用在其他 EOSIO 側鏈中。例如,BOSCore 部署了他們自己版本的 .forum 合約以支持其公投和 WPS 提案系統 (Worker Proposal System, WPS)。他們還根據公投系統啓動了 BOS 發展激勵計劃 (BOS Development Incentive Program) ,以激勵對其生態系統的技術貢獻。

其他應用

eosio.forum 合約可以在許多其他場景下使用。一個有趣的例子是,EOS 社區使用 eosio.forum 創建了一個名爲 Novusphere 的鏈上 Reddit 替代品。其中,forum 合約類似於 Novusphere 的後端服務器,而在前端還另外有 Web 版的用戶界面來方便用戶輕鬆創建或閱讀帖子。您可以訪問他們的網站 https://discussions.app,並將這些帖子與 eosio.forum 上的交易記錄進行比較。

下一步是什麼?

如果您覺得本教程有幫助,請別忘了點贊或關注我們的微信公衆號黑曜石實驗室 (Obsidianlabs),幣乎號 EOSStudio,我們會持續更新更多的產品信息、技術文章和精彩內容。

深度解析 EOS 合約:eosio.forum

- 第一部分: EOSIO 公投系統

第二部分: 投票的流程解析

- 第三部分: 源代碼的深度解讀

 

非常感謝 dfuse 團隊爲本期教程的編寫提供的諸多幫助!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章