diff --git a/contracts/contracts/stellar-grants/src/data_export.rs b/contracts/contracts/stellar-grants/src/data_export.rs index ee68f391..d42e05c9 100644 --- a/contracts/contracts/stellar-grants/src/data_export.rs +++ b/contracts/contracts/stellar-grants/src/data_export.rs @@ -90,7 +90,9 @@ pub fn export_milestones(env: &Env, grant_id: u64) -> Vec { } else { None }; - let approved_at = if milestone.state == crate::types::MilestoneState::Approved { + let approved_at = if milestone.state == crate::types::MilestoneState::Approved + || milestone.state == crate::types::MilestoneState::Paid + { Some(milestone.status_updated_at) } else { None diff --git a/contracts/contracts/stellar-grants/src/events.rs b/contracts/contracts/stellar-grants/src/events.rs index aaf4388f..65b2ad66 100644 --- a/contracts/contracts/stellar-grants/src/events.rs +++ b/contracts/contracts/stellar-grants/src/events.rs @@ -11,6 +11,16 @@ pub struct GrantCancelled { pub timestamp: u64, } +/// Issue #698: emitted instead of silently dropping the entry when a +/// `grant_index` list (per-owner, per-status, per-token, or the global +/// recency order) has already reached `MAX_INDEX_ENTRIES`. +#[contractevent] +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct IndexCapReached { + pub grant_id: u64, + pub timestamp: u64, +} + #[contractevent] #[derive(Clone, Debug, PartialEq, Eq)] pub struct RefundExecuted { @@ -454,6 +464,14 @@ impl Events { event.publish(env); } + pub fn emit_index_cap_reached(env: &Env, grant_id: u64) { + let event = IndexCapReached { + grant_id, + timestamp: env.ledger().timestamp(), + }; + event.publish(env); + } + pub fn emit_refund_executed(env: &Env, grant_id: u64, funder: Address, amount: i128) { let event = RefundExecuted { grant_id, diff --git a/contracts/contracts/stellar-grants/src/funder_report.rs b/contracts/contracts/stellar-grants/src/funder_report.rs index cbb8ade3..2aa3e056 100644 --- a/contracts/contracts/stellar-grants/src/funder_report.rs +++ b/contracts/contracts/stellar-grants/src/funder_report.rs @@ -5,9 +5,25 @@ use crate::escrow; use crate::storage::Storage; use crate::types::{FunderGrantSummary, FunderReport, FunderTokenSummary, GrantStatus}; +/// Fetch every grant summary for a funder, regardless of how many grants +/// they've contributed to. `grant_summaries` itself supports offset/limit +/// pagination, but the report/summary/dashboard functions below used to +/// hard-code `(0, 50)` — silently truncating any funder past their 50th +/// grant (issue #697). `grant_summaries`'s own loop is bounded by the real +/// grant counter regardless of the limit passed in, so passing the full +/// counter as the limit fetches everything in one pass. +fn all_grant_summaries( + env: &Env, + funder: &Address, +) -> Result, ContractError> { + let total_grants = Storage::get_grant_counter(env); + let limit = u32::try_from(total_grants).unwrap_or(u32::MAX); + grant_summaries(env, funder, 0, limit) +} + /// Build a comprehensive financial report for a funder. Read-only. pub fn get_report(env: &Env, funder: &Address) -> Result { - let grants = grant_summaries(env, funder, 0, 50)?; + let grants = all_grant_summaries(env, funder)?; let token_sums = build_token_summaries(env, funder, &grants); let mut active: u32 = 0; @@ -52,7 +68,7 @@ pub fn get_report(env: &Env, funder: &Address) -> Result FunderTokenSummary { - let grants = grant_summaries(env, funder, 0, 50).unwrap_or_else(|_| Vec::new(env)); + let grants = all_grant_summaries(env, funder).unwrap_or_else(|_| Vec::new(env)); let mut summary = FunderTokenSummary { token: token.clone(), total_committed: 0, @@ -222,7 +238,7 @@ pub fn total_in_escrow(env: &Env, funder: &Address, token: &Address) -> i128 { /// Return a lightweight report suitable for a dashboard widget. /// Returns: (grants_count, total_committed, total_in_escrow, total_paid_out) pub fn dashboard_summary(env: &Env, funder: &Address) -> (u32, i128, i128, i128) { - let grants = grant_summaries(env, funder, 0, 50).unwrap_or_else(|_| Vec::new(env)); + let grants = all_grant_summaries(env, funder).unwrap_or_else(|_| Vec::new(env)); let count = grants.len() as u32; let mut committed: i128 = 0; let mut escrowed: i128 = 0; @@ -289,7 +305,85 @@ mod tests { use super::*; use crate::types::{EscrowAccount, FunderLedger, Grant, GrantFund, GrantStatus}; use soroban_sdk::testutils::{Address as _, Ledger}; - use soroban_sdk::Vec; + use soroban_sdk::{String, Vec}; + + /// Issue #697: `get_report`, `token_summary`, and `dashboard_summary` used + /// to hard-code `grant_summaries(env, funder, 0, 50)`, silently dropping + /// everything past a funder's 50th grant. Seed more than 50 grants for one + /// funder and assert every one of them is reflected in the aggregates. + #[test] + fn test_funder_with_more_than_50_grants_gets_complete_report() { + let env = Env::default(); + let funder = Address::generate(&env); + let owner = Address::generate(&env); + let token = Address::generate(&env); + + let total_grants: u64 = 55; + for _ in 0..total_grants { + let grant_id = Storage::increment_grant_counter(&env); + let grant = Grant { + id: grant_id, + owner: owner.clone(), + title: String::from_str(&env, "Grant"), + description: String::from_str(&env, "Test"), + token: token.clone(), + status: GrantStatus::Active, + total_amount: 100, + milestone_amount: 100, + reviewers: Vec::new(&env), + total_milestones: 1, + milestones_paid_out: 0, + escrow_balance: 100, + funders: Vec::new(&env), + reason: None, + timestamp: env.ledger().timestamp(), + require_compliance: None, + }; + Storage::set_grant(&env, grant_id, &grant); + + Storage::set_escrow_account( + &env, + grant_id, + &EscrowAccount { + owner: owner.clone(), + token: token.clone(), + balance: 100, + total_deposited: 100, + total_released: 0, + locked: false, + }, + ); + + Storage::set_funder_ledger( + &env, + grant_id, + &funder, + &FunderLedger { + funder: funder.clone(), + contributed: 100, + refunded: 0, + last_contribution_at: env.ledger().timestamp(), + }, + ); + } + + let report = get_report(&env, &funder).unwrap(); + assert_eq!(report.total_grants_funded, total_grants as u32); + assert_eq!(report.active_grants, total_grants as u32); + assert_eq!(report.grant_summaries.len(), total_grants as u32); + + let (count, committed, escrowed, _paid) = dashboard_summary(&env, &funder); + assert_eq!(count, total_grants as u32); + assert_eq!(committed, 100 * total_grants as i128); + assert_eq!(escrowed, 100 * total_grants as i128); + + let ts = token_summary(&env, &funder, &token); + assert_eq!(ts.total_committed, 100 * total_grants as i128); + assert_eq!( + total_in_escrow(&env, &funder, &token), + 100 * total_grants as i128 + ); + } #[test] fn test_unknown_funder_returns_empty_report() { diff --git a/contracts/contracts/stellar-grants/src/governance.rs b/contracts/contracts/stellar-grants/src/governance.rs index 716a3580..bf66434a 100644 --- a/contracts/contracts/stellar-grants/src/governance.rs +++ b/contracts/contracts/stellar-grants/src/governance.rs @@ -7,6 +7,27 @@ use crate::reviewer_sla; use crate::storage::Storage; use crate::types::{ContractError, Grant, Milestone, MilestoneState, VotingMechanism}; +/// Transition every `Approved` milestone on a grant to `Paid`. Call this only +/// once the grant's payout path has actually confirmed the fund transfer for +/// those milestones (see `StellarGrantsContract::finalize_grant_release` and +/// `execute_escrow_release` in lib.rs) — `Approved` alone does not mean the +/// funds moved, since a multisig-gated release can leave a milestone +/// `Approved` for a time after quorum but before the transfer executes. +/// Read paths (`portfolio::earnings_by_token`, `data_export`) only count +/// `Paid` milestones as earned/paid-out, so skipping this step after a real +/// payout silently zeroes a contributor's reported earnings (issue #696). +pub fn mark_milestones_paid(env: &Env, grant_id: u64, total_milestones: u32) { + for idx in 0..total_milestones { + if let Some(mut milestone) = Storage::get_milestone(env, grant_id, idx) { + if milestone.state == MilestoneState::Approved { + milestone.state = MilestoneState::Paid; + Storage::set_milestone(env, grant_id, idx, &milestone); + Events::emit_milestone_paid(env, grant_id, idx, milestone.amount); + } + } + } +} + pub struct VoteResult { pub approved: bool, pub quorum_reached: bool, diff --git a/contracts/contracts/stellar-grants/src/grant_index.rs b/contracts/contracts/stellar-grants/src/grant_index.rs index 67d70c04..fb1bc5ac 100644 --- a/contracts/contracts/stellar-grants/src/grant_index.rs +++ b/contracts/contracts/stellar-grants/src/grant_index.rs @@ -1,19 +1,36 @@ use soroban_sdk::{Address, Env, Vec}; use crate::constants; +use crate::events::Events; use crate::storage::{DataKey, GrantKey}; use crate::types::GrantStatus; -fn push_to_index(env: &Env, key: &DataKey, grant_id: u64) { +/// Push `grant_id` onto the index list at `key`, capped at `cap` entries. +/// Returns `true` if the id is present in the list afterwards (either just +/// added or already there), `false` if the list was already at capacity and +/// the id had to be dropped. +/// +/// Before issue #698, a cap hit was a silent no-op: `grant_create` still +/// succeeded, but the grant became permanently invisible to `by_owner`, +/// `by_status`, `by_token`, `recent`, and `data_export` for that index, with +/// no error or event to reveal it. Surfacing an `IndexCapReached` event here +/// at least makes the condition observable instead of a silent data loss. +fn push_to_index(env: &Env, key: &DataKey, grant_id: u64, cap: u32) -> bool { let mut list: Vec = env .storage() .persistent() .get(key) .unwrap_or_else(|| Vec::new(env)); - if list.len() < constants::MAX_INDEX_ENTRIES && !list.contains(grant_id) { - list.push_back(grant_id); - env.storage().persistent().set(key, &list); + if list.contains(grant_id) { + return true; + } + if list.len() >= cap { + Events::emit_index_cap_reached(env, grant_id); + return false; } + list.push_back(grant_id); + env.storage().persistent().set(key, &list); + true } fn remove_from_index(env: &Env, key: &DataKey, grant_id: u64) { @@ -35,31 +52,26 @@ pub fn on_grant_created( token: &Address, status: GrantStatus, ) { + let cap = constants::MAX_INDEX_ENTRIES; push_to_index( env, &DataKey::Grant(GrantKey::OwnerIndex(owner.clone())), grant_id, + cap, ); push_to_index( env, &DataKey::Grant(GrantKey::StatusIndex(status as u32)), grant_id, + cap, ); push_to_index( env, &DataKey::Grant(GrantKey::TokenIndex(token.clone())), grant_id, + cap, ); - let order_key = DataKey::Grant(GrantKey::GlobalOrder); - let mut order: Vec = env - .storage() - .persistent() - .get(&order_key) - .unwrap_or_else(|| Vec::new(env)); - if order.len() < constants::MAX_INDEX_ENTRIES { - order.push_back(grant_id); - env.storage().persistent().set(&order_key, &order); - } + push_to_index(env, &DataKey::Grant(GrantKey::GlobalOrder), grant_id, cap); } pub fn on_status_changed( @@ -78,6 +90,7 @@ pub fn on_status_changed( env, &DataKey::Grant(GrantKey::StatusIndex(new_status as u32)), grant_id, + constants::MAX_INDEX_ENTRIES, ); } } @@ -87,6 +100,7 @@ pub fn on_contributor_assigned(env: &Env, grant_id: u64, contributor: &Address) env, &DataKey::Grant(GrantKey::ContribIndex(contributor.clone())), grant_id, + constants::MAX_INDEX_ENTRIES, ); } @@ -165,3 +179,67 @@ pub fn index_counts(env: &Env, owner: Option<&Address>) -> (u32, u32, u32) { }; (owned, active.len(), contributed) } + +#[cfg(test)] +mod tests { + use super::*; + use soroban_sdk::testutils::Events as _; + use soroban_sdk::Env; + + /// Issue #698: hitting the cap used to be a silent no-op — the id was + /// dropped with no error and no event. A reduced cap (3, instead of the + /// real 10,000) keeps this test fast while still exercising the same + /// code path. + #[test] + fn test_push_to_index_respects_cap_and_surfaces_the_drop() { + let env = Env::default(); + let key = DataKey::Grant(GrantKey::GlobalOrder); + let cap = 3u32; + + assert!(push_to_index(&env, &key, 1, cap)); + assert!(push_to_index(&env, &key, 2, cap)); + assert!(push_to_index(&env, &key, 3, cap)); + + let list: Vec = env.storage().persistent().get(&key).unwrap(); + assert_eq!(list.len(), 3); + + let accepted = push_to_index(&env, &key, 4, cap); + assert!(!accepted, "push beyond the cap must report failure"); + + let list: Vec = env.storage().persistent().get(&key).unwrap(); + assert_eq!(list.len(), 3, "list must not silently grow past the cap"); + assert!( + !list.contains(4), + "dropped id must not silently appear in the index" + ); + + let events = env.events().all(); + let mut found_cap_event = false; + for e in events.events() { + if format!("{:?}", e).contains("index_cap_reached") { + found_cap_event = true; + } + } + assert!( + found_cap_event, + "IndexCapReached event must be emitted instead of silently dropping the entry" + ); + } + + #[test] + fn test_push_to_index_dedupes_without_double_counting_against_cap() { + let env = Env::default(); + let key = DataKey::Grant(GrantKey::GlobalOrder); + let cap = 2u32; + + assert!(push_to_index(&env, &key, 1, cap)); + assert!(push_to_index(&env, &key, 2, cap)); + + // Re-pushing an id already in a full list is a no-op success, not a + // cap breach — it must not emit a spurious IndexCapReached event. + assert!(push_to_index(&env, &key, 1, cap)); + + let list: Vec = env.storage().persistent().get(&key).unwrap(); + assert_eq!(list.len(), 2); + } +} diff --git a/contracts/contracts/stellar-grants/src/lib.rs b/contracts/contracts/stellar-grants/src/lib.rs index 5b2f5529..1bc05904 100644 --- a/contracts/contracts/stellar-grants/src/lib.rs +++ b/contracts/contracts/stellar-grants/src/lib.rs @@ -492,7 +492,13 @@ impl StellarGrantsContract { let mut approved_count = 0; for milestone_idx in 0..total_milestones { if let Some(milestone) = Storage::get_milestone(env, grant_id, milestone_idx) { - if milestone.state != MilestoneState::Approved { + // A milestone may already be `Paid` here: `finalize_grant_release` + // pays out milestones before this function is called a second + // time from `execute_escrow_release` once a multisig-gated + // release actually executes (issue #696). + if milestone.state != MilestoneState::Approved + && milestone.state != MilestoneState::Paid + { return Err(ContractError::NotAllMilestonesApproved); } total_paid += milestone.amount; @@ -599,6 +605,11 @@ impl StellarGrantsContract { return Ok(()); } + // All milestone payouts above have actually left escrow at this + // point (Soroban invocations are atomic, so any failure before here + // would have reverted these writes) — safe to transition to Paid. + governance::mark_milestones_paid(env, grant_id, grant.total_milestones); + Self::complete_grant(env, grant_id, total_paid, remaining_balance) } @@ -720,6 +731,20 @@ impl StellarGrantsContract { ); if result.quorum_reached { + // Issue #699: notify subscribers watching this grant of the vote + // outcome, regardless of which branch it took below. + let notif_event = if result.approved { + NotificationEvent::MilestoneApproved + } else { + NotificationEvent::MilestoneRejected + }; + notification::emit_notification( + &env, + notif_event, + &SubscriptionScope::PerGrant(grant_id), + reviewer_sla::milestone_sla_id(grant_id, milestone_idx) as u128, + ); + if result.approved { Self::update_contributor_reputation( &env, @@ -1811,6 +1836,13 @@ impl StellarGrantsContract { // Issue #726: capture a tamper-evident state snapshot when a dispute is raised. snapshot::capture(&env, grant_id, SnapshotTrigger::DisputeRaised, &caller)?; metrics::increment(&env, MetricField::DisputesRaised, 1); + // Issue #699: notify subscribers watching this grant. + notification::emit_notification( + &env, + NotificationEvent::DisputeRaised, + &SubscriptionScope::PerGrant(grant_id), + reviewer_sla::milestone_sla_id(grant_id, milestone_idx) as u128, + ); Ok(()) } @@ -2420,6 +2452,10 @@ impl StellarGrantsContract { reentrancy::with_non_reentrant(&env, || { let grant = Storage::get_grant(&env, grant_id).ok_or(ContractError::GrantNotFound)?; escrow_multisig::execute_release(&env, grant_id, milestone_idx)?; + // The multisig-gated release just transferred funds for the + // milestones that were still `Approved` — transition them to + // `Paid` now that the payout is confirmed (issue #696). + governance::mark_milestones_paid(&env, grant_id, grant.total_milestones); let total_paid = Self::compute_total_paid_if_quorum_ready(&env, grant_id, grant.total_milestones)?; Self::complete_grant(&env, grant_id, total_paid, 0) @@ -4806,6 +4842,14 @@ fn apply_milestone_submission( data_export::set_last_updated(env, grant_id, env.ledger().timestamp()); Events::emit_milestone_submitted(env, grant_id, milestone_idx, description); + // Issue #699: notify subscribers watching this grant. + notification::emit_notification( + env, + NotificationEvent::MilestoneSubmitted, + &SubscriptionScope::PerGrant(grant_id), + reviewer_sla::milestone_sla_id(grant_id, milestone_idx) as u128, + ); + // Issue #726: capture a tamper-evident state snapshot on every submission. snapshot::capture(env, grant_id, SnapshotTrigger::MilestoneSubmission, actor)?; @@ -4918,6 +4962,16 @@ pub(crate) fn internal_grant_create( Events::emit_grant_created(env, grant_id, owner.clone(), title, total_amount); + // Issue #699: notify subscribers following this owner that a new grant + // was created. Scoped by contributor (not grant) since a subscriber + // can't know a grant's id before it exists. + notification::emit_notification( + env, + NotificationEvent::NewGrant, + &SubscriptionScope::PerContributor(owner.clone()), + grant_id as u128, + ); + audit::log( env, grant_id, diff --git a/contracts/contracts/stellar-grants/test_snapshots/test_dispute_raised_notification_emitted_to_grant_subscriber.1.json b/contracts/contracts/stellar-grants/test_snapshots/test_dispute_raised_notification_emitted_to_grant_subscriber.1.json new file mode 100644 index 00000000..f5549ecb --- /dev/null +++ b/contracts/contracts/stellar-grants/test_snapshots/test_dispute_raised_notification_emitted_to_grant_subscriber.1.json @@ -0,0 +1,2150 @@ +{ + "generators": { + "address": 5, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [ + [ + "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV", + { + "function": { + "contract_fn": { + "contract_address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", + "function_name": "set_admin", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "grant_create", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "string": "Dispute Grant" + }, + { + "string": "Testing notifications" + }, + { + "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG" + }, + { + "i128": "100" + }, + { + "i128": "10" + }, + { + "u32": 1 + }, + { + "vec": [] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "subscribe", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "u32": 4 + }, + { + "vec": [ + { + "symbol": "PerGrant" + }, + { + "u64": "1" + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "dispute_raise", + "args": [ + { + "u64": "1" + }, + { + "u32": 0 + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "string": "milestone quality dispute" + } + ] + } + }, + "sub_invocations": [] + } + ] + ] + ], + "ledger": { + "protocol_version": 25, + "sequence_number": 0, + "timestamp": 0, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "account": { + "account_id": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV", + "balance": "0", + "seq_num": "0", + "num_sub_entries": 0, + "inflation_dest": null, + "flags": 0, + "home_domain": "", + "thresholds": "01010101", + "signers": [], + "ext": "v0" + } + }, + "ext": "v0" + }, + "live_until": null + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Counter" + }, + { + "u64": "1" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 1 + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "vec": [ + { + "symbol": "Account" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "balance" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "locked" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "owner" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG" + } + }, + { + "key": { + "symbol": "total_deposited" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "total_released" + }, + "val": { + "i128": "0" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "vec": [ + { + "symbol": "State" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "approvals_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "lifecycle" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "mode" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "quorum_ready" + }, + "val": { + "bool": false + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "AuditLog" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "action" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "actor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "ledger_sequence" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "milestone_idx" + }, + "val": "void" + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": "0" + } + } + ] + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "Counter" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "u64": "1" + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "CurrentVersion" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "u32": 1 + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "Data" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Testing notifications" + } + }, + { + "key": { + "symbol": "escrow_balance" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "funders" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "milestone_amount" + }, + "val": { + "i128": "10" + } + }, + { + "key": { + "symbol": "milestones_paid_out" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "owner" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "reason" + }, + "val": "void" + }, + { + "key": { + "symbol": "require_compliance" + }, + "val": "void" + }, + { + "key": { + "symbol": "reviewers" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "title" + }, + "val": { + "string": "Dispute Grant" + } + }, + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG" + } + }, + { + "key": { + "symbol": "total_amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "total_milestones" + }, + "val": { + "u32": 1 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "GlobalOrder" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u64": "1" + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "OwnerIndex" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u64": "1" + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "SpecVersion" + }, + { + "u64": "1" + }, + { + "u32": 1 + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amendment_id" + }, + "val": "void" + }, + { + "key": { + "symbol": "created_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Testing notifications" + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "title" + }, + "val": { + "string": "Dispute Grant" + } + }, + { + "key": { + "symbol": "total_amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "total_milestones" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "version" + }, + "val": { + "u32": 1 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "StatusIndex" + }, + { + "u32": 1 + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u64": "1" + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "TokenIndex" + }, + { + "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u64": "1" + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "List" + }, + { + "u64": "1" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u32": 1 + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Metrics" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "last_updated" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "total_bounties_awarded" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_bounties_created" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_contributors_registered" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_disputes_raised" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "total_disputes_resolved" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_grants_active" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "total_grants_cancelled" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_grants_completed" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_grants_created" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "total_milestones_approved" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_milestones_paid" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_milestones_rejected" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Milestone" + }, + { + "vec": [ + { + "symbol": "Dispute" + }, + { + "u64": "1" + }, + { + "u32": 0 + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "arbiters" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "milestone_idx" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "raised_by" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "reason" + }, + "val": { + "string": "milestone quality dispute" + } + }, + { + "key": { + "symbol": "resolved_at" + }, + "val": "void" + }, + { + "key": { + "symbol": "status" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "votes_contributor" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "votes_funder" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "NotifSub" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "u32": 0 + }, + { + "u32": 0 + }, + { + "u128": "0" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "event" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "is_active" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "scope" + }, + "val": { + "vec": [ + { + "symbol": "PerGrant" + }, + { + "u64": "1" + } + ] + } + }, + { + "key": { + "symbol": "subscribed_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "subscriber" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + } + ] + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "NotifSubList" + }, + { + "u32": 4 + }, + { + "u32": 1 + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "One" + }, + { + "u64": "1" + }, + { + "u32": 1 + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "captured_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "captured_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "captured_by" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "escrow_balance" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "grant_status" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "id" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "milestone_states" + }, + "val": { + "vec": [ + { + "u32": 0 + } + ] + } + }, + { + "key": { + "symbol": "milestones_paid_out" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_milestones" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "trigger" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Provenance" + }, + { + "vec": [ + { + "symbol": "ByGrant" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u32": 1 + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Provenance" + }, + { + "vec": [ + { + "symbol": "Counter" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "u32": 1 + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Provenance" + }, + { + "vec": [ + { + "symbol": "Index" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u32": 1 + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Provenance" + }, + { + "vec": [ + { + "symbol": "Record" + }, + { + "u32": 1 + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "actor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "co_contributors" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "contribution_type" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "id" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "ledger_sequence" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "milestone_idx" + }, + "val": "void" + }, + { + "key": { + "symbol": "tags" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "RateLimit" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "u32": 0 + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "action" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "address" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "max_per_window" + }, + "val": { + "u32": 5 + } + }, + { + "key": { + "symbol": "window_duration" + }, + "val": { + "u64": "3600" + } + }, + { + "key": { + "symbol": "window_start" + }, + "val": { + "u64": "0" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "RateLimit" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "u32": 3 + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "action" + }, + "val": { + "u32": 3 + } + }, + { + "key": { + "symbol": "address" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "max_per_window" + }, + "val": { + "u32": 2 + } + }, + { + "key": { + "symbol": "window_duration" + }, + "val": { + "u64": "86400" + } + }, + { + "key": { + "symbol": "window_start" + }, + "val": { + "u64": "0" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Voting" + }, + { + "vec": [ + { + "symbol": "MultisigSigners" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": "4837995959683129791" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": "1033654523790656264" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": "stellar_asset", + "storage": [ + { + "key": { + "symbol": "METADATA" + }, + "val": { + "map": [ + { + "key": { + "symbol": "decimal" + }, + "val": { + "u32": 7 + } + }, + { + "key": { + "symbol": "name" + }, + "val": { + "string": "aaa:GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV" + } + }, + { + "key": { + "symbol": "symbol" + }, + "val": { + "string": "aaa" + } + } + ] + } + }, + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "vec": [ + { + "symbol": "AssetInfo" + } + ] + }, + "val": { + "vec": [ + { + "symbol": "AlphaNum4" + }, + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "aaa\\0" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "bytes": "0000000000000000000000000000000000000000000000000000000000000005" + } + } + ] + } + ] + } + } + ] + } + } + } + }, + "ext": "v0" + }, + "live_until": 120960 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 1000000 + } + ] + }, + "events": [ + { + "event": { + "ext": "v0", + "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "type_": "contract", + "body": { + "v0": { + "topics": [ + { + "symbol": "dispute_raised" + } + ], + "data": { + "map": [ + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "milestone_idx" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_by" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": "0" + } + } + ] + } + } + } + }, + "failed_call": false + }, + { + "event": { + "ext": "v0", + "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "type_": "contract", + "body": { + "v0": { + "topics": [ + { + "symbol": "notification" + }, + { + "u32": 4 + }, + { + "u32": 1 + }, + { + "u128": "1" + } + ], + "data": { + "u128": "4294967296" + } + } + } + }, + "failed_call": false + } + ] +} \ No newline at end of file diff --git a/contracts/contracts/stellar-grants/test_snapshots/test_milestone_lifecycle_notifications_emitted_to_grant_subscriber.1.json b/contracts/contracts/stellar-grants/test_snapshots/test_milestone_lifecycle_notifications_emitted_to_grant_subscriber.1.json new file mode 100644 index 00000000..f1323146 --- /dev/null +++ b/contracts/contracts/stellar-grants/test_snapshots/test_milestone_lifecycle_notifications_emitted_to_grant_subscriber.1.json @@ -0,0 +1,4248 @@ +{ + "generators": { + "address": 7, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [ + [ + "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV", + { + "function": { + "contract_fn": { + "contract_address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", + "function_name": "set_admin", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "grant_create", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "string": "Notify Grant" + }, + { + "string": "Testing notifications" + }, + { + "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG" + }, + { + "i128": "100" + }, + { + "i128": "10" + }, + { + "u32": 1 + }, + { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "subscribe", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "u32": 1 + }, + { + "vec": [ + { + "symbol": "PerGrant" + }, + { + "u64": "1" + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "subscribe", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "u32": 2 + }, + { + "vec": [ + { + "symbol": "PerGrant" + }, + { + "u64": "1" + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", + "function_name": "mint", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + }, + { + "i128": "100" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "grant_fund", + "args": [ + { + "u64": "1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + }, + { + "i128": "100" + } + ] + } + }, + "sub_invocations": [ + { + "function": { + "contract_fn": { + "contract_address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", + "function_name": "transfer", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + }, + { + "i128": "100" + } + ] + } + }, + "sub_invocations": [] + } + ] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "milestone_submit", + "args": [ + { + "u64": "1" + }, + { + "u32": 0 + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "string": "desc" + }, + { + "string": "proof" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "checklist_define_criteria", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "u64": "1" + }, + { + "u32": 0 + }, + { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Basic check" + } + }, + { + "key": { + "symbol": "idx" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "is_required" + }, + "val": { + "bool": false + } + } + ] + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "checklist_submit", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "u64": "1" + }, + { + "u32": 0 + }, + { + "vec": [ + "void" + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "checklist_review_criterion", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "u64": "1" + }, + { + "u32": 0 + }, + { + "u32": 0 + }, + { + "bool": true + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "milestone_vote", + "args": [ + { + "u64": "1" + }, + { + "u32": 0 + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "bool": true + }, + "void" + ] + } + }, + "sub_invocations": [] + } + ] + ], + [] + ], + "ledger": { + "protocol_version": 25, + "sequence_number": 0, + "timestamp": 259201, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "account": { + "account_id": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV", + "balance": "0", + "seq_num": "0", + "num_sub_entries": 0, + "inflation_dest": null, + "flags": 0, + "home_domain": "", + "thresholds": "01010101", + "signers": [], + "ext": "v0" + } + }, + "ext": "v0" + }, + "live_until": null + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Counter" + }, + { + "u64": "1" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 1 + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "vec": [ + { + "symbol": "Account" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "balance" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "locked" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "owner" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG" + } + }, + { + "key": { + "symbol": "total_deposited" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "total_released" + }, + "val": { + "i128": "0" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "vec": [ + { + "symbol": "FunderContrib" + }, + { + "u64": "1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "contributed" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "funder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + }, + { + "key": { + "symbol": "last_contribution_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "refunded" + }, + "val": { + "i128": "0" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "vec": [ + { + "symbol": "FundersList" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "vec": [ + { + "symbol": "State" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "approvals_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "lifecycle" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "mode" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "quorum_ready" + }, + "val": { + "bool": false + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "GlobalLastUpdated" + } + ] + }, + "durability": "persistent", + "val": { + "u64": "259201" + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "AuditLog" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "action" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "actor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "ledger_sequence" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "milestone_idx" + }, + "val": "void" + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": "0" + } + } + ] + }, + { + "map": [ + { + "key": { + "symbol": "action" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "actor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + }, + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "ledger_sequence" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "milestone_idx" + }, + "val": "void" + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": "0" + } + } + ] + }, + { + "map": [ + { + "key": { + "symbol": "action" + }, + "val": { + "u32": 2 + } + }, + { + "key": { + "symbol": "actor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "10" + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "ledger_sequence" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "milestone_idx" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": "0" + } + } + ] + }, + { + "map": [ + { + "key": { + "symbol": "action" + }, + "val": { + "u32": 3 + } + }, + { + "key": { + "symbol": "actor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "10" + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "ledger_sequence" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "milestone_idx" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": "259201" + } + } + ] + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "Counter" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "u64": "1" + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "CurrentVersion" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "u32": 1 + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "Data" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Testing notifications" + } + }, + { + "key": { + "symbol": "escrow_balance" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "funders" + }, + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "funder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + } + ] + } + ] + } + }, + { + "key": { + "symbol": "id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "milestone_amount" + }, + "val": { + "i128": "10" + } + }, + { + "key": { + "symbol": "milestones_paid_out" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "owner" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "reason" + }, + "val": "void" + }, + { + "key": { + "symbol": "require_compliance" + }, + "val": "void" + }, + { + "key": { + "symbol": "reviewers" + }, + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "title" + }, + "val": { + "string": "Notify Grant" + } + }, + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG" + } + }, + { + "key": { + "symbol": "total_amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "total_milestones" + }, + "val": { + "u32": 1 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "GlobalOrder" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u64": "1" + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "OwnerIndex" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u64": "1" + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "SpecVersion" + }, + { + "u64": "1" + }, + { + "u32": 1 + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amendment_id" + }, + "val": "void" + }, + { + "key": { + "symbol": "created_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Testing notifications" + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "title" + }, + "val": { + "string": "Notify Grant" + } + }, + { + "key": { + "symbol": "total_amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "total_milestones" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "version" + }, + "val": { + "u32": 1 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "StatusIndex" + }, + { + "u32": 1 + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u64": "1" + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "TokenIndex" + }, + { + "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u64": "1" + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "GrantLastUpdated" + }, + { + "u64": "1" + } + ] + }, + "durability": "persistent", + "val": { + "u64": "259201" + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "List" + }, + { + "u64": "1" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u32": 1 + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Metrics" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "last_updated" + }, + "val": { + "u64": "259201" + } + }, + { + "key": { + "symbol": "total_bounties_awarded" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_bounties_created" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_contributors_registered" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_disputes_raised" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_disputes_resolved" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_grants_active" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "total_grants_cancelled" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_grants_completed" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_grants_created" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "total_milestones_approved" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "total_milestones_paid" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_milestones_rejected" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Milestone" + }, + { + "vec": [ + { + "symbol": "Checklist" + }, + { + "u64": "1" + }, + { + "u32": 0 + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Basic check" + } + }, + { + "key": { + "symbol": "idx" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "is_required" + }, + "val": { + "bool": false + } + } + ] + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Milestone" + }, + { + "vec": [ + { + "symbol": "Data" + }, + { + "u64": "1" + }, + { + "u32": 0 + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "10" + } + }, + { + "key": { + "symbol": "approvals" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "deadline" + }, + "val": "void" + }, + { + "key": { + "symbol": "description" + }, + "val": { + "string": "desc" + } + }, + { + "key": { + "symbol": "idx" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "proof_url" + }, + "val": { + "string": "proof" + } + }, + { + "key": { + "symbol": "reasons" + }, + "val": { + "map": [] + } + }, + { + "key": { + "symbol": "rejections" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "reviewer_count_snapshot" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "state" + }, + "val": { + "u32": 2 + } + }, + { + "key": { + "symbol": "status_updated_at" + }, + "val": { + "u64": "259201" + } + }, + { + "key": { + "symbol": "submission_timestamp" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "votes" + }, + "val": { + "map": [ + { + "key": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + "val": { + "bool": true + } + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Milestone" + }, + { + "vec": [ + { + "symbol": "Nft" + }, + { + "u64": "1" + }, + { + "u32": 0 + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "is_transferable" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "metadata" + }, + "val": { + "map": [ + { + "key": { + "symbol": "attributes" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "description" + }, + "val": { + "string": "desc" + } + }, + { + "key": { + "symbol": "grant_title" + }, + "val": { + "string": "Notify Grant" + } + }, + { + "key": { + "symbol": "image_uri" + }, + "val": { + "string": "" + } + }, + { + "key": { + "symbol": "name" + }, + "val": { + "string": "desc" + } + } + ] + } + }, + { + "key": { + "symbol": "milestone_idx" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "minted_at" + }, + "val": { + "u64": "259201" + } + }, + { + "key": { + "symbol": "minted_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "owner" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "proof_hash" + }, + "val": { + "bytes": "22677389396e5d111669ff6799f8e159087df6df4fdcfc8852627c2950ee9013" + } + }, + { + "key": { + "symbol": "token_id" + }, + "val": { + "u32": 1 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Milestone" + }, + { + "vec": [ + { + "symbol": "NftCounter" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "u32": 1 + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Milestone" + }, + { + "vec": [ + { + "symbol": "NftTokenIndex" + }, + { + "u32": 1 + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u64": "1" + }, + { + "u32": 0 + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Milestone" + }, + { + "vec": [ + { + "symbol": "NftsByOwner" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u32": 1 + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Milestone" + }, + { + "vec": [ + { + "symbol": "ReputationApplied" + }, + { + "u64": "1" + }, + { + "u32": 0 + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "bool": true + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Milestone" + }, + { + "vec": [ + { + "symbol": "Submission" + }, + { + "u64": "1" + }, + { + "u32": 0 + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "all_required_met" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "criteria" + }, + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Basic check" + } + }, + { + "key": { + "symbol": "idx" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "is_required" + }, + "val": { + "bool": false + } + } + ] + } + ] + } + }, + { + "key": { + "symbol": "evidence_urls" + }, + "val": { + "vec": [ + "void" + ] + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "milestone_idx" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "statuses" + }, + "val": { + "vec": [ + { + "u32": 2 + } + ] + } + }, + { + "key": { + "symbol": "submitted_at" + }, + "val": { + "u64": "259201" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "NotifSub" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "u32": 0 + }, + { + "u32": 0 + }, + { + "u128": "0" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "event" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "is_active" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "scope" + }, + "val": { + "vec": [ + { + "symbol": "PerGrant" + }, + { + "u64": "1" + } + ] + } + }, + { + "key": { + "symbol": "subscribed_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "subscriber" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + } + ] + }, + { + "map": [ + { + "key": { + "symbol": "event" + }, + "val": { + "u32": 2 + } + }, + { + "key": { + "symbol": "is_active" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "scope" + }, + "val": { + "vec": [ + { + "symbol": "PerGrant" + }, + { + "u64": "1" + } + ] + } + }, + { + "key": { + "symbol": "subscribed_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "subscriber" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + } + ] + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "NotifSubList" + }, + { + "u32": 1 + }, + { + "u32": 1 + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "NotifSubList" + }, + { + "u32": 2 + }, + { + "u32": 1 + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "One" + }, + { + "u64": "1" + }, + { + "u32": 1 + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "captured_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "captured_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "captured_by" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "escrow_balance" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "grant_status" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "id" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "milestone_states" + }, + "val": { + "vec": [ + { + "u32": 1 + } + ] + } + }, + { + "key": { + "symbol": "milestones_paid_out" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_milestones" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "trigger" + }, + "val": { + "u32": 2 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Provenance" + }, + { + "vec": [ + { + "symbol": "ByGrant" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u32": 1 + }, + { + "u32": 2 + }, + { + "u32": 3 + }, + { + "u32": 4 + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Provenance" + }, + { + "vec": [ + { + "symbol": "Counter" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "u32": 4 + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Provenance" + }, + { + "vec": [ + { + "symbol": "Index" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u32": 1 + }, + { + "u32": 3 + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Provenance" + }, + { + "vec": [ + { + "symbol": "Index" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u32": 4 + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Provenance" + }, + { + "vec": [ + { + "symbol": "Index" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u32": 2 + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Provenance" + }, + { + "vec": [ + { + "symbol": "Record" + }, + { + "u32": 1 + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "actor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "co_contributors" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "contribution_type" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "id" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "ledger_sequence" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "milestone_idx" + }, + "val": "void" + }, + { + "key": { + "symbol": "tags" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Provenance" + }, + { + "vec": [ + { + "symbol": "Record" + }, + { + "u32": 2 + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "actor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + }, + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "co_contributors" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "contribution_type" + }, + "val": { + "u32": 3 + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "id" + }, + "val": { + "u32": 2 + } + }, + { + "key": { + "symbol": "ledger_sequence" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "milestone_idx" + }, + "val": "void" + }, + { + "key": { + "symbol": "tags" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Provenance" + }, + { + "vec": [ + { + "symbol": "Record" + }, + { + "u32": 3 + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "actor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "10" + } + }, + { + "key": { + "symbol": "co_contributors" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "contribution_type" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "id" + }, + "val": { + "u32": 3 + } + }, + { + "key": { + "symbol": "ledger_sequence" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "milestone_idx" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "tags" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Provenance" + }, + { + "vec": [ + { + "symbol": "Record" + }, + { + "u32": 4 + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "actor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "amount" + }, + "val": "void" + }, + { + "key": { + "symbol": "co_contributors" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "contribution_type" + }, + "val": { + "u32": 2 + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "id" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "ledger_sequence" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "milestone_idx" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "tags" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": "259201" + } + }, + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "RateLimit" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "u32": 0 + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "action" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "address" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "max_per_window" + }, + "val": { + "u32": 5 + } + }, + { + "key": { + "symbol": "window_duration" + }, + "val": { + "u64": "3600" + } + }, + { + "key": { + "symbol": "window_start" + }, + "val": { + "u64": "0" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "RateLimit" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "u32": 1 + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "action" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "address" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "max_per_window" + }, + "val": { + "u32": 10 + } + }, + { + "key": { + "symbol": "window_duration" + }, + "val": { + "u64": "3600" + } + }, + { + "key": { + "symbol": "window_start" + }, + "val": { + "u64": "0" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ReviewerReward" + }, + { + "vec": [ + { + "symbol": "Participation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "alignment_score" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "fast_votes" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "last_vote_at" + }, + "val": { + "u64": "259201" + } + }, + { + "key": { + "symbol": "reviewer" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "votes_cast" + }, + "val": { + "u32": 1 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "TokenMetrics" + }, + { + "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG" + } + }, + { + "key": { + "symbol": "total_locked" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "total_paid_out" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "total_refunded" + }, + "val": { + "i128": "0" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "User" + }, + { + "vec": [ + { + "symbol": "FunderGrants" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u64": "1" + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "User" + }, + { + "vec": [ + { + "symbol": "GrantIds" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u64": "1" + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "User" + }, + { + "vec": [ + { + "symbol": "ReviewerRep" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "u32": 2 + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Voting" + }, + { + "vec": [ + { + "symbol": "MultisigSigners" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": "5806905060045992000" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": "6277191135259896685" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": "8370022561469687789" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": "1033654523790656264" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": "4837995959683129791" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "2032731177588607455" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": "115220454072064130" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": "1194852393571756375" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM", + "key": { + "ledger_key_nonce": { + "nonce": "4270020994084947596" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "authorized" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "clawback" + }, + "val": { + "bool": false + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 518400 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "authorized" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "clawback" + }, + "val": { + "bool": false + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 518400 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": "stellar_asset", + "storage": [ + { + "key": { + "symbol": "METADATA" + }, + "val": { + "map": [ + { + "key": { + "symbol": "decimal" + }, + "val": { + "u32": 7 + } + }, + { + "key": { + "symbol": "name" + }, + "val": { + "string": "aaa:GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV" + } + }, + { + "key": { + "symbol": "symbol" + }, + "val": { + "string": "aaa" + } + } + ] + } + }, + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "vec": [ + { + "symbol": "AssetInfo" + } + ] + }, + "val": { + "vec": [ + { + "symbol": "AlphaNum4" + }, + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "aaa\\0" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "bytes": "0000000000000000000000000000000000000000000000000000000000000005" + } + } + ] + } + ] + } + } + ] + } + } + } + }, + "ext": "v0" + }, + "live_until": 120960 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 1000000 + } + ] + }, + "events": [] +} \ No newline at end of file diff --git a/contracts/contracts/stellar-grants/test_snapshots/test_new_grant_notification_emitted_to_contributor_subscriber.1.json b/contracts/contracts/stellar-grants/test_snapshots/test_new_grant_notification_emitted_to_contributor_subscriber.1.json new file mode 100644 index 00000000..5b46df54 --- /dev/null +++ b/contracts/contracts/stellar-grants/test_snapshots/test_new_grant_notification_emitted_to_contributor_subscriber.1.json @@ -0,0 +1,1735 @@ +{ + "generators": { + "address": 5, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [ + [ + "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV", + { + "function": { + "contract_fn": { + "contract_address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", + "function_name": "set_admin", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "subscribe", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "u32": 0 + }, + { + "vec": [ + { + "symbol": "PerContributor" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "grant_create", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "string": "Notify Grant" + }, + { + "string": "Testing notifications" + }, + { + "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG" + }, + { + "i128": "100" + }, + { + "i128": "10" + }, + { + "u32": 1 + }, + { + "vec": [] + } + ] + } + }, + "sub_invocations": [] + } + ] + ] + ], + "ledger": { + "protocol_version": 25, + "sequence_number": 0, + "timestamp": 0, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "account": { + "account_id": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV", + "balance": "0", + "seq_num": "0", + "num_sub_entries": 0, + "inflation_dest": null, + "flags": 0, + "home_domain": "", + "thresholds": "01010101", + "signers": [], + "ext": "v0" + } + }, + "ext": "v0" + }, + "live_until": null + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "vec": [ + { + "symbol": "Account" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "balance" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "locked" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "owner" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG" + } + }, + { + "key": { + "symbol": "total_deposited" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "total_released" + }, + "val": { + "i128": "0" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "vec": [ + { + "symbol": "State" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "approvals_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "lifecycle" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "mode" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "quorum_ready" + }, + "val": { + "bool": false + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "AuditLog" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "action" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "actor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "ledger_sequence" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "milestone_idx" + }, + "val": "void" + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": "0" + } + } + ] + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "Counter" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "u64": "1" + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "CurrentVersion" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "u32": 1 + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "Data" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Testing notifications" + } + }, + { + "key": { + "symbol": "escrow_balance" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "funders" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "milestone_amount" + }, + "val": { + "i128": "10" + } + }, + { + "key": { + "symbol": "milestones_paid_out" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "owner" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "reason" + }, + "val": "void" + }, + { + "key": { + "symbol": "require_compliance" + }, + "val": "void" + }, + { + "key": { + "symbol": "reviewers" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "title" + }, + "val": { + "string": "Notify Grant" + } + }, + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG" + } + }, + { + "key": { + "symbol": "total_amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "total_milestones" + }, + "val": { + "u32": 1 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "GlobalOrder" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u64": "1" + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "OwnerIndex" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u64": "1" + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "SpecVersion" + }, + { + "u64": "1" + }, + { + "u32": 1 + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amendment_id" + }, + "val": "void" + }, + { + "key": { + "symbol": "created_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Testing notifications" + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "title" + }, + "val": { + "string": "Notify Grant" + } + }, + { + "key": { + "symbol": "total_amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "total_milestones" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "version" + }, + "val": { + "u32": 1 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "StatusIndex" + }, + { + "u32": 1 + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u64": "1" + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "TokenIndex" + }, + { + "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u64": "1" + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Metrics" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "last_updated" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "total_bounties_awarded" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_bounties_created" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_contributors_registered" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_disputes_raised" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_disputes_resolved" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_grants_active" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "total_grants_cancelled" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_grants_completed" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_grants_created" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "total_milestones_approved" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_milestones_paid" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_milestones_rejected" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "NotifSub" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "u32": 0 + }, + { + "u32": 0 + }, + { + "u128": "0" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "event" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "is_active" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "scope" + }, + "val": { + "vec": [ + { + "symbol": "PerContributor" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + }, + { + "key": { + "symbol": "subscribed_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "subscriber" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + } + ] + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "NotifSubList" + }, + { + "u32": 0 + }, + { + "u32": 2 + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Provenance" + }, + { + "vec": [ + { + "symbol": "ByGrant" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u32": 1 + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Provenance" + }, + { + "vec": [ + { + "symbol": "Counter" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "u32": 1 + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Provenance" + }, + { + "vec": [ + { + "symbol": "Index" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u32": 1 + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Provenance" + }, + { + "vec": [ + { + "symbol": "Record" + }, + { + "u32": 1 + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "actor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "co_contributors" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "contribution_type" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "id" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "ledger_sequence" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "milestone_idx" + }, + "val": "void" + }, + { + "key": { + "symbol": "tags" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "RateLimit" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "u32": 0 + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "action" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "address" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "max_per_window" + }, + "val": { + "u32": 5 + } + }, + { + "key": { + "symbol": "window_duration" + }, + "val": { + "u64": "3600" + } + }, + { + "key": { + "symbol": "window_start" + }, + "val": { + "u64": "0" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Voting" + }, + { + "vec": [ + { + "symbol": "MultisigSigners" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": "1033654523790656264" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": "stellar_asset", + "storage": [ + { + "key": { + "symbol": "METADATA" + }, + "val": { + "map": [ + { + "key": { + "symbol": "decimal" + }, + "val": { + "u32": 7 + } + }, + { + "key": { + "symbol": "name" + }, + "val": { + "string": "aaa:GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV" + } + }, + { + "key": { + "symbol": "symbol" + }, + "val": { + "string": "aaa" + } + } + ] + } + }, + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "vec": [ + { + "symbol": "AssetInfo" + } + ] + }, + "val": { + "vec": [ + { + "symbol": "AlphaNum4" + }, + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "aaa\\0" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "bytes": "0000000000000000000000000000000000000000000000000000000000000005" + } + } + ] + } + ] + } + } + ] + } + } + } + }, + "ext": "v0" + }, + "live_until": 120960 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 1000000 + } + ] + }, + "events": [ + { + "event": { + "ext": "v0", + "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "type_": "contract", + "body": { + "v0": { + "topics": [ + { + "symbol": "grant_created" + } + ], + "data": { + "map": [ + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "owner" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "title" + }, + "val": { + "string": "Notify Grant" + } + }, + { + "key": { + "symbol": "total_amount" + }, + "val": { + "i128": "100" + } + } + ] + } + } + } + }, + "failed_call": false + }, + { + "event": { + "ext": "v0", + "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "type_": "contract", + "body": { + "v0": { + "topics": [ + { + "symbol": "notification" + }, + { + "u32": 0 + }, + { + "u32": 2 + }, + { + "u128": "0" + } + ], + "data": { + "u128": "1" + } + } + } + }, + "failed_call": false + } + ] +} \ No newline at end of file diff --git a/contracts/contracts/stellar-grants/test_snapshots/test_paid_milestone_reflects_in_portfolio_earnings.1.json b/contracts/contracts/stellar-grants/test_snapshots/test_paid_milestone_reflects_in_portfolio_earnings.1.json new file mode 100644 index 00000000..6887eae9 --- /dev/null +++ b/contracts/contracts/stellar-grants/test_snapshots/test_paid_milestone_reflects_in_portfolio_earnings.1.json @@ -0,0 +1,4020 @@ +{ + "generators": { + "address": 6, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [ + [ + "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJXFF", + { + "function": { + "contract_fn": { + "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "function_name": "set_admin", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "grant_create", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "string": "Paid Milestone Grant" + }, + { + "string": "Testing milestone payout state" + }, + { + "address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN" + }, + { + "i128": "100" + }, + { + "i128": "100" + }, + { + "u32": 1 + }, + { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "function_name": "mint", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "i128": "100" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "grant_fund", + "args": [ + { + "u64": "1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "i128": "100" + } + ] + } + }, + "sub_invocations": [ + { + "function": { + "contract_fn": { + "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "function_name": "transfer", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + }, + { + "i128": "100" + } + ] + } + }, + "sub_invocations": [] + } + ] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "milestone_submit", + "args": [ + { + "u64": "1" + }, + { + "u32": 0 + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "string": "desc" + }, + { + "string": "proof" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "checklist_define_criteria", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "u64": "1" + }, + { + "u32": 0 + }, + { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Basic check" + } + }, + { + "key": { + "symbol": "idx" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "is_required" + }, + "val": { + "bool": false + } + } + ] + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "checklist_submit", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "u64": "1" + }, + { + "u32": 0 + }, + { + "vec": [ + "void" + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "checklist_review_criterion", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "u64": "1" + }, + { + "u32": 0 + }, + { + "u32": 0 + }, + { + "bool": true + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "milestone_vote", + "args": [ + { + "u64": "1" + }, + { + "u32": 0 + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bool": true + }, + "void" + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [], + [], + [], + [] + ], + "ledger": { + "protocol_version": 25, + "sequence_number": 0, + "timestamp": 259201, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "account": { + "account_id": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJXFF", + "balance": "0", + "seq_num": "0", + "num_sub_entries": 0, + "inflation_dest": null, + "flags": 0, + "home_domain": "", + "thresholds": "01010101", + "signers": [], + "ext": "v0" + } + }, + "ext": "v0" + }, + "live_until": null + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJXFF", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Counter" + }, + { + "u64": "1" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 1 + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "vec": [ + { + "symbol": "Account" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "balance" + }, + "val": { + "i128": "1" + } + }, + { + "key": { + "symbol": "locked" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "owner" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN" + } + }, + { + "key": { + "symbol": "total_deposited" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "total_released" + }, + "val": { + "i128": "99" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "vec": [ + { + "symbol": "FunderContrib" + }, + { + "u64": "1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "contributed" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "funder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "last_contribution_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "refunded" + }, + "val": { + "i128": "0" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "vec": [ + { + "symbol": "FundersList" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "vec": [ + { + "symbol": "State" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "approvals_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "lifecycle" + }, + "val": { + "u32": 3 + } + }, + { + "key": { + "symbol": "mode" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "quorum_ready" + }, + "val": { + "bool": true + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FeesCollected" + }, + { + "address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "1" + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "GlobalLastUpdated" + } + ] + }, + "durability": "persistent", + "val": { + "u64": "259201" + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "AuditLog" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "action" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "actor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "ledger_sequence" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "milestone_idx" + }, + "val": "void" + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": "0" + } + } + ] + }, + { + "map": [ + { + "key": { + "symbol": "action" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "actor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "ledger_sequence" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "milestone_idx" + }, + "val": "void" + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": "0" + } + } + ] + }, + { + "map": [ + { + "key": { + "symbol": "action" + }, + "val": { + "u32": 2 + } + }, + { + "key": { + "symbol": "actor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "ledger_sequence" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "milestone_idx" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": "0" + } + } + ] + }, + { + "map": [ + { + "key": { + "symbol": "action" + }, + "val": { + "u32": 3 + } + }, + { + "key": { + "symbol": "actor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + }, + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "ledger_sequence" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "milestone_idx" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": "259201" + } + } + ] + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "Counter" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "u64": "1" + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "CurrentVersion" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "u32": 1 + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "Data" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Testing milestone payout state" + } + }, + { + "key": { + "symbol": "escrow_balance" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "funders" + }, + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "funder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + } + ] + } + ] + } + }, + { + "key": { + "symbol": "id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "milestone_amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "milestones_paid_out" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "owner" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "reason" + }, + "val": "void" + }, + { + "key": { + "symbol": "require_compliance" + }, + "val": "void" + }, + { + "key": { + "symbol": "reviewers" + }, + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "u32": 3 + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": "259201" + } + }, + { + "key": { + "symbol": "title" + }, + "val": { + "string": "Paid Milestone Grant" + } + }, + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN" + } + }, + { + "key": { + "symbol": "total_amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "total_milestones" + }, + "val": { + "u32": 1 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "GlobalOrder" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u64": "1" + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "OwnerIndex" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u64": "1" + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "SpecVersion" + }, + { + "u64": "1" + }, + { + "u32": 1 + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amendment_id" + }, + "val": "void" + }, + { + "key": { + "symbol": "created_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Testing milestone payout state" + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "title" + }, + "val": { + "string": "Paid Milestone Grant" + } + }, + { + "key": { + "symbol": "total_amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "total_milestones" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "version" + }, + "val": { + "u32": 1 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "StatusIndex" + }, + { + "u32": 1 + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u64": "1" + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Grant" + }, + { + "vec": [ + { + "symbol": "TokenIndex" + }, + { + "address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u64": "1" + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "GrantLastUpdated" + }, + { + "u64": "1" + } + ] + }, + "durability": "persistent", + "val": { + "u64": "259201" + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "List" + }, + { + "u64": "1" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u32": 1 + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Metrics" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "last_updated" + }, + "val": { + "u64": "259201" + } + }, + { + "key": { + "symbol": "total_bounties_awarded" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_bounties_created" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_contributors_registered" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_disputes_raised" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_disputes_resolved" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_grants_active" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_grants_cancelled" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_grants_completed" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "total_grants_created" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "total_milestones_approved" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "total_milestones_paid" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_milestones_rejected" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Milestone" + }, + { + "vec": [ + { + "symbol": "Checklist" + }, + { + "u64": "1" + }, + { + "u32": 0 + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Basic check" + } + }, + { + "key": { + "symbol": "idx" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "is_required" + }, + "val": { + "bool": false + } + } + ] + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Milestone" + }, + { + "vec": [ + { + "symbol": "Data" + }, + { + "u64": "1" + }, + { + "u32": 0 + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "approvals" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "deadline" + }, + "val": "void" + }, + { + "key": { + "symbol": "description" + }, + "val": { + "string": "desc" + } + }, + { + "key": { + "symbol": "idx" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "proof_url" + }, + "val": { + "string": "proof" + } + }, + { + "key": { + "symbol": "reasons" + }, + "val": { + "map": [] + } + }, + { + "key": { + "symbol": "rejections" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "reviewer_count_snapshot" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "state" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "status_updated_at" + }, + "val": { + "u64": "259201" + } + }, + { + "key": { + "symbol": "submission_timestamp" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "votes" + }, + "val": { + "map": [ + { + "key": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + "val": { + "bool": true + } + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Milestone" + }, + { + "vec": [ + { + "symbol": "Nft" + }, + { + "u64": "1" + }, + { + "u32": 0 + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "is_transferable" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "metadata" + }, + "val": { + "map": [ + { + "key": { + "symbol": "attributes" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "description" + }, + "val": { + "string": "desc" + } + }, + { + "key": { + "symbol": "grant_title" + }, + "val": { + "string": "Paid Milestone Grant" + } + }, + { + "key": { + "symbol": "image_uri" + }, + "val": { + "string": "" + } + }, + { + "key": { + "symbol": "name" + }, + "val": { + "string": "desc" + } + } + ] + } + }, + { + "key": { + "symbol": "milestone_idx" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "minted_at" + }, + "val": { + "u64": "259201" + } + }, + { + "key": { + "symbol": "minted_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "owner" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "proof_hash" + }, + "val": { + "bytes": "22677389396e5d111669ff6799f8e159087df6df4fdcfc8852627c2950ee9013" + } + }, + { + "key": { + "symbol": "token_id" + }, + "val": { + "u32": 1 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Milestone" + }, + { + "vec": [ + { + "symbol": "NftCounter" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "u32": 1 + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Milestone" + }, + { + "vec": [ + { + "symbol": "NftTokenIndex" + }, + { + "u32": 1 + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u64": "1" + }, + { + "u32": 0 + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Milestone" + }, + { + "vec": [ + { + "symbol": "NftsByOwner" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u32": 1 + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Milestone" + }, + { + "vec": [ + { + "symbol": "ReputationApplied" + }, + { + "u64": "1" + }, + { + "u32": 0 + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "bool": true + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Milestone" + }, + { + "vec": [ + { + "symbol": "Submission" + }, + { + "u64": "1" + }, + { + "u32": 0 + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "all_required_met" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "criteria" + }, + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Basic check" + } + }, + { + "key": { + "symbol": "idx" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "is_required" + }, + "val": { + "bool": false + } + } + ] + } + ] + } + }, + { + "key": { + "symbol": "evidence_urls" + }, + "val": { + "vec": [ + "void" + ] + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "milestone_idx" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "statuses" + }, + "val": { + "vec": [ + { + "u32": 2 + } + ] + } + }, + { + "key": { + "symbol": "submitted_at" + }, + "val": { + "u64": "259201" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "One" + }, + { + "u64": "1" + }, + { + "u32": 1 + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "captured_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "captured_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "captured_by" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "escrow_balance" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "grant_status" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "id" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "milestone_states" + }, + "val": { + "vec": [ + { + "u32": 1 + } + ] + } + }, + { + "key": { + "symbol": "milestones_paid_out" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "total_milestones" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "trigger" + }, + "val": { + "u32": 2 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Provenance" + }, + { + "vec": [ + { + "symbol": "ByGrant" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u32": 1 + }, + { + "u32": 2 + }, + { + "u32": 3 + }, + { + "u32": 4 + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Provenance" + }, + { + "vec": [ + { + "symbol": "Counter" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "u32": 4 + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Provenance" + }, + { + "vec": [ + { + "symbol": "Index" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u32": 1 + }, + { + "u32": 3 + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Provenance" + }, + { + "vec": [ + { + "symbol": "Index" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u32": 4 + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Provenance" + }, + { + "vec": [ + { + "symbol": "Index" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u32": 2 + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Provenance" + }, + { + "vec": [ + { + "symbol": "Record" + }, + { + "u32": 1 + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "actor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "co_contributors" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "contribution_type" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "id" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "ledger_sequence" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "milestone_idx" + }, + "val": "void" + }, + { + "key": { + "symbol": "tags" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Provenance" + }, + { + "vec": [ + { + "symbol": "Record" + }, + { + "u32": 2 + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "actor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "co_contributors" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "contribution_type" + }, + "val": { + "u32": 3 + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "id" + }, + "val": { + "u32": 2 + } + }, + { + "key": { + "symbol": "ledger_sequence" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "milestone_idx" + }, + "val": "void" + }, + { + "key": { + "symbol": "tags" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Provenance" + }, + { + "vec": [ + { + "symbol": "Record" + }, + { + "u32": 3 + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "actor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "co_contributors" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "contribution_type" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "id" + }, + "val": { + "u32": 3 + } + }, + { + "key": { + "symbol": "ledger_sequence" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "milestone_idx" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "tags" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Provenance" + }, + { + "vec": [ + { + "symbol": "Record" + }, + { + "u32": 4 + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "actor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + }, + { + "key": { + "symbol": "amount" + }, + "val": "void" + }, + { + "key": { + "symbol": "co_contributors" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "contribution_type" + }, + "val": { + "u32": 2 + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "id" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "ledger_sequence" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "milestone_idx" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "tags" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": "259201" + } + }, + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "RateLimit" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "u32": 0 + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "action" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "address" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "max_per_window" + }, + "val": { + "u32": 5 + } + }, + { + "key": { + "symbol": "window_duration" + }, + "val": { + "u64": "3600" + } + }, + { + "key": { + "symbol": "window_start" + }, + "val": { + "u64": "0" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "RateLimit" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "u32": 1 + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "action" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "address" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "max_per_window" + }, + "val": { + "u32": 10 + } + }, + { + "key": { + "symbol": "window_duration" + }, + "val": { + "u64": "3600" + } + }, + { + "key": { + "symbol": "window_start" + }, + "val": { + "u64": "0" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ReviewerReward" + }, + { + "vec": [ + { + "symbol": "Participation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "alignment_score" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "fast_votes" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "grant_id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "last_vote_at" + }, + "val": { + "u64": "259201" + } + }, + { + "key": { + "symbol": "reviewer" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + }, + { + "key": { + "symbol": "votes_cast" + }, + "val": { + "u32": 1 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "TokenMetrics" + }, + { + "address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN" + } + }, + { + "key": { + "symbol": "total_locked" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "total_paid_out" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "total_refunded" + }, + "val": { + "i128": "0" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "User" + }, + { + "vec": [ + { + "symbol": "FunderGrants" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u64": "1" + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "User" + }, + { + "vec": [ + { + "symbol": "GrantIds" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "u64": "1" + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "User" + }, + { + "vec": [ + { + "symbol": "ReviewerRep" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "u32": 2 + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Voting" + }, + { + "vec": [ + { + "symbol": "MultisigSigners" + }, + { + "u64": "1" + } + ] + } + ] + }, + "durability": "persistent", + "val": { + "vec": [] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + "live_until": 1000000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": "2032731177588607455" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": "4270020994084947596" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": "8370022561469687789" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": "1033654523790656264" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": "5806905060045992000" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": "6277191135259896685" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": "4837995959683129791" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "1" + } + }, + { + "key": { + "symbol": "authorized" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "clawback" + }, + "val": { + "bool": false + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 518400 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "99" + } + }, + { + "key": { + "symbol": "authorized" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "clawback" + }, + "val": { + "bool": false + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 518400 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "authorized" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "clawback" + }, + "val": { + "bool": false + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 518400 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": "stellar_asset", + "storage": [ + { + "key": { + "symbol": "METADATA" + }, + "val": { + "map": [ + { + "key": { + "symbol": "decimal" + }, + "val": { + "u32": 7 + } + }, + { + "key": { + "symbol": "name" + }, + "val": { + "string": "aaa:GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJXFF" + } + }, + { + "key": { + "symbol": "symbol" + }, + "val": { + "string": "aaa" + } + } + ] + } + }, + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "vec": [ + { + "symbol": "AssetInfo" + } + ] + }, + "val": { + "vec": [ + { + "symbol": "AlphaNum4" + }, + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "aaa\\0" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "bytes": "0000000000000000000000000000000000000000000000000000000000000004" + } + } + ] + } + ] + } + } + ] + } + } + } + }, + "ext": "v0" + }, + "live_until": 120960 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 1000000 + } + ] + }, + "events": [] +} \ No newline at end of file diff --git a/contracts/contracts/stellar-grants/tests/test_milestone_paid_earnings.rs b/contracts/contracts/stellar-grants/tests/test_milestone_paid_earnings.rs new file mode 100644 index 00000000..83777dc4 --- /dev/null +++ b/contracts/contracts/stellar-grants/tests/test_milestone_paid_earnings.rs @@ -0,0 +1,122 @@ +use soroban_sdk::testutils::Events; +use soroban_sdk::{ + testutils::{Address as TestAddress, Ledger}, + token, Address, Env, String, Vec, +}; +use stellar_grants::{AcceptanceCriteria, StellarGrantsContractClient}; + +const COMMUNITY_REVIEW_PERIOD: u64 = 3 * 24 * 60 * 60; + +/// Issue #696: a milestone paid out through the normal `grant_complete` -> +/// `finalize_grant_release` flow must transition to `MilestoneState::Paid`, +/// not stay stuck at `Approved` — otherwise the contributor's portfolio +/// earnings and the grant's paid-out totals both silently report zero. +#[test] +fn test_paid_milestone_reflects_in_portfolio_earnings() { + let env = Env::default(); + let contract_id = env.register_contract(None, stellar_grants::StellarGrantsContract); + let client = StellarGrantsContractClient::new(&env, &contract_id); + let owner =
::generate(&env); + let token_admin_addr =
::generate(&env); + let token = env + .register_stellar_asset_contract_v2(token_admin_addr.clone()) + .address(); + let token_admin = token::StellarAssetClient::new(&env, &token); + let mut reviewers = Vec::new(&env); + let reviewer =
::generate(&env); + reviewers.push_back(reviewer.clone()); + env.mock_all_auths(); + + let grant_id = client.grant_create( + &owner, + &String::from_str(&env, "Paid Milestone Grant"), + &String::from_str(&env, "Testing milestone payout state"), + &token, + &100, + &100, + &1, + &reviewers, + ); + + let funder =
::generate(&env); + token_admin.mint(&funder, &100); + client.grant_fund(&grant_id, &funder, &100); + + client.milestone_submit( + &grant_id, + &0, + &owner, + &String::from_str(&env, "desc"), + &String::from_str(&env, "proof"), + ); + + let now = env.ledger().timestamp(); + env.ledger() + .set_timestamp(now + COMMUNITY_REVIEW_PERIOD + 1); + + // milestone_vote(approve=true) requires an already-satisfied checklist + // (unrelated to issue #696) — a milestone with no checklist attached + // otherwise can never be approved at all. Attach a single optional + // criterion and review it so `all_required_met` flips to true. + let mut criteria = Vec::new(&env); + criteria.push_back(AcceptanceCriteria { + idx: 0, + description: String::from_str(&env, "Basic check"), + is_required: false, + }); + client.checklist_define_criteria(&owner, &grant_id, &0, &criteria); + let mut evidence = Vec::new(&env); + evidence.push_back(None); + client.checklist_submit(&owner, &grant_id, &0, &evidence); + client.checklist_review_criterion(&reviewer, &grant_id, &0, &0, &true); + + client.milestone_vote(&grant_id, &0, &reviewer, &true, &None); + + // Before grant_complete runs the real payout, portfolio earnings must + // still be zero — Approved alone does not mean paid. + let earnings_before = client.portfolio_earnings_by_token(&owner); + assert_eq!( + earnings_before.len(), + 0, + "earnings should be zero before payout actually executes" + ); + + client.grant_complete(&grant_id); + + // `env.events().all()` only reflects the most recent top-level + // invocation in this soroban-sdk version, so the emitted-event check + // must happen right after the call that publishes it and before any + // further client calls. + let events = env.events().all(); + let mut found_milestone_paid = false; + for e in events.events() { + let s = format!("{:?}", e); + if s.contains("milestone_paid") { + found_milestone_paid = true; + } + } + assert!(found_milestone_paid, "milestone_paid event not found"); + + let milestones = client.export_milestones(&grant_id); + let milestone = milestones.get(0).unwrap(); + assert_eq!( + milestone.state, + stellar_grants::MilestoneState::Paid, + "milestone must transition to Paid once the real payout succeeds" + ); + + let earnings_after = client.portfolio_earnings_by_token(&owner); + assert_eq!(earnings_after.len(), 1); + let (earned_token, amount) = earnings_after.get(0).unwrap(); + assert_eq!(earned_token, token); + assert_eq!(amount, 100); + + // The paid-out total exported for the grant must reflect the payout too. + let exported = client.export_grants(&0, &10, &None); + let exported_grant = exported + .items + .iter() + .find(|g| g.id == grant_id) + .expect("grant should be present in export"); + assert_eq!(exported_grant.paid_out, 100); +} diff --git a/contracts/contracts/stellar-grants/tests/test_notification_emission.rs b/contracts/contracts/stellar-grants/tests/test_notification_emission.rs new file mode 100644 index 00000000..0a806b78 --- /dev/null +++ b/contracts/contracts/stellar-grants/tests/test_notification_emission.rs @@ -0,0 +1,206 @@ +use soroban_sdk::testutils::Events; +use soroban_sdk::{ + testutils::{Address as TestAddress, Ledger}, + token, Address, Env, String, Vec, +}; +use stellar_grants::{ + AcceptanceCriteria, NotificationEvent, StellarGrantsContractClient, SubscriptionScope, +}; + +const COMMUNITY_REVIEW_PERIOD: u64 = 3 * 24 * 60 * 60; + +fn count_notification_events(env: &Env) -> usize { + let events = env.events().all(); + let mut count = 0; + for e in events.events() { + if format!("{:?}", e).contains("notification") { + count += 1; + } + } + count +} + +/// Issue #699: `notification::emit_notification` existed but was never called +/// from anywhere in the crate, so a subscribed address never actually +/// received a notification for any grant/milestone/dispute lifecycle event. +#[test] +fn test_new_grant_notification_emitted_to_contributor_subscriber() { + let env = Env::default(); + let contract_id = env.register_contract(None, stellar_grants::StellarGrantsContract); + let client = StellarGrantsContractClient::new(&env, &contract_id); + let owner =
::generate(&env); + let subscriber =
::generate(&env); + let token_admin_addr =
::generate(&env); + let token = env + .register_stellar_asset_contract_v2(token_admin_addr.clone()) + .address(); + let reviewers = Vec::new(&env); + env.mock_all_auths(); + + client.subscribe( + &subscriber, + &NotificationEvent::NewGrant, + &SubscriptionScope::PerContributor(owner.clone()), + ); + assert!(client.is_subscribed( + &subscriber, + &NotificationEvent::NewGrant, + &SubscriptionScope::PerContributor(owner.clone()), + )); + + client.grant_create( + &owner, + &String::from_str(&env, "Notify Grant"), + &String::from_str(&env, "Testing notifications"), + &token, + &100, + &10, + &1, + &reviewers, + ); + + assert!( + count_notification_events(&env) >= 1, + "expected a notification event to be published on grant creation" + ); +} + +/// Covers MilestoneSubmitted and MilestoneApproved: a subscriber watching a +/// specific grant must see both fire as the milestone moves through its +/// lifecycle. +#[test] +fn test_milestone_lifecycle_notifications_emitted_to_grant_subscriber() { + let env = Env::default(); + let contract_id = env.register_contract(None, stellar_grants::StellarGrantsContract); + let client = StellarGrantsContractClient::new(&env, &contract_id); + let owner =
::generate(&env); + let subscriber =
::generate(&env); + let token_admin_addr =
::generate(&env); + let token = env + .register_stellar_asset_contract_v2(token_admin_addr.clone()) + .address(); + let token_admin = token::StellarAssetClient::new(&env, &token); + let mut reviewers = Vec::new(&env); + let reviewer =
::generate(&env); + reviewers.push_back(reviewer.clone()); + env.mock_all_auths(); + + let grant_id = client.grant_create( + &owner, + &String::from_str(&env, "Notify Grant"), + &String::from_str(&env, "Testing notifications"), + &token, + &100, + &10, + &1, + &reviewers, + ); + + client.subscribe( + &subscriber, + &NotificationEvent::MilestoneSubmitted, + &SubscriptionScope::PerGrant(grant_id), + ); + client.subscribe( + &subscriber, + &NotificationEvent::MilestoneApproved, + &SubscriptionScope::PerGrant(grant_id), + ); + + let funder =
::generate(&env); + token_admin.mint(&funder, &100); + client.grant_fund(&grant_id, &funder, &100); + + client.milestone_submit( + &grant_id, + &0, + &owner, + &String::from_str(&env, "desc"), + &String::from_str(&env, "proof"), + ); + // `env.events().all()` only reflects the most recent top-level + // invocation in this soroban-sdk version, so this check must happen + // right after the call that publishes the event. + assert!( + count_notification_events(&env) >= 1, + "expected a notification event on milestone submission" + ); + + let now = env.ledger().timestamp(); + env.ledger() + .set_timestamp(now + COMMUNITY_REVIEW_PERIOD + 1); + + // milestone_vote(approve=true) requires an already-satisfied checklist + // (unrelated to issue #699) — attach and clear a single optional + // criterion so `all_required_met` flips to true. + let mut criteria = Vec::new(&env); + criteria.push_back(AcceptanceCriteria { + idx: 0, + description: String::from_str(&env, "Basic check"), + is_required: false, + }); + client.checklist_define_criteria(&owner, &grant_id, &0, &criteria); + let mut evidence = Vec::new(&env); + evidence.push_back(None); + client.checklist_submit(&owner, &grant_id, &0, &evidence); + client.checklist_review_criterion(&reviewer, &grant_id, &0, &0, &true); + + client.milestone_vote(&grant_id, &0, &reviewer, &true, &None); + + assert!( + count_notification_events(&env) >= 1, + "expected a notification event on milestone approval" + ); + + assert!(client + .get_subscribers( + &NotificationEvent::MilestoneApproved, + &SubscriptionScope::PerGrant(grant_id), + ) + .contains(subscriber)); +} + +/// Covers DisputeRaised. +#[test] +fn test_dispute_raised_notification_emitted_to_grant_subscriber() { + let env = Env::default(); + let contract_id = env.register_contract(None, stellar_grants::StellarGrantsContract); + let client = StellarGrantsContractClient::new(&env, &contract_id); + let owner =
::generate(&env); + let subscriber =
::generate(&env); + let token_admin_addr =
::generate(&env); + let token = env + .register_stellar_asset_contract_v2(token_admin_addr.clone()) + .address(); + let reviewers = Vec::new(&env); + env.mock_all_auths(); + + let grant_id = client.grant_create( + &owner, + &String::from_str(&env, "Dispute Grant"), + &String::from_str(&env, "Testing notifications"), + &token, + &100, + &10, + &1, + &reviewers, + ); + + client.subscribe( + &subscriber, + &NotificationEvent::DisputeRaised, + &SubscriptionScope::PerGrant(grant_id), + ); + + client.dispute_raise( + &grant_id, + &0, + &owner, + &String::from_str(&env, "milestone quality dispute"), + ); + + assert!( + count_notification_events(&env) >= 1, + "expected a notification event to be published on dispute_raise" + ); +}