From 3aaac0054ab2e23865402cab028f80671344d0c7 Mon Sep 17 00:00:00 2001 From: aji70 Date: Sat, 30 May 2026 11:39:38 +0100 Subject: [PATCH] feat(contracts): add optional approver field and approve_invoice to invoice workflow (#25) - Added approver: Option
and approved: bool fields to Invoice struct - Added approver field to InvoiceOptions for specifying an approver at invoice creation - Implemented approve_invoice() function requiring approver authentication - Updated release() to check approval gate when approver is set - Added comprehensive tests for approval workflow and non-approver invoices --- contracts/split/src/lib.rs | 30 + contracts/split/src/test.rs | 136 ++ contracts/split/src/types.rs | 6 + .../test_approve_invoice_then_release.1.json | 1598 +++++++++++++++++ .../test_snapshots/test/test_audit_log.1.json | 20 + .../test/test_audit_log_with_cancel.1.json | 20 + .../test/test_audit_log_with_extend.1.json | 20 + ...nus_pool_distributed_to_first_payer.1.json | 20 + ...bonus_pool_zero_behaves_identically.1.json | 20 + .../test_cancel_non_pending_panics.1.json | 20 + .../test/test_cancel_with_refund.1.json | 20 + .../test/test_create_invoice.1.json | 20 + .../test/test_create_subscription.1.json | 28 + ...test_get_invoice_works_while_paused.1.json | 20 + .../test/test_get_payer_total.1.json | 20 + ...test_group_all_funded_releases_both.1.json | 40 + ...t_group_partial_fund_blocks_release.1.json | 40 + ..._without_approver_releases_normally.1.json | 1513 ++++++++++++++++ .../test/test_multi_recipient_release.1.json | 20 + ...no_prerequisite_behaves_like_normal.1.json | 20 + ...test_non_grouped_invoice_unaffected.1.json | 20 + ...ce_increments_per_payer_per_invoice.1.json | 20 + ...st_nonce_is_independent_per_invoice.1.json | 40 + .../test/test_overpayment_panics.1.json | 20 + .../test/test_partial_pay_then_release.1.json | 20 + .../test/test_pause_blocks_pay.1.json | 20 + .../test_pay_after_deadline_panics.1.json | 20 + .../test/test_pay_and_auto_release.1.json | 20 + .../test/test_refund_after_deadline.1.json | 20 + ..._before_any_tranche_unlocked_panics.1.json | 20 + ...est_release_blocked_by_prerequisite.1.json | 40 + ...ucceeds_after_prerequisite_released.1.json | 40 + ...ase_with_unapproved_approver_panics.1.json | 1412 +++++++++++++++ ...putation_increments_across_invoices.1.json | 60 + .../test_reputation_is_per_address.1.json | 20 + .../test/test_template_overwrite.1.json | 14 + ...mplate_save_and_create_two_invoices.1.json | 28 + ..._tranches_partial_then_full_release.1.json | 20 + ...sfer_invoice_new_creator_can_cancel.1.json | 20 + ...r_invoice_old_creator_cannot_cancel.1.json | 20 + .../test/test_unpause_restores_pay.1.json | 20 + .../test/test_wrong_nonce_panics.1.json | 20 + 42 files changed, 5565 insertions(+) create mode 100644 contracts/split/test_snapshots/test/test_approve_invoice_then_release.1.json create mode 100644 contracts/split/test_snapshots/test/test_invoice_without_approver_releases_normally.1.json create mode 100644 contracts/split/test_snapshots/test/test_release_with_unapproved_approver_panics.1.json diff --git a/contracts/split/src/lib.rs b/contracts/split/src/lib.rs index 59ab502..5348bb6 100644 --- a/contracts/split/src/lib.rs +++ b/contracts/split/src/lib.rs @@ -220,9 +220,11 @@ impl SplitContract { options.bonus_max_payers, options.prerequisite_id, options.tranches, + options.approver, ) } + #[allow(clippy::too_many_arguments)] fn _create_invoice_inner( env: &Env, creator: Address, @@ -236,6 +238,7 @@ impl SplitContract { bonus_max_payers: u32, prerequisite_id: Option, tranches: Vec, + approver: Option
, ) -> u64 { assert!( recipients.len() == amounts.len(), @@ -306,6 +309,8 @@ impl SplitContract { prerequisite_id, tranches, released_bps: 0, + approver, + approved: false, }; save_invoice(env, id, &invoice); @@ -338,6 +343,7 @@ impl SplitContract { 0, None, Vec::new(&env), + None, ); ids.push_back(id); } @@ -379,6 +385,7 @@ impl SplitContract { 0, None, Vec::new(&env), + None, ); if months > 1 { @@ -490,6 +497,7 @@ impl SplitContract { /// /// For tranche invoices, only distributes tranches whose timestamp ≤ now. /// Blocks with "prerequisite not released" until the prerequisite invoice is Released. + /// If an approver is set, requires the invoice to be approved first (issue #25). pub fn release(env: Env, invoice_id: u64) { require_not_paused(&env); let caller = env.current_contract_address(); @@ -504,6 +512,11 @@ impl SplitContract { let total: i128 = invoice.amounts.iter().sum(); assert!(invoice.funded >= total, "invoice not fully funded"); + // Approval check (issue #25). + if invoice.approver.is_some() && !invoice.approved { + panic!("awaiting approval"); + } + // Prerequisite check (issue #22). if let Some(prereq_id) = invoice.prerequisite_id { let prereq = load_invoice(&env, prereq_id); @@ -533,6 +546,21 @@ impl SplitContract { } } + /// Approve an invoice if it has an approver set (issue #25). + /// + /// Requires authentication from the approver address. + pub fn approve_invoice(env: Env, invoice_id: u64) { + require_not_paused(&env); + let mut invoice = load_invoice(&env, invoice_id); + + let approver = invoice.approver.as_ref().expect("no approver set on this invoice"); + approver.require_auth(); + + invoice.approved = true; + save_invoice(&env, invoice_id, &invoice); + append_audit_entry(&env, invoice_id, symbol_short!("aprv"), approver); + } + /// Distribute tranches unlocked by the current ledger time (issue #23). fn _release_tranches(env: &Env, invoice_id: u64, invoice: &mut Invoice, actor: &Address) { let now = env.ledger().timestamp(); @@ -687,6 +715,7 @@ impl SplitContract { 0, None, Vec::new(env), + None, ); env.storage() .persistent() @@ -886,6 +915,7 @@ impl SplitContract { 0, None, Vec::new(&env), + None, ) } diff --git a/contracts/split/src/test.rs b/contracts/split/src/test.rs index ca8a117..d09d057 100644 --- a/contracts/split/src/test.rs +++ b/contracts/split/src/test.rs @@ -44,6 +44,7 @@ fn default_options(env: &Env) -> InvoiceOptions { bonus_max_payers: 0, prerequisite_id: None, tranches: Vec::new(env), + approver: None, } } @@ -601,6 +602,7 @@ fn test_bonus_pool_distributed_to_first_payer() { bonus_max_payers: 1, prerequisite_id: None, tranches: Vec::new(&env), + approver: None, }, ); @@ -837,6 +839,7 @@ fn test_release_blocked_by_prerequisite() { bonus_max_payers: 0, prerequisite_id: Some(id_a), tranches: Vec::new(&env), + approver: None, }, ); @@ -880,6 +883,7 @@ fn test_release_succeeds_after_prerequisite_released() { bonus_max_payers: 0, prerequisite_id: Some(id_a), tranches: Vec::new(&env), + approver: None, }, ); @@ -956,6 +960,7 @@ fn test_tranches_partial_then_full_release() { bonus_max_payers: 0, prerequisite_id: None, tranches: tranches.clone(), + approver: None, }, ); @@ -1014,6 +1019,7 @@ fn test_release_before_any_tranche_unlocked_panics() { bonus_max_payers: 0, prerequisite_id: None, tranches: tranches.clone(), + approver: None, }, ); @@ -1093,3 +1099,133 @@ fn test_reputation_is_per_address() { let other = Address::generate(&env); assert_eq!(c.get_reputation(&other), 0); } + +// --------------------------------------------------------------------------- +// Issue #25: Approver tests +// --------------------------------------------------------------------------- + +#[test] +#[should_panic(expected = "awaiting approval")] +fn test_release_with_unapproved_approver_panics() { + let (env, contract_id, token_id) = setup(); + let c = client(&env, &contract_id); + let tk = token_client(&env, &token_id); + + let creator = Address::generate(&env); + let approver = Address::generate(&env); + let payer = Address::generate(&env); + let recipient = Address::generate(&env); + + StellarAssetClient::new(&env, &token_id).mint(&payer, &500); + env.ledger().set_timestamp(1_000); + + // Create an invoice with an approver set and a tranche to prevent auto-release + let mut recipients = Vec::new(&env); + recipients.push_back(recipient.clone()); + let mut amounts = Vec::new(&env); + amounts.push_back(100); + let mut tranches = Vec::new(&env); + tranches.push_back(Tranche { timestamp: 2_000, basis_points: 10_000 }); + let mut options = default_options(&env); + options.approver = Some(approver.clone()); + options.tranches = tranches; + let id = c.create_invoice(&creator, &recipients, &amounts, &token_id, &2_000, &options); + + // Fund the invoice + tk.transfer(&payer, &contract_id, &100); + c.pay(&payer, &id, &100_i128, &0_u64); + + // Attempt release without approval should panic + c.release(&id); +} + +#[test] +fn test_approve_invoice_then_release() { + let (env, contract_id, token_id) = setup(); + let c = client(&env, &contract_id); + let tk = token_client(&env, &token_id); + + let creator = Address::generate(&env); + let approver = Address::generate(&env); + let payer = Address::generate(&env); + let recipient = Address::generate(&env); + + StellarAssetClient::new(&env, &token_id).mint(&payer, &500); + env.ledger().set_timestamp(1_000); + + // Create an invoice with an approver set and a tranche to prevent auto-release + let mut recipients = Vec::new(&env); + recipients.push_back(recipient.clone()); + let mut amounts = Vec::new(&env); + amounts.push_back(100); + let mut tranches = Vec::new(&env); + tranches.push_back(Tranche { timestamp: 1_000, basis_points: 10_000 }); + let mut options = default_options(&env); + options.approver = Some(approver.clone()); + options.tranches = tranches; + let id = c.create_invoice(&creator, &recipients, &amounts, &token_id, &2_000, &options); + + // Fund the invoice + tk.transfer(&payer, &contract_id, &100); + c.pay(&payer, &id, &100_i128, &0_u64); + + // Verify invoice has approver set and is not approved + let invoice = c.get_invoice(&id); + assert_eq!(invoice.approver, Some(approver.clone())); + assert!(!invoice.approved); + + // Approve the invoice + c.approve_invoice(&id); + + // Verify invoice is now approved + let invoice = c.get_invoice(&id); + assert!(invoice.approved); + + // Release should now succeed + c.release(&id); + + // Verify invoice is released + let invoice = c.get_invoice(&id); + assert_eq!(invoice.status, InvoiceStatus::Released); +} + +#[test] +fn test_invoice_without_approver_releases_normally() { + let (env, contract_id, token_id) = setup(); + let c = client(&env, &contract_id); + let tk = token_client(&env, &token_id); + + let creator = Address::generate(&env); + let payer = Address::generate(&env); + let recipient = Address::generate(&env); + + StellarAssetClient::new(&env, &token_id).mint(&payer, &500); + env.ledger().set_timestamp(1_000); + + // Create an invoice without approver and with a tranche to test manual release + let mut recipients = Vec::new(&env); + recipients.push_back(recipient.clone()); + let mut amounts = Vec::new(&env); + amounts.push_back(100); + let mut tranches = Vec::new(&env); + tranches.push_back(Tranche { timestamp: 1_000, basis_points: 10_000 }); + let mut options = default_options(&env); + options.tranches = tranches; + let id = c.create_invoice(&creator, &recipients, &amounts, &token_id, &2_000, &options); + + // Fund the invoice + tk.transfer(&payer, &contract_id, &100); + c.pay(&payer, &id, &100_i128, &0_u64); + + // Verify invoice has no approver + let invoice = c.get_invoice(&id); + assert_eq!(invoice.approver, None); + assert!(!invoice.approved); + + // Release should succeed without needing approval + c.release(&id); + + // Verify invoice is released + let invoice = c.get_invoice(&id); + assert_eq!(invoice.status, InvoiceStatus::Released); +} diff --git a/contracts/split/src/types.rs b/contracts/split/src/types.rs index 0026c35..b55e303 100644 --- a/contracts/split/src/types.rs +++ b/contracts/split/src/types.rs @@ -83,6 +83,8 @@ pub struct InvoiceOptions { pub prerequisite_id: Option, /// Issue #23: graduated release schedule; empty = release all at once. pub tranches: Vec, + /// Issue #25: optional approver who must approve before release. + pub approver: Option
, } #[contracttype] @@ -113,4 +115,8 @@ pub struct Invoice { pub tranches: Vec, /// Issue #23: cumulative basis points already distributed (0–10 000). pub released_bps: u32, + /// Issue #25: optional approver; if set, release() requires prior approval. + pub approver: Option
, + /// Issue #25: whether the invoice has been approved by the approver. + pub approved: bool, } diff --git a/contracts/split/test_snapshots/test/test_approve_invoice_then_release.1.json b/contracts/split/test_snapshots/test/test_approve_invoice_then_release.1.json new file mode 100644 index 0000000..711a60a --- /dev/null +++ b/contracts/split/test_snapshots/test/test_approve_invoice_then_release.1.json @@ -0,0 +1,1598 @@ +{ + "generators": { + "address": 7, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGO6V", + { + "function": { + "contract_fn": { + "contract_address": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "function_name": "set_admin", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "function_name": "mint", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "i128": { + "hi": 0, + "lo": 1000000000 + } + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "function_name": "mint", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "i128": { + "hi": 0, + "lo": 500 + } + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_invoice", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + { + "vec": [ + { + "i128": { + "hi": 0, + "lo": 100 + } + } + ] + }, + { + "address": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF" + }, + { + "u64": 2000 + }, + { + "map": [ + { + "key": { + "symbol": "allow_early_withdrawal" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + }, + { + "key": { + "symbol": "bonus_max_payers" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "bonus_pool" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "co_creators" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "prerequisite_id" + }, + "val": "void" + }, + { + "key": { + "symbol": "tranches" + }, + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "basis_points" + }, + "val": { + "u32": 10000 + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": 1000 + } + } + ] + } + ] + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + { + "function": { + "contract_fn": { + "contract_address": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "function_name": "transfer", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + }, + { + "i128": { + "hi": 0, + "lo": 100 + } + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "pay", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "u64": 1 + }, + { + "i128": { + "hi": 0, + "lo": 100 + } + }, + { + "u64": 0 + } + ] + } + }, + "sub_invocations": [ + { + "function": { + "contract_fn": { + "contract_address": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "function_name": "transfer", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + }, + { + "i128": { + "hi": 0, + "lo": 100 + } + } + ] + } + }, + "sub_invocations": [] + } + ] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "approve_invoice", + "args": [ + { + "u64": 1 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [], + [] + ], + "ledger": { + "protocol_version": 22, + "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": [ + [ + { + "account": { + "account_id": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGO6V" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "account": { + "account_id": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGO6V", + "balance": 0, + "seq_num": 0, + "num_sub_entries": 0, + "inflation_dest": null, + "flags": 0, + "home_domain": "", + "thresholds": "01010101", + "signers": [], + "ext": "v0" + } + }, + "ext": "v0" + }, + null + ] + ], + [ + { + "contract_data": { + "contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGO6V", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGO6V", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "symbol": "counter" + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "symbol": "counter" + }, + "durability": "persistent", + "val": { + "u64": 1 + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "inv" + }, + { + "u64": 1 + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "inv" + }, + { + "u64": 1 + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "allow_early_withdrawal" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "amounts" + }, + "val": { + "vec": [ + { + "i128": { + "hi": 0, + "lo": 100 + } + } + ] + } + }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "approver" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + }, + { + "key": { + "symbol": "bonus_max_payers" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "bonus_pool" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "claimed" + }, + "val": { + "vec": [ + { + "i128": { + "hi": 0, + "lo": 0 + } + } + ] + } + }, + { + "key": { + "symbol": "co_creators" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "completion_time" + }, + "val": { + "u64": 1000 + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "deadline" + }, + "val": { + "u64": 2000 + } + }, + { + "key": { + "symbol": "drip_duration" + }, + "val": "void" + }, + { + "key": { + "symbol": "frozen" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "funded" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100 + } + } + }, + { + "key": { + "symbol": "payments" + }, + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100 + } + } + }, + { + "key": { + "symbol": "payer" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "tip" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + } + ] + } + ] + } + }, + { + "key": { + "symbol": "prerequisite_id" + }, + "val": "void" + }, + { + "key": { + "symbol": "recipients" + }, + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + } + }, + { + "key": { + "symbol": "release_timestamp" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_bps" + }, + "val": { + "u32": 10000 + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Released" + } + ] + } + }, + { + "key": { + "symbol": "tokens" + }, + "val": { + "vec": [ + { + "address": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF" + } + ] + } + }, + { + "key": { + "symbol": "tranches" + }, + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "basis_points" + }, + "val": { + "u32": 10000 + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": 1000 + } + } + ] + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "log" + }, + { + "u64": 1 + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "log" + }, + { + "u64": 1 + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "action" + }, + "val": { + "symbol": "pay" + } + }, + { + "key": { + "symbol": "actor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": 1000 + } + } + ] + }, + { + "map": [ + { + "key": { + "symbol": "action" + }, + "val": { + "symbol": "aprv" + } + }, + { + "key": { + "symbol": "actor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": 1000 + } + } + ] + }, + { + "map": [ + { + "key": { + "symbol": "action" + }, + "val": { + "symbol": "release" + } + }, + { + "key": { + "symbol": "actor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": 1000 + } + } + ] + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "nonce" + }, + { + "u64": 1 + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "nonce" + }, + { + "u64": 1 + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 1 + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "rep" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "rep" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 1 + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": 8370022561469687789 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": 8370022561469687789 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 2032731177588607455 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 2032731177588607455 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 4270020994084947596 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 4270020994084947596 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100 + } + } + }, + { + "key": { + "symbol": "authorized" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "clawback" + }, + "val": { + "bool": false + } + } + ] + } + } + }, + "ext": "v0" + }, + 518400 + ] + ], + [ + { + "contract_data": { + "contract": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000000 + } + } + }, + { + "key": { + "symbol": "authorized" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "clawback" + }, + "val": { + "bool": false + } + } + ] + } + } + }, + "ext": "v0" + }, + 518400 + ] + ], + [ + { + "contract_data": { + "contract": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": { + "hi": 0, + "lo": 300 + } + } + }, + { + "key": { + "symbol": "authorized" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "clawback" + }, + "val": { + "bool": false + } + } + ] + } + } + }, + "ext": "v0" + }, + 518400 + ] + ], + [ + { + "contract_data": { + "contract": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100 + } + } + }, + { + "key": { + "symbol": "authorized" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "clawback" + }, + "val": { + "bool": false + } + } + ] + } + } + }, + "ext": "v0" + }, + 518400 + ] + ], + [ + { + "contract_data": { + "contract": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": "stellar_asset", + "storage": [ + { + "key": { + "symbol": "METADATA" + }, + "val": { + "map": [ + { + "key": { + "symbol": "decimal" + }, + "val": { + "u32": 7 + } + }, + { + "key": { + "symbol": "name" + }, + "val": { + "string": "aaa:GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGO6V" + } + }, + { + "key": { + "symbol": "symbol" + }, + "val": { + "string": "aaa" + } + } + ] + } + }, + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "vec": [ + { + "symbol": "AssetInfo" + } + ] + }, + "val": { + "vec": [ + { + "symbol": "AlphaNum4" + }, + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "aaa\\0" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "bytes": "0000000000000000000000000000000000000000000000000000000000000003" + } + } + ] + } + ] + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 120960 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4095 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/contracts/split/test_snapshots/test/test_audit_log.1.json b/contracts/split/test_snapshots/test/test_audit_log.1.json index c71717c..c0f5022 100644 --- a/contracts/split/test_snapshots/test/test_audit_log.1.json +++ b/contracts/split/test_snapshots/test/test_audit_log.1.json @@ -119,6 +119,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -389,6 +395,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_audit_log_with_cancel.1.json b/contracts/split/test_snapshots/test/test_audit_log_with_cancel.1.json index 41aeded..51fed9b 100644 --- a/contracts/split/test_snapshots/test/test_audit_log_with_cancel.1.json +++ b/contracts/split/test_snapshots/test/test_audit_log_with_cancel.1.json @@ -94,6 +94,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -330,6 +336,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_audit_log_with_extend.1.json b/contracts/split/test_snapshots/test/test_audit_log_with_extend.1.json index a6cd6c8..a913960 100644 --- a/contracts/split/test_snapshots/test/test_audit_log_with_extend.1.json +++ b/contracts/split/test_snapshots/test/test_audit_log_with_extend.1.json @@ -94,6 +94,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -333,6 +339,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_bonus_pool_distributed_to_first_payer.1.json b/contracts/split/test_snapshots/test/test_bonus_pool_distributed_to_first_payer.1.json index 5544a93..8d07222 100644 --- a/contracts/split/test_snapshots/test/test_bonus_pool_distributed_to_first_payer.1.json +++ b/contracts/split/test_snapshots/test/test_bonus_pool_distributed_to_first_payer.1.json @@ -169,6 +169,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -520,6 +526,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_bonus_pool_zero_behaves_identically.1.json b/contracts/split/test_snapshots/test/test_bonus_pool_zero_behaves_identically.1.json index 10da754..d33d4f6 100644 --- a/contracts/split/test_snapshots/test/test_bonus_pool_zero_behaves_identically.1.json +++ b/contracts/split/test_snapshots/test/test_bonus_pool_zero_behaves_identically.1.json @@ -119,6 +119,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -389,6 +395,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_cancel_non_pending_panics.1.json b/contracts/split/test_snapshots/test/test_cancel_non_pending_panics.1.json index 15cba1c..13cd4b8 100644 --- a/contracts/split/test_snapshots/test/test_cancel_non_pending_panics.1.json +++ b/contracts/split/test_snapshots/test/test_cancel_non_pending_panics.1.json @@ -119,6 +119,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -388,6 +394,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_cancel_with_refund.1.json b/contracts/split/test_snapshots/test/test_cancel_with_refund.1.json index f95e341..f645a85 100644 --- a/contracts/split/test_snapshots/test/test_cancel_with_refund.1.json +++ b/contracts/split/test_snapshots/test/test_cancel_with_refund.1.json @@ -119,6 +119,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -412,6 +418,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_create_invoice.1.json b/contracts/split/test_snapshots/test/test_create_invoice.1.json index a4c8b25..48d3ccd 100644 --- a/contracts/split/test_snapshots/test/test_create_invoice.1.json +++ b/contracts/split/test_snapshots/test/test_create_invoice.1.json @@ -94,6 +94,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -308,6 +314,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_create_subscription.1.json b/contracts/split/test_snapshots/test/test_create_subscription.1.json index cb7df96..d99b407 100644 --- a/contracts/split/test_snapshots/test/test_create_subscription.1.json +++ b/contracts/split/test_snapshots/test/test_create_subscription.1.json @@ -337,6 +337,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -604,6 +618,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_get_invoice_works_while_paused.1.json b/contracts/split/test_snapshots/test/test_get_invoice_works_while_paused.1.json index cdf0d97..8c247b9 100644 --- a/contracts/split/test_snapshots/test/test_get_invoice_works_while_paused.1.json +++ b/contracts/split/test_snapshots/test/test_get_invoice_works_while_paused.1.json @@ -95,6 +95,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -359,6 +365,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_get_payer_total.1.json b/contracts/split/test_snapshots/test/test_get_payer_total.1.json index 08f49cb..c2c322d 100644 --- a/contracts/split/test_snapshots/test/test_get_payer_total.1.json +++ b/contracts/split/test_snapshots/test/test_get_payer_total.1.json @@ -119,6 +119,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -446,6 +452,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_group_all_funded_releases_both.1.json b/contracts/split/test_snapshots/test/test_group_all_funded_releases_both.1.json index 79c9555..fcdd78c 100644 --- a/contracts/split/test_snapshots/test/test_group_all_funded_releases_both.1.json +++ b/contracts/split/test_snapshots/test/test_group_all_funded_releases_both.1.json @@ -119,6 +119,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -214,6 +220,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -626,6 +638,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -893,6 +919,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_group_partial_fund_blocks_release.1.json b/contracts/split/test_snapshots/test/test_group_partial_fund_blocks_release.1.json index 88ef0c7..c6a5580 100644 --- a/contracts/split/test_snapshots/test/test_group_partial_fund_blocks_release.1.json +++ b/contracts/split/test_snapshots/test/test_group_partial_fund_blocks_release.1.json @@ -119,6 +119,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -214,6 +220,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -567,6 +579,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -832,6 +858,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_invoice_without_approver_releases_normally.1.json b/contracts/split/test_snapshots/test/test_invoice_without_approver_releases_normally.1.json new file mode 100644 index 0000000..aee8e5a --- /dev/null +++ b/contracts/split/test_snapshots/test/test_invoice_without_approver_releases_normally.1.json @@ -0,0 +1,1513 @@ +{ + "generators": { + "address": 6, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGO6V", + { + "function": { + "contract_fn": { + "contract_address": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "function_name": "set_admin", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "function_name": "mint", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "i128": { + "hi": 0, + "lo": 1000000000 + } + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "function_name": "mint", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "i128": { + "hi": 0, + "lo": 500 + } + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_invoice", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + }, + { + "vec": [ + { + "i128": { + "hi": 0, + "lo": 100 + } + } + ] + }, + { + "address": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF" + }, + { + "u64": 2000 + }, + { + "map": [ + { + "key": { + "symbol": "allow_early_withdrawal" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, + { + "key": { + "symbol": "bonus_max_payers" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "bonus_pool" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "co_creators" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "prerequisite_id" + }, + "val": "void" + }, + { + "key": { + "symbol": "tranches" + }, + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "basis_points" + }, + "val": { + "u32": 10000 + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": 1000 + } + } + ] + } + ] + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + { + "function": { + "contract_fn": { + "contract_address": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "function_name": "transfer", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + }, + { + "i128": { + "hi": 0, + "lo": 100 + } + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "pay", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "u64": 1 + }, + { + "i128": { + "hi": 0, + "lo": 100 + } + }, + { + "u64": 0 + } + ] + } + }, + "sub_invocations": [ + { + "function": { + "contract_fn": { + "contract_address": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "function_name": "transfer", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + }, + { + "i128": { + "hi": 0, + "lo": 100 + } + } + ] + } + }, + "sub_invocations": [] + } + ] + } + ] + ], + [], + [], + [] + ], + "ledger": { + "protocol_version": 22, + "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": [ + [ + { + "account": { + "account_id": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGO6V" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "account": { + "account_id": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGO6V", + "balance": 0, + "seq_num": 0, + "num_sub_entries": 0, + "inflation_dest": null, + "flags": 0, + "home_domain": "", + "thresholds": "01010101", + "signers": [], + "ext": "v0" + } + }, + "ext": "v0" + }, + null + ] + ], + [ + { + "contract_data": { + "contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGO6V", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGO6V", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "symbol": "counter" + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "symbol": "counter" + }, + "durability": "persistent", + "val": { + "u64": 1 + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "inv" + }, + { + "u64": 1 + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "inv" + }, + { + "u64": 1 + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "allow_early_withdrawal" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "amounts" + }, + "val": { + "vec": [ + { + "i128": { + "hi": 0, + "lo": 100 + } + } + ] + } + }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, + { + "key": { + "symbol": "bonus_max_payers" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "bonus_pool" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "claimed" + }, + "val": { + "vec": [ + { + "i128": { + "hi": 0, + "lo": 0 + } + } + ] + } + }, + { + "key": { + "symbol": "co_creators" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "completion_time" + }, + "val": { + "u64": 1000 + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "deadline" + }, + "val": { + "u64": 2000 + } + }, + { + "key": { + "symbol": "drip_duration" + }, + "val": "void" + }, + { + "key": { + "symbol": "frozen" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "funded" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100 + } + } + }, + { + "key": { + "symbol": "payments" + }, + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100 + } + } + }, + { + "key": { + "symbol": "payer" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + }, + { + "key": { + "symbol": "tip" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + } + ] + } + ] + } + }, + { + "key": { + "symbol": "prerequisite_id" + }, + "val": "void" + }, + { + "key": { + "symbol": "recipients" + }, + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + } + }, + { + "key": { + "symbol": "release_timestamp" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_bps" + }, + "val": { + "u32": 10000 + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Released" + } + ] + } + }, + { + "key": { + "symbol": "tokens" + }, + "val": { + "vec": [ + { + "address": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF" + } + ] + } + }, + { + "key": { + "symbol": "tranches" + }, + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "basis_points" + }, + "val": { + "u32": 10000 + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": 1000 + } + } + ] + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "log" + }, + { + "u64": 1 + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "log" + }, + { + "u64": 1 + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "action" + }, + "val": { + "symbol": "pay" + } + }, + { + "key": { + "symbol": "actor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": 1000 + } + } + ] + }, + { + "map": [ + { + "key": { + "symbol": "action" + }, + "val": { + "symbol": "release" + } + }, + { + "key": { + "symbol": "actor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": 1000 + } + } + ] + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "nonce" + }, + { + "u64": 1 + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "nonce" + }, + { + "u64": 1 + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 1 + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "rep" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "rep" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 1 + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": 2032731177588607455 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": 2032731177588607455 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": 4270020994084947596 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": 4270020994084947596 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100 + } + } + }, + { + "key": { + "symbol": "authorized" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "clawback" + }, + "val": { + "bool": false + } + } + ] + } + } + }, + "ext": "v0" + }, + 518400 + ] + ], + [ + { + "contract_data": { + "contract": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000000 + } + } + }, + { + "key": { + "symbol": "authorized" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "clawback" + }, + "val": { + "bool": false + } + } + ] + } + } + }, + "ext": "v0" + }, + 518400 + ] + ], + [ + { + "contract_data": { + "contract": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": { + "hi": 0, + "lo": 300 + } + } + }, + { + "key": { + "symbol": "authorized" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "clawback" + }, + "val": { + "bool": false + } + } + ] + } + } + }, + "ext": "v0" + }, + 518400 + ] + ], + [ + { + "contract_data": { + "contract": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100 + } + } + }, + { + "key": { + "symbol": "authorized" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "clawback" + }, + "val": { + "bool": false + } + } + ] + } + } + }, + "ext": "v0" + }, + 518400 + ] + ], + [ + { + "contract_data": { + "contract": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": "stellar_asset", + "storage": [ + { + "key": { + "symbol": "METADATA" + }, + "val": { + "map": [ + { + "key": { + "symbol": "decimal" + }, + "val": { + "u32": 7 + } + }, + { + "key": { + "symbol": "name" + }, + "val": { + "string": "aaa:GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGO6V" + } + }, + { + "key": { + "symbol": "symbol" + }, + "val": { + "string": "aaa" + } + } + ] + } + }, + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "vec": [ + { + "symbol": "AssetInfo" + } + ] + }, + "val": { + "vec": [ + { + "symbol": "AlphaNum4" + }, + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "aaa\\0" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "bytes": "0000000000000000000000000000000000000000000000000000000000000003" + } + } + ] + } + ] + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 120960 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4095 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/contracts/split/test_snapshots/test/test_multi_recipient_release.1.json b/contracts/split/test_snapshots/test/test_multi_recipient_release.1.json index c2b8da1..29cb5ee 100644 --- a/contracts/split/test_snapshots/test/test_multi_recipient_release.1.json +++ b/contracts/split/test_snapshots/test/test_multi_recipient_release.1.json @@ -137,6 +137,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -420,6 +426,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_no_prerequisite_behaves_like_normal.1.json b/contracts/split/test_snapshots/test/test_no_prerequisite_behaves_like_normal.1.json index edb4cd9..e52b129 100644 --- a/contracts/split/test_snapshots/test/test_no_prerequisite_behaves_like_normal.1.json +++ b/contracts/split/test_snapshots/test/test_no_prerequisite_behaves_like_normal.1.json @@ -119,6 +119,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -388,6 +394,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_non_grouped_invoice_unaffected.1.json b/contracts/split/test_snapshots/test/test_non_grouped_invoice_unaffected.1.json index e3ad9db..561b866 100644 --- a/contracts/split/test_snapshots/test/test_non_grouped_invoice_unaffected.1.json +++ b/contracts/split/test_snapshots/test/test_non_grouped_invoice_unaffected.1.json @@ -119,6 +119,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -389,6 +395,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_nonce_increments_per_payer_per_invoice.1.json b/contracts/split/test_snapshots/test/test_nonce_increments_per_payer_per_invoice.1.json index 67ce09a..e460974 100644 --- a/contracts/split/test_snapshots/test/test_nonce_increments_per_payer_per_invoice.1.json +++ b/contracts/split/test_snapshots/test/test_nonce_increments_per_payer_per_invoice.1.json @@ -119,6 +119,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -501,6 +507,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_nonce_is_independent_per_invoice.1.json b/contracts/split/test_snapshots/test/test_nonce_is_independent_per_invoice.1.json index c94b060..be24c57 100644 --- a/contracts/split/test_snapshots/test/test_nonce_is_independent_per_invoice.1.json +++ b/contracts/split/test_snapshots/test/test_nonce_is_independent_per_invoice.1.json @@ -119,6 +119,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -214,6 +220,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -539,6 +551,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -806,6 +832,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_overpayment_panics.1.json b/contracts/split/test_snapshots/test/test_overpayment_panics.1.json index 8ce4bd2..7396bb4 100644 --- a/contracts/split/test_snapshots/test/test_overpayment_panics.1.json +++ b/contracts/split/test_snapshots/test/test_overpayment_panics.1.json @@ -119,6 +119,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -333,6 +339,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_partial_pay_then_release.1.json b/contracts/split/test_snapshots/test/test_partial_pay_then_release.1.json index bd4aff1..ac0b7e9 100644 --- a/contracts/split/test_snapshots/test/test_partial_pay_then_release.1.json +++ b/contracts/split/test_snapshots/test/test_partial_pay_then_release.1.json @@ -144,6 +144,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -470,6 +476,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_pause_blocks_pay.1.json b/contracts/split/test_snapshots/test/test_pause_blocks_pay.1.json index b2ec8d7..a769d04 100644 --- a/contracts/split/test_snapshots/test/test_pause_blocks_pay.1.json +++ b/contracts/split/test_snapshots/test/test_pause_blocks_pay.1.json @@ -120,6 +120,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -384,6 +390,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_pay_after_deadline_panics.1.json b/contracts/split/test_snapshots/test/test_pay_after_deadline_panics.1.json index f38254a..7c7d27e 100644 --- a/contracts/split/test_snapshots/test/test_pay_after_deadline_panics.1.json +++ b/contracts/split/test_snapshots/test/test_pay_after_deadline_panics.1.json @@ -119,6 +119,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -333,6 +339,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_pay_and_auto_release.1.json b/contracts/split/test_snapshots/test/test_pay_and_auto_release.1.json index c71717c..c0f5022 100644 --- a/contracts/split/test_snapshots/test/test_pay_and_auto_release.1.json +++ b/contracts/split/test_snapshots/test/test_pay_and_auto_release.1.json @@ -119,6 +119,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -389,6 +395,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_refund_after_deadline.1.json b/contracts/split/test_snapshots/test/test_refund_after_deadline.1.json index 4b4b954..490c6a1 100644 --- a/contracts/split/test_snapshots/test/test_refund_after_deadline.1.json +++ b/contracts/split/test_snapshots/test/test_refund_after_deadline.1.json @@ -119,6 +119,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -390,6 +396,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_release_before_any_tranche_unlocked_panics.1.json b/contracts/split/test_snapshots/test/test_release_before_any_tranche_unlocked_panics.1.json index 0082a65..390c977 100644 --- a/contracts/split/test_snapshots/test/test_release_before_any_tranche_unlocked_panics.1.json +++ b/contracts/split/test_snapshots/test/test_release_before_any_tranche_unlocked_panics.1.json @@ -119,6 +119,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -409,6 +415,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_release_blocked_by_prerequisite.1.json b/contracts/split/test_snapshots/test/test_release_blocked_by_prerequisite.1.json index a176099..0a863db 100644 --- a/contracts/split/test_snapshots/test/test_release_blocked_by_prerequisite.1.json +++ b/contracts/split/test_snapshots/test/test_release_blocked_by_prerequisite.1.json @@ -119,6 +119,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -214,6 +220,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -485,6 +497,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -715,6 +741,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_release_succeeds_after_prerequisite_released.1.json b/contracts/split/test_snapshots/test/test_release_succeeds_after_prerequisite_released.1.json index b123f40..5ed6125 100644 --- a/contracts/split/test_snapshots/test/test_release_succeeds_after_prerequisite_released.1.json +++ b/contracts/split/test_snapshots/test/test_release_succeeds_after_prerequisite_released.1.json @@ -119,6 +119,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -214,6 +220,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -544,6 +556,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -811,6 +837,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_release_with_unapproved_approver_panics.1.json b/contracts/split/test_snapshots/test/test_release_with_unapproved_approver_panics.1.json new file mode 100644 index 0000000..d82e091 --- /dev/null +++ b/contracts/split/test_snapshots/test/test_release_with_unapproved_approver_panics.1.json @@ -0,0 +1,1412 @@ +{ + "generators": { + "address": 7, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGO6V", + { + "function": { + "contract_fn": { + "contract_address": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "function_name": "set_admin", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "function_name": "mint", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "i128": { + "hi": 0, + "lo": 1000000000 + } + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "function_name": "mint", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "i128": { + "hi": 0, + "lo": 500 + } + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_invoice", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + { + "vec": [ + { + "i128": { + "hi": 0, + "lo": 100 + } + } + ] + }, + { + "address": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF" + }, + { + "u64": 2000 + }, + { + "map": [ + { + "key": { + "symbol": "allow_early_withdrawal" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + }, + { + "key": { + "symbol": "bonus_max_payers" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "bonus_pool" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "co_creators" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "prerequisite_id" + }, + "val": "void" + }, + { + "key": { + "symbol": "tranches" + }, + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "basis_points" + }, + "val": { + "u32": 10000 + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": 2000 + } + } + ] + } + ] + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + { + "function": { + "contract_fn": { + "contract_address": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "function_name": "transfer", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + }, + { + "i128": { + "hi": 0, + "lo": 100 + } + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "pay", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "u64": 1 + }, + { + "i128": { + "hi": 0, + "lo": 100 + } + }, + { + "u64": 0 + } + ] + } + }, + "sub_invocations": [ + { + "function": { + "contract_fn": { + "contract_address": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "function_name": "transfer", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + }, + { + "i128": { + "hi": 0, + "lo": 100 + } + } + ] + } + }, + "sub_invocations": [] + } + ] + } + ] + ], + [] + ], + "ledger": { + "protocol_version": 22, + "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": [ + [ + { + "account": { + "account_id": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGO6V" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "account": { + "account_id": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGO6V", + "balance": 0, + "seq_num": 0, + "num_sub_entries": 0, + "inflation_dest": null, + "flags": 0, + "home_domain": "", + "thresholds": "01010101", + "signers": [], + "ext": "v0" + } + }, + "ext": "v0" + }, + null + ] + ], + [ + { + "contract_data": { + "contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGO6V", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGO6V", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "symbol": "counter" + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "symbol": "counter" + }, + "durability": "persistent", + "val": { + "u64": 1 + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "inv" + }, + { + "u64": 1 + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "inv" + }, + { + "u64": 1 + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "allow_early_withdrawal" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "amounts" + }, + "val": { + "vec": [ + { + "i128": { + "hi": 0, + "lo": 100 + } + } + ] + } + }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + }, + { + "key": { + "symbol": "bonus_max_payers" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "bonus_pool" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "claimed" + }, + "val": { + "vec": [ + { + "i128": { + "hi": 0, + "lo": 0 + } + } + ] + } + }, + { + "key": { + "symbol": "co_creators" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "completion_time" + }, + "val": "void" + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "deadline" + }, + "val": { + "u64": 2000 + } + }, + { + "key": { + "symbol": "drip_duration" + }, + "val": "void" + }, + { + "key": { + "symbol": "frozen" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "funded" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100 + } + } + }, + { + "key": { + "symbol": "payments" + }, + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100 + } + } + }, + { + "key": { + "symbol": "payer" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "tip" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + } + ] + } + ] + } + }, + { + "key": { + "symbol": "prerequisite_id" + }, + "val": "void" + }, + { + "key": { + "symbol": "recipients" + }, + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + } + }, + { + "key": { + "symbol": "release_timestamp" + }, + "val": "void" + }, + { + "key": { + "symbol": "released_bps" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "vec": [ + { + "symbol": "Pending" + } + ] + } + }, + { + "key": { + "symbol": "tokens" + }, + "val": { + "vec": [ + { + "address": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF" + } + ] + } + }, + { + "key": { + "symbol": "tranches" + }, + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "basis_points" + }, + "val": { + "u32": 10000 + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": 2000 + } + } + ] + } + ] + } + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "log" + }, + { + "u64": 1 + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "log" + }, + { + "u64": 1 + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "map": [ + { + "key": { + "symbol": "action" + }, + "val": { + "symbol": "pay" + } + }, + { + "key": { + "symbol": "actor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "timestamp" + }, + "val": { + "u64": 1000 + } + } + ] + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "nonce" + }, + { + "u64": 1 + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "nonce" + }, + { + "u64": 1 + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 1 + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "rep" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "rep" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 1 + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 2032731177588607455 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 2032731177588607455 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 4270020994084947596 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 4270020994084947596 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": { + "hi": 0, + "lo": 200 + } + } + }, + { + "key": { + "symbol": "authorized" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "clawback" + }, + "val": { + "bool": false + } + } + ] + } + } + }, + "ext": "v0" + }, + 518400 + ] + ], + [ + { + "contract_data": { + "contract": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000000 + } + } + }, + { + "key": { + "symbol": "authorized" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "clawback" + }, + "val": { + "bool": false + } + } + ] + } + } + }, + "ext": "v0" + }, + 518400 + ] + ], + [ + { + "contract_data": { + "contract": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": { + "hi": 0, + "lo": 300 + } + } + }, + { + "key": { + "symbol": "authorized" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "clawback" + }, + "val": { + "bool": false + } + } + ] + } + } + }, + "ext": "v0" + }, + 518400 + ] + ], + [ + { + "contract_data": { + "contract": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CBUSYNQKASUYFWYC3M2GUEDMX4AIVWPALDBYJPNK6554BREHTGZ2IUNF", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": "stellar_asset", + "storage": [ + { + "key": { + "symbol": "METADATA" + }, + "val": { + "map": [ + { + "key": { + "symbol": "decimal" + }, + "val": { + "u32": 7 + } + }, + { + "key": { + "symbol": "name" + }, + "val": { + "string": "aaa:GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGO6V" + } + }, + { + "key": { + "symbol": "symbol" + }, + "val": { + "string": "aaa" + } + } + ] + } + }, + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "vec": [ + { + "symbol": "AssetInfo" + } + ] + }, + "val": { + "vec": [ + { + "symbol": "AlphaNum4" + }, + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "aaa\\0" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "bytes": "0000000000000000000000000000000000000000000000000000000000000003" + } + } + ] + } + ] + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 120960 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4095 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/contracts/split/test_snapshots/test/test_reputation_increments_across_invoices.1.json b/contracts/split/test_snapshots/test/test_reputation_increments_across_invoices.1.json index b003e9a..d2615df 100644 --- a/contracts/split/test_snapshots/test/test_reputation_increments_across_invoices.1.json +++ b/contracts/split/test_snapshots/test/test_reputation_increments_across_invoices.1.json @@ -119,6 +119,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -214,6 +220,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -309,6 +321,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -691,6 +709,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -958,6 +990,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -1225,6 +1271,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_reputation_is_per_address.1.json b/contracts/split/test_snapshots/test/test_reputation_is_per_address.1.json index 19fa063..09c5f05 100644 --- a/contracts/split/test_snapshots/test/test_reputation_is_per_address.1.json +++ b/contracts/split/test_snapshots/test/test_reputation_is_per_address.1.json @@ -144,6 +144,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -580,6 +586,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_template_overwrite.1.json b/contracts/split/test_snapshots/test/test_template_overwrite.1.json index 153a2ff..d2af8d6 100644 --- a/contracts/split/test_snapshots/test/test_template_overwrite.1.json +++ b/contracts/split/test_snapshots/test/test_template_overwrite.1.json @@ -322,6 +322,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_template_save_and_create_two_invoices.1.json b/contracts/split/test_snapshots/test/test_template_save_and_create_two_invoices.1.json index f69b661..06002a6 100644 --- a/contracts/split/test_snapshots/test/test_template_save_and_create_two_invoices.1.json +++ b/contracts/split/test_snapshots/test/test_template_save_and_create_two_invoices.1.json @@ -442,6 +442,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -709,6 +723,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_tranches_partial_then_full_release.1.json b/contracts/split/test_snapshots/test/test_tranches_partial_then_full_release.1.json index 8b72831..0f2cb51 100644 --- a/contracts/split/test_snapshots/test/test_tranches_partial_then_full_release.1.json +++ b/contracts/split/test_snapshots/test/test_tranches_partial_then_full_release.1.json @@ -119,6 +119,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -437,6 +443,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_transfer_invoice_new_creator_can_cancel.1.json b/contracts/split/test_snapshots/test/test_transfer_invoice_new_creator_can_cancel.1.json index 100fce2..0d55462 100644 --- a/contracts/split/test_snapshots/test/test_transfer_invoice_new_creator_can_cancel.1.json +++ b/contracts/split/test_snapshots/test/test_transfer_invoice_new_creator_can_cancel.1.json @@ -94,6 +94,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -352,6 +358,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_transfer_invoice_old_creator_cannot_cancel.1.json b/contracts/split/test_snapshots/test/test_transfer_invoice_old_creator_cannot_cancel.1.json index 094862d..b3fd241 100644 --- a/contracts/split/test_snapshots/test/test_transfer_invoice_old_creator_cannot_cancel.1.json +++ b/contracts/split/test_snapshots/test/test_transfer_invoice_old_creator_cannot_cancel.1.json @@ -94,6 +94,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -330,6 +336,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_unpause_restores_pay.1.json b/contracts/split/test_snapshots/test/test_unpause_restores_pay.1.json index eb023d9..71efa45 100644 --- a/contracts/split/test_snapshots/test/test_unpause_restores_pay.1.json +++ b/contracts/split/test_snapshots/test/test_unpause_restores_pay.1.json @@ -120,6 +120,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -458,6 +464,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" diff --git a/contracts/split/test_snapshots/test/test_wrong_nonce_panics.1.json b/contracts/split/test_snapshots/test/test_wrong_nonce_panics.1.json index 3ffd4c5..0d940c0 100644 --- a/contracts/split/test_snapshots/test/test_wrong_nonce_panics.1.json +++ b/contracts/split/test_snapshots/test/test_wrong_nonce_panics.1.json @@ -119,6 +119,12 @@ "bool": false } }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers" @@ -443,6 +449,20 @@ ] } }, + { + "key": { + "symbol": "approved" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "approver" + }, + "val": "void" + }, { "key": { "symbol": "bonus_max_payers"