diff --git a/.github/labeler.yml b/.github/labeler.yml index 8d4e43d3..6ee92bb3 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -4,6 +4,11 @@ # `actions/labeler@v5`. Each top-level key is a repo label that the # bot applies when any glob on its list matches a changed file. # +# v5 schema: each label must be a list of objects with a `changed-files` +# key containing `any-glob-to-any-file` (or `all-globs-to-any-file` etc.). +# The flat glob-string format used in v4 is no longer valid and causes +# "found unexpected type" errors at runtime. +# # Existing repo labels we map to: api, cli, frontend, ci, documentation, # storage, testing, security. New labels Dependabot creates on first # run are listed in `.github/dependabot.yml` and need not be defined here. @@ -12,52 +17,68 @@ # Rust Soroban contracts — the canonical on-chain API surface. api: - - "campaign/**" - - "common/**" - - "token-bridge/**" - - "crates/contracts/core/**" - - "crates/contracts/batch-donor/**" + - changed-files: + - any-glob-to-any-file: + - "campaign/**" + - "common/**" + - "token-bridge/**" + - "crates/contracts/core/**" + - "crates/contracts/batch-donor/**" # Native CLI tooling (`cargo run -p orbitchain-tools -- …`). cli: - - "crates/tools/**" + - changed-files: + - any-glob-to-any-file: + - "crates/tools/**" # Frontend / mobile-wallet surfaces (Playwright + wallet integration). frontend: - - "wallet_connect.html" - - "wallet_connect.js" - - "tests/e2e/**" - - "playwright.config.js" + - changed-files: + - any-glob-to-any-file: + - "wallet_connect.html" + - "wallet_connect.js" + - "tests/e2e/**" + - "playwright.config.js" # CI / build infrastructure. ci: - - ".github/workflows/**" - - ".github/*.md" - - ".github/ISSUE_TEMPLATE/**" - - ".cargo/**" - - "rust-toolchain.toml" - - "Cargo.toml" - - "Cargo.lock" + - changed-files: + - any-glob-to-any-file: + - ".github/workflows/**" + - ".github/*.md" + - ".github/ISSUE_TEMPLATE/**" + - ".cargo/**" + - "rust-toolchain.toml" + - "Cargo.toml" + - "Cargo.lock" # Documentation and reference material. documentation: - - "docs/**" - - "**/*.md" + - changed-files: + - any-glob-to-any-file: + - "docs/**" + - "**/*.md" # Persistent / temporary storage backend code paths. storage: - - "**/storage*.rs" - - "**/backend.rs" + - changed-files: + - any-glob-to-any-file: + - "**/storage*.rs" + - "**/backend.rs" # Tests / property-based / fuzz harnesses. testing: - - "**/tests/**" - - "**/*test*.rs" - - "**/proptest-strategies/**" - - "**/fuzz_targets/**" - - "fuzz/**" + - changed-files: + - any-glob-to-any-file: + - "**/tests/**" + - "**/*test*.rs" + - "**/proptest-strategies/**" + - "**/fuzz_targets/**" + - "fuzz/**" # Security process and security-sensitive code. security: - - "SECURITY.md" - - "**/security*.rs" + - changed-files: + - any-glob-to-any-file: + - "SECURITY.md" + - "**/security*.rs" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0d185806..3c7694a4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,15 +41,12 @@ jobs: - name: Install Rust toolchain # Honors rust-toolchain.toml (channel + targets + components) uses: dtolnay/rust-toolchain@stable - with: - # No `cache: true` here — Swatinem/rust-cache handles caching below. - cache: false - name: Cache cargo registry and target uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - name: cargo fmt --check (contracts) - # Scope to the four Soroban contract crates only. crates/tools is a + # Scope to the five Soroban contract crates only. crates/tools is a # native CLI with separate formatting conventions and pre-existing # rustfmt drift that is intentionally out of scope for this CI gate # — see the PR description for the tracked follow-up. @@ -63,8 +60,6 @@ jobs: - uses: actions/checkout@v4 - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable - with: - cache: false - name: Cache cargo registry and target uses: Swatinem/rust-cache@v2 with: @@ -90,8 +85,6 @@ jobs: - uses: actions/checkout@v4 - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable - with: - cache: false - name: Cache cargo registry and target uses: Swatinem/rust-cache@v2 with: @@ -112,7 +105,6 @@ jobs: # Rust (>=1.84); wasm32-unknown-unknown on Rust >=1.82 enables # reference-types/multi-value which the Soroban host cannot honour. targets: wasm32v1-none - cache: false - name: Cache cargo registry and target uses: Swatinem/rust-cache@v2 with: @@ -171,8 +163,6 @@ jobs: - uses: actions/checkout@v4 - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable - with: - cache: false - name: Cache cargo registry and target uses: Swatinem/rust-cache@v2 with: @@ -188,8 +178,6 @@ jobs: - uses: actions/checkout@v4 - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable - with: - cache: false - name: Cache cargo registry and target uses: Swatinem/rust-cache@v2 with: @@ -205,8 +193,6 @@ jobs: - uses: actions/checkout@v4 - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable - with: - cache: false - name: Cache cargo registry and target uses: Swatinem/rust-cache@v2 with: @@ -222,8 +208,6 @@ jobs: - uses: actions/checkout@v4 - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable - with: - cache: false - name: Cache cargo registry and target uses: Swatinem/rust-cache@v2 with: diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index dade78b1..c83f1ad5 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -29,6 +29,7 @@ env: CONTRACTS: >- -p orbitchain-campaign -p orbitchain-common + -p orbitchain-batch-donor -p orbitchain-core -p orbitchain-token-bridge # Coverage floor (line coverage, percent) — the value issue #114 asks for. diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml index 7ee5a6ec..54af8068 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler.yml @@ -26,6 +26,11 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 5 steps: + - uses: actions/checkout@v4 + with: + # Check out the PR head so labeler reads .github/labeler.yml from the + # PR branch (where the v5-format config lives), not the base branch. + ref: ${{ github.event.pull_request.head.sha }} - name: Apply labels uses: actions/labeler@v5 with: diff --git a/campaign/src/asset_auth.rs b/campaign/src/asset_auth.rs index 019c29ce..25ebbce8 100644 --- a/campaign/src/asset_auth.rs +++ b/campaign/src/asset_auth.rs @@ -93,6 +93,8 @@ mod tests { created_at_ledger: 0, created_at_time: 0, concluded_at_ledger: None, + max_donations_per_donor: None, + min_donation_interval_seconds: None, } } diff --git a/campaign/src/contract.rs b/campaign/src/contract.rs index cb7e195a..240c0226 100644 --- a/campaign/src/contract.rs +++ b/campaign/src/contract.rs @@ -8,6 +8,7 @@ use crate::storage::{get_campaign, is_frozen, set_campaign}; use crate::types::{CampaignStatus, Error}; use crate::validation::validate_campaign_transition; use crate::MAX_DEADLINE_GAP_SECONDS; + use soroban_sdk::{panic_with_error, Env}; /// Issue #212 – End the campaign early (before deadline). diff --git a/campaign/src/get_all_milestones.rs b/campaign/src/get_all_milestones.rs index 8891951d..1488e0e8 100644 --- a/campaign/src/get_all_milestones.rs +++ b/campaign/src/get_all_milestones.rs @@ -63,6 +63,8 @@ mod tests { created_at_ledger: env.ledger().sequence(), created_at_time: env.ledger().timestamp(), concluded_at_ledger: None, + max_donations_per_donor: None, + min_donation_interval_seconds: None, }; env.storage() .persistent() diff --git a/campaign/src/get_milestone.rs b/campaign/src/get_milestone.rs index 5da29606..23bb040d 100644 --- a/campaign/src/get_milestone.rs +++ b/campaign/src/get_milestone.rs @@ -81,6 +81,8 @@ mod tests { created_at_ledger: env.ledger().sequence(), created_at_time: env.ledger().timestamp(), concluded_at_ledger: None, + max_donations_per_donor: None, + min_donation_interval_seconds: None, }; env.storage() .persistent() diff --git a/campaign/src/lib.rs b/campaign/src/lib.rs index 396593be..c2fa5eb9 100644 --- a/campaign/src/lib.rs +++ b/campaign/src/lib.rs @@ -70,6 +70,18 @@ pub const VERSION: u32 = 1; /// Refunds are only permitted within this window after campaign end or cancellation. pub const REFUND_WINDOW: u64 = 30 * 24 * 60 * 60; +/// Issue #91 — per-block burst cap: maximum number of donation calls accepted +/// from a single donor address within one Soroban ledger sequence number. +/// +/// Soroban executes at most one transaction per ledger per account (enforced by +/// sequence numbers), so this cap is an additional guard against multi-sender +/// dust spam in the same ledger. Set to `10` as a conservative default that +/// allows burst funding while blocking adversarial micro-donation floods. +/// +/// This constant applies globally to every campaign regardless of the +/// per-campaign `max_donations_per_donor` setting. +pub const MAX_DONATIONS_PER_BLOCK: u32 = 10; + // Re-export the workspace semver constants so the campaign contract exposes // them through its own `pub use` surface. The legacy `VERSION: u32` constant // above is preserved for backwards compatibility with pre-0.2 callers — new @@ -94,6 +106,12 @@ impl CampaignContract { /// Requires: Creator authorization via `creator.require_auth()` /// Can only be called once per contract instance /// + /// Issue #91 — Rate limiting / dust-attack protection: + /// - `max_donations_per_donor`: optional lifetime cap on donations per donor + /// address. Pass `None` to preserve the unrestricted default. + /// - `min_donation_interval_seconds`: optional cooldown between consecutive + /// donations from the same address. Pass `None` to disable. + /// /// # Panics /// - `Error::Unauthorized` if caller is not the creator /// - `Error::AlreadyInitialized` if campaign already exists @@ -104,6 +122,9 @@ impl CampaignContract { /// - `Error::InvalidMilestoneCount` if milestone count is not 1-5 /// - `Error::InvalidMilestones` if milestones are not sorted ascending /// - `Error::MilestoneMismatch` if last milestone.target_amount != goal_amount + /// `#[allow(clippy::too_many_arguments)]`: this is the public contract + /// entrypoint and cannot be refactored without a breaking API change. + #[allow(clippy::too_many_arguments)] pub fn initialize( env: Env, creator: soroban_sdk::Address, @@ -112,6 +133,8 @@ impl CampaignContract { accepted_assets: Vec, milestones: Vec, min_donation_amount: i128, + max_donations_per_donor: Option, + min_donation_interval_seconds: Option, ) -> Result<(), Error> { creator.require_auth(); @@ -153,6 +176,8 @@ impl CampaignContract { created_at_ledger: env.ledger().sequence(), created_at_time: env.ledger().timestamp(), concluded_at_ledger: None, + max_donations_per_donor, + min_donation_interval_seconds, }; set_campaign(&env, &campaign); @@ -253,15 +278,52 @@ impl CampaignContract { panic_with_error(&env, Error::AssetBlocked); } - storage_increment_asset_raised(&env, &asset_address, amount); - increment_donor_asset_donation(&env, &donor, &asset_address, amount); - - // Update donor record + // Issue #91 — Rate limiting / dust-attack protection. + // Load the donor record before any storage mutation so all three guards + // can inspect current state and reject the call without partial writes. let existing_donor = get_donor(&env, &donor); let is_new_donor = existing_donor.is_none(); let mut donor_record = existing_donor.unwrap_or_else(|| DonorRecord::new_for(donor.clone(), asset.clone())); + // Guard 1: per-ledger burst cap (MAX_DONATIONS_PER_BLOCK). + // Soroban ledger sequence numbers increment every ~5 s; this prevents + // a single donor from submitting an unlimited burst of micro-donations + // in one ledger, which inflates gas costs for honest users and bloats + // the per-donor donation history. + if donor_record.last_donation_ledger == env.ledger().sequence() + && donor_record.donation_count >= MAX_DONATIONS_PER_BLOCK + { + panic_with_error(&env, Error::DonationRateLimited); + } + + // Guard 2: configurable lifetime donation cap per donor. + // `None` (default) preserves the previous unlimited behaviour. + if let Some(max_per_donor) = campaign.max_donations_per_donor { + if donor_record.donation_count >= max_per_donor { + panic_with_error(&env, Error::DonationRateLimited); + } + } + + // Guard 3: configurable minimum interval between donations. + // `None` (default) disables the interval check. + // `last_donation_time == 0` means first-ever donation and is always allowed. + if let Some(interval) = campaign.min_donation_interval_seconds { + if donor_record.last_donation_time > 0 { + let elapsed = env + .ledger() + .timestamp() + .saturating_sub(donor_record.last_donation_time); + if elapsed < interval { + panic_with_error(&env, Error::DonationRateLimited); + } + } + } + + // All guards passed — now mutate storage. + storage_increment_asset_raised(&env, &asset_address, amount); + increment_donor_asset_donation(&env, &donor, &asset_address, amount); + donor_record.apply_donation( &env, amount, @@ -808,6 +870,7 @@ mod test { pub mod invariant_tests; pub mod milestone_batch_tests; pub mod negative_path_tests; + pub mod rate_limiting_tests; pub mod refund_eligibility_tests; pub mod release_milestone_tests; pub mod report_cache_tests; diff --git a/campaign/src/multi_asset_release.rs b/campaign/src/multi_asset_release.rs index eb146209..027cf717 100644 --- a/campaign/src/multi_asset_release.rs +++ b/campaign/src/multi_asset_release.rs @@ -299,6 +299,8 @@ mod tests { created_at_ledger: 0, created_at_time: 0, concluded_at_ledger: None, + max_donations_per_donor: None, + min_donation_interval_seconds: None, }; set_campaign(&env, &campaign); diff --git a/campaign/src/test/bump_storage_tests.rs b/campaign/src/test/bump_storage_tests.rs index 04305991..9984b3a5 100644 --- a/campaign/src/test/bump_storage_tests.rs +++ b/campaign/src/test/bump_storage_tests.rs @@ -72,6 +72,8 @@ fn setup_campaign(env: &Env, milestone_count: u32) { created_at_ledger: env.ledger().sequence(), created_at_time: env.ledger().timestamp(), concluded_at_ledger: None, + max_donations_per_donor: None, + min_donation_interval_seconds: None, }; set_campaign(env, &campaign); } diff --git a/campaign/src/test/claim_refund_tests.rs b/campaign/src/test/claim_refund_tests.rs index 4604f3f4..78571c4d 100644 --- a/campaign/src/test/claim_refund_tests.rs +++ b/campaign/src/test/claim_refund_tests.rs @@ -5,11 +5,9 @@ #![cfg(test)] -use core::ops::Add; - use soroban_sdk::testutils::{Address as AddressTestUtils, Ledger}; use soroban_sdk::token::{StellarAssetClient, TokenClient}; -use soroban_sdk::{log, vec, Address, Env, Vec}; +use soroban_sdk::{vec, Address, Env, Vec}; use super::with_contract; use crate::storage::{set_campaign, set_donor, set_milestone}; @@ -61,6 +59,8 @@ fn create_test_campaign( created_at_ledger: 0, created_at_time: 0, concluded_at_ledger: None, + max_donations_per_donor: None, + min_donation_interval_seconds: None, }; set_campaign(env, &campaign); campaign @@ -172,6 +172,8 @@ fn test_claim_refund_refund_amount_overflow() { created_at_ledger: 0, created_at_time: 0, concluded_at_ledger: None, + max_donations_per_donor: None, + min_donation_interval_seconds: None, }; set_campaign(&env, &campaign); create_test_milestone(&env, 0, 1000, MilestoneStatus::Locked); @@ -216,6 +218,8 @@ fn test_claim_refund_zero_denominator() { created_at_ledger: 0, created_at_time: 0, concluded_at_ledger: None, + max_donations_per_donor: None, + min_donation_interval_seconds: None, }; set_campaign(&env, &campaign); create_test_milestone(&env, 0, 1000, MilestoneStatus::Locked); @@ -505,6 +509,8 @@ fn test_claim_refund_ended_donor_100() { &accepted_assets, &milestones, &min_donation_amount, + &None, + &None, ); client.donate(&donor, &100, &AssetInfo::Stellar(token_address.clone())); @@ -568,6 +574,8 @@ fn test_claim_refund_ended_donor_1() { &accepted_assets, &milestones, &min_donation_amount, + &None, + &None, ); client.donate(&donor, &1, &AssetInfo::Stellar(token_address.clone())); @@ -625,6 +633,8 @@ fn test_claim_refund_ended_full_refund() { &accepted_assets, &milestones, &min_donation_amount, + &None, + &None, ); client.donate(&donor, &1500, &AssetInfo::Stellar(token_address.clone())); diff --git a/campaign/src/test/concluded_ledger_tests.rs b/campaign/src/test/concluded_ledger_tests.rs index a6802133..d9015348 100644 --- a/campaign/src/test/concluded_ledger_tests.rs +++ b/campaign/src/test/concluded_ledger_tests.rs @@ -35,6 +35,8 @@ fn setup_test_campaign(env: &Env) -> CampaignData { created_at_ledger: env.ledger().sequence(), created_at_time: env.ledger().timestamp(), concluded_at_ledger: None, + max_donations_per_donor: None, + min_donation_interval_seconds: None, }; init_campaign(env, &campaign); diff --git a/campaign/src/test/get_campaign_status_tests.rs b/campaign/src/test/get_campaign_status_tests.rs index 80dd43f4..08946e7a 100644 --- a/campaign/src/test/get_campaign_status_tests.rs +++ b/campaign/src/test/get_campaign_status_tests.rs @@ -5,11 +5,11 @@ #![cfg(test)] use soroban_sdk::testutils::{Address as AddressTestUtils, Ledger}; -use soroban_sdk::{Address, BytesN, Env, String, Vec}; +use soroban_sdk::{Address, Env, String, Vec}; use super::with_contract; use crate::storage::set_campaign; -use crate::types::{CampaignData, CampaignStatus, MilestoneData, MilestoneStatus, StellarAsset}; +use crate::types::{CampaignData, CampaignStatus, StellarAsset}; use crate::CampaignContract; /// Base ledger timestamp (1 year in seconds) so we can safely subtract @@ -41,6 +41,8 @@ fn setup_active_campaign(env: &Env) { created_at_ledger: env.ledger().sequence(), created_at_time: env.ledger().timestamp(), concluded_at_ledger: None, + max_donations_per_donor: None, + min_donation_interval_seconds: None, }; set_campaign(env, &campaign); } @@ -82,6 +84,8 @@ fn returns_ended_status() { created_at_ledger: env.ledger().sequence(), created_at_time: env.ledger().timestamp(), concluded_at_ledger: None, + max_donations_per_donor: None, + min_donation_interval_seconds: None, }; set_campaign(&env, &campaign); let result = CampaignContract::get_campaign_status(env.clone()); @@ -114,6 +118,8 @@ fn returns_cancelled_status() { created_at_ledger: env.ledger().sequence(), created_at_time: env.ledger().timestamp(), concluded_at_ledger: None, + max_donations_per_donor: None, + min_donation_interval_seconds: None, }; set_campaign(&env, &campaign); let result = CampaignContract::get_campaign_status(env.clone()); diff --git a/campaign/src/test/integration_tests.rs b/campaign/src/test/integration_tests.rs index 7f04d3c3..a830ed57 100644 --- a/campaign/src/test/integration_tests.rs +++ b/campaign/src/test/integration_tests.rs @@ -9,10 +9,7 @@ use soroban_sdk::{Address, BytesN, Env, String, Vec}; use super::with_contract; use crate::storage::{get_campaign, get_milestone}; -use crate::types::{ - AssetInfo, CampaignData, CampaignStatus, DonorRecord, MilestoneData, MilestoneStatus, - StellarAsset, -}; +use crate::types::{AssetInfo, CampaignStatus, MilestoneData, MilestoneStatus, StellarAsset}; use crate::CampaignContract; // ─── Helpers ───────────────────────────────────────────────────────────────── @@ -63,6 +60,8 @@ fn test_initialize_happy_path() { assets.clone(), milestones.clone(), 0, + None, + None, ); assert!(result.is_ok(), "Initialize should succeed"); @@ -93,8 +92,18 @@ fn test_extend_deadline_happy_path() { let end_time = env.ledger().timestamp() + 86_400; let new_end_time = env.ledger().timestamp() + (2 * 86_400); - CampaignContract::initialize(env.clone(), creator, 1000, end_time, assets, milestones, 0) - .unwrap(); + CampaignContract::initialize( + env.clone(), + creator, + 1000, + end_time, + assets, + milestones, + 0, + None, + None, + ) + .unwrap(); CampaignContract::extend_deadline(env.clone(), new_end_time); @@ -124,6 +133,8 @@ fn test_donate_happy_path() { assets.clone(), milestones.clone(), 0, + None, + None, ) .unwrap(); @@ -200,6 +211,8 @@ fn test_lifecycle_end_and_refund_eligibility() { assets.clone(), milestones.clone(), 0, + None, + None, ) .unwrap(); @@ -271,6 +284,8 @@ fn test_lifecycle_multi_milestone_unlock() { assets.clone(), milestones.clone(), 0, + None, + None, ) .unwrap(); @@ -408,6 +423,8 @@ fn test_campaign_analytics_report_and_summary() { assets.clone(), milestones.clone(), 0, + None, + None, ) .unwrap(); @@ -487,6 +504,8 @@ fn test_donate_below_minimum_panics_assert() { assets.clone(), milestones.clone(), 100, // min donation is 100 + None, + None, ) .unwrap(); diff --git a/campaign/src/test/invariant_tests.rs b/campaign/src/test/invariant_tests.rs index 3758b80b..1cb48c42 100644 --- a/campaign/src/test/invariant_tests.rs +++ b/campaign/src/test/invariant_tests.rs @@ -54,6 +54,8 @@ fn setup_campaign_with_milestones( created_at_ledger: env.ledger().sequence(), created_at_time: env.ledger().timestamp(), concluded_at_ledger: None, + max_donations_per_donor: None, + min_donation_interval_seconds: None, }; set_campaign(env, &campaign); diff --git a/campaign/src/test/milestone_batch_tests.rs b/campaign/src/test/milestone_batch_tests.rs index 3278b0c4..628c0550 100644 --- a/campaign/src/test/milestone_batch_tests.rs +++ b/campaign/src/test/milestone_batch_tests.rs @@ -63,6 +63,8 @@ fn setup_campaign(env: &Env, milestone_count: u32) { created_at_ledger: env.ledger().sequence(), created_at_time: env.ledger().timestamp(), concluded_at_ledger: None, + max_donations_per_donor: None, + min_donation_interval_seconds: None, }; set_campaign(env, &campaign); } diff --git a/campaign/src/test/negative_path_tests.rs b/campaign/src/test/negative_path_tests.rs index f433be46..a65a83c0 100644 --- a/campaign/src/test/negative_path_tests.rs +++ b/campaign/src/test/negative_path_tests.rs @@ -11,8 +11,7 @@ use soroban_sdk::{Address, BytesN, Env, String, Vec}; use super::with_contract; use crate::storage::{get_campaign, set_campaign, set_donor, set_milestone}; use crate::types::{ - AssetInfo, CampaignData, CampaignStatus, DataKey, DonorRecord, Error, MilestoneData, - MilestoneStatus, StellarAsset, + AssetInfo, CampaignStatus, DonorRecord, MilestoneData, MilestoneStatus, StellarAsset, }; use crate::CampaignContractClient; use crate::{CampaignContract, MAX_DEADLINE_GAP_SECONDS}; @@ -65,6 +64,8 @@ fn initialize_default_campaign(env: &Env) -> (Address, u64) { assets, milestones, 0, + None, + None, ); (creator, end_time) } @@ -114,6 +115,8 @@ fn test_initialize_fails_already_initialized() { default_accepted_assets(&env), default_milestones(&env), 0, + None, + None, ); }); } @@ -134,6 +137,8 @@ fn test_initialize_fails_zero_goal() { default_accepted_assets(&env), default_milestones(&env), 0, + None, + None, ); }); } @@ -154,6 +159,8 @@ fn test_initialize_fails_negative_goal() { default_accepted_assets(&env), default_milestones(&env), 0, + None, + None, ); }); } @@ -175,6 +182,8 @@ fn test_initialize_fails_past_end_time() { default_accepted_assets(&env), default_milestones(&env), 0, + None, + None, ); }); } @@ -196,6 +205,8 @@ fn test_initialize_fails_empty_assets() { empty_assets, default_milestones(&env), 0, + None, + None, ); }); } @@ -221,6 +232,8 @@ fn test_initialize_fails_empty_asset_code() { assets, default_milestones(&env), 0, + None, + None, ); }); } @@ -242,6 +255,8 @@ fn test_initialize_fails_zero_milestones() { default_accepted_assets(&env), empty_milestones, 0, + None, + None, ); }); } @@ -276,6 +291,8 @@ fn test_initialize_fails_too_many_milestones() { default_accepted_assets(&env), milestones, 0, + None, + None, ); }); } @@ -319,6 +336,8 @@ fn test_initialize_fails_milestone_targets_not_ascending() { default_accepted_assets(&env), milestones, 0, + None, + None, ); }); } @@ -351,6 +370,8 @@ fn test_initialize_fails_milestone_last_target_not_equal_goal() { default_accepted_assets(&env), milestones, 0, + None, + None, ); }); } @@ -374,7 +395,7 @@ fn test_donate_fails_campaign_ended() { let env = make_env(); env.mock_all_auths(); with_contract(&env, || { - let (creator, _) = initialize_default_campaign(&env); + let (_creator, _) = initialize_default_campaign(&env); CampaignContract::end_campaign(env.clone()); let donor = Address::generate(&env); CampaignContract::donate(env.clone(), donor, 100, AssetInfo::Native); @@ -434,6 +455,8 @@ fn test_donate_fails_below_minimum() { default_accepted_assets(&env), default_milestones(&env), 100, + None, + None, ); let donor = Address::generate(&env); CampaignContract::donate(env.clone(), donor, 50, AssetInfo::Native); @@ -570,6 +593,8 @@ fn test_is_refund_eligible_fails_goal_reached() { default_accepted_assets(&env), default_milestones(&env), 0, + None, + None, ); let mut campaign = get_campaign(&env).unwrap(); campaign.status = CampaignStatus::GoalReached; @@ -599,6 +624,8 @@ fn test_is_refund_eligible_fails_window_closed() { default_accepted_assets(&env), default_milestones(&env), 0, + None, + None, ); let mut campaign = get_campaign(&env).unwrap(); campaign.end_time = env.ledger().timestamp() - (31 * 24 * 60 * 60); @@ -882,6 +909,8 @@ fn test_refund_window_edge_boundary() { default_accepted_assets(&env), default_milestones(&env), 0, + None, + None, ); let mut campaign = get_campaign(&env).unwrap(); campaign.end_time = env.ledger().timestamp() - (30 * 24 * 60 * 60); @@ -911,6 +940,8 @@ fn test_refund_window_just_after_boundary() { default_accepted_assets(&env), default_milestones(&env), 0, + None, + None, ); let mut campaign = get_campaign(&env).unwrap(); campaign.end_time = env.ledger().timestamp() - (30 * 24 * 60 * 60 + 1); @@ -977,7 +1008,6 @@ fn test_upgrade_succeeds_after_unfreeze() { #[test] fn test_version() { - let env = make_env(); assert_eq!(CampaignContract::version(), 1); } @@ -1005,6 +1035,8 @@ fn test_initialize_requires_auth() { default_accepted_assets(&env), default_milestones(&env), 0, + None, + None, ); }); } @@ -1016,7 +1048,7 @@ fn test_full_lifecycle_happy_path() { let env = make_env(); env.mock_all_auths(); with_contract(&env, || { - let (creator, _) = initialize_default_campaign(&env); + let (_creator, _) = initialize_default_campaign(&env); let status = CampaignContract::get_campaign_status(env.clone()); assert_eq!(status.status, CampaignStatus::Active); assert!(status.days_remaining > 0); diff --git a/campaign/src/test/rate_limiting_tests.rs b/campaign/src/test/rate_limiting_tests.rs new file mode 100644 index 00000000..e89a9d5f --- /dev/null +++ b/campaign/src/test/rate_limiting_tests.rs @@ -0,0 +1,449 @@ +//! Tests for per-donor rate limiting and dust-attack protection (issue #91). +//! +//! Covers: +//! - `MAX_DONATIONS_PER_BLOCK` burst cap: back-to-back donations within the +//! same ledger sequence number are rejected at the threshold. +//! - `max_donations_per_donor`: lifetime donation cap per donor address. +//! - `min_donation_interval_seconds`: cooldown between consecutive donations. +//! - Default `None` values preserve the existing unlimited behaviour (no +//! breaking change). +//! - First-ever donation always succeeds regardless of interval setting. + +#![cfg(test)] + +use soroban_sdk::testutils::{Address as AddressTestUtils, Ledger as _}; +use soroban_sdk::{Address, BytesN, Env, String, Vec}; + +use super::with_contract; +use crate::storage::{get_donor, set_donor}; +use crate::types::{AssetInfo, DonorRecord, MilestoneData, MilestoneStatus, StellarAsset}; +use crate::{CampaignContract, MAX_DONATIONS_PER_BLOCK}; + +// ─── Helpers ───────────────────────────────────────────────────────────────── + +fn default_milestones(env: &Env, goal: i128) -> Vec { + let mut ms: Vec = Vec::new(env); + ms.push_back(MilestoneData { + index: 0, + target_amount: goal, + released_amount: 0, + description_hash: BytesN::from_array(env, &[1u8; 32]), + status: MilestoneStatus::Locked, + released_at: None, + released_at_ledger: None, + release_tx: None, + released_to: None, + }); + ms +} + +/// Initialize a campaign with the given rate-limiting settings. +/// Returns `(creator, asset_issuer_address)`. +fn init_campaign( + env: &Env, + max_donations_per_donor: Option, + min_donation_interval_seconds: Option, +) -> (Address, Address) { + let creator = Address::generate(env); + let issuer = Address::generate(env); + let asset = StellarAsset { + asset_code: String::from_str(env, "XLM"), + issuer: Some(issuer.clone()), + }; + let mut assets: Vec = Vec::new(env); + assets.push_back(asset); + let goal: i128 = 100_000; + let milestones = default_milestones(env, goal); + let end_time = env.ledger().timestamp() + 1_000_000; + + CampaignContract::initialize( + env.clone(), + creator.clone(), + goal, + end_time, + assets, + milestones, + 1, // min_donation_amount = 1 + max_donations_per_donor, + min_donation_interval_seconds, + ) + .expect("initialize should succeed"); + + (creator, issuer) +} + +// ─── Default behaviour (None, None) — no breaking change ───────────────────── + +/// When both rate-limit settings are `None` the existing unlimited behaviour is +/// preserved: donations from the same donor succeed. The test seeds a donor +/// record at count 1 and verifies a single subsequent `donate` call brings the +/// count to 2 — two live donations in one frame would hit the +/// "frame is already authorized" host constraint. +#[test] +fn test_rate_limit_defaults_none_allow_multiple_donations() { + let env = Env::default(); + env.ledger().with_mut(|li| li.timestamp = 1000); + env.mock_all_auths(); + with_contract(&env, || { + init_campaign(&env, None, None); + let donor = Address::generate(&env); + + // Seed donor at count 1 to avoid double-auth in one frame. + let seq = env.ledger().sequence(); + set_donor( + &env, + &donor, + &DonorRecord { + donor: donor.clone(), + total_donated: 100, + asset: AssetInfo::Native, + last_donation_time: env.ledger().timestamp(), + last_donation_ledger: seq, + donation_count: 1, + refund_claimed: false, + }, + ); + + // One more donation should bring count to 2. + CampaignContract::donate(env.clone(), donor.clone(), 100, AssetInfo::Native); + + let record = get_donor(&env, &donor).expect("donor record must exist"); + assert_eq!(record.donation_count, 2); + }); +} + +// ─── MAX_DONATIONS_PER_BLOCK burst cap ─────────────────────────────────────── + +/// The (MAX - 1)th donation in a ledger is accepted; one more donation that +/// reaches MAX is also accepted (the check fires at > MAX, not at = MAX). +#[test] +fn test_burst_cap_allows_exactly_max_donations_per_block() { + let env = Env::default(); + env.mock_all_auths(); + with_contract(&env, || { + init_campaign(&env, None, None); + let donor = Address::generate(&env); + + // Seed donor at MAX - 1 donations in the current ledger. + let seq = env.ledger().sequence(); + set_donor( + &env, + &donor, + &DonorRecord { + donor: donor.clone(), + total_donated: (MAX_DONATIONS_PER_BLOCK as i128 - 1) * 100, + asset: AssetInfo::Native, + last_donation_time: env.ledger().timestamp(), + last_donation_ledger: seq, + donation_count: MAX_DONATIONS_PER_BLOCK - 1, + refund_claimed: false, + }, + ); + + // The MAX-th donation in the same ledger should succeed. + CampaignContract::donate(env.clone(), donor.clone(), 100, AssetInfo::Native); + let updated = get_donor(&env, &donor).expect("donor record must exist"); + assert_eq!(updated.donation_count, MAX_DONATIONS_PER_BLOCK); + }); +} + +/// The (MAX + 1)th donation in the same ledger sequence number is rejected +/// with a panic (mapped to `Error::DonationRateLimited` on-chain). +#[test] +#[should_panic] +fn test_burst_cap_rejects_donation_exceeding_max_per_block() { + let env = Env::default(); + env.mock_all_auths(); + with_contract(&env, || { + init_campaign(&env, None, None); + let donor = Address::generate(&env); + + // Seed donor already at the cap in the current ledger. + let seq = env.ledger().sequence(); + set_donor( + &env, + &donor, + &DonorRecord { + donor: donor.clone(), + total_donated: MAX_DONATIONS_PER_BLOCK as i128 * 100, + asset: AssetInfo::Native, + last_donation_time: env.ledger().timestamp(), + last_donation_ledger: seq, + donation_count: MAX_DONATIONS_PER_BLOCK, + refund_claimed: false, + }, + ); + + // Next donation in the same ledger must panic. + CampaignContract::donate(env.clone(), donor.clone(), 100, AssetInfo::Native); + }); +} + +/// After the ledger sequence number advances the per-block cap resets and the +/// donor can donate again. +#[test] +fn test_burst_cap_resets_after_ledger_advance() { + let env = Env::default(); + env.mock_all_auths(); + with_contract(&env, || { + init_campaign(&env, None, None); + let donor = Address::generate(&env); + + let seq = env.ledger().sequence(); + set_donor( + &env, + &donor, + &DonorRecord { + donor: donor.clone(), + total_donated: MAX_DONATIONS_PER_BLOCK as i128 * 100, + asset: AssetInfo::Native, + last_donation_time: env.ledger().timestamp(), + last_donation_ledger: seq, + donation_count: MAX_DONATIONS_PER_BLOCK, + refund_claimed: false, + }, + ); + + // Move to the next ledger — the burst cap is per ledger sequence number. + env.ledger().with_mut(|li| { + li.sequence_number = seq + 1; + li.timestamp += 5; + }); + + // Donation in the new ledger should succeed. + CampaignContract::donate(env.clone(), donor.clone(), 100, AssetInfo::Native); + let updated = get_donor(&env, &donor).expect("donor record must exist"); + assert_eq!(updated.donation_count, MAX_DONATIONS_PER_BLOCK + 1); + }); +} + +// ─── max_donations_per_donor lifetime cap ──────────────────────────────────── + +/// A donor whose lifetime `donation_count` has reached `max_donations_per_donor` +/// is rejected on the next attempt. +#[test] +#[should_panic] +fn test_lifetime_cap_rejects_at_limit() { + let env = Env::default(); + env.mock_all_auths(); + with_contract(&env, || { + init_campaign(&env, Some(2), None); + let donor = Address::generate(&env); + + // Seed at cap; use ledger 1 so the burst guard won't fire. + set_donor( + &env, + &donor, + &DonorRecord { + donor: donor.clone(), + total_donated: 200, + asset: AssetInfo::Native, + last_donation_time: 1_000, + last_donation_ledger: 1, + donation_count: 2, + refund_claimed: false, + }, + ); + + // Third donation must panic. + CampaignContract::donate(env.clone(), donor.clone(), 100, AssetInfo::Native); + }); +} + +/// Donations strictly below the lifetime cap succeed normally. +#[test] +fn test_lifetime_cap_allows_donations_below_limit() { + let env = Env::default(); + env.mock_all_auths(); + with_contract(&env, || { + init_campaign(&env, Some(5), None); + let donor = Address::generate(&env); + + CampaignContract::donate(env.clone(), donor.clone(), 100, AssetInfo::Native); + let record = get_donor(&env, &donor).expect("donor record must exist"); + assert_eq!(record.donation_count, 1); + }); +} + +// ─── min_donation_interval_seconds cooldown ────────────────────────────────── + +/// A donation attempted before the cooldown window has elapsed is rejected. +#[test] +#[should_panic] +fn test_interval_rejects_donation_within_cooldown() { + let env = Env::default(); + env.ledger().with_mut(|li| li.timestamp = 1000); + env.mock_all_auths(); + with_contract(&env, || { + init_campaign(&env, None, Some(60)); + let donor = Address::generate(&env); + let now = env.ledger().timestamp(); + + // Last donation was 30 s ago — cooldown not yet satisfied. + set_donor( + &env, + &donor, + &DonorRecord { + donor: donor.clone(), + total_donated: 100, + asset: AssetInfo::Native, + last_donation_time: now - 30, + last_donation_ledger: 1, + donation_count: 1, + refund_claimed: false, + }, + ); + + CampaignContract::donate(env.clone(), donor.clone(), 100, AssetInfo::Native); + }); +} + +/// A donation after the cooldown has fully elapsed is accepted. +#[test] +fn test_interval_allows_donation_after_cooldown_expires() { + let env = Env::default(); + env.ledger().with_mut(|li| li.timestamp = 1000); + env.mock_all_auths(); + with_contract(&env, || { + init_campaign(&env, None, Some(60)); + let donor = Address::generate(&env); + let now = env.ledger().timestamp(); + + // Last donation was 61 s ago — cooldown satisfied. + set_donor( + &env, + &donor, + &DonorRecord { + donor: donor.clone(), + total_donated: 100, + asset: AssetInfo::Native, + last_donation_time: now - 61, + last_donation_ledger: 1, + donation_count: 1, + refund_claimed: false, + }, + ); + + CampaignContract::donate(env.clone(), donor.clone(), 100, AssetInfo::Native); + let updated = get_donor(&env, &donor).expect("donor record must exist"); + assert_eq!(updated.donation_count, 2); + }); +} + +/// The very first donation from an address always succeeds even when +/// `min_donation_interval_seconds` is set, because `last_donation_time == 0`. +#[test] +fn test_interval_first_donation_always_allowed() { + let env = Env::default(); + env.ledger().with_mut(|li| li.timestamp = 1000); + env.mock_all_auths(); + with_contract(&env, || { + init_campaign(&env, None, Some(3600)); + let donor = Address::generate(&env); + + // No prior record → first donation must succeed. + CampaignContract::donate(env.clone(), donor.clone(), 100, AssetInfo::Native); + let record = get_donor(&env, &donor).expect("donor record must exist"); + assert_eq!(record.donation_count, 1); + assert!(record.last_donation_time > 0); + }); +} + +/// Rejected at exactly (interval - 1) seconds elapsed — one second short. +#[test] +#[should_panic] +fn test_interval_boundary_one_second_short_rejected() { + let env = Env::default(); + env.ledger().with_mut(|li| li.timestamp = 1000); + env.mock_all_auths(); + with_contract(&env, || { + let interval: u64 = 120; + init_campaign(&env, None, Some(interval)); + let donor = Address::generate(&env); + let now = env.ledger().timestamp(); + + set_donor( + &env, + &donor, + &DonorRecord { + donor: donor.clone(), + total_donated: 100, + asset: AssetInfo::Native, + last_donation_time: now - (interval - 1), + last_donation_ledger: 1, + donation_count: 1, + refund_claimed: false, + }, + ); + + CampaignContract::donate(env.clone(), donor.clone(), 100, AssetInfo::Native); + }); +} + +/// Accepted at exactly `interval` seconds elapsed — boundary is inclusive. +#[test] +fn test_interval_boundary_exact_expiry_accepted() { + let env = Env::default(); + env.ledger().with_mut(|li| li.timestamp = 1000); + env.mock_all_auths(); + with_contract(&env, || { + let interval: u64 = 120; + init_campaign(&env, None, Some(interval)); + let donor = Address::generate(&env); + let now = env.ledger().timestamp(); + + set_donor( + &env, + &donor, + &DonorRecord { + donor: donor.clone(), + total_donated: 100, + asset: AssetInfo::Native, + last_donation_time: now - interval, + last_donation_ledger: 1, + donation_count: 1, + refund_claimed: false, + }, + ); + + CampaignContract::donate(env.clone(), donor.clone(), 100, AssetInfo::Native); + let updated = get_donor(&env, &donor).expect("donor record must exist"); + assert_eq!(updated.donation_count, 2); + }); +} + +// ─── Combined guards ───────────────────────────────────────────────────────── + +/// With both guards active, the lifetime cap fires (guard 2) even when the +/// interval has already passed (guard 3 would allow it). +#[test] +#[should_panic] +fn test_combined_guards_lifetime_cap_fires_independently() { + let env = Env::default(); + env.ledger().with_mut(|li| li.timestamp = 1000); + env.mock_all_auths(); + with_contract(&env, || { + // Cap at 1 lifetime donation, 60 s cooldown. + init_campaign(&env, Some(1), Some(60)); + let donor = Address::generate(&env); + let now = env.ledger().timestamp(); + + // Interval is satisfied (120 s elapsed) but donor is already at cap. + set_donor( + &env, + &donor, + &DonorRecord { + donor: donor.clone(), + total_donated: 100, + asset: AssetInfo::Native, + last_donation_time: now - 120, + last_donation_ledger: 1, + donation_count: 1, + refund_claimed: false, + }, + ); + + // Lifetime cap must reject the donation. + CampaignContract::donate(env.clone(), donor.clone(), 100, AssetInfo::Native); + }); +} diff --git a/campaign/src/test/refund_eligibility_tests.rs b/campaign/src/test/refund_eligibility_tests.rs index f28b6337..0fb018f5 100644 --- a/campaign/src/test/refund_eligibility_tests.rs +++ b/campaign/src/test/refund_eligibility_tests.rs @@ -62,6 +62,8 @@ fn create_test_campaign( created_at_ledger: 0, created_at_time: 0, concluded_at_ledger: None, + max_donations_per_donor: None, + min_donation_interval_seconds: None, }; set_campaign(env, &campaign); create_test_milestone(env, 0, MilestoneStatus::Locked); diff --git a/campaign/src/test/release_milestone_tests.rs b/campaign/src/test/release_milestone_tests.rs index fb689b94..5c7995bd 100644 --- a/campaign/src/test/release_milestone_tests.rs +++ b/campaign/src/test/release_milestone_tests.rs @@ -60,6 +60,8 @@ fn create_test_campaign(env: &Env, creator: &Address, milestone_count: u32) { created_at_ledger: env.ledger().sequence(), created_at_time: env.ledger().timestamp(), concluded_at_ledger: None, + max_donations_per_donor: None, + min_donation_interval_seconds: None, }; set_campaign(env, &campaign); } @@ -150,6 +152,8 @@ fn create_multi_asset_campaign_with_funding( created_at_ledger: env.ledger().sequence(), created_at_time: env.ledger().timestamp(), concluded_at_ledger: None, + max_donations_per_donor: None, + min_donation_interval_seconds: None, }; set_campaign(env, &campaign); diff --git a/campaign/src/test/report_cache_tests.rs b/campaign/src/test/report_cache_tests.rs index 056a039c..cb18d3eb 100644 --- a/campaign/src/test/report_cache_tests.rs +++ b/campaign/src/test/report_cache_tests.rs @@ -79,6 +79,8 @@ fn initialize_campaign(env: &Env, creator: &Address, token: &Address, goal: i128 assets, milestones, 0, + None, + None, ) .unwrap(); } @@ -213,6 +215,8 @@ fn get_cached_report_falls_back_for_pre_cache_state() { created_at_ledger: env.ledger().sequence(), created_at_time: env.ledger().timestamp(), concluded_at_ledger: None, + max_donations_per_donor: None, + min_donation_interval_seconds: None, }; set_campaign(&env, &campaign); let _ = set_milestone; // (helper imported for parity with sibling tests) diff --git a/campaign/src/types.rs b/campaign/src/types.rs index f794858a..c9f0bf70 100644 --- a/campaign/src/types.rs +++ b/campaign/src/types.rs @@ -116,6 +116,13 @@ pub enum Error { // ── Asset block ───────────────────────────────────────────────────── 9x /// Donations in this asset are blocked by the admin. AssetBlocked = 90, + + // ── Rate limiting / dust-attack protection ─────────────────────── 10x (issue #91) + /// Donor has exceeded the maximum number of donations allowed for this + /// campaign (`max_donations_per_donor`) or the global + /// `MAX_DONATIONS_PER_BLOCK` burst cap. Wait for the next ledger or + /// check `min_donation_interval_seconds` before retrying. + DonationRateLimited = 100, } #[cfg(test)] @@ -167,6 +174,7 @@ mod error_code_tests { Error::InvalidAmount as u32, Error::ContractFrozen as u32, Error::AssetBlocked as u32, + Error::DonationRateLimited as u32, ]; for (index, code) in campaign_codes.iter().enumerate() { assert!(!campaign_codes[index + 1..].contains(code)); @@ -420,6 +428,23 @@ pub struct CampaignData { /// Ledger number at which the campaign entered its terminal state, /// if it has done so. pub concluded_at_ledger: Option, + + // ── Rate limiting / dust-attack protection (issue #91) ──────────────── + /// Optional cap on the total lifetime donation count per donor address. + /// + /// When `Some(n)`, a donor whose `donation_count` has already reached `n` + /// is rejected with `Error::DonationRateLimited`. `None` (the default) + /// preserves the previous unlimited behaviour. + pub max_donations_per_donor: Option, + + /// Optional minimum interval (in seconds) that must elapse between + /// consecutive donations from the same address. + /// + /// When `Some(s)`, a donation is rejected with `Error::DonationRateLimited` + /// if `current_timestamp - donor.last_donation_time < s`. The first + /// donation from an address always succeeds (last_donation_time == 0). + /// `None` (the default) preserves the previous unrestricted behaviour. + pub min_donation_interval_seconds: Option, } impl CampaignData { diff --git a/campaign/test_snapshots/asset_auth/tests/direct_storage_write_does_not_bypass_early_guard.1.json b/campaign/test_snapshots/asset_auth/tests/direct_storage_write_does_not_bypass_early_guard.1.json new file mode 100644 index 00000000..e5c2446e --- /dev/null +++ b/campaign/test_snapshots/asset_auth/tests/direct_storage_write_does_not_bypass_early_guard.1.json @@ -0,0 +1,238 @@ +{ + "generators": { + "address": 5, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [] + ], + "ledger": { + "protocol_version": 26, + "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": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "vec": [ + { + "symbol": "CampaignData" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "accepted_assets" + }, + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "USDC" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + } + ] + } + ] + } + }, + { + "key": { + "symbol": "concluded_at_ledger" + }, + "val": "void" + }, + { + "key": { + "symbol": "created_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "created_at_time" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "86400" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "10000" + } + }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "min_donation_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "vec": [ + { + "symbol": "DonorAssetDonation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "500" + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 4095 + } + ] + }, + "events": [] +} \ No newline at end of file diff --git a/campaign/test_snapshots/asset_auth/tests/empty_accepted_assets_panics.1.json b/campaign/test_snapshots/asset_auth/tests/empty_accepted_assets_panics.1.json new file mode 100644 index 00000000..13c92ccd --- /dev/null +++ b/campaign/test_snapshots/asset_auth/tests/empty_accepted_assets_panics.1.json @@ -0,0 +1,60 @@ +{ + "generators": { + "address": 3, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [] + ], + "ledger": { + "protocol_version": 26, + "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": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 4095 + } + ] + }, + "events": [] +} \ No newline at end of file diff --git a/campaign/test_snapshots/asset_auth/tests/native_xlm_accepted_passes.1.json b/campaign/test_snapshots/asset_auth/tests/native_xlm_accepted_passes.1.json new file mode 100644 index 00000000..edc5f53b --- /dev/null +++ b/campaign/test_snapshots/asset_auth/tests/native_xlm_accepted_passes.1.json @@ -0,0 +1,61 @@ +{ + "generators": { + "address": 3, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [] + ], + "ledger": { + "protocol_version": 26, + "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": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 4095 + } + ] + }, + "events": [] +} \ No newline at end of file diff --git a/campaign/test_snapshots/asset_auth/tests/native_xlm_not_in_list_panics.1.json b/campaign/test_snapshots/asset_auth/tests/native_xlm_not_in_list_panics.1.json new file mode 100644 index 00000000..90281eaa --- /dev/null +++ b/campaign/test_snapshots/asset_auth/tests/native_xlm_not_in_list_panics.1.json @@ -0,0 +1,60 @@ +{ + "generators": { + "address": 3, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [] + ], + "ledger": { + "protocol_version": 26, + "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": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 4095 + } + ] + }, + "events": [] +} \ No newline at end of file diff --git a/campaign/test_snapshots/asset_auth/tests/stellar_accepted_asset_passes.1.json b/campaign/test_snapshots/asset_auth/tests/stellar_accepted_asset_passes.1.json new file mode 100644 index 00000000..edc5f53b --- /dev/null +++ b/campaign/test_snapshots/asset_auth/tests/stellar_accepted_asset_passes.1.json @@ -0,0 +1,61 @@ +{ + "generators": { + "address": 3, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [] + ], + "ledger": { + "protocol_version": 26, + "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": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 4095 + } + ] + }, + "events": [] +} \ No newline at end of file diff --git a/campaign/test_snapshots/asset_auth/tests/stellar_unaccepted_asset_panics.1.json b/campaign/test_snapshots/asset_auth/tests/stellar_unaccepted_asset_panics.1.json new file mode 100644 index 00000000..1cdcdf6c --- /dev/null +++ b/campaign/test_snapshots/asset_auth/tests/stellar_unaccepted_asset_panics.1.json @@ -0,0 +1,60 @@ +{ + "generators": { + "address": 4, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [] + ], + "ledger": { + "protocol_version": 26, + "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": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 4095 + } + ] + }, + "events": [] +} \ No newline at end of file diff --git a/campaign/test_snapshots/asset_auth/tests/view_native_xlm_returns_true_when_accepted.1.json b/campaign/test_snapshots/asset_auth/tests/view_native_xlm_returns_true_when_accepted.1.json new file mode 100644 index 00000000..aa805540 --- /dev/null +++ b/campaign/test_snapshots/asset_auth/tests/view_native_xlm_returns_true_when_accepted.1.json @@ -0,0 +1,209 @@ +{ + "generators": { + "address": 3, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [] + ], + "ledger": { + "protocol_version": 26, + "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": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "vec": [ + { + "symbol": "CampaignData" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "accepted_assets" + }, + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "XLM" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + } + ] + } + ] + } + }, + { + "key": { + "symbol": "concluded_at_ledger" + }, + "val": "void" + }, + { + "key": { + "symbol": "created_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "created_at_time" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "86400" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "10000" + } + }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "min_donation_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 4095 + } + ] + }, + "events": [] +} \ No newline at end of file diff --git a/campaign/test_snapshots/asset_auth/tests/view_returns_false_for_unaccepted.1.json b/campaign/test_snapshots/asset_auth/tests/view_returns_false_for_unaccepted.1.json new file mode 100644 index 00000000..6e7b31d7 --- /dev/null +++ b/campaign/test_snapshots/asset_auth/tests/view_returns_false_for_unaccepted.1.json @@ -0,0 +1,209 @@ +{ + "generators": { + "address": 4, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [] + ], + "ledger": { + "protocol_version": 26, + "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": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "vec": [ + { + "symbol": "CampaignData" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "accepted_assets" + }, + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "USDC" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + } + ] + } + ] + } + }, + { + "key": { + "symbol": "concluded_at_ledger" + }, + "val": "void" + }, + { + "key": { + "symbol": "created_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "created_at_time" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "86400" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "10000" + } + }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "min_donation_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 4095 + } + ] + }, + "events": [] +} \ No newline at end of file diff --git a/campaign/test_snapshots/asset_auth/tests/view_returns_false_when_not_initialized.1.json b/campaign/test_snapshots/asset_auth/tests/view_returns_false_when_not_initialized.1.json new file mode 100644 index 00000000..896f45ff --- /dev/null +++ b/campaign/test_snapshots/asset_auth/tests/view_returns_false_when_not_initialized.1.json @@ -0,0 +1,61 @@ +{ + "generators": { + "address": 2, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [] + ], + "ledger": { + "protocol_version": 26, + "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": { + "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": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 4095 + } + ] + }, + "events": [] +} \ No newline at end of file diff --git a/campaign/test_snapshots/asset_auth/tests/view_returns_true_for_accepted.1.json b/campaign/test_snapshots/asset_auth/tests/view_returns_true_for_accepted.1.json new file mode 100644 index 00000000..bd8a4395 --- /dev/null +++ b/campaign/test_snapshots/asset_auth/tests/view_returns_true_for_accepted.1.json @@ -0,0 +1,209 @@ +{ + "generators": { + "address": 3, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [] + ], + "ledger": { + "protocol_version": 26, + "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": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "vec": [ + { + "symbol": "CampaignData" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "accepted_assets" + }, + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "USDC" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + } + ] + } + ] + } + }, + { + "key": { + "symbol": "concluded_at_ledger" + }, + "val": "void" + }, + { + "key": { + "symbol": "created_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "created_at_time" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "86400" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "10000" + } + }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "min_donation_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 4095 + } + ] + }, + "events": [] +} \ No newline at end of file diff --git a/campaign/test_snapshots/get_all_milestones/tests/returns_all_milestones_for_multiple.1.json b/campaign/test_snapshots/get_all_milestones/tests/returns_all_milestones_for_multiple.1.json index f60730b1..f547e2d4 100644 --- a/campaign/test_snapshots/get_all_milestones/tests/returns_all_milestones_for_multiple.1.json +++ b/campaign/test_snapshots/get_all_milestones/tests/returns_all_milestones_for_multiple.1.json @@ -89,6 +89,12 @@ "i128": "10000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -105,6 +111,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/get_all_milestones/tests/returns_all_milestones_for_single.1.json b/campaign/test_snapshots/get_all_milestones/tests/returns_all_milestones_for_single.1.json index 8e263d77..0df88c2e 100644 --- a/campaign/test_snapshots/get_all_milestones/tests/returns_all_milestones_for_single.1.json +++ b/campaign/test_snapshots/get_all_milestones/tests/returns_all_milestones_for_single.1.json @@ -89,6 +89,12 @@ "i128": "10000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -105,6 +111,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/get_all_milestones/tests/returns_all_milestones_when_empty.1.json b/campaign/test_snapshots/get_all_milestones/tests/returns_all_milestones_when_empty.1.json index b066b0ba..495c965c 100644 --- a/campaign/test_snapshots/get_all_milestones/tests/returns_all_milestones_when_empty.1.json +++ b/campaign/test_snapshots/get_all_milestones/tests/returns_all_milestones_when_empty.1.json @@ -89,6 +89,12 @@ "i128": "10000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -105,6 +111,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/get_milestone/tests/enriched_carries_pending_release_and_is_next_pending.1.json b/campaign/test_snapshots/get_milestone/tests/enriched_carries_pending_release_and_is_next_pending.1.json index 4f1f1392..95a6448b 100644 --- a/campaign/test_snapshots/get_milestone/tests/enriched_carries_pending_release_and_is_next_pending.1.json +++ b/campaign/test_snapshots/get_milestone/tests/enriched_carries_pending_release_and_is_next_pending.1.json @@ -89,6 +89,12 @@ "i128": "10000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -105,6 +111,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/get_milestone/tests/enriched_is_fully_released_when_milestone_is_released.1.json b/campaign/test_snapshots/get_milestone/tests/enriched_is_fully_released_when_milestone_is_released.1.json index b6a56bc6..9742280f 100644 --- a/campaign/test_snapshots/get_milestone/tests/enriched_is_fully_released_when_milestone_is_released.1.json +++ b/campaign/test_snapshots/get_milestone/tests/enriched_is_fully_released_when_milestone_is_released.1.json @@ -89,6 +89,12 @@ "i128": "10000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -105,6 +111,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/get_milestone/tests/enriched_locked_milestone_is_not_marked_next_pending.1.json b/campaign/test_snapshots/get_milestone/tests/enriched_locked_milestone_is_not_marked_next_pending.1.json index 709a87a0..288916ff 100644 --- a/campaign/test_snapshots/get_milestone/tests/enriched_locked_milestone_is_not_marked_next_pending.1.json +++ b/campaign/test_snapshots/get_milestone/tests/enriched_locked_milestone_is_not_marked_next_pending.1.json @@ -89,6 +89,12 @@ "i128": "10000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -105,6 +111,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/get_milestone/tests/panics_on_index_equal_to_milestone_count.1.json b/campaign/test_snapshots/get_milestone/tests/panics_on_index_equal_to_milestone_count.1.json index bfb30590..32e5e0c5 100644 --- a/campaign/test_snapshots/get_milestone/tests/panics_on_index_equal_to_milestone_count.1.json +++ b/campaign/test_snapshots/get_milestone/tests/panics_on_index_equal_to_milestone_count.1.json @@ -88,6 +88,12 @@ "i128": "10000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -104,6 +110,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/get_milestone/tests/panics_on_index_far_exceeding_milestone_count.1.json b/campaign/test_snapshots/get_milestone/tests/panics_on_index_far_exceeding_milestone_count.1.json index bfb30590..32e5e0c5 100644 --- a/campaign/test_snapshots/get_milestone/tests/panics_on_index_far_exceeding_milestone_count.1.json +++ b/campaign/test_snapshots/get_milestone/tests/panics_on_index_far_exceeding_milestone_count.1.json @@ -88,6 +88,12 @@ "i128": "10000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -104,6 +110,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/get_milestone/tests/returns_correct_milestone_for_non_zero_index.1.json b/campaign/test_snapshots/get_milestone/tests/returns_correct_milestone_for_non_zero_index.1.json index f60730b1..f547e2d4 100644 --- a/campaign/test_snapshots/get_milestone/tests/returns_correct_milestone_for_non_zero_index.1.json +++ b/campaign/test_snapshots/get_milestone/tests/returns_correct_milestone_for_non_zero_index.1.json @@ -89,6 +89,12 @@ "i128": "10000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -105,6 +111,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/get_milestone/tests/returns_raw_data_for_index_zero.1.json b/campaign/test_snapshots/get_milestone/tests/returns_raw_data_for_index_zero.1.json index 8e263d77..0df88c2e 100644 --- a/campaign/test_snapshots/get_milestone/tests/returns_raw_data_for_index_zero.1.json +++ b/campaign/test_snapshots/get_milestone/tests/returns_raw_data_for_index_zero.1.json @@ -89,6 +89,12 @@ "i128": "10000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -105,6 +111,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/bump_storage_tests/bump_storage_extends_core_and_milestone_ttls.1.json b/campaign/test_snapshots/test/bump_storage_tests/bump_storage_extends_core_and_milestone_ttls.1.json index b3bbc2ed..7ee6dcfa 100644 --- a/campaign/test_snapshots/test/bump_storage_tests/bump_storage_extends_core_and_milestone_ttls.1.json +++ b/campaign/test_snapshots/test/bump_storage_tests/bump_storage_extends_core_and_milestone_ttls.1.json @@ -110,6 +110,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/bump_storage_tests/bump_storage_is_idempotent_at_full_ttl.1.json b/campaign/test_snapshots/test/bump_storage_tests/bump_storage_is_idempotent_at_full_ttl.1.json index 0bb868e0..a262e3c3 100644 --- a/campaign/test_snapshots/test/bump_storage_tests/bump_storage_is_idempotent_at_full_ttl.1.json +++ b/campaign/test_snapshots/test/bump_storage_tests/bump_storage_is_idempotent_at_full_ttl.1.json @@ -110,6 +110,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/bump_storage_tests/bump_storage_still_bumps_legacy_per_index_entries.1.json b/campaign/test_snapshots/test/bump_storage_tests/bump_storage_still_bumps_legacy_per_index_entries.1.json index b04033b4..2b8aecf2 100644 --- a/campaign/test_snapshots/test/bump_storage_tests/bump_storage_still_bumps_legacy_per_index_entries.1.json +++ b/campaign/test_snapshots/test/bump_storage_tests/bump_storage_still_bumps_legacy_per_index_entries.1.json @@ -110,6 +110,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/bump_storage_tests/bump_storage_tolerates_unwritten_milestone_slots.1.json b/campaign/test_snapshots/test/bump_storage_tests/bump_storage_tolerates_unwritten_milestone_slots.1.json index 8584983b..b1f56b58 100644 --- a/campaign/test_snapshots/test/bump_storage_tests/bump_storage_tolerates_unwritten_milestone_slots.1.json +++ b/campaign/test_snapshots/test/bump_storage_tests/bump_storage_tolerates_unwritten_milestone_slots.1.json @@ -110,6 +110,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_active_campaign.1.json b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_active_campaign.1.json index 9a0ed97e..493a691c 100644 --- a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_active_campaign.1.json +++ b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_active_campaign.1.json @@ -109,6 +109,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -125,6 +131,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_already_claimed.1.json b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_already_claimed.1.json index 3f53bc08..9aa072f9 100644 --- a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_already_claimed.1.json +++ b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_already_claimed.1.json @@ -109,6 +109,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -125,6 +131,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_ended_donor_1.1.json b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_ended_donor_1.1.json index f2c1f6fd..c1bd9cd1 100644 --- a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_ended_donor_1.1.json +++ b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_ended_donor_1.1.json @@ -190,7 +190,9 @@ }, { "i128": "0" - } + }, + "void", + "void" ] } }, @@ -451,6 +453,123 @@ }, "live_until": 1036800 }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "2" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 2 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "31537000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "9999" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 10000 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "10000" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Cancelled" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -545,6 +664,12 @@ "i128": "9999" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -561,6 +686,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_ended_donor_100.1.json b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_ended_donor_100.1.json index 3306147c..5554022c 100644 --- a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_ended_donor_100.1.json +++ b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_ended_donor_100.1.json @@ -190,7 +190,9 @@ }, { "i128": "0" - } + }, + "void", + "void" ] } }, @@ -470,6 +472,123 @@ }, "live_until": 1036800 }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "2" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 2 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "31537000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "999000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 10000 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "1000000" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Cancelled" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -564,6 +683,12 @@ "i128": "999000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -580,6 +705,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_ended_full_refund.1.json b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_ended_full_refund.1.json index b894cfbd..6eeca036 100644 --- a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_ended_full_refund.1.json +++ b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_ended_full_refund.1.json @@ -190,7 +190,9 @@ }, { "i128": "0" - } + }, + "void", + "void" ] } }, @@ -393,6 +395,123 @@ }, "live_until": 1036800 }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "31537000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 10000 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "1500" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Cancelled" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -487,6 +606,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -503,6 +628,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_ended_no_milestones_eligibility.1.json b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_ended_no_milestones_eligibility.1.json index f47c6f05..2614a4c8 100644 --- a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_ended_no_milestones_eligibility.1.json +++ b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_ended_no_milestones_eligibility.1.json @@ -110,6 +110,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_ended_with_milestone_released.1.json b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_ended_with_milestone_released.1.json index fa29f019..76c25ff3 100644 --- a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_ended_with_milestone_released.1.json +++ b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_ended_with_milestone_released.1.json @@ -109,6 +109,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -125,6 +131,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_ended_with_released_milestone_eligibility.1.json b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_ended_with_released_milestone_eligibility.1.json index 39066847..813f0e3e 100644 --- a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_ended_with_released_milestone_eligibility.1.json +++ b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_ended_with_released_milestone_eligibility.1.json @@ -110,6 +110,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_exactly_at_window_boundary.1.json b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_exactly_at_window_boundary.1.json index 47fef915..1d0128bf 100644 --- a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_exactly_at_window_boundary.1.json +++ b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_exactly_at_window_boundary.1.json @@ -110,6 +110,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_goal_reached_campaign.1.json b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_goal_reached_campaign.1.json index 7c73fb92..e439b0a7 100644 --- a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_goal_reached_campaign.1.json +++ b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_goal_reached_campaign.1.json @@ -109,6 +109,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -125,6 +131,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_no_donor_eligibility.1.json b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_no_donor_eligibility.1.json index 49cb3a8b..617bb9ee 100644 --- a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_no_donor_eligibility.1.json +++ b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_no_donor_eligibility.1.json @@ -110,6 +110,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_no_donor_record.1.json b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_no_donor_record.1.json index b16d2bbb..872243e6 100644 --- a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_no_donor_record.1.json +++ b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_no_donor_record.1.json @@ -109,6 +109,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -125,6 +131,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_one_second_past_window.1.json b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_one_second_past_window.1.json index 3658fc4d..e37f2b96 100644 --- a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_one_second_past_window.1.json +++ b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_one_second_past_window.1.json @@ -110,6 +110,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_refund_amount_overflow.1.json b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_refund_amount_overflow.1.json index 09258ef1..eb18072f 100644 --- a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_refund_amount_overflow.1.json +++ b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_refund_amount_overflow.1.json @@ -109,6 +109,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -125,6 +131,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_window_closed.1.json b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_window_closed.1.json index fc0a426b..8928e21f 100644 --- a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_window_closed.1.json +++ b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_window_closed.1.json @@ -109,6 +109,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -125,6 +131,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_zero_denominator.1.json b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_zero_denominator.1.json index eb9639e6..c0c8a772 100644 --- a/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_zero_denominator.1.json +++ b/campaign/test_snapshots/test/claim_refund_tests/test_claim_refund_zero_denominator.1.json @@ -109,6 +109,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -125,6 +131,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/get_campaign_status_tests/calculates_days_remaining.1.json b/campaign/test_snapshots/test/get_campaign_status_tests/calculates_days_remaining.1.json index a21fe24f..9e92d89d 100644 --- a/campaign/test_snapshots/test/get_campaign_status_tests/calculates_days_remaining.1.json +++ b/campaign/test_snapshots/test/get_campaign_status_tests/calculates_days_remaining.1.json @@ -110,6 +110,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/get_campaign_status_tests/returns_active_status.1.json b/campaign/test_snapshots/test/get_campaign_status_tests/returns_active_status.1.json index a21fe24f..9e92d89d 100644 --- a/campaign/test_snapshots/test/get_campaign_status_tests/returns_active_status.1.json +++ b/campaign/test_snapshots/test/get_campaign_status_tests/returns_active_status.1.json @@ -110,6 +110,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/get_campaign_status_tests/returns_cancelled_status.1.json b/campaign/test_snapshots/test/get_campaign_status_tests/returns_cancelled_status.1.json index b8851a91..5625a7eb 100644 --- a/campaign/test_snapshots/test/get_campaign_status_tests/returns_cancelled_status.1.json +++ b/campaign/test_snapshots/test/get_campaign_status_tests/returns_cancelled_status.1.json @@ -110,6 +110,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/get_campaign_status_tests/returns_ended_status.1.json b/campaign/test_snapshots/test/get_campaign_status_tests/returns_ended_status.1.json index 6acf05b2..ed0b234e 100644 --- a/campaign/test_snapshots/test/get_campaign_status_tests/returns_ended_status.1.json +++ b/campaign/test_snapshots/test/get_campaign_status_tests/returns_ended_status.1.json @@ -110,6 +110,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/integration_tests/test_campaign_analytics_report_and_summary.1.json b/campaign/test_snapshots/test/integration_tests/test_campaign_analytics_report_and_summary.1.json index a4b36f27..1e44be8a 100644 --- a/campaign/test_snapshots/test/integration_tests/test_campaign_analytics_report_and_summary.1.json +++ b/campaign/test_snapshots/test/integration_tests/test_campaign_analytics_report_and_summary.1.json @@ -85,6 +85,123 @@ }, "live_until": 1036800 }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "2" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 2 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "86400" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 7500 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "750" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "250" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -177,6 +294,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -193,6 +316,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/integration_tests/test_donate_below_minimum_panics_assert.1.json b/campaign/test_snapshots/test/integration_tests/test_donate_below_minimum_panics_assert.1.json index 4208b011..bfc6d14d 100644 --- a/campaign/test_snapshots/test/integration_tests/test_donate_below_minimum_panics_assert.1.json +++ b/campaign/test_snapshots/test/integration_tests/test_donate_below_minimum_panics_assert.1.json @@ -17,6 +17,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "86400" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -109,6 +226,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -125,6 +248,12 @@ "i128": "100" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/integration_tests/test_donate_happy_path.1.json b/campaign/test_snapshots/test/integration_tests/test_donate_happy_path.1.json index a8ff0950..abd4e646 100644 --- a/campaign/test_snapshots/test/integration_tests/test_donate_happy_path.1.json +++ b/campaign/test_snapshots/test/integration_tests/test_donate_happy_path.1.json @@ -85,6 +85,123 @@ }, "live_until": 1036800 }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "2" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 2 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "86400" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 10000 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "GoalReached" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -177,6 +294,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -193,6 +316,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/integration_tests/test_donate_uninitialized.1.json b/campaign/test_snapshots/test/integration_tests/test_donate_uninitialized.1.json index 51a208ee..ad47f5b3 100644 --- a/campaign/test_snapshots/test/integration_tests/test_donate_uninitialized.1.json +++ b/campaign/test_snapshots/test/integration_tests/test_donate_uninitialized.1.json @@ -64,26 +64,6 @@ }, "live_until": 4095 }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", - "key": { - "ledger_key_nonce": { - "nonce": "801925984706572462" - } - }, - "durability": "temporary", - "val": "void" - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, { "entry": { "last_modified_ledger_seq": 0, diff --git a/campaign/test_snapshots/test/integration_tests/test_extend_deadline_happy_path.1.json b/campaign/test_snapshots/test/integration_tests/test_extend_deadline_happy_path.1.json index 572a4673..a7878338 100644 --- a/campaign/test_snapshots/test/integration_tests/test_extend_deadline_happy_path.1.json +++ b/campaign/test_snapshots/test/integration_tests/test_extend_deadline_happy_path.1.json @@ -45,6 +45,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "172800" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -137,6 +254,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -153,6 +276,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/integration_tests/test_initialize_happy_path.1.json b/campaign/test_snapshots/test/integration_tests/test_initialize_happy_path.1.json index 77430909..ff467151 100644 --- a/campaign/test_snapshots/test/integration_tests/test_initialize_happy_path.1.json +++ b/campaign/test_snapshots/test/integration_tests/test_initialize_happy_path.1.json @@ -32,6 +32,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "86400" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -124,6 +241,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -140,6 +263,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/integration_tests/test_lifecycle_end_and_refund_eligibility.1.json b/campaign/test_snapshots/test/integration_tests/test_lifecycle_end_and_refund_eligibility.1.json index f03b5ec2..148720f2 100644 --- a/campaign/test_snapshots/test/integration_tests/test_lifecycle_end_and_refund_eligibility.1.json +++ b/campaign/test_snapshots/test/integration_tests/test_lifecycle_end_and_refund_eligibility.1.json @@ -72,6 +72,123 @@ }, "live_until": 1036800 }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "86400" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 5000 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "500" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "500" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -164,6 +281,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -180,6 +303,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/integration_tests/test_lifecycle_multi_milestone_unlock.1.json b/campaign/test_snapshots/test/integration_tests/test_lifecycle_multi_milestone_unlock.1.json index 818f2ce4..18cb2975 100644 --- a/campaign/test_snapshots/test/integration_tests/test_lifecycle_multi_milestone_unlock.1.json +++ b/campaign/test_snapshots/test/integration_tests/test_lifecycle_multi_milestone_unlock.1.json @@ -111,6 +111,123 @@ }, "live_until": 1036800 }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "4" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "86400" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "3000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 3 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 10000 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "3000" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "GoalReached" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -203,6 +320,12 @@ "i128": "3000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -219,6 +342,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/invariant_tests/invariant_last_milestone_target_equals_goal.1.json b/campaign/test_snapshots/test/invariant_tests/invariant_last_milestone_target_equals_goal.1.json index ac3de359..17be99d6 100644 --- a/campaign/test_snapshots/test/invariant_tests/invariant_last_milestone_target_equals_goal.1.json +++ b/campaign/test_snapshots/test/invariant_tests/invariant_last_milestone_target_equals_goal.1.json @@ -112,6 +112,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -128,6 +134,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" @@ -368,6 +380,12 @@ "i128": "3000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -384,6 +402,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/invariant_tests/invariant_milestone_targets_strictly_ascending.1.json b/campaign/test_snapshots/test/invariant_tests/invariant_milestone_targets_strictly_ascending.1.json index 1bb5cba6..6c0d9190 100644 --- a/campaign/test_snapshots/test/invariant_tests/invariant_milestone_targets_strictly_ascending.1.json +++ b/campaign/test_snapshots/test/invariant_tests/invariant_milestone_targets_strictly_ascending.1.json @@ -110,6 +110,12 @@ "i128": "3000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/invariant_tests/invariant_no_released_milestones_while_active.1.json b/campaign/test_snapshots/test/invariant_tests/invariant_no_released_milestones_while_active.1.json index 8549d5dc..b0732973 100644 --- a/campaign/test_snapshots/test/invariant_tests/invariant_no_released_milestones_while_active.1.json +++ b/campaign/test_snapshots/test/invariant_tests/invariant_no_released_milestones_while_active.1.json @@ -110,6 +110,12 @@ "i128": "3000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/invariant_tests/invariant_raised_amount_never_exceeds_goal.1.json b/campaign/test_snapshots/test/invariant_tests/invariant_raised_amount_never_exceeds_goal.1.json index 10e53989..00488025 100644 --- a/campaign/test_snapshots/test/invariant_tests/invariant_raised_amount_never_exceeds_goal.1.json +++ b/campaign/test_snapshots/test/invariant_tests/invariant_raised_amount_never_exceeds_goal.1.json @@ -110,6 +110,12 @@ "i128": "3000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/invariant_tests/invariant_total_donations_match_raised.1.json b/campaign/test_snapshots/test/invariant_tests/invariant_total_donations_match_raised.1.json index ae4c77b5..8ade4cfb 100644 --- a/campaign/test_snapshots/test/invariant_tests/invariant_total_donations_match_raised.1.json +++ b/campaign/test_snapshots/test/invariant_tests/invariant_total_donations_match_raised.1.json @@ -110,6 +110,12 @@ "i128": "3000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/milestone_batch_tests/already_unlocked_milestones_are_not_reported_again.1.json b/campaign/test_snapshots/test/milestone_batch_tests/already_unlocked_milestones_are_not_reported_again.1.json index 9d40182a..94ece608 100644 --- a/campaign/test_snapshots/test/milestone_batch_tests/already_unlocked_milestones_are_not_reported_again.1.json +++ b/campaign/test_snapshots/test/milestone_batch_tests/already_unlocked_milestones_are_not_reported_again.1.json @@ -110,6 +110,12 @@ "i128": "3000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/milestone_batch_tests/benchmark_burst_unlock_improves_by_more_than_40_percent.1.json b/campaign/test_snapshots/test/milestone_batch_tests/benchmark_burst_unlock_improves_by_more_than_40_percent.1.json index e378bc01..7caee05a 100644 --- a/campaign/test_snapshots/test/milestone_batch_tests/benchmark_burst_unlock_improves_by_more_than_40_percent.1.json +++ b/campaign/test_snapshots/test/milestone_batch_tests/benchmark_burst_unlock_improves_by_more_than_40_percent.1.json @@ -110,6 +110,12 @@ "i128": "5000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/milestone_batch_tests/benchmark_burst_unlock_improves_by_more_than_40_percent.2.json b/campaign/test_snapshots/test/milestone_batch_tests/benchmark_burst_unlock_improves_by_more_than_40_percent.2.json index 5fc070df..6f86a2f9 100644 --- a/campaign/test_snapshots/test/milestone_batch_tests/benchmark_burst_unlock_improves_by_more_than_40_percent.2.json +++ b/campaign/test_snapshots/test/milestone_batch_tests/benchmark_burst_unlock_improves_by_more_than_40_percent.2.json @@ -110,6 +110,12 @@ "i128": "5000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/milestone_batch_tests/burst_unlocks_every_reached_milestone_in_one_write.1.json b/campaign/test_snapshots/test/milestone_batch_tests/burst_unlocks_every_reached_milestone_in_one_write.1.json index 5fc070df..6f86a2f9 100644 --- a/campaign/test_snapshots/test/milestone_batch_tests/burst_unlocks_every_reached_milestone_in_one_write.1.json +++ b/campaign/test_snapshots/test/milestone_batch_tests/burst_unlocks_every_reached_milestone_in_one_write.1.json @@ -110,6 +110,12 @@ "i128": "5000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/milestone_batch_tests/legacy_per_index_layout_reads_and_migrates.1.json b/campaign/test_snapshots/test/milestone_batch_tests/legacy_per_index_layout_reads_and_migrates.1.json index 71e1d7ea..b75b582b 100644 --- a/campaign/test_snapshots/test/milestone_batch_tests/legacy_per_index_layout_reads_and_migrates.1.json +++ b/campaign/test_snapshots/test/milestone_batch_tests/legacy_per_index_layout_reads_and_migrates.1.json @@ -110,6 +110,12 @@ "i128": "3000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/milestone_batch_tests/partial_unlock_stops_at_first_unreached_target.1.json b/campaign/test_snapshots/test/milestone_batch_tests/partial_unlock_stops_at_first_unreached_target.1.json index 0befaa79..7a107941 100644 --- a/campaign/test_snapshots/test/milestone_batch_tests/partial_unlock_stops_at_first_unreached_target.1.json +++ b/campaign/test_snapshots/test/milestone_batch_tests/partial_unlock_stops_at_first_unreached_target.1.json @@ -110,6 +110,12 @@ "i128": "5000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_cancel_campaign_fails_already_cancelled.1.json b/campaign/test_snapshots/test/negative_path_tests/test_cancel_campaign_fails_already_cancelled.1.json index ec73e468..133a67b9 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_cancel_campaign_fails_already_cancelled.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_cancel_campaign_fails_already_cancelled.1.json @@ -17,6 +17,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Cancelled" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -111,6 +228,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -127,6 +250,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_cancel_campaign_frozen_panics.1.json b/campaign/test_snapshots/test/negative_path_tests/test_cancel_campaign_frozen_panics.1.json index 020b91dd..b4c3b343 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_cancel_campaign_frozen_panics.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_cancel_campaign_frozen_panics.1.json @@ -17,6 +17,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -109,6 +226,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -125,6 +248,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_cancel_campaign_not_frozen_succeeds.1.json b/campaign/test_snapshots/test/negative_path_tests/test_cancel_campaign_not_frozen_succeeds.1.json index f9753162..3851b11f 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_cancel_campaign_not_frozen_succeeds.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_cancel_campaign_not_frozen_succeeds.1.json @@ -45,6 +45,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Cancelled" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -139,6 +256,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -155,6 +278,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_cancel_then_refund_eligible.1.json b/campaign/test_snapshots/test/negative_path_tests/test_cancel_then_refund_eligible.1.json index cf1dc58b..097ec8d8 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_cancel_then_refund_eligible.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_cancel_then_refund_eligible.1.json @@ -45,6 +45,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Cancelled" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -139,6 +256,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -155,6 +278,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_claim_refund_eligible_cancelled.1.json b/campaign/test_snapshots/test/negative_path_tests/test_claim_refund_eligible_cancelled.1.json index cf1dc58b..097ec8d8 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_claim_refund_eligible_cancelled.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_claim_refund_eligible_cancelled.1.json @@ -45,6 +45,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Cancelled" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -139,6 +256,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -155,6 +278,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_claim_refund_fails_already_claimed.1.json b/campaign/test_snapshots/test/negative_path_tests/test_claim_refund_fails_already_claimed.1.json index 925b1c15..73a0ecb6 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_claim_refund_fails_already_claimed.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_claim_refund_fails_already_claimed.1.json @@ -17,6 +17,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Cancelled" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -111,6 +228,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -127,6 +250,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_claim_refund_fails_campaign_active.1.json b/campaign/test_snapshots/test/negative_path_tests/test_claim_refund_fails_campaign_active.1.json index 38152440..e3dfa57b 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_claim_refund_fails_campaign_active.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_claim_refund_fails_campaign_active.1.json @@ -17,6 +17,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -109,6 +226,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -125,6 +248,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_claim_refund_fails_no_donor_record.1.json b/campaign/test_snapshots/test/negative_path_tests/test_claim_refund_fails_no_donor_record.1.json index a59c333b..017ec35d 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_claim_refund_fails_no_donor_record.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_claim_refund_fails_no_donor_record.1.json @@ -17,6 +17,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Cancelled" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -111,6 +228,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -127,6 +250,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_donate_fails_below_minimum.1.json b/campaign/test_snapshots/test/negative_path_tests/test_donate_fails_below_minimum.1.json index 6f6a257d..8953f613 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_donate_fails_below_minimum.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_donate_fails_below_minimum.1.json @@ -17,6 +17,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -109,6 +226,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -125,6 +248,12 @@ "i128": "100" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_donate_fails_campaign_cancelled.1.json b/campaign/test_snapshots/test/negative_path_tests/test_donate_fails_campaign_cancelled.1.json index a59c333b..017ec35d 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_donate_fails_campaign_cancelled.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_donate_fails_campaign_cancelled.1.json @@ -17,6 +17,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Cancelled" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -111,6 +228,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -127,6 +250,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_donate_fails_campaign_ended.1.json b/campaign/test_snapshots/test/negative_path_tests/test_donate_fails_campaign_ended.1.json index d48ae6c1..e955feb0 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_donate_fails_campaign_ended.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_donate_fails_campaign_ended.1.json @@ -17,6 +17,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Ended" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -111,6 +228,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -127,6 +250,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_donate_fails_negative_amount.1.json b/campaign/test_snapshots/test/negative_path_tests/test_donate_fails_negative_amount.1.json index 333cee4f..9e51437f 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_donate_fails_negative_amount.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_donate_fails_negative_amount.1.json @@ -17,6 +17,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -109,6 +226,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -125,6 +248,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_donate_fails_not_initialized.1.json b/campaign/test_snapshots/test/negative_path_tests/test_donate_fails_not_initialized.1.json index 51a208ee..ad47f5b3 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_donate_fails_not_initialized.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_donate_fails_not_initialized.1.json @@ -64,26 +64,6 @@ }, "live_until": 4095 }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", - "key": { - "ledger_key_nonce": { - "nonce": "801925984706572462" - } - }, - "durability": "temporary", - "val": "void" - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, { "entry": { "last_modified_ledger_seq": 0, diff --git a/campaign/test_snapshots/test/negative_path_tests/test_donate_fails_on_donation_count_overflow.1.json b/campaign/test_snapshots/test/negative_path_tests/test_donate_fails_on_donation_count_overflow.1.json index 340c66e5..fe40bc66 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_donate_fails_on_donation_count_overflow.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_donate_fails_on_donation_count_overflow.1.json @@ -27,16 +27,106 @@ "key": { "vec": [ { - "symbol": "AssetRaised" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "symbol": "CachedReport" } ] }, "durability": "persistent", "val": { - "i128": "100" + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] } } }, @@ -136,6 +226,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -152,6 +248,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" @@ -180,36 +282,6 @@ }, "live_until": 1036800 }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "DonorAssetDonation" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" - } - ] - }, - "durability": "persistent", - "val": { - "i128": "100" - } - } - }, - "ext": "v0" - }, - "live_until": 1036800 - }, { "entry": { "last_modified_ledger_seq": 0, diff --git a/campaign/test_snapshots/test/negative_path_tests/test_donate_fails_zero_amount.1.json b/campaign/test_snapshots/test/negative_path_tests/test_donate_fails_zero_amount.1.json index 333cee4f..9e51437f 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_donate_fails_zero_amount.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_donate_fails_zero_amount.1.json @@ -17,6 +17,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -109,6 +226,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -125,6 +248,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_edge_case_no_donor_record.1.json b/campaign/test_snapshots/test/negative_path_tests/test_edge_case_no_donor_record.1.json index 4c834eab..4b3aaa0c 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_edge_case_no_donor_record.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_edge_case_no_donor_record.1.json @@ -32,6 +32,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -124,6 +241,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -140,6 +263,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_edge_case_zero_donations.1.json b/campaign/test_snapshots/test/negative_path_tests/test_edge_case_zero_donations.1.json index c01c84a6..410d47dc 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_edge_case_zero_donations.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_edge_case_zero_donations.1.json @@ -32,6 +32,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -124,6 +241,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -140,6 +263,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_end_campaign_fails_already_ended.1.json b/campaign/test_snapshots/test/negative_path_tests/test_end_campaign_fails_already_ended.1.json index eca6748d..fc5a8969 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_end_campaign_fails_already_ended.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_end_campaign_fails_already_ended.1.json @@ -17,6 +17,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Ended" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -111,6 +228,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -127,6 +250,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_end_campaign_fails_cancelled.1.json b/campaign/test_snapshots/test/negative_path_tests/test_end_campaign_fails_cancelled.1.json index ec73e468..133a67b9 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_end_campaign_fails_cancelled.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_end_campaign_fails_cancelled.1.json @@ -17,6 +17,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Cancelled" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -111,6 +228,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -127,6 +250,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_end_campaign_frozen_panics.1.json b/campaign/test_snapshots/test/negative_path_tests/test_end_campaign_frozen_panics.1.json index 020b91dd..b4c3b343 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_end_campaign_frozen_panics.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_end_campaign_frozen_panics.1.json @@ -17,6 +17,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -109,6 +226,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -125,6 +248,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_end_campaign_not_frozen_succeeds.1.json b/campaign/test_snapshots/test/negative_path_tests/test_end_campaign_not_frozen_succeeds.1.json index ebc6144c..3025822c 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_end_campaign_not_frozen_succeeds.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_end_campaign_not_frozen_succeeds.1.json @@ -45,6 +45,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Ended" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -139,6 +256,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -155,6 +278,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_end_then_refund_eligible.1.json b/campaign/test_snapshots/test/negative_path_tests/test_end_then_refund_eligible.1.json index 014c2e0c..5a1f6232 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_end_then_refund_eligible.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_end_then_refund_eligible.1.json @@ -45,6 +45,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Ended" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -139,6 +256,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -155,6 +278,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_extend_deadline_fails_absurd_future_time.1.json b/campaign/test_snapshots/test/negative_path_tests/test_extend_deadline_fails_absurd_future_time.1.json index 1412f351..b07b6002 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_extend_deadline_fails_absurd_future_time.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_extend_deadline_fails_absurd_future_time.1.json @@ -17,6 +17,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "31636000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -109,6 +226,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -125,6 +248,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_extend_deadline_fails_cancelled.1.json b/campaign/test_snapshots/test/negative_path_tests/test_extend_deadline_fails_cancelled.1.json index ec73e468..133a67b9 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_extend_deadline_fails_cancelled.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_extend_deadline_fails_cancelled.1.json @@ -17,6 +17,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Cancelled" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -111,6 +228,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -127,6 +250,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_extend_deadline_fails_past_time.1.json b/campaign/test_snapshots/test/negative_path_tests/test_extend_deadline_fails_past_time.1.json index 1412f351..b07b6002 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_extend_deadline_fails_past_time.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_extend_deadline_fails_past_time.1.json @@ -17,6 +17,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "31636000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -109,6 +226,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -125,6 +248,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_extend_deadline_frozen_panics.1.json b/campaign/test_snapshots/test/negative_path_tests/test_extend_deadline_frozen_panics.1.json index 020b91dd..b4c3b343 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_extend_deadline_frozen_panics.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_extend_deadline_frozen_panics.1.json @@ -17,6 +17,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -109,6 +226,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -125,6 +248,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_extend_deadline_not_frozen_succeeds.1.json b/campaign/test_snapshots/test/negative_path_tests/test_extend_deadline_not_frozen_succeeds.1.json index 363f22bf..06a97c45 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_extend_deadline_not_frozen_succeeds.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_extend_deadline_not_frozen_succeeds.1.json @@ -45,6 +45,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "200000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -137,6 +254,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -153,6 +276,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_full_lifecycle_happy_path.1.json b/campaign/test_snapshots/test/negative_path_tests/test_full_lifecycle_happy_path.1.json index 7d3ab19d..d44d6f86 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_full_lifecycle_happy_path.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_full_lifecycle_happy_path.1.json @@ -72,6 +72,123 @@ }, "live_until": 1036800 }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 1000 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "900" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -164,6 +281,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -180,6 +303,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_get_milestone_view_fails_out_of_bounds.1.json b/campaign/test_snapshots/test/negative_path_tests/test_get_milestone_view_fails_out_of_bounds.1.json index 3f9e7e6d..8b629d87 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_get_milestone_view_fails_out_of_bounds.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_get_milestone_view_fails_out_of_bounds.1.json @@ -17,6 +17,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -109,6 +226,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -125,6 +248,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_initialize_fails_already_initialized.1.json b/campaign/test_snapshots/test/negative_path_tests/test_initialize_fails_already_initialized.1.json index f4c3a6f9..c8b31cc8 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_initialize_fails_already_initialized.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_initialize_fails_already_initialized.1.json @@ -17,6 +17,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -109,6 +226,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -125,6 +248,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_is_refund_eligible_fails_active_campaign.1.json b/campaign/test_snapshots/test/negative_path_tests/test_is_refund_eligible_fails_active_campaign.1.json index 033d67d9..10cceab7 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_is_refund_eligible_fails_active_campaign.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_is_refund_eligible_fails_active_campaign.1.json @@ -32,6 +32,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -124,6 +241,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -140,6 +263,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_is_refund_eligible_fails_already_claimed.1.json b/campaign/test_snapshots/test/negative_path_tests/test_is_refund_eligible_fails_already_claimed.1.json index a7edfa7d..1b4ef288 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_is_refund_eligible_fails_already_claimed.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_is_refund_eligible_fails_already_claimed.1.json @@ -45,6 +45,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Cancelled" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -139,6 +256,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -155,6 +278,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_is_refund_eligible_fails_ended_with_released_milestones.1.json b/campaign/test_snapshots/test/negative_path_tests/test_is_refund_eligible_fails_ended_with_released_milestones.1.json index 58c415ab..0e9ceb21 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_is_refund_eligible_fails_ended_with_released_milestones.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_is_refund_eligible_fails_ended_with_released_milestones.1.json @@ -45,6 +45,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Ended" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -139,6 +256,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -155,6 +278,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_is_refund_eligible_fails_goal_reached.1.json b/campaign/test_snapshots/test/negative_path_tests/test_is_refund_eligible_fails_goal_reached.1.json index d844e4a8..caba2e70 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_is_refund_eligible_fails_goal_reached.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_is_refund_eligible_fails_goal_reached.1.json @@ -32,6 +32,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -124,6 +241,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -140,6 +263,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_is_refund_eligible_fails_no_donor_record.1.json b/campaign/test_snapshots/test/negative_path_tests/test_is_refund_eligible_fails_no_donor_record.1.json index c64fc905..fd35255d 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_is_refund_eligible_fails_no_donor_record.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_is_refund_eligible_fails_no_donor_record.1.json @@ -45,6 +45,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Cancelled" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -139,6 +256,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -155,6 +278,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_is_refund_eligible_fails_window_closed.1.json b/campaign/test_snapshots/test/negative_path_tests/test_is_refund_eligible_fails_window_closed.1.json index ce533476..20c4031b 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_is_refund_eligible_fails_window_closed.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_is_refund_eligible_fails_window_closed.1.json @@ -32,6 +32,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "31636000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -124,6 +241,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -140,6 +263,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_reentrancy_lock_donate_twice_succeeds.1.json b/campaign/test_snapshots/test/negative_path_tests/test_reentrancy_lock_donate_twice_succeeds.1.json index f333d63f..a837292f 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_reentrancy_lock_donate_twice_succeeds.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_reentrancy_lock_donate_twice_succeeds.1.json @@ -118,6 +118,123 @@ }, "live_until": 1036800 }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "2" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 3000 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "300" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "700" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -210,6 +327,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -226,6 +349,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_refund_window_edge_boundary.1.json b/campaign/test_snapshots/test/negative_path_tests/test_refund_window_edge_boundary.1.json index 13191b85..bd936596 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_refund_window_edge_boundary.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_refund_window_edge_boundary.1.json @@ -32,6 +32,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "31636000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -124,6 +241,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -140,6 +263,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_refund_window_just_after_boundary.1.json b/campaign/test_snapshots/test/negative_path_tests/test_refund_window_just_after_boundary.1.json index 439a1d2d..0a84ab6d 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_refund_window_just_after_boundary.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_refund_window_just_after_boundary.1.json @@ -32,6 +32,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "31636000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -124,6 +241,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -140,6 +263,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_upgrade_fails_when_frozen.1.json b/campaign/test_snapshots/test/negative_path_tests/test_upgrade_fails_when_frozen.1.json index 88cf1827..63a97ff2 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_upgrade_fails_when_frozen.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_upgrade_fails_when_frozen.1.json @@ -17,6 +17,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -109,6 +226,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -125,6 +248,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_upgrade_succeeds_after_unfreeze.1.json b/campaign/test_snapshots/test/negative_path_tests/test_upgrade_succeeds_after_unfreeze.1.json index 71b51058..55c050da 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_upgrade_succeeds_after_unfreeze.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_upgrade_succeeds_after_unfreeze.1.json @@ -58,6 +58,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -150,6 +267,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -166,6 +289,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/negative_path_tests/test_upgrade_succeeds_when_not_frozen.1.json b/campaign/test_snapshots/test/negative_path_tests/test_upgrade_succeeds_when_not_frozen.1.json index c01c84a6..410d47dc 100644 --- a/campaign/test_snapshots/test/negative_path_tests/test_upgrade_succeeds_when_not_frozen.1.json +++ b/campaign/test_snapshots/test/negative_path_tests/test_upgrade_succeeds_when_not_frozen.1.json @@ -32,6 +32,123 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "100000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, { "entry": { "last_modified_ledger_seq": 0, @@ -124,6 +241,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -140,6 +263,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/rate_limiting_tests/test_burst_cap_allows_exactly_max_donations_per_block.1.json b/campaign/test_snapshots/test/rate_limiting_tests/test_burst_cap_allows_exactly_max_donations_per_block.1.json new file mode 100644 index 00000000..d227a953 --- /dev/null +++ b/campaign/test_snapshots/test/rate_limiting_tests/test_burst_cap_allows_exactly_max_donations_per_block.1.json @@ -0,0 +1,795 @@ +{ + "generators": { + "address": 4, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "", + "args": [] + } + }, + "sub_invocations": [] + } + ], + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "", + "args": [] + } + }, + "sub_invocations": [] + } + ] + ] + ], + "ledger": { + "protocol_version": 26, + "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": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "AssetRaised" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "100" + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1000000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 10 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "99900" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CampaignData" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "accepted_assets" + }, + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "XLM" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + } + ] + } + ] + } + }, + { + "key": { + "symbol": "concluded_at_ledger" + }, + "val": "void" + }, + { + "key": { + "symbol": "created_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "created_at_time" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1000000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "min_donation_amount" + }, + "val": { + "i128": "1" + } + }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "DonationCount" + } + ] + }, + "durability": "persistent", + "val": { + "u64": "1" + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "DonorAssetDonation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "100" + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "DonorData" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "asset" + }, + "val": { + "vec": [ + { + "symbol": "Native" + } + ] + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u32": 10 + } + }, + { + "key": { + "symbol": "donor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "last_donation_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "last_donation_time" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "refund_claimed" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "total_donated" + }, + "val": { + "i128": "1000" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "MilestonesVec" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "description_hash" + }, + "val": { + "bytes": "0101010101010101010101010101010101010101010101010101010101010101" + } + }, + { + "key": { + "symbol": "index" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "release_tx" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "released_at" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_at_ledger" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_to" + }, + "val": "void" + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Locked" + } + ] + } + }, + { + "key": { + "symbol": "target_amount" + }, + "val": { + "i128": "100000" + } + } + ] + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "TotalRaised" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "100" + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "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": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 4095 + } + ] + }, + "events": [ + { + "event": { + "ext": "v0", + "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "type_": "contract", + "body": { + "v0": { + "topics": [ + { + "string": "campaign" + }, + { + "string": "initialized" + } + ], + "data": { + "map": [ + { + "key": { + "symbol": "asset_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "created_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1000000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + } + ] + } + } + } + }, + "failed_call": false + }, + { + "event": { + "ext": "v0", + "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "type_": "contract", + "body": { + "v0": { + "topics": [ + { + "symbol": "donation_received" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + ], + "data": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "i128": "100" + }, + { + "string": "XLM" + }, + { + "i128": "100" + }, + { + "u64": "0" + } + ] + } + } + } + }, + "failed_call": false + } + ] +} \ No newline at end of file diff --git a/campaign/test_snapshots/test/rate_limiting_tests/test_burst_cap_rejects_donation_exceeding_max_per_block.1.json b/campaign/test_snapshots/test/rate_limiting_tests/test_burst_cap_rejects_donation_exceeding_max_per_block.1.json new file mode 100644 index 00000000..d4d65ed0 --- /dev/null +++ b/campaign/test_snapshots/test/rate_limiting_tests/test_burst_cap_rejects_donation_exceeding_max_per_block.1.json @@ -0,0 +1,671 @@ +{ + "generators": { + "address": 4, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [] + ], + "ledger": { + "protocol_version": 26, + "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": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1000000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CampaignData" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "accepted_assets" + }, + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "XLM" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + } + ] + } + ] + } + }, + { + "key": { + "symbol": "concluded_at_ledger" + }, + "val": "void" + }, + { + "key": { + "symbol": "created_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "created_at_time" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1000000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "min_donation_amount" + }, + "val": { + "i128": "1" + } + }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "DonorData" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "asset" + }, + "val": { + "vec": [ + { + "symbol": "Native" + } + ] + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u32": 10 + } + }, + { + "key": { + "symbol": "donor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "last_donation_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "last_donation_time" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "refund_claimed" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "total_donated" + }, + "val": { + "i128": "1000" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "MilestonesVec" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "description_hash" + }, + "val": { + "bytes": "0101010101010101010101010101010101010101010101010101010101010101" + } + }, + { + "key": { + "symbol": "index" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "release_tx" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "released_at" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_at_ledger" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_to" + }, + "val": "void" + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Locked" + } + ] + } + }, + { + "key": { + "symbol": "target_amount" + }, + "val": { + "i128": "100000" + } + } + ] + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ReentrancyLock" + } + ] + }, + "durability": "temporary", + "val": { + "bool": true + } + } + }, + "ext": "v0" + }, + "live_until": 15 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "TotalRaised" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "100" + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "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": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 4095 + } + ] + }, + "events": [ + { + "event": { + "ext": "v0", + "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "type_": "contract", + "body": { + "v0": { + "topics": [ + { + "string": "campaign" + }, + { + "string": "initialized" + } + ], + "data": { + "map": [ + { + "key": { + "symbol": "asset_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "created_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1000000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + } + ] + } + } + } + }, + "failed_call": false + } + ] +} \ No newline at end of file diff --git a/campaign/test_snapshots/test/rate_limiting_tests/test_burst_cap_resets_after_ledger_advance.1.json b/campaign/test_snapshots/test/rate_limiting_tests/test_burst_cap_resets_after_ledger_advance.1.json new file mode 100644 index 00000000..7c9422f0 --- /dev/null +++ b/campaign/test_snapshots/test/rate_limiting_tests/test_burst_cap_resets_after_ledger_advance.1.json @@ -0,0 +1,795 @@ +{ + "generators": { + "address": 4, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "", + "args": [] + } + }, + "sub_invocations": [] + } + ], + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "", + "args": [] + } + }, + "sub_invocations": [] + } + ] + ] + ], + "ledger": { + "protocol_version": 26, + "sequence_number": 1, + "timestamp": 5, + "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": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "AssetRaised" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "100" + } + } + }, + "ext": "v0" + }, + "live_until": 1036801 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1000000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 10 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "99900" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CampaignData" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "accepted_assets" + }, + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "XLM" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + } + ] + } + ] + } + }, + { + "key": { + "symbol": "concluded_at_ledger" + }, + "val": "void" + }, + { + "key": { + "symbol": "created_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "created_at_time" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1000000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "min_donation_amount" + }, + "val": { + "i128": "1" + } + }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "DonationCount" + } + ] + }, + "durability": "persistent", + "val": { + "u64": "1" + } + } + }, + "ext": "v0" + }, + "live_until": 1036801 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "DonorAssetDonation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "100" + } + } + }, + "ext": "v0" + }, + "live_until": 1036801 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "DonorData" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "asset" + }, + "val": { + "vec": [ + { + "symbol": "Native" + } + ] + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u32": 11 + } + }, + { + "key": { + "symbol": "donor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "last_donation_ledger" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "last_donation_time" + }, + "val": { + "u64": "5" + } + }, + { + "key": { + "symbol": "refund_claimed" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "total_donated" + }, + "val": { + "i128": "1100" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "MilestonesVec" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "description_hash" + }, + "val": { + "bytes": "0101010101010101010101010101010101010101010101010101010101010101" + } + }, + { + "key": { + "symbol": "index" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "release_tx" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "released_at" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_at_ledger" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_to" + }, + "val": "void" + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Locked" + } + ] + } + }, + { + "key": { + "symbol": "target_amount" + }, + "val": { + "i128": "100000" + } + } + ] + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "TotalRaised" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "100" + } + } + }, + "ext": "v0" + }, + "live_until": 1036801 + }, + { + "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": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6312000 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 4095 + } + ] + }, + "events": [ + { + "event": { + "ext": "v0", + "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "type_": "contract", + "body": { + "v0": { + "topics": [ + { + "string": "campaign" + }, + { + "string": "initialized" + } + ], + "data": { + "map": [ + { + "key": { + "symbol": "asset_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "created_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1000000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + } + ] + } + } + } + }, + "failed_call": false + }, + { + "event": { + "ext": "v0", + "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "type_": "contract", + "body": { + "v0": { + "topics": [ + { + "symbol": "donation_received" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + ], + "data": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "i128": "100" + }, + { + "string": "XLM" + }, + { + "i128": "100" + }, + { + "u64": "5" + } + ] + } + } + } + }, + "failed_call": false + } + ] +} \ No newline at end of file diff --git a/campaign/test_snapshots/test/rate_limiting_tests/test_combined_guards_lifetime_cap_fires_independently.1.json b/campaign/test_snapshots/test/rate_limiting_tests/test_combined_guards_lifetime_cap_fires_independently.1.json new file mode 100644 index 00000000..d995c33e --- /dev/null +++ b/campaign/test_snapshots/test/rate_limiting_tests/test_combined_guards_lifetime_cap_fires_independently.1.json @@ -0,0 +1,675 @@ +{ + "generators": { + "address": 4, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [] + ], + "ledger": { + "protocol_version": 26, + "sequence_number": 0, + "timestamp": 1000, + "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": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1001000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CampaignData" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "accepted_assets" + }, + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "XLM" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + } + ] + } + ] + } + }, + { + "key": { + "symbol": "concluded_at_ledger" + }, + "val": "void" + }, + { + "key": { + "symbol": "created_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "created_at_time" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1001000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "min_donation_amount" + }, + "val": { + "i128": "1" + } + }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": { + "u64": "60" + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "DonorData" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "asset" + }, + "val": { + "vec": [ + { + "symbol": "Native" + } + ] + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "donor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "last_donation_ledger" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "last_donation_time" + }, + "val": { + "u64": "880" + } + }, + { + "key": { + "symbol": "refund_claimed" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "total_donated" + }, + "val": { + "i128": "100" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "MilestonesVec" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "description_hash" + }, + "val": { + "bytes": "0101010101010101010101010101010101010101010101010101010101010101" + } + }, + { + "key": { + "symbol": "index" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "release_tx" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "released_at" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_at_ledger" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_to" + }, + "val": "void" + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Locked" + } + ] + } + }, + { + "key": { + "symbol": "target_amount" + }, + "val": { + "i128": "100000" + } + } + ] + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ReentrancyLock" + } + ] + }, + "durability": "temporary", + "val": { + "bool": true + } + } + }, + "ext": "v0" + }, + "live_until": 15 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "TotalRaised" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "100" + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "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": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 4095 + } + ] + }, + "events": [ + { + "event": { + "ext": "v0", + "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "type_": "contract", + "body": { + "v0": { + "topics": [ + { + "string": "campaign" + }, + { + "string": "initialized" + } + ], + "data": { + "map": [ + { + "key": { + "symbol": "asset_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "created_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1001000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + } + ] + } + } + } + }, + "failed_call": false + } + ] +} \ No newline at end of file diff --git a/campaign/test_snapshots/test/rate_limiting_tests/test_interval_allows_donation_after_cooldown_expires.1.json b/campaign/test_snapshots/test/rate_limiting_tests/test_interval_allows_donation_after_cooldown_expires.1.json new file mode 100644 index 00000000..e985f790 --- /dev/null +++ b/campaign/test_snapshots/test/rate_limiting_tests/test_interval_allows_donation_after_cooldown_expires.1.json @@ -0,0 +1,797 @@ +{ + "generators": { + "address": 4, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "", + "args": [] + } + }, + "sub_invocations": [] + } + ], + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "", + "args": [] + } + }, + "sub_invocations": [] + } + ] + ] + ], + "ledger": { + "protocol_version": 26, + "sequence_number": 0, + "timestamp": 1000, + "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": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "AssetRaised" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "100" + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1001000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 10 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "99900" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CampaignData" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "accepted_assets" + }, + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "XLM" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + } + ] + } + ] + } + }, + { + "key": { + "symbol": "concluded_at_ledger" + }, + "val": "void" + }, + { + "key": { + "symbol": "created_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "created_at_time" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1001000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "min_donation_amount" + }, + "val": { + "i128": "1" + } + }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": { + "u64": "60" + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "DonationCount" + } + ] + }, + "durability": "persistent", + "val": { + "u64": "1" + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "DonorAssetDonation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "100" + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "DonorData" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "asset" + }, + "val": { + "vec": [ + { + "symbol": "Native" + } + ] + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u32": 2 + } + }, + { + "key": { + "symbol": "donor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "last_donation_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "last_donation_time" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "refund_claimed" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "total_donated" + }, + "val": { + "i128": "200" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "MilestonesVec" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "description_hash" + }, + "val": { + "bytes": "0101010101010101010101010101010101010101010101010101010101010101" + } + }, + { + "key": { + "symbol": "index" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "release_tx" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "released_at" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_at_ledger" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_to" + }, + "val": "void" + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Locked" + } + ] + } + }, + { + "key": { + "symbol": "target_amount" + }, + "val": { + "i128": "100000" + } + } + ] + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "TotalRaised" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "100" + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "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": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 4095 + } + ] + }, + "events": [ + { + "event": { + "ext": "v0", + "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "type_": "contract", + "body": { + "v0": { + "topics": [ + { + "string": "campaign" + }, + { + "string": "initialized" + } + ], + "data": { + "map": [ + { + "key": { + "symbol": "asset_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "created_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1001000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + } + ] + } + } + } + }, + "failed_call": false + }, + { + "event": { + "ext": "v0", + "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "type_": "contract", + "body": { + "v0": { + "topics": [ + { + "symbol": "donation_received" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + ], + "data": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "i128": "100" + }, + { + "string": "XLM" + }, + { + "i128": "100" + }, + { + "u64": "1000" + } + ] + } + } + } + }, + "failed_call": false + } + ] +} \ No newline at end of file diff --git a/campaign/test_snapshots/test/rate_limiting_tests/test_interval_boundary_exact_expiry_accepted.1.json b/campaign/test_snapshots/test/rate_limiting_tests/test_interval_boundary_exact_expiry_accepted.1.json new file mode 100644 index 00000000..356a0bfa --- /dev/null +++ b/campaign/test_snapshots/test/rate_limiting_tests/test_interval_boundary_exact_expiry_accepted.1.json @@ -0,0 +1,797 @@ +{ + "generators": { + "address": 4, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "", + "args": [] + } + }, + "sub_invocations": [] + } + ], + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "", + "args": [] + } + }, + "sub_invocations": [] + } + ] + ] + ], + "ledger": { + "protocol_version": 26, + "sequence_number": 0, + "timestamp": 1000, + "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": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "AssetRaised" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "100" + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1001000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 10 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "99900" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CampaignData" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "accepted_assets" + }, + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "XLM" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + } + ] + } + ] + } + }, + { + "key": { + "symbol": "concluded_at_ledger" + }, + "val": "void" + }, + { + "key": { + "symbol": "created_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "created_at_time" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1001000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "min_donation_amount" + }, + "val": { + "i128": "1" + } + }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": { + "u64": "120" + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "DonationCount" + } + ] + }, + "durability": "persistent", + "val": { + "u64": "1" + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "DonorAssetDonation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "100" + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "DonorData" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "asset" + }, + "val": { + "vec": [ + { + "symbol": "Native" + } + ] + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u32": 2 + } + }, + { + "key": { + "symbol": "donor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "last_donation_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "last_donation_time" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "refund_claimed" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "total_donated" + }, + "val": { + "i128": "200" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "MilestonesVec" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "description_hash" + }, + "val": { + "bytes": "0101010101010101010101010101010101010101010101010101010101010101" + } + }, + { + "key": { + "symbol": "index" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "release_tx" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "released_at" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_at_ledger" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_to" + }, + "val": "void" + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Locked" + } + ] + } + }, + { + "key": { + "symbol": "target_amount" + }, + "val": { + "i128": "100000" + } + } + ] + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "TotalRaised" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "100" + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "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": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 4095 + } + ] + }, + "events": [ + { + "event": { + "ext": "v0", + "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "type_": "contract", + "body": { + "v0": { + "topics": [ + { + "string": "campaign" + }, + { + "string": "initialized" + } + ], + "data": { + "map": [ + { + "key": { + "symbol": "asset_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "created_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1001000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + } + ] + } + } + } + }, + "failed_call": false + }, + { + "event": { + "ext": "v0", + "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "type_": "contract", + "body": { + "v0": { + "topics": [ + { + "symbol": "donation_received" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + ], + "data": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "i128": "100" + }, + { + "string": "XLM" + }, + { + "i128": "100" + }, + { + "u64": "1000" + } + ] + } + } + } + }, + "failed_call": false + } + ] +} \ No newline at end of file diff --git a/campaign/test_snapshots/test/rate_limiting_tests/test_interval_boundary_one_second_short_rejected.1.json b/campaign/test_snapshots/test/rate_limiting_tests/test_interval_boundary_one_second_short_rejected.1.json new file mode 100644 index 00000000..0d646629 --- /dev/null +++ b/campaign/test_snapshots/test/rate_limiting_tests/test_interval_boundary_one_second_short_rejected.1.json @@ -0,0 +1,673 @@ +{ + "generators": { + "address": 4, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [] + ], + "ledger": { + "protocol_version": 26, + "sequence_number": 0, + "timestamp": 1000, + "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": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1001000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CampaignData" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "accepted_assets" + }, + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "XLM" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + } + ] + } + ] + } + }, + { + "key": { + "symbol": "concluded_at_ledger" + }, + "val": "void" + }, + { + "key": { + "symbol": "created_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "created_at_time" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1001000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "min_donation_amount" + }, + "val": { + "i128": "1" + } + }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": { + "u64": "120" + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "DonorData" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "asset" + }, + "val": { + "vec": [ + { + "symbol": "Native" + } + ] + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "donor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "last_donation_ledger" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "last_donation_time" + }, + "val": { + "u64": "881" + } + }, + { + "key": { + "symbol": "refund_claimed" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "total_donated" + }, + "val": { + "i128": "100" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "MilestonesVec" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "description_hash" + }, + "val": { + "bytes": "0101010101010101010101010101010101010101010101010101010101010101" + } + }, + { + "key": { + "symbol": "index" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "release_tx" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "released_at" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_at_ledger" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_to" + }, + "val": "void" + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Locked" + } + ] + } + }, + { + "key": { + "symbol": "target_amount" + }, + "val": { + "i128": "100000" + } + } + ] + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ReentrancyLock" + } + ] + }, + "durability": "temporary", + "val": { + "bool": true + } + } + }, + "ext": "v0" + }, + "live_until": 15 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "TotalRaised" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "100" + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "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": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 4095 + } + ] + }, + "events": [ + { + "event": { + "ext": "v0", + "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "type_": "contract", + "body": { + "v0": { + "topics": [ + { + "string": "campaign" + }, + { + "string": "initialized" + } + ], + "data": { + "map": [ + { + "key": { + "symbol": "asset_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "created_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1001000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + } + ] + } + } + } + }, + "failed_call": false + } + ] +} \ No newline at end of file diff --git a/campaign/test_snapshots/test/rate_limiting_tests/test_interval_first_donation_always_allowed.1.json b/campaign/test_snapshots/test/rate_limiting_tests/test_interval_first_donation_always_allowed.1.json new file mode 100644 index 00000000..b772d60a --- /dev/null +++ b/campaign/test_snapshots/test/rate_limiting_tests/test_interval_first_donation_always_allowed.1.json @@ -0,0 +1,821 @@ +{ + "generators": { + "address": 4, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "", + "args": [] + } + }, + "sub_invocations": [] + } + ], + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "", + "args": [] + } + }, + "sub_invocations": [] + } + ] + ] + ], + "ledger": { + "protocol_version": 26, + "sequence_number": 0, + "timestamp": 1000, + "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": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "AssetRaised" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "100" + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1001000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 10 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "99900" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CampaignData" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "accepted_assets" + }, + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "XLM" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + } + ] + } + ] + } + }, + { + "key": { + "symbol": "concluded_at_ledger" + }, + "val": "void" + }, + { + "key": { + "symbol": "created_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "created_at_time" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1001000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "min_donation_amount" + }, + "val": { + "i128": "1" + } + }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": { + "u64": "3600" + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "DonationCount" + } + ] + }, + "durability": "persistent", + "val": { + "u64": "1" + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "DonorAssetDonation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "100" + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "DonorData" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "asset" + }, + "val": { + "vec": [ + { + "symbol": "Native" + } + ] + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "donor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "last_donation_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "last_donation_time" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "refund_claimed" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "total_donated" + }, + "val": { + "i128": "100" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "MilestonesVec" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "description_hash" + }, + "val": { + "bytes": "0101010101010101010101010101010101010101010101010101010101010101" + } + }, + { + "key": { + "symbol": "index" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "release_tx" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "released_at" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_at_ledger" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_to" + }, + "val": "void" + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Locked" + } + ] + } + }, + { + "key": { + "symbol": "target_amount" + }, + "val": { + "i128": "100000" + } + } + ] + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "TotalRaised" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "100" + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "UniqueDonorCount" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 1 + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "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": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 4095 + } + ] + }, + "events": [ + { + "event": { + "ext": "v0", + "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "type_": "contract", + "body": { + "v0": { + "topics": [ + { + "string": "campaign" + }, + { + "string": "initialized" + } + ], + "data": { + "map": [ + { + "key": { + "symbol": "asset_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "created_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1001000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + } + ] + } + } + } + }, + "failed_call": false + }, + { + "event": { + "ext": "v0", + "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "type_": "contract", + "body": { + "v0": { + "topics": [ + { + "symbol": "donation_received" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + ], + "data": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "i128": "100" + }, + { + "string": "XLM" + }, + { + "i128": "100" + }, + { + "u64": "1000" + } + ] + } + } + } + }, + "failed_call": false + } + ] +} \ No newline at end of file diff --git a/campaign/test_snapshots/test/rate_limiting_tests/test_interval_rejects_donation_within_cooldown.1.json b/campaign/test_snapshots/test/rate_limiting_tests/test_interval_rejects_donation_within_cooldown.1.json new file mode 100644 index 00000000..c5f5253b --- /dev/null +++ b/campaign/test_snapshots/test/rate_limiting_tests/test_interval_rejects_donation_within_cooldown.1.json @@ -0,0 +1,673 @@ +{ + "generators": { + "address": 4, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [] + ], + "ledger": { + "protocol_version": 26, + "sequence_number": 0, + "timestamp": 1000, + "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": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1001000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CampaignData" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "accepted_assets" + }, + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "XLM" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + } + ] + } + ] + } + }, + { + "key": { + "symbol": "concluded_at_ledger" + }, + "val": "void" + }, + { + "key": { + "symbol": "created_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "created_at_time" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1001000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "min_donation_amount" + }, + "val": { + "i128": "1" + } + }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": { + "u64": "60" + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "DonorData" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "asset" + }, + "val": { + "vec": [ + { + "symbol": "Native" + } + ] + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "donor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "last_donation_ledger" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "last_donation_time" + }, + "val": { + "u64": "970" + } + }, + { + "key": { + "symbol": "refund_claimed" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "total_donated" + }, + "val": { + "i128": "100" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "MilestonesVec" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "description_hash" + }, + "val": { + "bytes": "0101010101010101010101010101010101010101010101010101010101010101" + } + }, + { + "key": { + "symbol": "index" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "release_tx" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "released_at" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_at_ledger" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_to" + }, + "val": "void" + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Locked" + } + ] + } + }, + { + "key": { + "symbol": "target_amount" + }, + "val": { + "i128": "100000" + } + } + ] + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ReentrancyLock" + } + ] + }, + "durability": "temporary", + "val": { + "bool": true + } + } + }, + "ext": "v0" + }, + "live_until": 15 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "TotalRaised" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "100" + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "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": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 4095 + } + ] + }, + "events": [ + { + "event": { + "ext": "v0", + "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "type_": "contract", + "body": { + "v0": { + "topics": [ + { + "string": "campaign" + }, + { + "string": "initialized" + } + ], + "data": { + "map": [ + { + "key": { + "symbol": "asset_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "created_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1001000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + } + ] + } + } + } + }, + "failed_call": false + } + ] +} \ No newline at end of file diff --git a/campaign/test_snapshots/test/rate_limiting_tests/test_lifetime_cap_allows_donations_below_limit.1.json b/campaign/test_snapshots/test/rate_limiting_tests/test_lifetime_cap_allows_donations_below_limit.1.json new file mode 100644 index 00000000..dadde91d --- /dev/null +++ b/campaign/test_snapshots/test/rate_limiting_tests/test_lifetime_cap_allows_donations_below_limit.1.json @@ -0,0 +1,821 @@ +{ + "generators": { + "address": 4, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "", + "args": [] + } + }, + "sub_invocations": [] + } + ], + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "", + "args": [] + } + }, + "sub_invocations": [] + } + ] + ] + ], + "ledger": { + "protocol_version": 26, + "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": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "AssetRaised" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "100" + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1000000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 10 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "99900" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CampaignData" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "accepted_assets" + }, + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "XLM" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + } + ] + } + ] + } + }, + { + "key": { + "symbol": "concluded_at_ledger" + }, + "val": "void" + }, + { + "key": { + "symbol": "created_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "created_at_time" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1000000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": { + "u32": 5 + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "min_donation_amount" + }, + "val": { + "i128": "1" + } + }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "DonationCount" + } + ] + }, + "durability": "persistent", + "val": { + "u64": "1" + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "DonorAssetDonation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "100" + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "DonorData" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "asset" + }, + "val": { + "vec": [ + { + "symbol": "Native" + } + ] + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "donor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "last_donation_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "last_donation_time" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "refund_claimed" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "total_donated" + }, + "val": { + "i128": "100" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "MilestonesVec" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "description_hash" + }, + "val": { + "bytes": "0101010101010101010101010101010101010101010101010101010101010101" + } + }, + { + "key": { + "symbol": "index" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "release_tx" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "released_at" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_at_ledger" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_to" + }, + "val": "void" + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Locked" + } + ] + } + }, + { + "key": { + "symbol": "target_amount" + }, + "val": { + "i128": "100000" + } + } + ] + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "TotalRaised" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "100" + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "UniqueDonorCount" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 1 + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "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": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 4095 + } + ] + }, + "events": [ + { + "event": { + "ext": "v0", + "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "type_": "contract", + "body": { + "v0": { + "topics": [ + { + "string": "campaign" + }, + { + "string": "initialized" + } + ], + "data": { + "map": [ + { + "key": { + "symbol": "asset_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "created_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1000000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + } + ] + } + } + } + }, + "failed_call": false + }, + { + "event": { + "ext": "v0", + "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "type_": "contract", + "body": { + "v0": { + "topics": [ + { + "symbol": "donation_received" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + ], + "data": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "i128": "100" + }, + { + "string": "XLM" + }, + { + "i128": "100" + }, + { + "u64": "0" + } + ] + } + } + } + }, + "failed_call": false + } + ] +} \ No newline at end of file diff --git a/campaign/test_snapshots/test/rate_limiting_tests/test_lifetime_cap_rejects_at_limit.1.json b/campaign/test_snapshots/test/rate_limiting_tests/test_lifetime_cap_rejects_at_limit.1.json new file mode 100644 index 00000000..315f31f9 --- /dev/null +++ b/campaign/test_snapshots/test/rate_limiting_tests/test_lifetime_cap_rejects_at_limit.1.json @@ -0,0 +1,673 @@ +{ + "generators": { + "address": 4, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [] + ], + "ledger": { + "protocol_version": 26, + "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": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1000000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CampaignData" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "accepted_assets" + }, + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "XLM" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + } + ] + } + ] + } + }, + { + "key": { + "symbol": "concluded_at_ledger" + }, + "val": "void" + }, + { + "key": { + "symbol": "created_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "created_at_time" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1000000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": { + "u32": 2 + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "min_donation_amount" + }, + "val": { + "i128": "1" + } + }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "DonorData" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "asset" + }, + "val": { + "vec": [ + { + "symbol": "Native" + } + ] + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u32": 2 + } + }, + { + "key": { + "symbol": "donor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "last_donation_ledger" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "last_donation_time" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "refund_claimed" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "total_donated" + }, + "val": { + "i128": "200" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "MilestonesVec" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "description_hash" + }, + "val": { + "bytes": "0101010101010101010101010101010101010101010101010101010101010101" + } + }, + { + "key": { + "symbol": "index" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "release_tx" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "released_at" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_at_ledger" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_to" + }, + "val": "void" + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Locked" + } + ] + } + }, + { + "key": { + "symbol": "target_amount" + }, + "val": { + "i128": "100000" + } + } + ] + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ReentrancyLock" + } + ] + }, + "durability": "temporary", + "val": { + "bool": true + } + } + }, + "ext": "v0" + }, + "live_until": 15 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "TotalRaised" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "100" + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "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": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 4095 + } + ] + }, + "events": [ + { + "event": { + "ext": "v0", + "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "type_": "contract", + "body": { + "v0": { + "topics": [ + { + "string": "campaign" + }, + { + "string": "initialized" + } + ], + "data": { + "map": [ + { + "key": { + "symbol": "asset_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "created_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1000000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + } + ] + } + } + } + }, + "failed_call": false + } + ] +} \ No newline at end of file diff --git a/campaign/test_snapshots/test/rate_limiting_tests/test_rate_limit_defaults_none_allow_multiple_donations.1.json b/campaign/test_snapshots/test/rate_limiting_tests/test_rate_limit_defaults_none_allow_multiple_donations.1.json new file mode 100644 index 00000000..b292d3a9 --- /dev/null +++ b/campaign/test_snapshots/test/rate_limiting_tests/test_rate_limit_defaults_none_allow_multiple_donations.1.json @@ -0,0 +1,795 @@ +{ + "generators": { + "address": 4, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "", + "args": [] + } + }, + "sub_invocations": [] + } + ], + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "", + "args": [] + } + }, + "sub_invocations": [] + } + ] + ] + ], + "ledger": { + "protocol_version": 26, + "sequence_number": 0, + "timestamp": 1000, + "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": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "AssetRaised" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "100" + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1001000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 10 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "99900" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CampaignData" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "accepted_assets" + }, + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "XLM" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + } + ] + } + ] + } + }, + { + "key": { + "symbol": "concluded_at_ledger" + }, + "val": "void" + }, + { + "key": { + "symbol": "created_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "created_at_time" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1001000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "min_donation_amount" + }, + "val": { + "i128": "1" + } + }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "DonationCount" + } + ] + }, + "durability": "persistent", + "val": { + "u64": "1" + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "DonorAssetDonation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "100" + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "DonorData" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "asset" + }, + "val": { + "vec": [ + { + "symbol": "Native" + } + ] + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u32": 2 + } + }, + { + "key": { + "symbol": "donor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "last_donation_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "last_donation_time" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "refund_claimed" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "total_donated" + }, + "val": { + "i128": "200" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "MilestonesVec" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "description_hash" + }, + "val": { + "bytes": "0101010101010101010101010101010101010101010101010101010101010101" + } + }, + { + "key": { + "symbol": "index" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "release_tx" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "released_at" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_at_ledger" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_to" + }, + "val": "void" + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Locked" + } + ] + } + }, + { + "key": { + "symbol": "target_amount" + }, + "val": { + "i128": "100000" + } + } + ] + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "TotalRaised" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "100" + } + } + }, + "ext": "v0" + }, + "live_until": 1036800 + }, + { + "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": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 4095 + } + ] + }, + "events": [ + { + "event": { + "ext": "v0", + "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "type_": "contract", + "body": { + "v0": { + "topics": [ + { + "string": "campaign" + }, + { + "string": "initialized" + } + ], + "data": { + "map": [ + { + "key": { + "symbol": "asset_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "created_at_ledger" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1001000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "100000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + } + ] + } + } + } + }, + "failed_call": false + }, + { + "event": { + "ext": "v0", + "contract_id": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "type_": "contract", + "body": { + "v0": { + "topics": [ + { + "symbol": "donation_received" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + ], + "data": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "i128": "100" + }, + { + "string": "XLM" + }, + { + "i128": "100" + }, + { + "u64": "1000" + } + ] + } + } + } + }, + "failed_call": false + } + ] +} \ No newline at end of file diff --git a/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_eligibility_all_conditions.1.json b/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_eligibility_all_conditions.1.json index 0bc1cdef..935351e8 100644 --- a/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_eligibility_all_conditions.1.json +++ b/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_eligibility_all_conditions.1.json @@ -110,6 +110,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_eligible_campaign_cancelled.1.json b/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_eligible_campaign_cancelled.1.json index 0bc1cdef..935351e8 100644 --- a/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_eligible_campaign_cancelled.1.json +++ b/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_eligible_campaign_cancelled.1.json @@ -110,6 +110,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_eligible_campaign_ended_no_milestone_released.1.json b/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_eligible_campaign_ended_no_milestone_released.1.json index 372c7650..6ed38a6f 100644 --- a/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_eligible_campaign_ended_no_milestone_released.1.json +++ b/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_eligible_campaign_ended_no_milestone_released.1.json @@ -110,6 +110,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_not_eligible_already_claimed.1.json b/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_not_eligible_already_claimed.1.json index 3e4a12c6..13d18154 100644 --- a/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_not_eligible_already_claimed.1.json +++ b/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_not_eligible_already_claimed.1.json @@ -110,6 +110,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_not_eligible_campaign_active.1.json b/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_not_eligible_campaign_active.1.json index 1f78163c..b2ba19d3 100644 --- a/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_not_eligible_campaign_active.1.json +++ b/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_not_eligible_campaign_active.1.json @@ -110,6 +110,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_not_eligible_campaign_goal_reached.1.json b/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_not_eligible_campaign_goal_reached.1.json index 481fde06..8f8b091c 100644 --- a/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_not_eligible_campaign_goal_reached.1.json +++ b/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_not_eligible_campaign_goal_reached.1.json @@ -110,6 +110,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_not_eligible_no_donor_record.1.json b/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_not_eligible_no_donor_record.1.json index 9f971ea2..0231bc7d 100644 --- a/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_not_eligible_no_donor_record.1.json +++ b/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_not_eligible_no_donor_record.1.json @@ -110,6 +110,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_not_eligible_window_closed.1.json b/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_not_eligible_window_closed.1.json index fa43d7c4..6c250775 100644 --- a/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_not_eligible_window_closed.1.json +++ b/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_not_eligible_window_closed.1.json @@ -110,6 +110,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_window_edge_case_exactly_30_days.1.json b/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_window_edge_case_exactly_30_days.1.json index 96111e4c..5f8c2b06 100644 --- a/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_window_edge_case_exactly_30_days.1.json +++ b/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_window_edge_case_exactly_30_days.1.json @@ -110,6 +110,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_window_edge_case_one_second_after_30_days.1.json b/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_window_edge_case_one_second_after_30_days.1.json index 670789c7..445563a5 100644 --- a/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_window_edge_case_one_second_after_30_days.1.json +++ b/campaign/test_snapshots/test/refund_eligibility_tests/test_refund_window_edge_case_one_second_after_30_days.1.json @@ -110,6 +110,12 @@ "i128": "1000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -126,6 +132,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/release_milestone_tests/test_double_release_panics.1.json b/campaign/test_snapshots/test/release_milestone_tests/test_double_release_panics.1.json index a381609a..37fec5f5 100644 --- a/campaign/test_snapshots/test/release_milestone_tests/test_double_release_panics.1.json +++ b/campaign/test_snapshots/test/release_milestone_tests/test_double_release_panics.1.json @@ -150,6 +150,12 @@ "i128": "3000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -166,6 +172,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/release_milestone_tests/test_final_milestone_releases_remaining_balance.1.json b/campaign/test_snapshots/test/release_milestone_tests/test_final_milestone_releases_remaining_balance.1.json index 7700e8dc..b8356a94 100644 --- a/campaign/test_snapshots/test/release_milestone_tests/test_final_milestone_releases_remaining_balance.1.json +++ b/campaign/test_snapshots/test/release_milestone_tests/test_final_milestone_releases_remaining_balance.1.json @@ -195,6 +195,12 @@ "i128": "3000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -211,6 +217,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/release_milestone_tests/test_first_milestone_release_succeeds_regardless_of_previous.1.json b/campaign/test_snapshots/test/release_milestone_tests/test_first_milestone_release_succeeds_regardless_of_previous.1.json index 2946db88..afe26f22 100644 --- a/campaign/test_snapshots/test/release_milestone_tests/test_first_milestone_release_succeeds_regardless_of_previous.1.json +++ b/campaign/test_snapshots/test/release_milestone_tests/test_first_milestone_release_succeeds_regardless_of_previous.1.json @@ -195,6 +195,12 @@ "i128": "3000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -211,6 +217,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/release_milestone_tests/test_frozen_contract_release_panics.1.json b/campaign/test_snapshots/test/release_milestone_tests/test_frozen_contract_release_panics.1.json index 628ae8ee..35e50d81 100644 --- a/campaign/test_snapshots/test/release_milestone_tests/test_frozen_contract_release_panics.1.json +++ b/campaign/test_snapshots/test/release_milestone_tests/test_frozen_contract_release_panics.1.json @@ -150,6 +150,12 @@ "i128": "3000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -166,6 +172,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/release_milestone_tests/test_locked_milestone_release_panics.1.json b/campaign/test_snapshots/test/release_milestone_tests/test_locked_milestone_release_panics.1.json index 0fa03563..c5264ee3 100644 --- a/campaign/test_snapshots/test/release_milestone_tests/test_locked_milestone_release_panics.1.json +++ b/campaign/test_snapshots/test/release_milestone_tests/test_locked_milestone_release_panics.1.json @@ -150,6 +150,12 @@ "i128": "3000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -166,6 +172,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/release_milestone_tests/test_non_creator_release_panics.1.json b/campaign/test_snapshots/test/release_milestone_tests/test_non_creator_release_panics.1.json index 6467c99d..c379f90b 100644 --- a/campaign/test_snapshots/test/release_milestone_tests/test_non_creator_release_panics.1.json +++ b/campaign/test_snapshots/test/release_milestone_tests/test_non_creator_release_panics.1.json @@ -152,6 +152,12 @@ "i128": "3000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -168,6 +174,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/release_milestone_tests/test_release_non_existent_milestone_panics.1.json b/campaign/test_snapshots/test/release_milestone_tests/test_release_non_existent_milestone_panics.1.json index 2b60330b..3a2db33a 100644 --- a/campaign/test_snapshots/test/release_milestone_tests/test_release_non_existent_milestone_panics.1.json +++ b/campaign/test_snapshots/test/release_milestone_tests/test_release_non_existent_milestone_panics.1.json @@ -150,6 +150,12 @@ "i128": "3000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -166,6 +172,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/release_milestone_tests/test_release_with_multiple_assets_only_debits_first_asset.1.json b/campaign/test_snapshots/test/release_milestone_tests/test_release_with_multiple_assets_only_debits_first_asset.1.json index ebb15f2c..9a2620c5 100644 --- a/campaign/test_snapshots/test/release_milestone_tests/test_release_with_multiple_assets_only_debits_first_asset.1.json +++ b/campaign/test_snapshots/test/release_milestone_tests/test_release_with_multiple_assets_only_debits_first_asset.1.json @@ -357,6 +357,12 @@ "i128": "3000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -373,6 +379,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/release_milestone_tests/test_release_with_single_asset_transfers_correct_amount.1.json b/campaign/test_snapshots/test/release_milestone_tests/test_release_with_single_asset_transfers_correct_amount.1.json index 2946db88..afe26f22 100644 --- a/campaign/test_snapshots/test/release_milestone_tests/test_release_with_single_asset_transfers_correct_amount.1.json +++ b/campaign/test_snapshots/test/release_milestone_tests/test_release_with_single_asset_transfers_correct_amount.1.json @@ -195,6 +195,12 @@ "i128": "3000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -211,6 +217,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/release_milestone_tests/test_sequential_milestone_release_succeeds.1.json b/campaign/test_snapshots/test/release_milestone_tests/test_sequential_milestone_release_succeeds.1.json index d30fdc20..16a38283 100644 --- a/campaign/test_snapshots/test/release_milestone_tests/test_sequential_milestone_release_succeeds.1.json +++ b/campaign/test_snapshots/test/release_milestone_tests/test_sequential_milestone_release_succeeds.1.json @@ -241,6 +241,12 @@ "i128": "3000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -257,6 +263,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/release_milestone_tests/test_skipping_milestone_release_panics.1.json b/campaign/test_snapshots/test/release_milestone_tests/test_skipping_milestone_release_panics.1.json index 3df0ab9b..62198b6e 100644 --- a/campaign/test_snapshots/test/release_milestone_tests/test_skipping_milestone_release_panics.1.json +++ b/campaign/test_snapshots/test/release_milestone_tests/test_skipping_milestone_release_panics.1.json @@ -150,6 +150,12 @@ "i128": "3000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -166,6 +172,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/release_milestone_tests/test_valid_release_sets_released_amount.1.json b/campaign/test_snapshots/test/release_milestone_tests/test_valid_release_sets_released_amount.1.json index 2946db88..afe26f22 100644 --- a/campaign/test_snapshots/test/release_milestone_tests/test_valid_release_sets_released_amount.1.json +++ b/campaign/test_snapshots/test/release_milestone_tests/test_valid_release_sets_released_amount.1.json @@ -195,6 +195,12 @@ "i128": "3000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -211,6 +217,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/release_milestone_tests/test_valid_release_updates_milestone_status.1.json b/campaign/test_snapshots/test/release_milestone_tests/test_valid_release_updates_milestone_status.1.json index 2946db88..afe26f22 100644 --- a/campaign/test_snapshots/test/release_milestone_tests/test_valid_release_updates_milestone_status.1.json +++ b/campaign/test_snapshots/test/release_milestone_tests/test_valid_release_updates_milestone_status.1.json @@ -195,6 +195,12 @@ "i128": "3000" } }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, { "key": { "symbol": "milestone_count" @@ -211,6 +217,12 @@ "i128": "0" } }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, { "key": { "symbol": "raised_amount" diff --git a/campaign/test_snapshots/test/report_cache_tests/cache_is_fresh_after_cancel_and_refund.1.json b/campaign/test_snapshots/test/report_cache_tests/cache_is_fresh_after_cancel_and_refund.1.json new file mode 100644 index 00000000..d39460fc --- /dev/null +++ b/campaign/test_snapshots/test/report_cache_tests/cache_is_fresh_after_cancel_and_refund.1.json @@ -0,0 +1,1097 @@ +{ + "generators": { + "address": 5, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [ + [ + "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEGWF", + { + "function": { + "contract_fn": { + "contract_address": "CBEPDNVYXQGWB5YUBXKJWYJA7OXTZW5LFLNO5JRRGE6Z6C5OSUZPCCEL", + "function_name": "set_admin", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "function_name": "", + "args": [] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "function_name": "", + "args": [] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "function_name": "", + "args": [] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + { + "function": { + "contract_fn": { + "contract_address": "CBEPDNVYXQGWB5YUBXKJWYJA7OXTZW5LFLNO5JRRGE6Z6C5OSUZPCCEL", + "function_name": "mint", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "i128": "300" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "function_name": "", + "args": [] + } + }, + "sub_invocations": [] + } + ] + ], + [] + ], + "ledger": { + "protocol_version": 26, + "sequence_number": 1000, + "timestamp": 1000000, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 100, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 10000000, + "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "account": { + "account_id": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEGWF", + "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": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEGWF", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 10000999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "ledger_key_nonce": { + "nonce": "2032731177588607455" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 10000999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "vec": [ + { + "symbol": "AssetRaised" + }, + { + "address": "CBEPDNVYXQGWB5YUBXKJWYJA7OXTZW5LFLNO5JRRGE6Z6C5OSUZPCCEL" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "300" + } + } + }, + "ext": "v0" + }, + "live_until": 1037800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "3592000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 3000 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "300" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "700" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Cancelled" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1037800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "vec": [ + { + "symbol": "CampaignData" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "accepted_assets" + }, + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "XLM" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "address": "CBEPDNVYXQGWB5YUBXKJWYJA7OXTZW5LFLNO5JRRGE6Z6C5OSUZPCCEL" + } + } + ] + } + ] + } + }, + { + "key": { + "symbol": "concluded_at_ledger" + }, + "val": { + "u32": 1000 + } + }, + { + "key": { + "symbol": "created_at_ledger" + }, + "val": { + "u32": 1000 + } + }, + { + "key": { + "symbol": "created_at_time" + }, + "val": { + "u64": "1000000" + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "3592000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "min_donation_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "300" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Cancelled" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1037800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "vec": [ + { + "symbol": "DonationCount" + } + ] + }, + "durability": "persistent", + "val": { + "u64": "1" + } + } + }, + "ext": "v0" + }, + "live_until": 1037800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "vec": [ + { + "symbol": "DonorAssetDonation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "address": "CBEPDNVYXQGWB5YUBXKJWYJA7OXTZW5LFLNO5JRRGE6Z6C5OSUZPCCEL" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "300" + } + } + }, + "ext": "v0" + }, + "live_until": 1037800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "vec": [ + { + "symbol": "DonorData" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "asset" + }, + "val": { + "vec": [ + { + "symbol": "Stellar" + }, + { + "address": "CBEPDNVYXQGWB5YUBXKJWYJA7OXTZW5LFLNO5JRRGE6Z6C5OSUZPCCEL" + } + ] + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "donor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + }, + { + "key": { + "symbol": "last_donation_ledger" + }, + "val": { + "u32": 1000 + } + }, + { + "key": { + "symbol": "last_donation_time" + }, + "val": { + "u64": "1000000" + } + }, + { + "key": { + "symbol": "refund_claimed" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "total_donated" + }, + "val": { + "i128": "300" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1037800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "vec": [ + { + "symbol": "MilestonesVec" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "description_hash" + }, + "val": { + "bytes": "0909090909090909090909090909090909090909090909090909090909090909" + } + }, + { + "key": { + "symbol": "index" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "release_tx" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "released_at" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_at_ledger" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_to" + }, + "val": "void" + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Locked" + } + ] + } + }, + { + "key": { + "symbol": "target_amount" + }, + "val": { + "i128": "1000" + } + } + ] + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1037800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "vec": [ + { + "symbol": "TotalRaised" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "300" + } + } + }, + "ext": "v0" + }, + "live_until": 1037800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "vec": [ + { + "symbol": "UniqueDonorCount" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 1 + } + } + }, + "ext": "v0" + }, + "live_until": 1037800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + "live_until": 1099 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "4837995959683129791" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 10000999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 10000999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": "1033654523790656264" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 10000999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": "4270020994084947596" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 10000999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CBEPDNVYXQGWB5YUBXKJWYJA7OXTZW5LFLNO5JRRGE6Z6C5OSUZPCCEL", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "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": 519400 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CBEPDNVYXQGWB5YUBXKJWYJA7OXTZW5LFLNO5JRRGE6Z6C5OSUZPCCEL", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "300" + } + }, + { + "key": { + "symbol": "authorized" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "clawback" + }, + "val": { + "bool": false + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 519400 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CBEPDNVYXQGWB5YUBXKJWYJA7OXTZW5LFLNO5JRRGE6Z6C5OSUZPCCEL", + "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:GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEGWF" + } + }, + { + "key": { + "symbol": "symbol" + }, + "val": { + "string": "aaa" + } + } + ] + } + }, + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + }, + { + "key": { + "vec": [ + { + "symbol": "AssetInfo" + } + ] + }, + "val": { + "vec": [ + { + "symbol": "AlphaNum4" + }, + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "aaa\\0" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "bytes": "0000000000000000000000000000000000000000000000000000000000000002" + } + } + ] + } + ] + } + } + ] + } + } + } + }, + "ext": "v0" + }, + "live_until": 121960 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 1099 + } + ] + }, + "events": [] +} \ No newline at end of file diff --git a/campaign/test_snapshots/test/report_cache_tests/cache_is_fresh_after_every_transition.1.json b/campaign/test_snapshots/test/report_cache_tests/cache_is_fresh_after_every_transition.1.json new file mode 100644 index 00000000..408dfaf7 --- /dev/null +++ b/campaign/test_snapshots/test/report_cache_tests/cache_is_fresh_after_every_transition.1.json @@ -0,0 +1,1319 @@ +{ + "generators": { + "address": 7, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [ + [ + "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEGWF", + { + "function": { + "contract_fn": { + "contract_address": "CBEPDNVYXQGWB5YUBXKJWYJA7OXTZW5LFLNO5JRRGE6Z6C5OSUZPCCEL", + "function_name": "set_admin", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "function_name": "", + "args": [] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "function_name": "", + "args": [] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "function_name": "", + "args": [] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + { + "function": { + "contract_fn": { + "contract_address": "CBEPDNVYXQGWB5YUBXKJWYJA7OXTZW5LFLNO5JRRGE6Z6C5OSUZPCCEL", + "function_name": "mint", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "i128": "1000" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "function_name": "", + "args": [] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "function_name": "", + "args": [] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "function_name": "", + "args": [] + } + }, + "sub_invocations": [] + } + ] + ], + [] + ], + "ledger": { + "protocol_version": 26, + "sequence_number": 1000, + "timestamp": 1000000, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 100, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 10000000, + "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "account": { + "account_id": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEGWF", + "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": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEGWF", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 10000999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "ledger_key_nonce": { + "nonce": "2032731177588607455" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 10000999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "vec": [ + { + "symbol": "AssetRaised" + }, + { + "address": "CBEPDNVYXQGWB5YUBXKJWYJA7OXTZW5LFLNO5JRRGE6Z6C5OSUZPCCEL" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "1000" + } + } + }, + "ext": "v0" + }, + "live_until": 1037800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "vec": [ + { + "symbol": "CachedReport" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u64": "2" + } + }, + { + "key": { + "symbol": "donor_count" + }, + "val": { + "u32": 2 + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "6184000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "progress_bps" + }, + "val": { + "u32": 10000 + } + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "release_count" + }, + "val": { + "u64": "1" + } + }, + { + "key": { + "symbol": "remaining_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Ended" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1037800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "vec": [ + { + "symbol": "CampaignData" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "accepted_assets" + }, + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "XLM" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "address": "CBEPDNVYXQGWB5YUBXKJWYJA7OXTZW5LFLNO5JRRGE6Z6C5OSUZPCCEL" + } + } + ] + } + ] + } + }, + { + "key": { + "symbol": "concluded_at_ledger" + }, + "val": { + "u32": 1000 + } + }, + { + "key": { + "symbol": "created_at_ledger" + }, + "val": { + "u32": 1000 + } + }, + { + "key": { + "symbol": "created_at_time" + }, + "val": { + "u64": "1000000" + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "6184000" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "min_donation_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Ended" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1037800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "vec": [ + { + "symbol": "DonationCount" + } + ] + }, + "durability": "persistent", + "val": { + "u64": "2" + } + } + }, + "ext": "v0" + }, + "live_until": 1037800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "vec": [ + { + "symbol": "DonorAssetDonation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "address": "CBEPDNVYXQGWB5YUBXKJWYJA7OXTZW5LFLNO5JRRGE6Z6C5OSUZPCCEL" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "400" + } + } + }, + "ext": "v0" + }, + "live_until": 1037800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "vec": [ + { + "symbol": "DonorAssetDonation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "address": "CBEPDNVYXQGWB5YUBXKJWYJA7OXTZW5LFLNO5JRRGE6Z6C5OSUZPCCEL" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "600" + } + } + }, + "ext": "v0" + }, + "live_until": 1037800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "vec": [ + { + "symbol": "DonorData" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "asset" + }, + "val": { + "vec": [ + { + "symbol": "Stellar" + }, + { + "address": "CBEPDNVYXQGWB5YUBXKJWYJA7OXTZW5LFLNO5JRRGE6Z6C5OSUZPCCEL" + } + ] + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "donor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + }, + { + "key": { + "symbol": "last_donation_ledger" + }, + "val": { + "u32": 1000 + } + }, + { + "key": { + "symbol": "last_donation_time" + }, + "val": { + "u64": "1000000" + } + }, + { + "key": { + "symbol": "refund_claimed" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "total_donated" + }, + "val": { + "i128": "400" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1037800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "vec": [ + { + "symbol": "DonorData" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "asset" + }, + "val": { + "vec": [ + { + "symbol": "Stellar" + }, + { + "address": "CBEPDNVYXQGWB5YUBXKJWYJA7OXTZW5LFLNO5JRRGE6Z6C5OSUZPCCEL" + } + ] + } + }, + { + "key": { + "symbol": "donation_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "donor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "last_donation_ledger" + }, + "val": { + "u32": 1000 + } + }, + { + "key": { + "symbol": "last_donation_time" + }, + "val": { + "u64": "1000000" + } + }, + { + "key": { + "symbol": "refund_claimed" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "total_donated" + }, + "val": { + "i128": "600" + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1037800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "vec": [ + { + "symbol": "MilestonesVec" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "description_hash" + }, + "val": { + "bytes": "0909090909090909090909090909090909090909090909090909090909090909" + } + }, + { + "key": { + "symbol": "index" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "release_tx" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "released_at" + }, + "val": { + "u64": "1000000" + } + }, + { + "key": { + "symbol": "released_at_ledger" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_to" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Released" + } + ] + } + }, + { + "key": { + "symbol": "target_amount" + }, + "val": { + "i128": "1000" + } + } + ] + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1037800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "vec": [ + { + "symbol": "ReleaseCount" + } + ] + }, + "durability": "persistent", + "val": { + "u64": "1" + } + } + }, + "ext": "v0" + }, + "live_until": 1037800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "vec": [ + { + "symbol": "TotalRaised" + } + ] + }, + "durability": "persistent", + "val": { + "i128": "1000" + } + } + }, + "ext": "v0" + }, + "live_until": 1037800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "vec": [ + { + "symbol": "UniqueDonorCount" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 2 + } + } + }, + "ext": "v0" + }, + "live_until": 1037800 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + "live_until": 1099 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "4270020994084947596" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 10000999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "5541220902715666415" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 10000999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "6277191135259896685" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 10000999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": "8370022561469687789" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 10000999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": "1033654523790656264" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 10000999 + }, + { + "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": 10000999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CBEPDNVYXQGWB5YUBXKJWYJA7OXTZW5LFLNO5JRRGE6Z6C5OSUZPCCEL", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "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": 519400 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CBEPDNVYXQGWB5YUBXKJWYJA7OXTZW5LFLNO5JRRGE6Z6C5OSUZPCCEL", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": "1000" + } + }, + { + "key": { + "symbol": "authorized" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "clawback" + }, + "val": { + "bool": false + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 519400 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CBEPDNVYXQGWB5YUBXKJWYJA7OXTZW5LFLNO5JRRGE6Z6C5OSUZPCCEL", + "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:GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEGWF" + } + }, + { + "key": { + "symbol": "symbol" + }, + "val": { + "string": "aaa" + } + } + ] + } + }, + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + }, + { + "key": { + "vec": [ + { + "symbol": "AssetInfo" + } + ] + }, + "val": { + "vec": [ + { + "symbol": "AlphaNum4" + }, + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "aaa\\0" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "bytes": "0000000000000000000000000000000000000000000000000000000000000002" + } + } + ] + } + ] + } + } + ] + } + } + } + }, + "ext": "v0" + }, + "live_until": 121960 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 1099 + } + ] + }, + "events": [] +} \ No newline at end of file diff --git a/campaign/test_snapshots/test/report_cache_tests/get_cached_report_falls_back_for_pre_cache_state.1.json b/campaign/test_snapshots/test/report_cache_tests/get_cached_report_falls_back_for_pre_cache_state.1.json new file mode 100644 index 00000000..f3753088 --- /dev/null +++ b/campaign/test_snapshots/test/report_cache_tests/get_cached_report_falls_back_for_pre_cache_state.1.json @@ -0,0 +1,188 @@ +{ + "generators": { + "address": 2, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [] + ], + "ledger": { + "protocol_version": 26, + "sequence_number": 1000, + "timestamp": 1000000, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 100, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 10000000, + "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CampaignData" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "accepted_assets" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "concluded_at_ledger" + }, + "val": "void" + }, + { + "key": { + "symbol": "created_at_ledger" + }, + "val": { + "u32": 1000 + } + }, + { + "key": { + "symbol": "created_at_time" + }, + "val": { + "u64": "1000000" + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "end_time" + }, + "val": { + "u64": "1086400" + } + }, + { + "key": { + "symbol": "goal_amount" + }, + "val": { + "i128": "500" + } + }, + { + "key": { + "symbol": "max_donations_per_donor" + }, + "val": "void" + }, + { + "key": { + "symbol": "milestone_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "min_donation_amount" + }, + "val": { + "i128": "0" + } + }, + { + "key": { + "symbol": "min_donation_interval_seconds" + }, + "val": "void" + }, + { + "key": { + "symbol": "raised_amount" + }, + "val": { + "i128": "100" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Active" + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 1037800 + }, + { + "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": 1099 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 1099 + } + ] + }, + "events": [] +} \ No newline at end of file diff --git a/campaign/test_snapshots/test/report_cache_tests/get_cached_report_returns_none_when_uninitialized.1.json b/campaign/test_snapshots/test/report_cache_tests/get_cached_report_returns_none_when_uninitialized.1.json new file mode 100644 index 00000000..699424f5 --- /dev/null +++ b/campaign/test_snapshots/test/report_cache_tests/get_cached_report_returns_none_when_uninitialized.1.json @@ -0,0 +1,61 @@ +{ + "generators": { + "address": 1, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [] + ], + "ledger": { + "protocol_version": 26, + "sequence_number": 1000, + "timestamp": 1000000, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 100, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 10000000, + "ledger_entries": [ + { + "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": 1099 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + "live_until": 1099 + } + ] + }, + "events": [] +} \ No newline at end of file diff --git a/crates/contracts/batch-donor/src/tests.rs b/crates/contracts/batch-donor/src/tests.rs index de80e774..6fcd080a 100644 --- a/crates/contracts/batch-donor/src/tests.rs +++ b/crates/contracts/batch-donor/src/tests.rs @@ -115,7 +115,7 @@ fn oversized_batch_panics_with_validation_code() { #[test] fn batch_donate_result_struct_has_expected_shape() { - let env = Env::default(); + let _env = Env::default(); let result = BatchDonateResult { index: 7, outcome: BatchDonateOutcome::ValidationFailed(42), diff --git a/crates/testkit/src/lib.rs b/crates/testkit/src/lib.rs index fdba63b1..40535277 100644 --- a/crates/testkit/src/lib.rs +++ b/crates/testkit/src/lib.rs @@ -87,6 +87,8 @@ pub fn make_campaign( created_at_ledger: env.ledger().sequence(), created_at_time: env.ledger().timestamp(), concluded_at_ledger: None, + max_donations_per_donor: None, + min_donation_interval_seconds: None, } } diff --git a/crates/testkit/tests/proptest_tests.rs b/crates/testkit/tests/proptest_tests.rs index 6b7bbc8e..63e54bcc 100644 --- a/crates/testkit/tests/proptest_tests.rs +++ b/crates/testkit/tests/proptest_tests.rs @@ -46,7 +46,7 @@ fn setup_campaign(env: &Env, goal: i128, milestone_count: usize) { let end_time = BASE + 86_400; let targets = compute_milestone_targets(goal, milestone_count); let milestones = make_milestones(env, &targets); - CampaignContract::initialize(env.clone(), creator, goal, end_time, assets, milestones, 0) + CampaignContract::initialize(env.clone(), creator, goal, end_time, assets, milestones, 0, None, None) .unwrap(); } @@ -76,7 +76,7 @@ proptest! { assets, milestones, 0, - ); + None, None); assert!(result.is_ok(), "initialize should succeed"); let campaign = orbitchain_campaign::storage::get_campaign(&env).unwrap(); @@ -335,7 +335,7 @@ proptest! { assets, milestones, 0, - ) + None, None) .unwrap(); for amount in &amounts { @@ -512,7 +512,7 @@ proptest! { assets, milestones, 0, - ) + None, None) .unwrap(); let mut donors: std::vec::Vec
= std::vec::Vec::new(); @@ -700,7 +700,7 @@ proptest! { assets, milestones, 0, - ) + None, None) .unwrap(); let new_end_time = env.ledger().timestamp() + extension; @@ -738,7 +738,7 @@ proptest! { assets, milestones, 0, - ) + None, None) .unwrap(); let mut donors: std::vec::Vec
= std::vec::Vec::new(); diff --git a/fuzz/fuzz_targets/claim_refund.rs b/fuzz/fuzz_targets/claim_refund.rs index 7acfa75f..204105a3 100644 --- a/fuzz/fuzz_targets/claim_refund.rs +++ b/fuzz/fuzz_targets/claim_refund.rs @@ -61,7 +61,7 @@ fuzz_target!(|input: ClaimRefundFuzzInput| { assets, milestones, 0, - ); + None, None); token_sac.mint(&donor, &(donation_amount * 10)); let _ = CampaignContract::donate( diff --git a/fuzz/fuzz_targets/donate.rs b/fuzz/fuzz_targets/donate.rs index 1cd4e96f..7e60b43d 100644 --- a/fuzz/fuzz_targets/donate.rs +++ b/fuzz/fuzz_targets/donate.rs @@ -75,7 +75,7 @@ fuzz_target!(|input: DonateFuzzInput| { assets, milestones, min_donation, - ); + None, None); }); let safe_amount = input.donation_amount.abs().max(1); diff --git a/fuzz/fuzz_targets/initialize.rs b/fuzz/fuzz_targets/initialize.rs index 49617102..2378343f 100644 --- a/fuzz/fuzz_targets/initialize.rs +++ b/fuzz/fuzz_targets/initialize.rs @@ -67,6 +67,6 @@ fuzz_target!(|input: InitializeFuzzInput| { assets, milestones, min_donation, - ); + None, None); }); }); diff --git a/fuzz/fuzz_targets/release_milestone.rs b/fuzz/fuzz_targets/release_milestone.rs index 34918f92..36ac94f7 100644 --- a/fuzz/fuzz_targets/release_milestone.rs +++ b/fuzz/fuzz_targets/release_milestone.rs @@ -71,7 +71,7 @@ fuzz_target!(|input: ReleaseMilestoneFuzzInput| { assets, milestones, 0, - ); + None, None); token_sac.mint(&donor, &(donation_amount * 10)); let _ = CampaignContract::donate(