跳到主要内容

投票系统

Savitri 治理投票系统实现基于代币加权的链上决策。

投票类型

类型含义
Yes支持提案
No反对提案
Abstain计入法定人数但不计入批准

提案生命周期

Creation (+ deposit)

Review Period (24 hours)
│ Pending state, no voting allowed

Voting Period (7 days default)
│ ActiveVoting state

Tally
├── Quorum met + Approval met → Approved
├── Quorum met + Approval not met → Rejected
└── Quorum not met → Rejected (insufficient participation)


Execution (if Approved)

法定人数与批准

阈值描述
法定人数10%总投票代币中必须参与的比例
批准率65%赞成票比例(不含弃权票)

计算方式

total_votes = yes_votes + no_votes + abstain_votes
quorum_met = total_votes >= (total_vote_supply * 0.10)
approval = yes_votes / (yes_votes + no_votes) >= 0.65

弃权票计入法定人数,但不计入批准率计算。

投票代币锁定

用户投票时,其投票代币在投票期内被锁定。这可防止:

  • 重复投票(用同一代币对多个提案投票)
  • 转移代币后从不同地址再次投票

投票期结束后代币解锁。

押金机制

创建提案需要押金(防垃圾):

  • 若提案达到法定人数,押金退还(无论结果如何)
  • 若提案未达到法定人数,押金被没收

提案操作

操作描述
SetParameter修改网络参数
TransferTreasury转移国库资金
UpgradeContract升级智能合约
SetFlPolicy更新 FL 训练参数
ApproveFlModel批准 FL 模型用于生产
AbortFlRound紧急中止 FL 训练轮次
SlashValidator惩罚行为不当的验证者
Custom自定义治理操作

投票结果

pub struct VotingResult {
pub yes_votes: u64,
pub no_votes: u64,
pub abstain_votes: u64,
pub total_eligible: u64,
pub quorum_reached: bool,
pub approved: bool,
pub participation_rate: f64,
}

投票代币分配

投票代币通过节点参与获得:

PoU 层级分数范围每轮投票代币
铜牌300-49910
银牌500-69925
金牌700-89950
铂金900-1000100

通过 SDK

投票

use savitri_sdk::{ContractClient, Wallet};

let contract = ContractClient::from_url_and_wallet(url, wallet)?;
let gov = contract.governance();

// Vote YES on proposal #42
let tx = gov.vote(&governance_address, 42, true).await?;

// Vote NO
let tx = gov.vote(&governance_address, 42, false).await?;

查询提案状态

let status = gov.get_proposal_status(&governance_address, 42).await?;
println!("Votes: {} for / {} against", status.votes_for, status.votes_against);
println!("Status: {} (executed: {})", status.status, status.executed);

执行已批准提案

任何参与者均可触发已批准提案的执行:

let tx = gov.execute(&governance_address, 42).await?;

存储

列族
CF_GOVERNANCEproposal_id(u64 小端序)提案(bincode)
CF_VOTE_TOKENSaddress(32 字节)投票代币余额

时间线

阶段时长状态
审查24 小时Pending
投票7 天(可配置)ActiveVoting
执行计票后立即执行ApprovedExecuted