sigil-core · vigil
Source declarations, signatures and documentation for vigil.
Source: sigil/node/sigil-core/src/vigil.rs. SHA-256: b055f1fc1e203d3a3fbb683a404eef612d7d10ace35129cd710ca494921a37d4.
This reference follows declared source modules, retains conditional attributes, and includes public declarations and implementation methods. Private-module re-exports and trait resolution require the compiler; this is a source reference, not a claim that every listed item is a root import. Function bodies and constant values are omitted.
vigil::VIGIL_EVENT_ID_DOMAIN
pub const VIGIL_EVENT_ID_DOMAIN: &[u8];Source line: 11.
vigil::VIGIL_SUBSCRIPTION_ID_DOMAIN
pub const VIGIL_SUBSCRIPTION_ID_DOMAIN: &[u8];Source line: 12.
vigil::VIGIL_FILTER_HASH_DOMAIN
pub const VIGIL_FILTER_HASH_DOMAIN: &[u8];Source line: 13.
vigil::MIN_VIGIL_BOND
pub const MIN_VIGIL_BOND: u128;Source line: 15.
vigil::MIN_INGESTOR_BOND
pub const MIN_INGESTOR_BOND: u128;Source line: 16.
vigil::MAX_FILTER_DEPTH
pub const MAX_FILTER_DEPTH: usize;Source line: 17.
vigil::MAX_FILTER_ARRAY_LEN
pub const MAX_FILTER_ARRAY_LEN: usize;Source line: 18.
vigil::MAX_FIELD_PATH_LEN
pub const MAX_FIELD_PATH_LEN: usize;Source line: 19.
vigil::MAX_EVENT_PAYLOAD_BYTES
pub const MAX_EVENT_PAYLOAD_BYTES: usize;Source line: 20.
vigil::MAX_EVENT_PROOF_BYTES
pub const MAX_EVENT_PROOF_BYTES: usize;Source line: 21.
vigil::DEFAULT_MAX_CALLBACK_GAS
pub const DEFAULT_MAX_CALLBACK_GAS: u64;Source line: 22.
vigil::OasDid
pub type OasDid = String;Source line: 24.
vigil::ContractAddress
pub type ContractAddress = String;Source line: 25.
vigil::AccountAddress
pub type AccountAddress = String;Source line: 26.
vigil::MethodSelector
pub type MethodSelector = String;Source line: 27.
vigil::ZoneId
pub type ZoneId = String;Source line: 28.
vigil::TopicId
pub type TopicId = String;Source line: 29.
vigil::ExternalChainId
pub type ExternalChainId = String;Source line: 30.
vigil::ExternalAddress
pub type ExternalAddress = String;Source line: 31.
vigil::ExternalTopicId
pub type ExternalTopicId = String;Source line: 32.
vigil::OracleFeedId
pub type OracleFeedId = String;Source line: 33.
vigil::AriseRequestId
pub type AriseRequestId = String;Source line: 34.
vigil::ContentHash
pub type ContentHash = SigilHash;Source line: 35.
vigil::VigilError
#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
pub enum VigilError {
#[error("vigil filter depth {depth} exceeds max {max}")]
FilterTooDeep { depth: usize, max: usize },
#[error("vigil filter array length {len} exceeds max {max}")]
FilterTooWide { len: usize, max: usize },
#[error("vigil filter field path length {len} exceeds max {max}")]
FieldPathTooLong { len: usize, max: usize },
#[error("vigil field path segment must not be empty")]
EmptyFieldPathSegment,
#[error("vigil callback contract must not be empty")]
EmptyCallbackContract,
#[error("vigil callback method must not be empty")]
EmptyCallbackMethod,
#[error("vigil gas tank account must not be empty")]
EmptyGasTank,
#[error("vigil subscriber DID must not be empty")]
EmptySubscriberDid,
#[error("vigil ingestor DID must not be empty")]
EmptyIngestorDid,
#[error("vigil bond {amount} below minimum {minimum}")]
BondBelowMinimum { amount: u128, minimum: u128 },
#[error("vigil max_callback_gas must be greater than zero")]
ZeroCallbackGas,
#[error("vigil max_deliveries_per_epoch must be greater than zero")]
ZeroDeliveryLimit,
#[error("vigil source does not match subscription")]
SourceMismatch,
#[error("vigil source kind {kind:?} requires a proof")]
ProofRequired { kind: EventSourceKind },
#[error("vigil proof kind does not match source kind {kind:?}")]
ProofSourceMismatch { kind: EventSourceKind },
#[error("vigil event payload is {len} bytes; max is {max}")]
PayloadTooLarge { len: usize, max: usize },
#[error("vigil proof is {len} bytes; max is {max}")]
ProofTooLarge { len: usize, max: usize },
#[error("vigil canonical encoding failed: {0}")]
Encoding(String),
}Source line: 38.
vigil::EventSourceKind
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum EventSourceKind {
InZone,
CrossZone,
ExternalChain,
Oracle,
ComputeCompletion,
TimeTrigger,
TeeAttested,
}Source line: 79.
vigil::TimeKind
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum TimeKind {
BlockHeight,
AttestedWallClock,
}Source line: 91.
vigil::RecurrenceSpec
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum RecurrenceSpec {
EveryBlocks { interval: u64 },
EveryAttestedSeconds { interval: u64 },
}Source line: 98.
vigil::OracleThreshold
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct OracleThreshold {
pub committee_id: String,
pub min_signatures: u16
}Source line: 104.
vigil::ProviderClass
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum ProviderClass {
Any,
TeeBacked,
Redundant,
Deterministic,
}Source line: 111.
vigil::TeeClass
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum TeeClass {
SgxDcap,
SevSnp,
Tdx,
ArmCca,
}Source line: 120.
vigil::EventSource
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(tag = "source_kind", rename_all = "snake_case")]
pub enum EventSource {
InZone {
zone_id: ZoneId,
emitter: ContractAddress,
topic: TopicId,
},
CrossZone {
source_zone: ZoneId,
emitter: ContractAddress,
topic: TopicId,
},
ExternalChain {
chain_id: ExternalChainId,
emitter: ExternalAddress,
topic: ExternalTopicId,
},
Oracle {
feed_id: OracleFeedId,
threshold: OracleThreshold,
},
ComputeCompletion {
arise_request_id: AriseRequestId,
provider_class: ProviderClass,
},
TimeTrigger {
kind: TimeKind,
target: u64,
recurrence: Option<RecurrenceSpec>,
},
TeeAttested {
model_or_payload_id: ContentHash,
attestation_class: TeeClass,
},
}Source line: 129.
vigil::EventSource::kind
pub fn kind(&self) -> EventSourceKind;Source line: 165.
vigil::EventSource::matches_kind
pub fn matches_kind(&self, kind: EventSourceKind) -> bool;Source line: 177.
vigil::EventSource::matches_subscription
pub fn matches_subscription(&self, subscription_source: &Self) -> bool;Source line: 181.
vigil::CanonicalValue
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(tag = "type", content = "value", rename_all = "snake_case")]
pub enum CanonicalValue {
String(String),
Bytes(Vec<u8>),
U64(u64),
I64(i64),
Bool(bool),
Hash(SigilHash),
}Source line: 188.
vigil::EventFilter
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(tag = "op", content = "args", rename_all = "snake_case")]
pub enum EventFilter {
Any,
TopicEquals(TopicId),
PayloadFieldEquals {
path: Vec<String>,
value: CanonicalValue,
},
PayloadFieldRange {
path: Vec<String>,
min: CanonicalValue,
max: CanonicalValue,
},
All(Vec<EventFilter>),
#[serde(alias = "Any2")]
AnyOf(Vec<EventFilter>),
}Source line: 236.
vigil::EventFilter::validate_bounds
pub fn validate_bounds(&self) -> Result<(), VigilError>;Source line: 254.
vigil::EventFilter::evaluate
pub fn evaluate(&self, payload: &serde_json::Value) -> Result<bool, VigilError>;Source line: 285.
vigil::EventFilter::filter_hash
pub fn filter_hash(&self) -> Result<SigilHash, VigilError>;Source line: 322.
vigil::Event
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Event {
pub source: EventSource,
pub payload: serde_json::Value,
pub source_finality_anchor: SigilHash
}Source line: 332.
vigil::Event::validate_size
pub fn validate_size(&self) -> Result<(), VigilError>;Source line: 339.
vigil::EventProof
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(tag = "kind", rename_all = "snake_case")]
pub enum EventProof {
None,
CrossZone {
proof_hash: SigilHash,
encoded_proof: Vec<u8>,
},
ExternalChain {
client_id: String,
proof_hash: SigilHash,
encoded_proof: Vec<u8>,
},
Oracle {
committee_id: String,
signature_bundle: Vec<u8>,
},
ComputeReceipt {
receipt_id: String,
receipt_hash: SigilHash,
provider_signature: Vec<u8>,
},
TeeQuote {
quote_hash: SigilHash,
quote: Vec<u8>,
material_hash: SigilHash,
},
}Source line: 353.
vigil::EventProof::encoded_len
pub fn encoded_len(&self) -> usize;Source line: 381.
vigil::EventProof::validate_size
pub fn validate_size(&self) -> Result<(), VigilError>;Source line: 397.
vigil::EventProof::matches_source
pub fn matches_source(&self, source: &EventSource) -> Result<bool, VigilError>;Source line: 408.
vigil::SubscriptionStatus
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum SubscriptionStatus {
Active,
Paused,
Slashed,
Expired,
}Source line: 439.
vigil::IngestorStatus
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum IngestorStatus {
Active,
Paused,
Slashed,
Deregistered,
}Source line: 448.
vigil::VigilSubscription
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct VigilSubscription {
pub subscription_id: SigilHash,
pub subscriber_did: OasDid,
pub callback_contract: ContractAddress,
pub callback_method: MethodSelector,
pub event_source: EventSource,
pub event_filter: EventFilter,
pub gas_tank: AccountAddress,
pub bond_amount: u128,
pub max_callback_gas: u64,
pub max_deliveries_per_epoch: u32,
pub created_at_height: u64,
pub expires_at_height: Option<u64>,
pub status: SubscriptionStatus,
pub deliveries_this_epoch: u32,
pub epoch_window_start: u64
}Source line: 456.
vigil::VigilSubscription::is_active_at
pub fn is_active_at(&self, height: u64) -> bool;Source line: 475.
vigil::VigilSubscription::source_filter_key
pub fn source_filter_key(&self) -> Result<(EventSourceKind, SigilHash), VigilError>;Source line: 482.
vigil::Ingestor
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Ingestor {
pub ingestor_did: OasDid,
pub bond: u128,
pub supported_sources: Vec<EventSourceKind>,
pub fee_per_delivery: u64,
pub reputation: u32,
pub registered_at_height: u64,
pub status: IngestorStatus
}Source line: 488.
vigil::Ingestor::supports
pub fn supports(&self, source: EventSourceKind) -> bool;Source line: 499.
vigil::Ingestor::validate_registration
pub fn validate_registration(&self) -> Result<(), VigilError>;Source line: 503.
vigil::RegisterVigilSubscriptionData
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct RegisterVigilSubscriptionData {
pub callback_contract: ContractAddress,
pub callback_method: MethodSelector,
pub event_source: EventSource,
pub event_filter: EventFilter,
pub gas_tank: AccountAddress,
pub bond_amount: u128,
pub max_callback_gas: u64,
pub max_deliveries_per_epoch: u32,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub expires_at_height: Option<u64>
}Source line: 518.
vigil::RegisterVigilSubscriptionData::validate
pub fn validate(&self) -> Result<(), VigilError>;Source line: 532.
vigil::RegisterVigilSubscriptionData::subscription_id_for
pub fn subscription_id_for(&self, subscriber_did: &str) -> Result<SigilHash, VigilError>;Source line: 557.
vigil::RegisterVigilSubscriptionData::into_record
pub fn into_record(
&self,
subscriber_did: impl Into<String>,
created_at_height: u64,
epoch_window_start: u64,
) -> Result<VigilSubscription, VigilError>;Source line: 569.
vigil::UpdateVigilSubscriptionData
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct UpdateVigilSubscriptionData {
pub subscription_id: SigilHash,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub event_filter: Option<EventFilter>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub callback_method: Option<MethodSelector>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_callback_gas: Option<u64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_deliveries_per_epoch: Option<u32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub expires_at_height: Option<Option<u64>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<SubscriptionStatus>
}Source line: 598.
vigil::CancelVigilSubscriptionData
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct CancelVigilSubscriptionData {
pub subscription_id: SigilHash
}Source line: 615.
vigil::DepositVigilGasData
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct DepositVigilGasData {
pub subscription_id: SigilHash,
pub amount: u64
}Source line: 620.
vigil::WithdrawVigilGasData
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct WithdrawVigilGasData {
pub subscription_id: SigilHash,
pub amount: u64,
pub recipient_did: OasDid
}Source line: 626.
vigil::EventDeliveryData
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct EventDeliveryData {
pub subscription_id: SigilHash,
pub event: Event,
pub proof: EventProof,
pub ingestor_did: OasDid
}Source line: 633.
vigil::EventDeliveryData::event_id
pub fn event_id(&self) -> Result<SigilHash, VigilError>;Source line: 641.
vigil::SlashIngestorData
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct SlashIngestorData {
pub ingestor_did: OasDid,
pub evidence_hash: SigilHash,
pub slash_amount: u128
}Source line: 647.
vigil::RegisterIngestorData
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct RegisterIngestorData {
pub ingestor_did: OasDid,
pub bond: u128,
pub supported_sources: Vec<EventSourceKind>,
pub fee_per_delivery: u64
}Source line: 654.
vigil::UpdateIngestorStakeData
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct UpdateIngestorStakeData {
pub ingestor_did: OasDid,
pub bond_delta: i128,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub supported_sources: Option<Vec<EventSourceKind>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub fee_per_delivery: Option<u64>
}Source line: 662.
vigil::DeregisterIngestorData
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct DeregisterIngestorData {
pub ingestor_did: OasDid
}Source line: 672.
vigil::VigilDeliveryStatus
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum VigilDeliveryStatus {
Scheduled,
Delivered,
Reverted,
}Source line: 678.
vigil::VigilDeliveryRecord
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct VigilDeliveryRecord {
pub subscription_id: SigilHash,
pub event_id: SigilHash,
pub ingestor_did: OasDid,
pub delivered_at_height: u64,
pub status: VigilDeliveryStatus,
pub proof_hash: SigilHash
}Source line: 685.
vigil::ScheduledVigilCallback
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ScheduledVigilCallback {
pub subscription_id: SigilHash,
pub event_id: SigilHash,
pub subscriber_did: OasDid,
pub callback_contract: ContractAddress,
pub callback_method: MethodSelector,
pub payload: serde_json::Value,
pub gas_tank: AccountAddress,
pub gas_limit: u64,
pub scheduled_at_height: u64
}Source line: 695.
vigil::canonical_event_id
pub fn canonical_event_id(event: &Event) -> Result<SigilHash, VigilError>;Source line: 707.
vigil::canonical_proof_hash
pub fn canonical_proof_hash(proof: &EventProof) -> Result<SigilHash, VigilError>;Source line: 719.