diff --git a/contracts/geev-core/src/governance.rs b/contracts/geev-core/src/governance.rs index d70c4db..e238026 100644 --- a/contracts/geev-core/src/governance.rs +++ b/contracts/geev-core/src/governance.rs @@ -1,4 +1,4 @@ -use crate::types::{DataKey, Error, GiveawayStatus, HelpRequestStatus}; +use crate::types::{ContentType, DataKey, Error, GiveawayStatus, HelpRequestStatus}; use soroban_sdk::{contract, contractevent, contractimpl, Address, Env}; /// Number of flags required to automatically suspend content. @@ -9,6 +9,8 @@ pub struct GovernanceContract; #[contractevent] pub struct ContentFlagged { + #[topic] + content_type: ContentType, #[topic] target_id: u64, user: Address, @@ -17,6 +19,8 @@ pub struct ContentFlagged { #[contractevent] pub struct ContentAutoSuspended { + #[topic] + content_type: ContentType, #[topic] target_id: u64, count: u32, @@ -31,14 +35,19 @@ pub struct ContentAppealed { #[contractimpl] impl GovernanceContract { - /// Flag a piece of content (Giveaway or HelpRequest) by its ID. - /// Each user may only flag a given ID once. - pub fn flag_content(env: Env, user: Address, target_id: u64) -> Result<(), Error> { + /// Flag a specific Giveaway or HelpRequest by its type and ID. + /// Each user may only flag a given content item once. + pub fn flag_content( + env: Env, + user: Address, + content_type: ContentType, + target_id: u64, + ) -> Result<(), Error> { // 1. Verify caller signature user.require_auth(); // 2. Prevent duplicate flags from the same user - let flag_key = DataKey::FlagRecord(target_id, user.clone()); + let flag_key = DataKey::FlagRecord(content_type, target_id, user.clone()); if env.storage().persistent().has(&flag_key) { return Err(Error::AlreadyFlagged); } @@ -47,13 +56,14 @@ impl GovernanceContract { env.storage().persistent().set(&flag_key, &true); // 4. Increment the total flag count for this ID - let count_key = DataKey::FlagCount(target_id); + let count_key = DataKey::FlagCount(content_type, target_id); let current: u32 = env.storage().persistent().get(&count_key).unwrap_or(0); let new_count = current.checked_add(1).ok_or(Error::ArithmeticOverflow)?; env.storage().persistent().set(&count_key, &new_count); // 5. Emit "ContentFlagged" event: topics = (name, target_id), data = (user, total_flags) ContentFlagged { + content_type, target_id, user, count: new_count, @@ -62,7 +72,7 @@ impl GovernanceContract { // 5. Circuit breaker: suspend if threshold is reached. if new_count >= FLAG_THRESHOLD { - Self::auto_suspend(&env, target_id, new_count); + Self::auto_suspend(&env, content_type, target_id, new_count); } Ok(()) @@ -119,61 +129,72 @@ impl GovernanceContract { Err(Error::GiveawayNotFound) } - /// Returns the total number of flags for a given content ID. - pub fn get_flag_count(env: Env, target_id: u64) -> u32 { + /// Returns the total number of flags for a specific content item. + pub fn get_flag_count(env: Env, content_type: ContentType, target_id: u64) -> u32 { env.storage() .persistent() - .get(&DataKey::FlagCount(target_id)) + .get(&DataKey::FlagCount(content_type, target_id)) .unwrap_or(0) } - /// Returns whether a specific user has already flagged a given content ID. - pub fn has_flagged(env: Env, user: Address, target_id: u64) -> bool { + /// Returns whether a user has already flagged a specific content item. + pub fn has_flagged(env: Env, user: Address, content_type: ContentType, target_id: u64) -> bool { env.storage() .persistent() - .has(&DataKey::FlagRecord(target_id, user)) + .has(&DataKey::FlagRecord(content_type, target_id, user)) } // ── internal ────────────────────────────────────────────────────────────── - /// Try to suspend the Giveaway or HelpRequest with `target_id`. - /// Silently skips if neither exists (the ID may belong to a future content type). - fn auto_suspend(env: &Env, target_id: u64, count: u32) { - let giveaway_key = DataKey::Giveaway(target_id); - let request_key = DataKey::HelpRequest(target_id); - - let mut suspended = false; - - // Try Giveaway first. - if let Some(mut giveaway) = env - .storage() - .persistent() - .get::(&giveaway_key) - { - if giveaway.status == GiveawayStatus::Active { - giveaway.status = GiveawayStatus::Suspended; - env.storage().persistent().set(&giveaway_key, &giveaway); - suspended = true; + /// Try to suspend the content item identified by both type and ID. + /// Silently skips if the intended item does not exist or is not active. + fn auto_suspend(env: &Env, content_type: ContentType, target_id: u64, count: u32) { + let suspended = match content_type { + ContentType::Giveaway => { + let key = DataKey::Giveaway(target_id); + if let Some(mut giveaway) = env + .storage() + .persistent() + .get::(&key) + { + if giveaway.status == GiveawayStatus::Active { + giveaway.status = GiveawayStatus::Suspended; + env.storage().persistent().set(&key, &giveaway); + true + } else { + false + } + } else { + false + } } - } - - // Try HelpRequest if giveaway wasn't found/suspended. - if !suspended { - if let Some(mut request) = env - .storage() - .persistent() - .get::(&request_key) - { - if request.status == HelpRequestStatus::Open { - request.status = HelpRequestStatus::Suspended; - env.storage().persistent().set(&request_key, &request); - suspended = true; + ContentType::HelpRequest => { + let key = DataKey::HelpRequest(target_id); + if let Some(mut request) = env + .storage() + .persistent() + .get::(&key) + { + if request.status == HelpRequestStatus::Open { + request.status = HelpRequestStatus::Suspended; + env.storage().persistent().set(&key, &request); + true + } else { + false + } + } else { + false } } - } + }; if suspended { - ContentAutoSuspended { target_id, count }.publish(env); + ContentAutoSuspended { + content_type, + target_id, + count, + } + .publish(env); } } } diff --git a/contracts/geev-core/src/test.rs b/contracts/geev-core/src/test.rs index d782088..22ca2ae 100644 --- a/contracts/geev-core/src/test.rs +++ b/contracts/geev-core/src/test.rs @@ -1518,11 +1518,11 @@ fn test_flag_content_increments_count() { let user = Address::generate(&env); let target_id: u64 = 42; - assert_eq!(client.get_flag_count(&target_id), 0); + assert_eq!(client.get_flag_count(&ContentType::Giveaway, &target_id), 0); - client.flag_content(&user, &target_id); + client.flag_content(&user, &ContentType::Giveaway, &target_id); - assert_eq!(client.get_flag_count(&target_id), 1); + assert_eq!(client.get_flag_count(&ContentType::Giveaway, &target_id), 1); } #[test] @@ -1537,12 +1537,12 @@ fn test_flag_content_multiple_users() { let user_b = Address::generate(&env); let target_id: u64 = 7; - client.flag_content(&user_a, &target_id); - client.flag_content(&user_b, &target_id); + client.flag_content(&user_a, &ContentType::Giveaway, &target_id); + client.flag_content(&user_b, &ContentType::Giveaway, &target_id); - assert_eq!(client.get_flag_count(&target_id), 2); - assert!(client.has_flagged(&user_a, &target_id)); - assert!(client.has_flagged(&user_b, &target_id)); + assert_eq!(client.get_flag_count(&ContentType::Giveaway, &target_id), 2); + assert!(client.has_flagged(&user_a, &ContentType::Giveaway, &target_id)); + assert!(client.has_flagged(&user_b, &ContentType::Giveaway, &target_id)); } #[test] @@ -1557,9 +1557,9 @@ fn test_flag_content_duplicate_panics() { let user = Address::generate(&env); let target_id: u64 = 1; - client.flag_content(&user, &target_id); + client.flag_content(&user, &ContentType::Giveaway, &target_id); // Second flag from the same user must panic with AlreadyFlagged - client.flag_content(&user, &target_id); + client.flag_content(&user, &ContentType::Giveaway, &target_id); } #[test] @@ -1571,7 +1571,7 @@ fn test_has_flagged_returns_false_before_flag() { let client = GovernanceContractClient::new(&env, &contract_id); let user = Address::generate(&env); - assert!(!client.has_flagged(&user, &99u64)); + assert!(!client.has_flagged(&user, &ContentType::Giveaway, &99u64)); } #[test] @@ -1584,17 +1584,41 @@ fn test_flag_counts_are_independent_per_id() { let user = Address::generate(&env); - client.flag_content(&user, &1u64); + client.flag_content(&user, &ContentType::Giveaway, &1u64); // ID 2 should still be at 0 - assert_eq!(client.get_flag_count(&2u64), 0); - assert_eq!(client.get_flag_count(&1u64), 1); + assert_eq!(client.get_flag_count(&ContentType::Giveaway, &2u64), 0); + assert_eq!(client.get_flag_count(&ContentType::Giveaway, &1u64), 1); +} + +#[test] +fn test_flags_are_independent_for_content_types_with_same_id() { + let env = Env::default(); + env.mock_all_auths(); + + let contract_id = env.register(GovernanceContract, ()); + let client = GovernanceContractClient::new(&env, &contract_id); + let user = Address::generate(&env); + let shared_id = 1u64; + + client.flag_content(&user, &ContentType::HelpRequest, &shared_id); + + assert_eq!( + client.get_flag_count(&ContentType::HelpRequest, &shared_id), + 1 + ); + assert_eq!(client.get_flag_count(&ContentType::Giveaway, &shared_id), 0); + assert!(client.has_flagged(&user, &ContentType::HelpRequest, &shared_id)); + assert!(!client.has_flagged(&user, &ContentType::Giveaway, &shared_id)); + + client.flag_content(&user, &ContentType::Giveaway, &shared_id); + assert_eq!(client.get_flag_count(&ContentType::Giveaway, &shared_id), 1); } // ── auto-suspension tests ───────────────────────────────────────────────────── use crate::governance::FLAG_THRESHOLD; -use crate::types::{GiveawayStatus, SelectionMethod}; +use crate::types::{ContentType, GiveawayStatus, SelectionMethod}; /// Seed a minimal active Giveaway directly into contract storage. fn seed_active_giveaway(env: &Env, contract_id: &Address, giveaway_id: u64, token: &Address) { @@ -1662,7 +1686,7 @@ fn test_giveaway_suspended_at_threshold() { // Flag FLAG_THRESHOLD - 1 times — should still be Active. for _ in 0..FLAG_THRESHOLD - 1 { let flagger = Address::generate(&env); - gov.flag_content(&flagger, &giveaway_id); + gov.flag_content(&flagger, &ContentType::Giveaway, &giveaway_id); } env.as_contract(&contract_id, || { let g: Giveaway = env @@ -1675,7 +1699,7 @@ fn test_giveaway_suspended_at_threshold() { // The threshold flag suspends it. let last_flagger = Address::generate(&env); - gov.flag_content(&last_flagger, &giveaway_id); + gov.flag_content(&last_flagger, &ContentType::Giveaway, &giveaway_id); env.as_contract(&contract_id, || { let g: Giveaway = env @@ -1705,7 +1729,7 @@ fn test_help_request_suspended_at_threshold() { for _ in 0..FLAG_THRESHOLD { let flagger = Address::generate(&env); - gov.flag_content(&flagger, &request_id); + gov.flag_content(&flagger, &ContentType::HelpRequest, &request_id); } env.as_contract(&contract_id, || { @@ -1718,6 +1742,49 @@ fn test_help_request_suspended_at_threshold() { }); } +#[test] +fn test_help_request_auto_suspension_does_not_affect_same_id_giveaway() { + let env = Env::default(); + env.mock_all_auths(); + + let contract_id = env.register(GovernanceContract, ()); + let gov = GovernanceContractClient::new(&env, &contract_id); + let token_admin = Address::generate(&env); + let token = env + .register_stellar_asset_contract_v2(token_admin) + .address(); + let shared_id = 1u64; + + seed_active_giveaway(&env, &contract_id, shared_id, &token); + seed_open_request(&env, &contract_id, shared_id, &token); + + for _ in 0..FLAG_THRESHOLD { + let flagger = Address::generate(&env); + gov.flag_content(&flagger, &ContentType::HelpRequest, &shared_id); + } + + env.as_contract(&contract_id, || { + let giveaway: Giveaway = env + .storage() + .persistent() + .get(&DataKey::Giveaway(shared_id)) + .unwrap(); + let request: HelpRequest = env + .storage() + .persistent() + .get(&DataKey::HelpRequest(shared_id)) + .unwrap(); + + assert_eq!(giveaway.status, GiveawayStatus::Active); + assert_eq!(request.status, HelpRequestStatus::Suspended); + }); + assert_eq!(gov.get_flag_count(&ContentType::Giveaway, &shared_id), 0); + assert_eq!( + gov.get_flag_count(&ContentType::HelpRequest, &shared_id), + FLAG_THRESHOLD + ); +} + #[test] fn test_content_auto_suspended_event_emitted() { let env = Env::default(); @@ -1736,7 +1803,7 @@ fn test_content_auto_suspended_event_emitted() { for _ in 0..FLAG_THRESHOLD { let flagger = Address::generate(&env); - gov.flag_content(&flagger, &giveaway_id); + gov.flag_content(&flagger, &ContentType::Giveaway, &giveaway_id); } // Verify ContentAutoSuspended event was emitted with the right topic. @@ -1744,6 +1811,7 @@ fn test_content_auto_suspended_event_emitted() { let expected_topics: soroban_sdk::Vec = vec![ &env, Symbol::new(&env, "content_auto_suspended").into_val(&env), + ContentType::Giveaway.into_val(&env), giveaway_id.into_val(&env), ]; assert!(events diff --git a/contracts/geev-core/src/types.rs b/contracts/geev-core/src/types.rs index fc5d0ef..444c609 100644 --- a/contracts/geev-core/src/types.rs +++ b/contracts/geev-core/src/types.rs @@ -105,6 +105,13 @@ pub enum HelpRequestStatus { UnderAppeal = 8, } +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +#[contracttype] +pub enum ContentType { + Giveaway = 0, + HelpRequest = 1, +} + #[derive(Clone)] #[contracttype] pub struct HelpRequest { @@ -134,8 +141,8 @@ pub enum DataKey { AllowedToken(Address), Profile(Address), Username(String), - FlagRecord(u64, Address), - FlagCount(u64), + FlagRecord(ContentType, u64, Address), + FlagCount(ContentType, u64), Reputation(Address), // ─── Dispute Tracking ────────────────────────────────────────────────── DisputeRaisedAt(u64), // timestamp when dispute was raised diff --git a/contracts/geev-core/test_snapshots/test/test_content_auto_suspended_event_emitted.1.json b/contracts/geev-core/test_snapshots/test/test_content_auto_suspended_event_emitted.1.json index 19661fc..89b66b4 100644 --- a/contracts/geev-core/test_snapshots/test/test_content_auto_suspended_event_emitted.1.json +++ b/contracts/geev-core/test_snapshots/test/test_content_auto_suspended_event_emitted.1.json @@ -38,6 +38,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" }, + { + "u32": 0 + }, { "u64": "99" } @@ -60,6 +63,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" }, + { + "u32": 0 + }, { "u64": "99" } @@ -82,6 +88,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" }, + { + "u32": 0 + }, { "u64": "99" } @@ -104,6 +113,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" }, + { + "u32": 0 + }, { "u64": "99" } @@ -126,6 +138,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON" }, + { + "u32": 0 + }, { "u64": "99" } @@ -148,6 +163,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAX5" }, + { + "u32": 0 + }, { "u64": "99" } @@ -170,6 +188,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXI7N" }, + { + "u32": 0 + }, { "u64": "99" } @@ -192,6 +213,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYRE5" }, + { + "u32": 0 + }, { "u64": "99" } @@ -214,6 +238,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN" }, + { + "u32": 0 + }, { "u64": "99" } @@ -236,6 +263,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BV5" }, + { + "u32": 0 + }, { "u64": "99" } @@ -327,6 +357,9 @@ { "symbol": "FlagCount" }, + { + "u32": 0 + }, { "u64": "99" } @@ -347,6 +380,9 @@ { "symbol": "FlagCount" }, + { + "u32": 0 + }, { "u64": "99" } @@ -372,6 +408,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "99" }, @@ -395,6 +434,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "99" }, @@ -423,6 +465,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "99" }, @@ -446,6 +491,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "99" }, @@ -474,6 +522,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "99" }, @@ -497,6 +548,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "99" }, @@ -525,6 +579,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "99" }, @@ -548,6 +605,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "99" }, @@ -576,6 +636,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "99" }, @@ -599,6 +662,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "99" }, @@ -627,6 +693,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "99" }, @@ -650,6 +719,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "99" }, @@ -678,6 +750,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "99" }, @@ -701,6 +776,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "99" }, @@ -729,6 +807,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "99" }, @@ -752,6 +833,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "99" }, @@ -780,6 +864,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "99" }, @@ -803,6 +890,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "99" }, @@ -831,6 +921,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "99" }, @@ -854,6 +947,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "99" }, @@ -1548,6 +1644,9 @@ { "symbol": "content_flagged" }, + { + "u32": 0 + }, { "u64": "99" } @@ -1588,6 +1687,9 @@ { "symbol": "content_auto_suspended" }, + { + "u32": 0 + }, { "u64": "99" } diff --git a/contracts/geev-core/test_snapshots/test/test_flag_content_duplicate_panics.1.json b/contracts/geev-core/test_snapshots/test/test_flag_content_duplicate_panics.1.json index c3c2df5..eaec71b 100644 --- a/contracts/geev-core/test_snapshots/test/test_flag_content_duplicate_panics.1.json +++ b/contracts/geev-core/test_snapshots/test/test_flag_content_duplicate_panics.1.json @@ -18,6 +18,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" }, + { + "u32": 0 + }, { "u64": "1" } @@ -49,6 +52,9 @@ { "symbol": "FlagCount" }, + { + "u32": 0 + }, { "u64": "1" } @@ -69,6 +75,9 @@ { "symbol": "FlagCount" }, + { + "u32": 0 + }, { "u64": "1" } @@ -94,6 +103,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "1" }, @@ -117,6 +129,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "1" }, diff --git a/contracts/geev-core/test_snapshots/test/test_flag_content_increments_count.1.json b/contracts/geev-core/test_snapshots/test/test_flag_content_increments_count.1.json index 785e268..a82ef91 100644 --- a/contracts/geev-core/test_snapshots/test/test_flag_content_increments_count.1.json +++ b/contracts/geev-core/test_snapshots/test/test_flag_content_increments_count.1.json @@ -19,6 +19,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" }, + { + "u32": 0 + }, { "u64": "42" } @@ -50,6 +53,9 @@ { "symbol": "FlagCount" }, + { + "u32": 0 + }, { "u64": "42" } @@ -70,6 +76,9 @@ { "symbol": "FlagCount" }, + { + "u32": 0 + }, { "u64": "42" } @@ -95,6 +104,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "42" }, @@ -118,6 +130,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "42" }, diff --git a/contracts/geev-core/test_snapshots/test/test_flag_content_multiple_users.1.json b/contracts/geev-core/test_snapshots/test/test_flag_content_multiple_users.1.json index ca403fa..f1a3c07 100644 --- a/contracts/geev-core/test_snapshots/test/test_flag_content_multiple_users.1.json +++ b/contracts/geev-core/test_snapshots/test/test_flag_content_multiple_users.1.json @@ -18,6 +18,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" }, + { + "u32": 0 + }, { "u64": "7" } @@ -40,6 +43,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, + { + "u32": 0 + }, { "u64": "7" } @@ -73,6 +79,9 @@ { "symbol": "FlagCount" }, + { + "u32": 0 + }, { "u64": "7" } @@ -93,6 +102,9 @@ { "symbol": "FlagCount" }, + { + "u32": 0 + }, { "u64": "7" } @@ -118,6 +130,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "7" }, @@ -141,6 +156,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "7" }, @@ -169,6 +187,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "7" }, @@ -192,6 +213,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "7" }, diff --git a/contracts/geev-core/test_snapshots/test/test_flag_counts_are_independent_per_id.1.json b/contracts/geev-core/test_snapshots/test/test_flag_counts_are_independent_per_id.1.json index 2dd9bb7..a00a7e3 100644 --- a/contracts/geev-core/test_snapshots/test/test_flag_counts_are_independent_per_id.1.json +++ b/contracts/geev-core/test_snapshots/test/test_flag_counts_are_independent_per_id.1.json @@ -18,6 +18,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" }, + { + "u32": 0 + }, { "u64": "1" } @@ -50,6 +53,9 @@ { "symbol": "FlagCount" }, + { + "u32": 0 + }, { "u64": "1" } @@ -70,6 +76,9 @@ { "symbol": "FlagCount" }, + { + "u32": 0 + }, { "u64": "1" } @@ -95,6 +104,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "1" }, @@ -118,6 +130,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "1" }, diff --git a/contracts/geev-core/test_snapshots/test/test_flags_are_independent_for_content_types_with_same_id.1.json b/contracts/geev-core/test_snapshots/test/test_flags_are_independent_for_content_types_with_same_id.1.json new file mode 100644 index 0000000..a324cef --- /dev/null +++ b/contracts/geev-core/test_snapshots/test/test_flags_are_independent_for_content_types_with_same_id.1.json @@ -0,0 +1,413 @@ +{ + "generators": { + "address": 2, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "flag_content", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "u32": 1 + }, + { + "u64": "1" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [], + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "flag_content", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "u32": 0 + }, + { + "u64": "1" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [] + ], + "ledger": { + "protocol_version": 23, + "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": [ + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FlagCount" + }, + { + "u32": 0 + }, + { + "u64": "1" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FlagCount" + }, + { + "u32": 0 + }, + { + "u64": "1" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 1 + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FlagCount" + }, + { + "u32": 1 + }, + { + "u64": "1" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FlagCount" + }, + { + "u32": 1 + }, + { + "u64": "1" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 1 + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FlagRecord" + }, + { + "u32": 0 + }, + { + "u64": "1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FlagRecord" + }, + { + "u32": 0 + }, + { + "u64": "1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + }, + "durability": "persistent", + "val": { + "bool": true + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FlagRecord" + }, + { + "u32": 1 + }, + { + "u64": "1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FlagRecord" + }, + { + "u32": 1 + }, + { + "u64": "1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + }, + "durability": "persistent", + "val": { + "bool": true + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "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" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4095 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/contracts/geev-core/test_snapshots/test/test_giveaway_suspended_at_threshold.1.json b/contracts/geev-core/test_snapshots/test/test_giveaway_suspended_at_threshold.1.json index 3e17963..a689b56 100644 --- a/contracts/geev-core/test_snapshots/test/test_giveaway_suspended_at_threshold.1.json +++ b/contracts/geev-core/test_snapshots/test/test_giveaway_suspended_at_threshold.1.json @@ -38,6 +38,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" }, + { + "u32": 0 + }, { "u64": "42" } @@ -60,6 +63,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" }, + { + "u32": 0 + }, { "u64": "42" } @@ -82,6 +88,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" }, + { + "u32": 0 + }, { "u64": "42" } @@ -104,6 +113,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" }, + { + "u32": 0 + }, { "u64": "42" } @@ -126,6 +138,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON" }, + { + "u32": 0 + }, { "u64": "42" } @@ -148,6 +163,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAX5" }, + { + "u32": 0 + }, { "u64": "42" } @@ -170,6 +188,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXI7N" }, + { + "u32": 0 + }, { "u64": "42" } @@ -192,6 +213,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYRE5" }, + { + "u32": 0 + }, { "u64": "42" } @@ -214,6 +238,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN" }, + { + "u32": 0 + }, { "u64": "42" } @@ -237,6 +264,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BV5" }, + { + "u32": 0 + }, { "u64": "42" } @@ -329,6 +359,9 @@ { "symbol": "FlagCount" }, + { + "u32": 0 + }, { "u64": "42" } @@ -349,6 +382,9 @@ { "symbol": "FlagCount" }, + { + "u32": 0 + }, { "u64": "42" } @@ -374,6 +410,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "42" }, @@ -397,6 +436,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "42" }, @@ -425,6 +467,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "42" }, @@ -448,6 +493,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "42" }, @@ -476,6 +524,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "42" }, @@ -499,6 +550,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "42" }, @@ -527,6 +581,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "42" }, @@ -550,6 +607,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "42" }, @@ -578,6 +638,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "42" }, @@ -601,6 +664,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "42" }, @@ -629,6 +695,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "42" }, @@ -652,6 +721,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "42" }, @@ -680,6 +752,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "42" }, @@ -703,6 +778,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "42" }, @@ -731,6 +809,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "42" }, @@ -754,6 +835,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "42" }, @@ -782,6 +866,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "42" }, @@ -805,6 +892,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "42" }, @@ -833,6 +923,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "42" }, @@ -856,6 +949,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 0 + }, { "u64": "42" }, diff --git a/contracts/geev-core/test_snapshots/test/test_help_request_auto_suspension_does_not_affect_same_id_giveaway.1.json b/contracts/geev-core/test_snapshots/test/test_help_request_auto_suspension_does_not_affect_same_id_giveaway.1.json new file mode 100644 index 0000000..5ef9256 --- /dev/null +++ b/contracts/geev-core/test_snapshots/test/test_help_request_auto_suspension_does_not_affect_same_id_giveaway.1.json @@ -0,0 +1,1742 @@ +{ + "generators": { + "address": 15, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [ + [ + "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGO6V", + { + "function": { + "contract_fn": { + "contract_address": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "function_name": "set_admin", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "flag_content", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "u32": 1 + }, + { + "u64": "1" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "flag_content", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + }, + { + "u32": 1 + }, + { + "u64": "1" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "flag_content", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + }, + { + "u32": 1 + }, + { + "u64": "1" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "flag_content", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON" + }, + { + "u32": 1 + }, + { + "u64": "1" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAX5", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "flag_content", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAX5" + }, + { + "u32": 1 + }, + { + "u64": "1" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXI7N", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "flag_content", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXI7N" + }, + { + "u32": 1 + }, + { + "u64": "1" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYRE5", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "flag_content", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYRE5" + }, + { + "u32": 1 + }, + { + "u64": "1" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "flag_content", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN" + }, + { + "u32": 1 + }, + { + "u64": "1" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BV5", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "flag_content", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BV5" + }, + { + "u32": 1 + }, + { + "u64": "1" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6J5N", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "flag_content", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6J5N" + }, + { + "u32": 1 + }, + { + "u64": "1" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [], + [] + ], + "ledger": { + "protocol_version": 23, + "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": [ + [ + { + "account": { + "account_id": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGO6V" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "account": { + "account_id": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGO6V", + "balance": "0", + "seq_num": "0", + "num_sub_entries": 0, + "inflation_dest": null, + "flags": 0, + "home_domain": "", + "thresholds": "01010101", + "signers": [], + "ext": "v0" + } + }, + "ext": "v0" + }, + null + ] + ], + [ + { + "contract_data": { + "contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGO6V", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGO6V", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FlagCount" + }, + { + "u32": 1 + }, + { + "u64": "1" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FlagCount" + }, + { + "u32": 1 + }, + { + "u64": "1" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 10 + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FlagRecord" + }, + { + "u32": 1 + }, + { + "u64": "1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FlagRecord" + }, + { + "u32": 1 + }, + { + "u64": "1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + }, + "durability": "persistent", + "val": { + "bool": true + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FlagRecord" + }, + { + "u32": 1 + }, + { + "u64": "1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FlagRecord" + }, + { + "u32": 1 + }, + { + "u64": "1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent", + "val": { + "bool": true + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FlagRecord" + }, + { + "u32": 1 + }, + { + "u64": "1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FlagRecord" + }, + { + "u32": 1 + }, + { + "u64": "1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + } + ] + }, + "durability": "persistent", + "val": { + "bool": true + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FlagRecord" + }, + { + "u32": 1 + }, + { + "u64": "1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FlagRecord" + }, + { + "u32": 1 + }, + { + "u64": "1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON" + } + ] + }, + "durability": "persistent", + "val": { + "bool": true + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FlagRecord" + }, + { + "u32": 1 + }, + { + "u64": "1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAX5" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FlagRecord" + }, + { + "u32": 1 + }, + { + "u64": "1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAX5" + } + ] + }, + "durability": "persistent", + "val": { + "bool": true + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FlagRecord" + }, + { + "u32": 1 + }, + { + "u64": "1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXI7N" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FlagRecord" + }, + { + "u32": 1 + }, + { + "u64": "1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXI7N" + } + ] + }, + "durability": "persistent", + "val": { + "bool": true + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FlagRecord" + }, + { + "u32": 1 + }, + { + "u64": "1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYRE5" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FlagRecord" + }, + { + "u32": 1 + }, + { + "u64": "1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYRE5" + } + ] + }, + "durability": "persistent", + "val": { + "bool": true + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FlagRecord" + }, + { + "u32": 1 + }, + { + "u64": "1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FlagRecord" + }, + { + "u32": 1 + }, + { + "u64": "1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN" + } + ] + }, + "durability": "persistent", + "val": { + "bool": true + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FlagRecord" + }, + { + "u32": 1 + }, + { + "u64": "1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BV5" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FlagRecord" + }, + { + "u32": 1 + }, + { + "u64": "1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BV5" + } + ] + }, + "durability": "persistent", + "val": { + "bool": true + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FlagRecord" + }, + { + "u32": 1 + }, + { + "u64": "1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6J5N" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FlagRecord" + }, + { + "u32": 1 + }, + { + "u64": "1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6J5N" + } + ] + }, + "durability": "persistent", + "val": { + "bool": true + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Giveaway" + }, + { + "u64": "1" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Giveaway" + }, + { + "u64": "1" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "500" + } + }, + { + "key": { + "symbol": "claim_deadline" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "claimed_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "3600" + } + }, + { + "key": { + "symbol": "id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "min_reputation" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "participant_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "selection_method" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "title" + }, + "val": { + "string": "Test" + } + }, + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF" + } + }, + { + "key": { + "symbol": "verification_type" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "winner_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "winners" + }, + "val": { + "vec": [] + } + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "HelpRequest" + }, + { + "u64": "1" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "HelpRequest" + }, + { + "u64": "1" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + }, + { + "key": { + "symbol": "goal" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "id" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "is_verified" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF" + } + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "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" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM", + "key": { + "ledger_key_nonce": { + "nonce": "1033654523790656264" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM", + "key": { + "ledger_key_nonce": { + "nonce": "1033654523790656264" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", + "key": { + "ledger_key_nonce": { + "nonce": "4837995959683129791" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", + "key": { + "ledger_key_nonce": { + "nonce": "4837995959683129791" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON", + "key": { + "ledger_key_nonce": { + "nonce": "2032731177588607455" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON", + "key": { + "ledger_key_nonce": { + "nonce": "2032731177588607455" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAX5", + "key": { + "ledger_key_nonce": { + "nonce": "4270020994084947596" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAX5", + "key": { + "ledger_key_nonce": { + "nonce": "4270020994084947596" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXI7N", + "key": { + "ledger_key_nonce": { + "nonce": "8370022561469687789" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXI7N", + "key": { + "ledger_key_nonce": { + "nonce": "8370022561469687789" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYRE5", + "key": { + "ledger_key_nonce": { + "nonce": "6277191135259896685" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYRE5", + "key": { + "ledger_key_nonce": { + "nonce": "6277191135259896685" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN", + "key": { + "ledger_key_nonce": { + "nonce": "5806905060045992000" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN", + "key": { + "ledger_key_nonce": { + "nonce": "5806905060045992000" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BV5", + "key": { + "ledger_key_nonce": { + "nonce": "1194852393571756375" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BV5", + "key": { + "ledger_key_nonce": { + "nonce": "1194852393571756375" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6J5N", + "key": { + "ledger_key_nonce": { + "nonce": "115220454072064130" + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6J5N", + "key": { + "ledger_key_nonce": { + "nonce": "115220454072064130" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "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:GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGO6V" + } + }, + { + "key": { + "symbol": "symbol" + }, + "val": { + "string": "aaa" + } + } + ] + } + }, + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "vec": [ + { + "symbol": "AssetInfo" + } + ] + }, + "val": { + "vec": [ + { + "symbol": "AlphaNum4" + }, + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "aaa\\0" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "bytes": "0000000000000000000000000000000000000000000000000000000000000003" + } + } + ] + } + ] + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 120960 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4095 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/contracts/geev-core/test_snapshots/test/test_help_request_suspended_at_threshold.1.json b/contracts/geev-core/test_snapshots/test/test_help_request_suspended_at_threshold.1.json index c4e23d9..7158815 100644 --- a/contracts/geev-core/test_snapshots/test/test_help_request_suspended_at_threshold.1.json +++ b/contracts/geev-core/test_snapshots/test/test_help_request_suspended_at_threshold.1.json @@ -38,6 +38,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" }, + { + "u32": 1 + }, { "u64": "7" } @@ -60,6 +63,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" }, + { + "u32": 1 + }, { "u64": "7" } @@ -82,6 +88,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" }, + { + "u32": 1 + }, { "u64": "7" } @@ -104,6 +113,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" }, + { + "u32": 1 + }, { "u64": "7" } @@ -126,6 +138,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON" }, + { + "u32": 1 + }, { "u64": "7" } @@ -148,6 +163,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAX5" }, + { + "u32": 1 + }, { "u64": "7" } @@ -170,6 +188,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXI7N" }, + { + "u32": 1 + }, { "u64": "7" } @@ -192,6 +213,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYRE5" }, + { + "u32": 1 + }, { "u64": "7" } @@ -214,6 +238,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN" }, + { + "u32": 1 + }, { "u64": "7" } @@ -236,6 +263,9 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BV5" }, + { + "u32": 1 + }, { "u64": "7" } @@ -328,6 +358,9 @@ { "symbol": "FlagCount" }, + { + "u32": 1 + }, { "u64": "7" } @@ -348,6 +381,9 @@ { "symbol": "FlagCount" }, + { + "u32": 1 + }, { "u64": "7" } @@ -373,6 +409,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 1 + }, { "u64": "7" }, @@ -396,6 +435,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 1 + }, { "u64": "7" }, @@ -424,6 +466,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 1 + }, { "u64": "7" }, @@ -447,6 +492,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 1 + }, { "u64": "7" }, @@ -475,6 +523,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 1 + }, { "u64": "7" }, @@ -498,6 +549,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 1 + }, { "u64": "7" }, @@ -526,6 +580,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 1 + }, { "u64": "7" }, @@ -549,6 +606,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 1 + }, { "u64": "7" }, @@ -577,6 +637,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 1 + }, { "u64": "7" }, @@ -600,6 +663,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 1 + }, { "u64": "7" }, @@ -628,6 +694,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 1 + }, { "u64": "7" }, @@ -651,6 +720,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 1 + }, { "u64": "7" }, @@ -679,6 +751,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 1 + }, { "u64": "7" }, @@ -702,6 +777,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 1 + }, { "u64": "7" }, @@ -730,6 +808,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 1 + }, { "u64": "7" }, @@ -753,6 +834,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 1 + }, { "u64": "7" }, @@ -781,6 +865,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 1 + }, { "u64": "7" }, @@ -804,6 +891,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 1 + }, { "u64": "7" }, @@ -832,6 +922,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 1 + }, { "u64": "7" }, @@ -855,6 +948,9 @@ { "symbol": "FlagRecord" }, + { + "u32": 1 + }, { "u64": "7" },