织梦CMS - 轻松建站从此开始!

我的网站

当前位置: 主页 > 比特币 > 比特币资讯

DeFi YAM,一行代码如何蒸发数亿美元?(5)

时间:2020-08-14 08:40来源:未知 作者:admin 点击:
分析到这里,一个完整的 rebase 流程就完成了,你可能看得很懵,我们用简单的流程图简化下: 也就是说,每次的 rebase,如果有多余的 YAM 代币,这些代币

分析到这里,一个完整的 rebase 流程就完成了,你可能看得很懵,我们用简单的流程图简化下:

也就是说,每次的 rebase,如果有多余的 YAM 代币,这些代币将会流到 reserves 合约中,那这和社区治理的关系是什么呢?

通过分析项目代码,发现治理相关的逻辑在 YAMGovernorAlpha.sol 中,其中发起提案的函数为 propose,具体代码如下:

function propose(    address[] memory targets,    uint[] memory values,    string[] memory signatures,    bytes[] memory calldatas,    string memory description   )    public    returns (uint256)   {  //SlowMist// 校验提案发起者的票数占比    require(yam.getPriorVotes(msg.sender, sub256(block.number, 1)) > proposalThreshold(), "GovernorAlpha::propose: proposer votes below proposal threshold");    require(targets.length == values.length && targets.length == signatures.length && targets.length == calldatas.length, "GovernorAlpha::propose: proposal function information arity mismatch");    require(targets.length != 0, "GovernorAlpha::propose: must provide actions");    require(targets.length <= proposalMaxOperations(), "GovernorAlpha::propose: too many actions");    uint256 latestProposalId = latestProposalIds[msg.sender];    if (latestProposalId != 0) {     ProposalState proposersLatestProposalState = state(latestProposalId);     require(proposersLatestProposalState != ProposalState.Active, "GovernorAlpha::propose: one live proposal per proposer, found an already active proposal");     require(proposersLatestProposalState != ProposalState.Pending, "GovernorAlpha::propose: one live proposal per proposer, found an already pending proposal");     }    uint256 startBlock = add256(block.number, votingDelay());    uint256 endBlock = add256(startBlock, votingPeriod());    proposalCount++;    Proposal memory newProposal = Proposal({      id: proposalCount,      proposer: msg.sender,      eta: 0,      targets: targets,      values: values,      signatures: signatures,      calldatas: calldatas,      startBlock: startBlock,      endBlock: endBlock,      forVotes: 0,      againstVotes: 0,      canceled: false,      executed: false     });    proposals[newProposal.id] = newProposal;    latestProposalIds[newProposal.proposer] = newProposal.id;    emit ProposalCreated(      newProposal.id,      msg.sender,      targets,      values,      signatures,      calldatas,      startBlock,      endBlock,      description     );    return newProposal.id;   } (责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容