Governance
Savitri Network dispone di una governance on-chain che consente ai detentori di token di proporre, votare ed eseguire modifiche alla rete.
Panoramica
Il sistema di governance supporta:
- Creazione di proposte con titolo, descrizione e periodo di votazione
- Votazione ponderata per token (a favore/contro)
- Esecuzione automatica delle proposte approvate
- Proposte FL (Federated Learning) per la governance dei modelli AI
- Ricompense in token di voto basate sul livello PoU
Ciclo di Vita di una Proposta
1. Crea Proposta
│
2. Periodo di Votazione (configurabile, es. 7 giorni)
│
3. Conteggio Voti
│
├── Approvata (maggioranza a favore) → 4. Esegui
└── Respinta → Archiviata
Creazione di una Proposta
Tramite SDK
use savitri_sdk::{ContractClient, Wallet};
let contract = ContractClient::from_url_and_wallet(url, wallet)?;
let gov = contract.governance();
let tx = gov.create_proposal(
&governance_address,
"Increase block size",
"Proposal to increase max block transactions from 32 to 64",
604800, // 7-day voting period (seconds)
).await?;
Tramite TransactionBuilder
use savitri_sdk::{TransactionBuilder, GovernanceAction};
let tx = TransactionBuilder::new()
.create_fl_proposal(
"governance_contract_address",
"Deploy model v2",
"Replace current FL model with GPT-4 fine-tuned variant",
604800,
)
.nonce(nonce)
.fee(5_000_000_000_000_000)
.build_and_sign(&wallet)?;
Votazione
// Vota a favore
let tx = gov.vote(&governance_address, proposal_id, true).await?;
// Vota contro
let tx = gov.vote(&governance_address, proposal_id, false).await?;
// Tramite TransactionBuilder
let tx = TransactionBuilder::new()
.governance_call(
"governance_address",
proposal_id,
GovernanceAction::Vote(true),
)
.nonce(nonce)
.build_and_sign(&wallet)?;
Esecuzione delle Proposte
Le proposte approvate possono essere eseguite da qualsiasi partecipante:
let tx = gov.execute(&governance_address, proposal_id).await?;
Verifica dello Stato
let status = gov.get_proposal_status(&governance_address, proposal_id).await?;
println!("Title: {}", status.title);
println!("Status: {}", status.status); // "active", "passed", "rejected", "executed"
println!("Votes: {} for / {} against", status.votes_for, status.votes_against);
println!("Executed: {}", status.executed);
Token di Voto
I validatori guadagnano token di voto in base al loro livello PoU:
| Livello | Punteggio PoU | Token di Voto per Epoca |
|---|---|---|
| Bronze | 300-499 | 10 |
| Silver | 500-699 | 25 |
| Gold | 700-899 | 50 |
| Platinum | 900-1000 | 100 |
I token di voto determinano il peso del voto nelle proposte di governance.
Contract di Governance
Il sistema di governance è composto da diversi moduli on-chain:
| Modulo | File | Scopo |
|---|---|---|
| Proposte | governance/proposals.rs | Creazione e gestione delle proposte |
| Votazione | governance/voting.rs | Espressione e conteggio dei voti |
| Esecuzione | governance/execution.rs | Esecuzione delle proposte approvate |
| Deposito | governance/deposit.rs | Depositi per le proposte (anti-spam) |
| Token di Voto | governance/vote_token.rs | Emissione e tracciamento dei token di voto |
| Proposte FL | governance/fl_proposals.rs | Proposte specifiche per il Federated Learning |
Governance FL
Le proposte di Federated Learning sono azioni di governance specializzate per la gestione dell'addestramento AI distribuito:
- Registry modelli: Proponi nuovi modelli da addestrare
- Ciclo di vita dei job: Crea, gestisci e finalizza i job FL
- Aggiornamenti modelli: Vota sugli aggiornamenti delle versioni dei modelli
- Allocazione delle risorse: Alloca risorse di calcolo tramite governance