引言我将前文实现的简单的dao参与了https://dacade.org/communities/sui的挑战,得到了反馈。这是我得到的第二个反馈,我认为它为解决我的dao经济模型中一个很重要的问题提供了一个解决思路
我将前文实现的简单的dao参与了https://dacade.org/communities/sui的挑战,得到了反馈。这是我得到的第二个反馈,我认为它为解决我的dao经济模型中一个很重要的问题提供了一个解决思路
这个反馈主要分为两个方面
在我原有的设计之中,dao的提案只能由核心成员手动关闭,然后根据赞成和反对票判断提案是否被接受。
反馈中做出的更改
增加一个提案持续时间的字段
const PROPOSAL_DURATION: u64 = 7 * 24 * 60 * 60;
设置了一个提案持续时间的结构体
struct ProposalDuration has key, store {
id: UID,
start_time: u64,
end_time: u64,
}
核心成员可以设置提案持续PROPOSAL_DURATION后自动关闭
// Function to set the proposal duration
public fun set_proposal_duration(core_cap: &CoreCap, proposal: &mut Proposal, ctx: &mut TxContext) {
check_corecap_role(core_cap, ctx);
assert!(!proposal.is_closed, EProposalClosed);
let start_time = tx_context::epoch(ctx);
let end_time = start_time + PROPOSAL_DURATION;
let proposal_duration = ProposalDuration {
id: object::new(ctx),
start_time,
end_time,
};
transfer::share_object(proposal_duration);
}
// Function to check if the proposal is still open for voting
public fun is_proposal_open(proposal: &Proposal, proposal_duration: &ProposalDuration): bool {
let current_time = tx_context::epoch(ctx);
current_time >= proposal_duration.start_time && current_time < proposal_duration.end_time
}
但是我认为这个修改有一点问题:
这是我感觉一个比较重要的反馈点
在我原有的经济模型中,所有dao代币在合约初始化的过程中会被mint,储存在金库中,之后这个代币供应量将不会再更改。
有以下几个方法可以从金库获得dao代币:
该反馈提出了一个方法来缓解问题:
根据成员数量增发dao代币
public fun update_total_supply(dao: &mut Dao<DAO>, new_members: u64, treasury: &mut Treasury<DAO>, ctx: &mut TxContext) {
let new_supply = coin::mint_balance<DAO>(&mut treasury.supply, new_members * TOTAL_SUPPLY / dao.total_members);
let new_total_supply = coin::supply_value(&new_supply) + coin::supply_value(&dao.total_supply);
dao.total_supply = coin::create_supply(new_total_supply);
coin::destroy_supply(dao.total_supply);
dao.total_supply = new_total_supply;
}
增发数量的计算公式为:增发数量 / 原代币总供应 = 新增成员数量 / 原成员总数
但是这个修改也存在一些问题 那就是函数为公共函数,没有权限控制,而且new_members的增加数量是随意输入的
我的想法是可以新建一个结构体来储存未更新的total_member是数量,当新增的成员数量达到一定规模限制,任何一个人都可以调用update_total_supply来增发dao代币
增发流程:
吸收他人的新想法和新点子是令人欣喜的,开发不能闭门造车,而是要团队实践,听取别人的想法意见,认真思考。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!