Files
solana/programs/storage_api/src/storage_contract.rs

49 lines
1.1 KiB
Rust
Raw Normal View History

use serde_derive::{Deserialize, Serialize};
use solana_sdk::hash::Hash;
use solana_sdk::pubkey::Pubkey;
use solana_sdk::signature::Signature;
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
pub enum ProofStatus {
Skipped,
Valid,
NotValid,
}
impl Default for ProofStatus {
fn default() -> Self {
ProofStatus::Skipped
}
}
#[derive(Default, Debug, Serialize, Deserialize, Clone)]
pub struct ProofInfo {
pub id: Pubkey,
pub signature: Signature,
pub sha_state: Hash,
pub status: ProofStatus,
}
#[derive(Default, Debug, Serialize, Deserialize, Clone)]
pub struct ValidationInfo {
pub id: Pubkey,
pub proof_mask: Vec<ProofStatus>,
}
#[derive(Debug, Serialize, Deserialize)]
pub enum StorageContract {
//don't move this
Default,
ValidatorStorage {
entry_height: u64,
hash: Hash,
lockout_validations: Vec<Vec<ProofInfo>>,
reward_validations: Vec<Vec<ProofInfo>>,
},
ReplicatorStorage {
proofs: Vec<ProofInfo>,
reward_validations: Vec<Vec<ProofInfo>>,
},
}