去中心化社区治理代币模式DAO系统开发部署详细教程

简介: 去中心化社区治理代币模式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次以查找在部署之前可以缩小,移除或抽象的区域,这将显着降低部署成本。

相关文章
|
测试技术 数据安全/隐私保护 索引
DAO社区治理系统模式开发规则详情 | DAO社区治理系统开发源码示例(Python语言版)
DAO(Data Access Object)社区治理模式是一种去中心化的社区治理模式,它将权力下放到社区中,让社区成员自主决策、自我管理,从而实现社区的自主治理。在DAO社区治理模式中,权力下放到社区中,社区成员可以自由地发表自己的意见和建议,并且能够直接参与到社区的决策过程中。
|
存储 区块链 数据安全/隐私保护
DAO社区治理代币挖矿系统开发丨DAPP技术分析
DAO的生态系统是智能合约【180-系统3831-开发9724薇】和功能完善的社区的独特组合。与传统组织不同,DAO不受董事会或经理管理,而是由其成员管理,这些成员通过基于代币的投票机制集体管理DAO内的决策,这些投票机制根据智能合约中的预定义规则执行。
|
区块链
关于DAO社区治理dapp系统开发部署教程
关于DAO社区治理dapp系统开发部署教程,代币投票,管理
|
3月前
|
存储 人工智能 运维
《从流程适配到合规校验:AI赋能智能工单5天交付全流程》
本文复盘团队借AI工具协作开发企业级智能工单系统的实战:面对需适配12部门流程、三级权限管控、符合等保三级标准的需求,及核心开发抽调、10天需求仅余5天的困局,团队以Copilot Enterprise、CodeLlama、AI Code Reviewer构建协作体系。AI在选型阶段提供混合流程引擎方案,开发环节拆解逻辑、生成合规代码,优化时定位规则冲突与性能瓶颈,测试交付阶段生成用例与合规报告,最终5天完成交付,效率提升2倍。
226 2
|
Java 计算机视觉 Python
我的自描外挂制作日志——FPS类游戏的自瞄【优化改进1】
我的自描外挂制作日志——FPS类游戏的自瞄【优化改进1】
516 1
|
自然语言处理 前端开发 JavaScript
postcss 单独不转换_postcss
【8月更文挑战第13天】
241 9
|
Linux iOS开发 Docker
【开源推荐】简单的录屏工具
【6月更文挑战第5天】
439 9
|
缓存 关系型数据库 数据库
postgresql.conf配置详解
postgresql.conf配置详解
|
安全 定位技术
外贸网站如何选择服务器
以上就是选择外贸网站服务器时需要考虑的一些关键因素。
295 8
|
关系型数据库 MySQL
Navicat for mysql 如何查看 (BLOB)文件
Navicat for mysql 如何查看 (BLOB)文件
654 0