去中心化社区治理代币模式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系统开发部署教程,代币投票,管理
|
6月前
|
安全 JavaScript 前端开发
质押理财dapp系统开发功能详细/步骤需求/方案项目/源码指南
The development of a pledge wealth management DApp system involves knowledge in various aspects such as blockchain technology, smart contracts, front-end development, and security. The following are the detailed steps for developing a pledge wealth management DApp system
|
4月前
|
区块链
交易所合约跟单带单系统开发技术成熟(Demo)源码搭建
此智能合约包含关键参数如拥有者、收益分配者、状态变量和ERC20资产信息,用于管理质押功能。用户可通过`pledgeToken`函数质押,条件包括:功能开启、剩余额度充足、达到最低质押额且在时间范围内。结构体`PledgeOrder`和`KeyFlag`跟踪用户状态。构造函数需用户输入以初始化参数。
|
安全 Go
dapp丨defi代币合约系统开发详情说明丨案例分析丨需求设计丨成熟案例丨源码平台
Before developing the DApp pledge mining system, it is necessary to clarify the entire development process. Firstly, determine requirements and functional planning, including user interface design, contract writing, etc. Secondly, design the system architecture to determine the relationships and dat
|
区块链 UED
去中心化承兑交易系统开发搭建部署规则
去中心化承兑交易系统开发搭建部署规则
|
存储 算法 安全
去中心化交易所系统开发案例|模式详情|方案指南
我们常说的出块,就是指数据存储在各个块上,各个块用链的方式组合在一起形成数据结构
|
安全 区块链
区块链交易所开发运营版丨区块链交易所系统开发规则详细/项目案例/设计功能/需求逻辑/源码部署
Blockchain exchange refers to an online platform built on blockchain technology for trading and managing digital assets, such as cryptocurrencies (such as Bitcoin, Ethereum, etc.) and other digital assets or tokens. Blockchain exchanges allow users to buy, sell, store, and manage digital assets.
|
开发框架 安全 前端开发
区块链财务管理平台如何开发?区块链财务管理平台开发源码规则解析
开发一个区块链财务管理平台需要多个方面的技术和知识,以下是一些可能的步骤和考虑因素: