關於DAO社群治理系統開發詳細教程
DAO,是基於區塊鏈核心思想理念(由達成同一個共識的群體自發產生的共創、共建、共治、共享的協同行為)衍生出來的一種組織形態。是區塊鏈解決了人與人之間的信任問題之後的附屬產物。DAO具有充分開放、自主互動、去中心化控制、複雜多樣以及湧現等特點。
一旦達到故事的時間或章節限制,就應該結束故事了。任何人都可以在允許提取股息的日期之後呼叫結束函式。首先,我們需要一個新的StoryDAO屬性和一個事件:bool public active = true; event StoryEnded();
然後,構建函式:
function endStory() storyActive external { withdrawToOwner(); active = false; emit StoryEnded(); }
簡單:它將收集的費用傳送給所有者併發出事件後停用故事。但實際上,這並沒有真正改變整個DAO中的任何內容:其他功能對它的結束沒有反應。那麼構建另一個修飾符:
modifier storyActive() { require(active == true); _;}複製
然後,將此修飾符新增到除
withdrawToOwner
之外的所有函式中,如下所示:
function whitelistAddress(address _add) storyActive public payable {複製
如果DAO中遺留了任何代幣,將它們取回並接管這些代幣的所有權,以便以後能夠在另一個故事中使用它們:
function withdrawLeftoverTokens() external onlyOwner { require(active == false); token.transfer(msg.sender, token.balanceOf(address(this))); token.transferOwnership(msg.sender);}function unlockMyTokens() external { require(active == false); require(token.getLockedAmount(msg.sender) > 0); token.decreaseLockedAmount(msg.sender, token.getLockedAmount(msg.sender));}複製
unlockMyTokens
函式用於解鎖所有鎖定的代幣,以防某些鎖定代幣為特定使用者鎖定。它不應該發生,並且應該透過大量測試來移除此功能。
股息分配和提款
現在故事已經結束,收集的費用需要分配給所有代幣持有者。可以重新使用我們的白名單來標記所有取消費用的人:
function withdrawDividend() memberOnly external { require(active == false); uint256 owed = address(this).balance.div(whitelistedNumber); msg.sender.transfer(owed); whitelist[msg.sender] = false; whitelistedNumber--;}複製
如果這些股息未在一定時限內撤回,可以抓住其餘股息:
function withdrawEverythingPostDeadline() external onlyOwner { require(active == false); require(now > deadline + 14 days); owner.transfer(address(this).balance);}複製
部署問題
鑑於合約現在非常大,部署和/或測試它可能會超過以太坊區塊的gas限制。這是限制大型應用程式部署在以太坊網路上的原因。無論如何要部署它,在編譯期間嘗試使用程式碼最佳化器,方法是更改
truffle.js
檔案以包含用於最佳化的solc設定,如下所示:
// ...module.exports = { solc: { optimizer: { enabled: true, runs: 200 } }, networks: { development: {// ...複製
這將在程式碼中執行最佳化器200次以查詢在部署之前可以縮小,移除或抽象的區域,這將顯著降低部署成本。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70029396/viewspace-2951025/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於DAO社群治理dapp系統開發部署教程APP
- DAO社群治理模式系統開發需求梳理及所使用原始碼語言(Python)實現示例模式原始碼Python
- 關於區塊鏈DAPP系統開發詳細功能邏輯區塊鏈APP
- 關於MetaForce佛薩奇2.0系統開發原始碼搭建(功能詳細)原始碼
- DAO代幣流動性質押挖礦分紅系統開發(開發詳細)及邏輯原始碼原始碼
- 合約跟單社群系統開發(開發詳細)丨合約跟單社群開發原始碼部署原始碼
- 關於佛薩奇矩陣模式系統開發邏輯丨詳細需求方案矩陣模式
- Ubuntu系統安裝 PostgreSQL詳細教程。UbuntuSQL
- Ubuntu系統安裝Docker詳細教程UbuntuDocker
- Linux系統安裝MySQL詳細教程LinuxMySql
- Linux系統安裝gcc詳細教程。LinuxGC
- Ubuntu系統硬碟掛載詳細教程。Ubuntu硬碟
- 雲遊世界系統模式開發詳細方案模式
- dao代幣質押流動性挖礦開發正式版丨dao代幣質押流動性挖礦系統開發案例詳細及原始碼原始碼
- [教程文件]tuzicms系統安裝圖文詳細教程
- dao丨ido丨lp丨dapp丨defi單雙幣/子母幣流動性質押挖礦系統開發步驟詳細/指南教程APP
- Defi/AVIVE質押挖礦系統模式開發詳情/Dapp/Defi/IDO/DAO模式APP
- Linux系統Docker最佳化詳細教程。LinuxDocker
- Ctyun系統升級OpenSSH 9.3詳細教程
- Ubuntu 20.04系統安裝Carla詳細教程。Ubuntu
- 關於泰山眾籌模式系統開發邏輯分析丨泰山眾籌DAPP模式詳細開發方案(原始碼部署)模式APP原始碼
- 關於低功耗模組的SPI示例詳細教程!
- Filecoin礦機挖礦系統開發(案例詳細)
- DAO公排互助開發/佛薩奇智慧合約系統開發/公排互助模式詳情模式
- 關於FDF迴圈互助遊戲系統開發詳情說明遊戲
- Centos 7系統安裝python 3.9.10詳細教程。CentOSPython
- Ubuntu22系統安裝OpenJDK詳細教程。UbuntuJDK
- Linux系統PHP效能最佳化詳細教程。LinuxPHP
- Linux系統Memcached效能最佳化詳細教程。Linux
- Linux系統Redis效能最佳化詳細教程。LinuxRedis
- 量化合約系統開發(功能詳細)丨量化合約系統開發(策略及分析)
- 合約量化系統開發(詳細方案)丨合約量化系統開發(Python原始碼)Python原始碼
- 元宇宙+鏈遊系統開發(案例詳細)丨鏈遊系統開發(說明分析)元宇宙
- 永春堂1300模式系統開發詳細介紹模式
- 鏈動2+1系統開發詳細介紹
- 阿凡達系統開發(原始碼部署)詳細方案原始碼
- 鴻蒙作業系統開發工具DevEco下載和安裝(圖文詳細教程)鴻蒙作業系統dev
- Defi/IDO/DAO代幣預售質押挖礦系統功能開發(詳情分析)