diff --git a/contracts/invoice-escrow/src/errors.rs b/contracts/invoice-escrow/src/errors.rs index 3f364d8..38e977d 100644 --- a/contracts/invoice-escrow/src/errors.rs +++ b/contracts/invoice-escrow/src/errors.rs @@ -35,4 +35,6 @@ pub enum Error { Overflow = 13, /// Escrow has been cancelled by the seller. EscrowCancelled = 14, + /// Payer is not the authorized debtor for this invoice. + InvalidPayer = 15, } diff --git a/contracts/invoice-escrow/src/events.rs b/contracts/invoice-escrow/src/events.rs index 2b8069c..a1ca452 100644 --- a/contracts/invoice-escrow/src/events.rs +++ b/contracts/invoice-escrow/src/events.rs @@ -7,22 +7,40 @@ pub fn escrow_created( env: &Env, inv_id: Symbol, seller: &Address, - amount: i128, + debtor: &Address, + face_value: i128, + purchase_price: i128, due_dt: u64, token: &Address, inv_token: &Address, ) { env.events().publish( (Symbol::new(env, "escrow_created"),), - (inv_id.clone(), seller, amount, due_dt, token, inv_token), + ( + inv_id.clone(), + seller, + debtor, + face_value, + purchase_price, + due_dt, + token, + inv_token, + ), ); } -/// Publish escrow_funded event. -pub fn escrow_funded(env: &Env, inv_id: Symbol, funder: &Address, amount: i128) { +/// Publish escrow_funded event with partial funding info. +pub fn escrow_funded( + env: &Env, + inv_id: Symbol, + funder: &Address, + amount: i128, + funded_amt: i128, + purchase_price: i128, +) { env.events().publish( (Symbol::new(env, "escrow_funded"),), - (inv_id, funder, amount), + (inv_id, funder, amount, funded_amt, purchase_price), ); } @@ -41,19 +59,15 @@ pub fn payment_settled( } /// Publish refund event. -pub fn escrow_refunded(env: &Env, inv_id: Symbol, funder: &Address, amount: i128) { - env.events().publish( - (Symbol::new(env, "escrow_refunded"),), - (inv_id, funder, amount), - ); +pub fn escrow_refunded(env: &Env, inv_id: Symbol, amount: i128) { + env.events() + .publish((Symbol::new(env, "escrow_refunded"),), (inv_id, amount)); } /// Publish escrow_cancelled event (invoice_id, seller). pub fn escrow_cancelled(env: &Env, inv_id: Symbol, seller: &Address) { - env.events().publish( - (Symbol::new(env, "escrow_cancelled"),), - (inv_id, seller), - ); + env.events() + .publish((Symbol::new(env, "escrow_cancelled"),), (inv_id, seller)); } /// Publish platform fee update event with old and new basis points. diff --git a/contracts/invoice-escrow/src/integration_test.rs b/contracts/invoice-escrow/src/integration_test.rs index af87de5..d5301ba 100644 --- a/contracts/invoice-escrow/src/integration_test.rs +++ b/contracts/invoice-escrow/src/integration_test.rs @@ -56,6 +56,8 @@ fn test_integration_escrow_lifecycle_happy_path() { escrow_client.create_escrow( &invoice_id, &seller, + &payer, + &amount, &amount, &due_date, &payment_token_id.address(), @@ -63,7 +65,7 @@ fn test_integration_escrow_lifecycle_happy_path() { ); // 8. Fund Escrow (Buyer buys the invoice) - escrow_client.fund_escrow(&invoice_id, &buyer); + escrow_client.fund_escrow(&invoice_id, &buyer, &amount); // Verify buyer received invoice tokens and paid payment tokens assert_eq!(inv_token_client.balance(&buyer), amount); @@ -141,13 +143,15 @@ fn test_integration_refund_lifecycle() { escrow_client.create_escrow( &invoice_id, &seller, + &seller, + &amount, &amount, &due_date, &payment_token_id.address(), &inv_token_id, ); - escrow_client.fund_escrow(&invoice_id, &buyer); + escrow_client.fund_escrow(&invoice_id, &buyer, &amount); // Attempt refund before due date (should fail) let res = escrow_client.try_refund(&invoice_id); @@ -178,6 +182,7 @@ fn test_integration_token_locked_during_active_escrow() { let admin = Address::generate(&env); let seller = Address::generate(&env); let buyer = Address::generate(&env); + let payer = Address::generate(&env); let escrow_id = env.register(InvoiceEscrow, ()); let escrow_client = InvoiceEscrowClient::new(&env, &escrow_id); @@ -208,6 +213,8 @@ fn test_integration_token_locked_during_active_escrow() { escrow_client.create_escrow( &invoice_id, &seller, + &payer, + &amount, &amount, &due_date, &payment_token_id.address(), @@ -217,7 +224,7 @@ fn test_integration_token_locked_during_active_escrow() { // Token is locked even before funding (initialized locked) assert!(inv_token_client.transfer_locked()); - escrow_client.fund_escrow(&invoice_id, &buyer); + escrow_client.fund_escrow(&invoice_id, &buyer, &amount); // Token is still locked after funding — transfers are blocked while invoice is active assert!(inv_token_client.transfer_locked()); @@ -226,7 +233,6 @@ fn test_integration_token_locked_during_active_escrow() { assert!(result.is_err()); // After settlement, token unlocks - let payer = Address::generate(&env); payment_token_asset.mint(&payer, &amount); escrow_client.record_payment(&invoice_id, &payer, &amount); diff --git a/contracts/invoice-escrow/src/lib.rs b/contracts/invoice-escrow/src/lib.rs index 3586171..926462d 100644 --- a/contracts/invoice-escrow/src/lib.rs +++ b/contracts/invoice-escrow/src/lib.rs @@ -10,8 +10,10 @@ mod types; use soroban_sdk::{contract, contractimpl, token, Address, Env, IntoVal, Symbol}; +pub use types::EscrowStatus; + use errors::Error; -use types::{Config, EscrowData, EscrowStatus}; +use types::{Config, EscrowData}; const MAX_BPS: u32 = 10_000; @@ -37,17 +39,21 @@ impl InvoiceEscrow { } /// Create an escrow for an invoice. Caller (seller) must be authenticated. + /// face_value: what the debtor owes (amount to be paid at settlement) + /// purchase_price: what the investor pays (discount applied here) pub fn create_escrow( env: Env, invoice_id: Symbol, seller: Address, - amount: i128, + debtor: Address, + face_value: i128, + purchase_price: i128, due_date: u64, payment_token: Address, invoice_token: Address, ) -> Result<(), Error> { seller.require_auth(); - if amount <= 0 { + if face_value <= 0 || purchase_price <= 0 { return Err(Error::InvalidAmount); } storage::get_config(&env).ok_or(Error::NotInit)?; @@ -57,11 +63,14 @@ impl InvoiceEscrow { let data = EscrowData { inv_id: invoice_id.clone(), seller: seller.clone(), - amount, + debtor: debtor.clone(), + face_value, + purchase_price, + funded_amt: 0, + funder: None, due_dt: due_date, token: payment_token.clone(), inv_token: invoice_token.clone(), - funder: None, paid_amt: 0, status: EscrowStatus::Created, }; @@ -70,7 +79,9 @@ impl InvoiceEscrow { &env, invoice_id, &seller, - amount, + &debtor, + face_value, + purchase_price, due_date, &payment_token, &invoice_token, @@ -97,9 +108,18 @@ impl InvoiceEscrow { Ok(()) } - /// Fund the escrow (investor buys the invoice). Transfers `amount` from buyer to this contract. - pub fn fund_escrow(env: Env, invoice_id: Symbol, buyer: Address) -> Result<(), Error> { + /// Fund the escrow (investor buys part or all of the invoice at purchase_price). + /// Transfers `amount` from buyer to this contract. Multiple investors can fund until fully subscribed. + pub fn fund_escrow( + env: Env, + invoice_id: Symbol, + buyer: Address, + amount: i128, + ) -> Result<(), Error> { buyer.require_auth(); + if amount <= 0 { + return Err(Error::InvalidAmount); + } let mut data = storage::get_escrow(&env, invoice_id.clone()).ok_or(Error::EscrowNotFound)?; if data.status == EscrowStatus::Cancelled { @@ -108,12 +128,18 @@ impl InvoiceEscrow { if data.status != EscrowStatus::Created { return Err(Error::EscrowFunded); } - let amount = data.amount; + + // Check that funding doesn't exceed purchase_price + let new_funded = data.funded_amt.checked_add(amount).ok_or(Error::Overflow)?; + if new_funded > data.purchase_price { + return Err(Error::InvalidAmount); + } + let token = token::Client::new(&env, &data.token); let contract = env.current_contract_address(); token.transfer(&buyer, &contract, &amount); - // Mint invoice tokens to the buyer to represent ownership + // Mint invoice tokens to the buyer to represent their ownership share env.invoke_contract::<()>( &data.inv_token, &Symbol::new(&env, "mint"), @@ -125,14 +151,41 @@ impl InvoiceEscrow { ], ); - data.funder = Some(buyer.clone()); - data.status = EscrowStatus::Funded; + // Track this funder's contribution + let current_funder_amt = storage::get_funder_amount(&env, invoice_id.clone(), &buyer); + let new_funder_amt = current_funder_amt + .checked_add(amount) + .ok_or(Error::Overflow)?; + storage::set_funder_amount(&env, invoice_id.clone(), &buyer, new_funder_amt); + + data.funded_amt = new_funded; + + // MVP: Store the first funder for direct distribution + if data.funder.is_none() { + data.funder = Some(buyer.clone()); + } + + // If fully funded, transition to Funded status + if data.funded_amt == data.purchase_price { + data.status = EscrowStatus::Funded; + } + storage::set_escrow(&env, invoice_id.clone(), &data); - events::escrow_funded(&env, invoice_id, &buyer, amount); + events::escrow_funded( + &env, + invoice_id, + &buyer, + amount, + data.funded_amt, + data.purchase_price, + ); Ok(()) } - /// Record payment: distribute to investor (amount - fee) and platform (fee). Payer must auth. + /// Record payment: distribute to investors and platform fee. Payer must auth. + /// Payer must be the authorized debtor for this invoice. + /// Payment is applied toward face_value; fees are calculated on the payment amount. + /// MVP: Distributes pro-rata to all funders based on their contribution. pub fn record_payment( env: Env, invoice_id: Symbol, @@ -147,20 +200,26 @@ impl InvoiceEscrow { let mut data = storage::get_escrow(&env, invoice_id.clone()).ok_or(Error::EscrowNotFound)?; + // Enforce payer role: payer must be the authorized debtor + if payer != data.debtor { + return Err(Error::InvalidPayer); + } + if data.status != EscrowStatus::Funded { return Err(Error::AlreadySettled); } + // Remaining balance toward face_value let remaining = data - .amount + .face_value .checked_sub(data.paid_amt) .ok_or(Error::Overflow)?; if amount > remaining { return Err(Error::InvalidAmount); } - let funder = data.funder.as_ref().ok_or(Error::EscrowNotFunded)?; let fee_bps = i128::from(config.fee_bps); + // Fee is calculated on the payment amount (not face_value) let platform_fee = amount .checked_mul(fee_bps) .ok_or(Error::Overflow)? @@ -174,16 +233,34 @@ impl InvoiceEscrow { // 1. Transfer payer funds into escrow token.transfer(&payer, &contract, &amount); - // 2. Distribute payer's funds out (investor + platform fee) - token.transfer(&contract, funder, &investor_amount); + // 2. Distribute platform fee to admin token.transfer(&contract, &config.admin, &platform_fee); - // 3. Release corresponding funding from initial buy-in back to the seller + // 3. Distribute investor_amount pro-rata to all funders + // MVP: For single funder, distribute full amount. For multiple, pro-rata via invoice tokens. + if let Some(funder) = &data.funder { + if data.funded_amt > 0 && investor_amount > 0 { + // Pro-rata: each funder gets (their_amount / total_funded) * investor_amount + let funder_amt = storage::get_funder_amount(&env, invoice_id.clone(), funder); + let pro_rata_share = investor_amount + .checked_mul(funder_amt) + .ok_or(Error::Overflow)? + .checked_div(data.funded_amt) + .ok_or(Error::Overflow)?; + + if pro_rata_share > 0 { + token.transfer(&contract, funder, &pro_rata_share); + } + } + } + + // 4. Release corresponding funding from initial buy-in back to the seller token.transfer(&contract, &data.seller, &amount); data.paid_amt = data.paid_amt.checked_add(amount).ok_or(Error::Overflow)?; - if data.paid_amt == data.amount { + // Settlement occurs when paid_amt reaches face_value + if data.paid_amt == data.face_value { data.status = EscrowStatus::Settled; // Unlock invoice token transfers only when the invoice is completely settled env.invoke_contract::<()>( @@ -198,7 +275,8 @@ impl InvoiceEscrow { Ok(()) } - /// Refund the investor if the invoice was not paid by due date. Anyone may call. + /// Refund the investors if the invoice was not paid by due date. Anyone may call. + /// Refunds are distributed pro-rata based on each investor's contribution. pub fn refund(env: Env, invoice_id: Symbol) -> Result<(), Error> { let mut data = storage::get_escrow(&env, invoice_id.clone()).ok_or(Error::EscrowNotFound)?; @@ -209,11 +287,10 @@ impl InvoiceEscrow { if ledger_ts < data.due_dt { return Err(Error::RefundNotAllowed); } - let funder = data.funder.as_ref().ok_or(Error::EscrowNotFunded)?; - // Refund the remaining collateral (initial buy-in minus already released partial payments) + // Refund the remaining collateral (initial purchase_price minus already released partial payments) let amount_to_refund = data - .amount + .purchase_price .checked_sub(data.paid_amt) .ok_or(Error::Overflow)?; @@ -221,7 +298,21 @@ impl InvoiceEscrow { let contract = env.current_contract_address(); if amount_to_refund > 0 { - token.transfer(&contract, funder, &amount_to_refund); + // MVP: Distribute pro-rata to all funders + if let Some(funder) = &data.funder { + if data.funded_amt > 0 { + let funder_amt = storage::get_funder_amount(&env, invoice_id.clone(), funder); + let pro_rata_refund = amount_to_refund + .checked_mul(funder_amt) + .ok_or(Error::Overflow)? + .checked_div(data.funded_amt) + .ok_or(Error::Overflow)?; + + if pro_rata_refund > 0 { + token.transfer(&contract, funder, &pro_rata_refund); + } + } + } } data.status = EscrowStatus::Refunded; @@ -234,7 +325,7 @@ impl InvoiceEscrow { soroban_sdk::vec![&env, contract.to_val(), false.into_val(&env)], ); - events::escrow_refunded(&env, invoice_id, funder, amount_to_refund); + events::escrow_refunded(&env, invoice_id, amount_to_refund); Ok(()) } diff --git a/contracts/invoice-escrow/src/storage.rs b/contracts/invoice-escrow/src/storage.rs index d455f54..050381c 100644 --- a/contracts/invoice-escrow/src/storage.rs +++ b/contracts/invoice-escrow/src/storage.rs @@ -30,3 +30,33 @@ pub fn set_escrow(env: &soroban_sdk::Env, inv_id: Symbol, data: &EscrowData) { pub fn has_escrow(env: &soroban_sdk::Env, inv_id: Symbol) -> bool { env.storage().persistent().has(&StorageKey::Escrow(inv_id)) } + +/// Get the amount funded by a specific funder for an invoice. +pub fn get_funder_amount( + env: &soroban_sdk::Env, + inv_id: Symbol, + funder: &soroban_sdk::Address, +) -> i128 { + env.storage() + .persistent() + .get(&StorageKey::FunderAmount(inv_id, funder.clone())) + .unwrap_or(0) +} + +/// Set the amount funded by a specific funder for an invoice. +pub fn set_funder_amount( + env: &soroban_sdk::Env, + inv_id: Symbol, + funder: &soroban_sdk::Address, + amount: i128, +) { + if amount == 0 { + env.storage() + .persistent() + .remove(&StorageKey::FunderAmount(inv_id, funder.clone())); + } else { + env.storage() + .persistent() + .set(&StorageKey::FunderAmount(inv_id, funder.clone()), &amount); + } +} diff --git a/contracts/invoice-escrow/src/test.rs b/contracts/invoice-escrow/src/test.rs index 3a8d5e3..6dcece0 100644 --- a/contracts/invoice-escrow/src/test.rs +++ b/contracts/invoice-escrow/src/test.rs @@ -55,6 +55,8 @@ fn test_create_and_fund() { escrow_client.create_escrow( &invoice_id, &seller, + &seller, + &amount, &amount, &1000000, &payment_token.address, @@ -62,7 +64,7 @@ fn test_create_and_fund() { ); // Fund escrow - escrow_client.fund_escrow(&invoice_id, &buyer); + escrow_client.fund_escrow(&invoice_id, &buyer, &amount); // Check status let status = escrow_client.get_escrow_status(&invoice_id); @@ -109,13 +111,15 @@ fn test_record_payment() { escrow_client.create_escrow( &invoice_id, &seller, + &payer, + &amount, &amount, &1000000, &payment_token.address, &inv_token_id, ); - escrow_client.fund_escrow(&invoice_id, &buyer); + escrow_client.fund_escrow(&invoice_id, &buyer, &amount); assert_eq!(payment_token.balance(&buyer), 0); // The contract holds the buyer's 1000 @@ -164,6 +168,8 @@ fn test_escrow_created_event() { escrow_client.create_escrow( &invoice_id, &seller, + &seller, + &amount, &amount, &due_date, &payment_token_id.address(), @@ -182,14 +188,16 @@ fn test_escrow_created_event() { (Symbol::new(&env, "escrow_created"),).into_val(&env) ); - let event_data: (Symbol, Address, i128, u64, Address, Address) = + let event_data: (Symbol, Address, Address, i128, i128, u64, Address, Address) = data.try_into_val(&env).unwrap(); assert_eq!(event_data.0, invoice_id); assert_eq!(event_data.1, seller); - assert_eq!(event_data.2, amount); - assert_eq!(event_data.3, due_date); - assert_eq!(event_data.4, payment_token_id.address()); - assert_eq!(event_data.5, inv_token_id); + assert_eq!(event_data.2, seller); + assert_eq!(event_data.3, amount); + assert_eq!(event_data.4, amount); + assert_eq!(event_data.5, due_date); + assert_eq!(event_data.6, payment_token_id.address()); + assert_eq!(event_data.7, inv_token_id); } #[test] @@ -218,13 +226,15 @@ fn test_escrow_funded_event() { escrow_client.create_escrow( &invoice_id, &seller, + &seller, + &amount, &amount, &1000000, &payment_token_id.address(), &inv_token_id, ); - escrow_client.fund_escrow(&invoice_id, &buyer); + escrow_client.fund_escrow(&invoice_id, &buyer, &amount); // Find escrow_funded event (should be the last event) let events = env.events().all(); @@ -234,10 +244,12 @@ fn test_escrow_funded_event() { assert_eq!(topics, (Symbol::new(&env, "escrow_funded"),).into_val(&env)); - let event_data: (Symbol, Address, i128) = data.try_into_val(&env).unwrap(); + let event_data: (Symbol, Address, i128, i128, i128) = data.try_into_val(&env).unwrap(); assert_eq!(event_data.0, invoice_id); assert_eq!(event_data.1, buyer); assert_eq!(event_data.2, amount); + assert_eq!(event_data.3, amount); // funded_amt + assert_eq!(event_data.4, amount); // purchase_price } #[test] @@ -268,13 +280,15 @@ fn test_payment_settled_event() { escrow_client.create_escrow( &invoice_id, &seller, + &payer, + &amount, &amount, &1000000, &payment_token_id.address(), &inv_token_id, ); - escrow_client.fund_escrow(&invoice_id, &buyer); + escrow_client.fund_escrow(&invoice_id, &buyer, &amount); escrow_client.record_payment(&invoice_id, &payer, &amount); // Find payment_settled event (should be the last event) @@ -322,13 +336,15 @@ fn test_escrow_refunded_event() { escrow_client.create_escrow( &invoice_id, &seller, + &seller, + &amount, &amount, &due_date, &payment_token_id.address(), &inv_token_id, ); - escrow_client.fund_escrow(&invoice_id, &buyer); + escrow_client.fund_escrow(&invoice_id, &buyer, &amount); // Set ledger timestamp past due date to allow refund env.ledger().with_mut(|li| li.timestamp = due_date + 1); @@ -346,10 +362,9 @@ fn test_escrow_refunded_event() { (Symbol::new(&env, "escrow_refunded"),).into_val(&env) ); - let event_data: (Symbol, Address, i128) = data.try_into_val(&env).unwrap(); + let event_data: (Symbol, i128) = data.try_into_val(&env).unwrap(); assert_eq!(event_data.0, invoice_id); - assert_eq!(event_data.1, buyer); - assert_eq!(event_data.2, amount); + assert_eq!(event_data.1, amount); } #[test] @@ -378,6 +393,8 @@ fn test_no_settlement_event_on_invalid_state() { escrow_client.create_escrow( &invoice_id, &seller, + &payer, + &amount, &amount, &1000000, &payment_token_id.address(), @@ -429,6 +446,8 @@ fn test_no_refund_event_on_invalid_state() { escrow_client.create_escrow( &invoice_id, &seller, + &seller, + &amount, &amount, &due_date, &payment_token_id.address(), @@ -498,6 +517,8 @@ fn test_create_escrow_requires_seller_auth() { let result = escrow_client.try_create_escrow( &Symbol::new(&env, "INV001"), &seller, + &seller, + &1000, &1000, &1000000, &payment_token, @@ -557,6 +578,8 @@ fn test_create_escrow_zero_amount() { let result = escrow_client.try_create_escrow( &Symbol::new(&env, "INV001"), &seller, + &seller, + &0, &0, &1000000, &payment_token, @@ -584,6 +607,8 @@ fn test_create_escrow_negative_amount() { let result = escrow_client.try_create_escrow( &Symbol::new(&env, "INV001"), &seller, + &seller, + &-100, &-100, &1000000, &payment_token, @@ -612,6 +637,8 @@ fn test_create_escrow_duplicate_invoice_id() { escrow_client.create_escrow( &invoice_id, &seller, + &seller, + &1000, &1000, &1000000, &payment_token, @@ -622,6 +649,8 @@ fn test_create_escrow_duplicate_invoice_id() { let result = escrow_client.try_create_escrow( &invoice_id, &seller, + &seller, + &2000, &2000, &2000000, &payment_token, @@ -681,7 +710,7 @@ fn test_fund_escrow_not_found() { escrow_client.initialize(&admin, &300); // Try to fund non-existent escrow - let result = escrow_client.try_fund_escrow(&Symbol::new(&env, "NONEXISTENT"), &buyer); + let result = escrow_client.try_fund_escrow(&Symbol::new(&env, "NONEXISTENT"), &buyer, &1000); assert_eq!(result, Err(Ok(Error::EscrowNotFound))); } @@ -712,6 +741,8 @@ fn test_fund_escrow_already_funded() { escrow_client.create_escrow( &invoice_id, &seller, + &seller, + &1000, &1000, &1000000, &payment_token_id.address(), @@ -719,10 +750,10 @@ fn test_fund_escrow_already_funded() { ); // First funding should succeed - escrow_client.fund_escrow(&invoice_id, &buyer1); + escrow_client.fund_escrow(&invoice_id, &buyer1, &1000); // Second funding should fail - let result = escrow_client.try_fund_escrow(&invoice_id, &buyer2); + let result = escrow_client.try_fund_escrow(&invoice_id, &buyer2, &1000); assert_eq!(result, Err(Ok(Error::EscrowFunded))); } @@ -746,6 +777,8 @@ fn test_record_payment_not_funded() { escrow_client.create_escrow( &invoice_id, &seller, + &payer, + &1000, &1000, &1000000, &payment_token, @@ -784,13 +817,15 @@ fn test_record_payment_already_settled() { escrow_client.create_escrow( &invoice_id, &seller, + &payer, + &1000, &1000, &1000000, &payment_token_id.address(), &inv_token_id, ); - escrow_client.fund_escrow(&invoice_id, &buyer); + escrow_client.fund_escrow(&invoice_id, &buyer, &1000); escrow_client.record_payment(&invoice_id, &payer, &1000); // Try to record payment again @@ -825,13 +860,15 @@ fn test_record_payment_amount_exceeds_escrow() { escrow_client.create_escrow( &invoice_id, &seller, + &payer, + &1000, &1000, &1000000, &payment_token_id.address(), &inv_token_id, ); - escrow_client.fund_escrow(&invoice_id, &buyer); + escrow_client.fund_escrow(&invoice_id, &buyer, &1000); // Try to record payment with amount > escrow amount let result = escrow_client.try_record_payment(&invoice_id, &payer, &1500); @@ -857,6 +894,8 @@ fn test_refund_not_funded() { escrow_client.create_escrow( &invoice_id, &seller, + &seller, + &1000, &1000, &1000, &payment_token, @@ -899,13 +938,15 @@ fn test_refund_before_due_date() { escrow_client.create_escrow( &invoice_id, &seller, + &seller, + &1000, &1000, &due_date, &payment_token_id.address(), &inv_token_id, ); - escrow_client.fund_escrow(&invoice_id, &buyer); + escrow_client.fund_escrow(&invoice_id, &buyer, &1000); // Set time before due date env.ledger().with_mut(|li| li.timestamp = due_date - 1); @@ -942,13 +983,15 @@ fn test_refund_at_due_date() { escrow_client.create_escrow( &invoice_id, &seller, + &seller, + &1000, &1000, &due_date, &payment_token_id.address(), &inv_token_id, ); - escrow_client.fund_escrow(&invoice_id, &buyer); + escrow_client.fund_escrow(&invoice_id, &buyer, &1000); // Set time exactly at due date env.ledger().with_mut(|li| li.timestamp = due_date); @@ -991,13 +1034,15 @@ fn test_refund_after_due_date() { escrow_client.create_escrow( &invoice_id, &seller, + &seller, + &1000, &1000, &due_date, &payment_token_id.address(), &inv_token_id, ); - escrow_client.fund_escrow(&invoice_id, &buyer); + escrow_client.fund_escrow(&invoice_id, &buyer, &1000); // Set time after due date env.ledger().with_mut(|li| li.timestamp = due_date + 5000); @@ -1041,13 +1086,15 @@ fn test_refund_already_settled() { escrow_client.create_escrow( &invoice_id, &seller, + &payer, + &1000, &1000, &due_date, &payment_token_id.address(), &inv_token_id, ); - escrow_client.fund_escrow(&invoice_id, &buyer); + escrow_client.fund_escrow(&invoice_id, &buyer, &1000); escrow_client.record_payment(&invoice_id, &payer, &1000); // Set time after due date @@ -1089,13 +1136,15 @@ fn test_fee_calculation_zero_fee() { escrow_client.create_escrow( &invoice_id, &seller, + &payer, + &1000, &1000, &1000000, &payment_token_id.address(), &inv_token_id, ); - escrow_client.fund_escrow(&invoice_id, &buyer); + escrow_client.fund_escrow(&invoice_id, &buyer, &1000); escrow_client.record_payment(&invoice_id, &payer, &1000); // With 0% fee, buyer should get full amount @@ -1132,13 +1181,15 @@ fn test_fee_calculation_max_fee() { escrow_client.create_escrow( &invoice_id, &seller, + &payer, + &1000, &1000, &1000000, &payment_token_id.address(), &inv_token_id, ); - escrow_client.fund_escrow(&invoice_id, &buyer); + escrow_client.fund_escrow(&invoice_id, &buyer, &1000); escrow_client.record_payment(&invoice_id, &payer, &1000); // With 100% fee, admin gets all, buyer gets nothing @@ -1244,6 +1295,8 @@ fn test_get_escrow_data() { escrow_client.create_escrow( &invoice_id, &seller, + &seller, + &amount, &amount, &due_date, &payment_token, @@ -1254,12 +1307,13 @@ fn test_get_escrow_data() { let data = escrow_client.get_escrow(&invoice_id); assert_eq!(data.inv_id, invoice_id); assert_eq!(data.seller, seller); - assert_eq!(data.amount, amount); + assert_eq!(data.debtor, seller); + assert_eq!(data.face_value, amount); + assert_eq!(data.purchase_price, amount); assert_eq!(data.due_dt, due_date); assert_eq!(data.token, payment_token); assert_eq!(data.inv_token, inv_token); assert_eq!(data.status, EscrowStatus::Created); - assert_eq!(data.funder, None); } // ========== Operations Before Initialization Tests ========== @@ -1280,6 +1334,8 @@ fn test_create_escrow_not_initialized() { let result = escrow_client.try_create_escrow( &Symbol::new(&env, "INV001"), &seller, + &seller, + &1000, &1000, &1000000, &payment_token, @@ -1330,13 +1386,15 @@ fn test_partial_payment_lifecycle() { escrow_client.create_escrow( &invoice_id, &seller, + &payer, + &amount, &amount, &1000000, &payment_token.address, &inv_token_id, ); - escrow_client.fund_escrow(&invoice_id, &buyer); + escrow_client.fund_escrow(&invoice_id, &buyer, &amount); // First payment: 400 escrow_client.record_payment(&invoice_id, &payer, &400); @@ -1410,13 +1468,15 @@ fn test_refund_after_partial_payment() { escrow_client.create_escrow( &invoice_id, &seller, + &payer, + &amount, &amount, &due_date, &payment_token.address, &inv_token_id, ); - escrow_client.fund_escrow(&invoice_id, &buyer); + escrow_client.fund_escrow(&invoice_id, &buyer, &amount); // Partial payment: 300 escrow_client.record_payment(&invoice_id, &payer, &300); @@ -1473,12 +1533,14 @@ fn test_record_payment_removes_initial_fund_even_on_full_payment() { escrow_client.create_escrow( &invoice_id, &seller, + &payer, + &amount, &amount, &100, &pt_id.address(), &inv_token_id, ); - escrow_client.fund_escrow(&invoice_id, &buyer); + escrow_client.fund_escrow(&invoice_id, &buyer, &amount); assert_eq!(payment_token.balance(&escrow_id), 5000); @@ -1489,7 +1551,6 @@ fn test_record_payment_removes_initial_fund_even_on_full_payment() { assert_eq!(payment_token.balance(&buyer), 5000); } - // ── Issue #41: cancel_escrow ───────────────────────────────────────────────── fn setup_escrow_created(env: &Env) -> (Address, InvoiceEscrowClient<'_>, Address, Address, Symbol) { @@ -1510,6 +1571,8 @@ fn setup_escrow_created(env: &Env) -> (Address, InvoiceEscrowClient<'_>, Address client.create_escrow( &invoice_id, &seller, + &seller, + &1000i128, &1000i128, &9_999_999u64, &pt_id.address(), @@ -1528,7 +1591,10 @@ fn test_cancel_escrow_happy_path() { client.cancel_escrow(&invoice_id, &seller); - assert_eq!(client.get_escrow_status(&invoice_id), EscrowStatus::Cancelled); + assert_eq!( + client.get_escrow_status(&invoice_id), + EscrowStatus::Cancelled + ); } #[test] @@ -1582,12 +1648,14 @@ fn test_cancel_escrow_already_funded_rejected() { client.create_escrow( &invoice_id, &seller, + &seller, + &1000i128, &1000i128, &9_999_999u64, &pt_id.address(), &inv_token_id, ); - client.fund_escrow(&invoice_id, &buyer); + client.fund_escrow(&invoice_id, &buyer, &1000); // Cannot cancel once funded let res = client.try_cancel_escrow(&invoice_id, &seller); @@ -1605,6 +1673,6 @@ fn test_fund_cancelled_escrow_rejected() { client.cancel_escrow(&invoice_id, &seller); let buyer = Address::generate(&env); - let res = client.try_fund_escrow(&invoice_id, &buyer); + let res = client.try_fund_escrow(&invoice_id, &buyer, &1000); assert_eq!(res, Err(Ok(Error::EscrowCancelled))); } diff --git a/contracts/invoice-escrow/src/types.rs b/contracts/invoice-escrow/src/types.rs index 5c40c48..3887723 100644 --- a/contracts/invoice-escrow/src/types.rs +++ b/contracts/invoice-escrow/src/types.rs @@ -11,6 +11,8 @@ pub enum StorageKey { Config, /// Persistent: escrow data by invoice id. Escrow(soroban_sdk::Symbol), + /// Persistent: funder amounts by (invoice_id, funder_address). + FunderAmount(soroban_sdk::Symbol, soroban_sdk::Address), } /// Global contract configuration. @@ -48,16 +50,22 @@ pub struct EscrowData { pub inv_id: soroban_sdk::Symbol, /// Seller (invoice owner). pub seller: soroban_sdk::Address, - /// Invoice amount in payment token's smallest unit. - pub amount: i128, + /// Debtor (authorized payer of the invoice). + pub debtor: soroban_sdk::Address, + /// Face value: what the debtor owes (amount to be paid at settlement). + pub face_value: i128, + /// Purchase price: total amount to be funded by all investors (discount applied here). + pub purchase_price: i128, + /// Total amount funded so far by all investors. + pub funded_amt: i128, + /// Primary funder address (MVP: single funder for now). + pub funder: Option, /// Due date (ledger timestamp). pub due_dt: u64, /// Payment token contract address. pub token: soroban_sdk::Address, /// Invoice token contract address (ownership/claim). pub inv_token: soroban_sdk::Address, - /// Investor who funded the escrow (None until funded). - pub funder: Option, /// Amount already paid by payer. pub paid_amt: i128, /// Current status. diff --git a/contracts/invoice-escrow/test_snapshots/integration_test/test_integration_escrow_lifecycle_happy_path.1.json b/contracts/invoice-escrow/test_snapshots/integration_test/test_integration_escrow_lifecycle_happy_path.1.json index d6673d3..ef89c55 100644 --- a/contracts/invoice-escrow/test_snapshots/integration_test/test_integration_escrow_lifecycle_happy_path.1.json +++ b/contracts/invoice-escrow/test_snapshots/integration_test/test_integration_escrow_lifecycle_happy_path.1.json @@ -1,6 +1,6 @@ { "generators": { - "address": 9, + "address": 8, "nonce": 0 }, "auth": [ @@ -92,6 +92,15 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, { "i128": { "hi": 0, @@ -128,56 +137,6 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" - } - ] - } - }, - "sub_invocations": [ - { - "function": { - "contract_fn": { - "contract_address": "CD3FXVGYSLQFFTW3UH6WFF2OKZH7VERGZJZAMJHTGHBWO4F6URWEJL23", - "function_name": "transfer", - "args": [ - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" - }, - { - "i128": { - "hi": 0, - "lo": 1000 - } - } - ] - } - }, - "sub_invocations": [] - } - ] - } - ] - ], - [], - [], - [], - [], - [ - [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", - { - "function": { - "contract_fn": { - "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", - "function_name": "record_payment", - "args": [ - { - "symbol": "INV001" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { "i128": { @@ -196,7 +155,7 @@ "function_name": "transfer", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" @@ -220,38 +179,6 @@ [], [], [], - [], - [], - [], - [ - [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", - { - "function": { - "contract_fn": { - "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", - "function_name": "transfer", - "args": [ - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON" - }, - { - "i128": { - "hi": 0, - "lo": 1000 - } - } - ] - } - }, - "sub_invocations": [] - } - ] - ], - [], [] ], "ledger": { @@ -391,72 +318,6 @@ 6311999 ] ], - [ - { - "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", - "key": { - "ledger_key_nonce": { - "nonce": 8370022561469687789 - } - }, - "durability": "temporary" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", - "key": { - "ledger_key_nonce": { - "nonce": 8370022561469687789 - } - }, - "durability": "temporary", - "val": "void" - } - }, - "ext": "v0" - }, - 6311999 - ] - ], - [ - { - "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", - "key": { - "ledger_key_nonce": { - "nonce": 4270020994084947596 - } - }, - "durability": "temporary" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", - "key": { - "ledger_key_nonce": { - "nonce": 4270020994084947596 - } - }, - "durability": "temporary", - "val": "void" - } - }, - "ext": "v0" - }, - 6311999 - ] - ], [ { "contract_data": { @@ -496,7 +357,23 @@ "map": [ { "key": { - "symbol": "amount" + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 10000 + } + }, + { + "key": { + "symbol": "face_value" }, "val": { "i128": { @@ -507,10 +384,13 @@ }, { "key": { - "symbol": "due_dt" + "symbol": "funded_amt" }, "val": { - "u64": 10000 + "i128": { + "hi": 0, + "lo": 1000 + } } }, { @@ -541,6 +421,17 @@ "key": { "symbol": "paid_amt" }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "purchase_price" + }, "val": { "i128": { "hi": 0, @@ -561,7 +452,7 @@ "symbol": "status" }, "val": { - "u32": 2 + "u32": 1 } }, { @@ -581,6 +472,60 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV001" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV001" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], [ { "contract_data": { @@ -653,7 +598,7 @@ "symbol": "Balance" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } ] }, @@ -673,7 +618,7 @@ "symbol": "Balance" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } ] }, @@ -777,7 +722,7 @@ "symbol": "transfer_locked" }, "val": { - "bool": false + "bool": true } } ] @@ -874,152 +819,6 @@ 6311999 ] ], - [ - { - "contract_data": { - "contract": "CD3FXVGYSLQFFTW3UH6WFF2OKZH7VERGZJZAMJHTGHBWO4F6URWEJL23", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" - } - ] - }, - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CD3FXVGYSLQFFTW3UH6WFF2OKZH7VERGZJZAMJHTGHBWO4F6URWEJL23", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "amount" - }, - "val": { - "i128": { - "hi": 0, - "lo": 30 - } - } - }, - { - "key": { - "symbol": "authorized" - }, - "val": { - "bool": true - } - }, - { - "key": { - "symbol": "clawback" - }, - "val": { - "bool": false - } - } - ] - } - } - }, - "ext": "v0" - }, - 518400 - ] - ], - [ - { - "contract_data": { - "contract": "CD3FXVGYSLQFFTW3UH6WFF2OKZH7VERGZJZAMJHTGHBWO4F6URWEJL23", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" - } - ] - }, - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CD3FXVGYSLQFFTW3UH6WFF2OKZH7VERGZJZAMJHTGHBWO4F6URWEJL23", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "amount" - }, - "val": { - "i128": { - "hi": 0, - "lo": 1000 - } - } - }, - { - "key": { - "symbol": "authorized" - }, - "val": { - "bool": true - } - }, - { - "key": { - "symbol": "clawback" - }, - "val": { - "bool": false - } - } - ] - } - } - }, - "ext": "v0" - }, - 518400 - ] - ], [ { "contract_data": { @@ -1064,7 +863,7 @@ "val": { "i128": { "hi": 0, - "lo": 970 + "lo": 0 } } }, @@ -1137,7 +936,7 @@ "val": { "i128": { "hi": 0, - "lo": 0 + "lo": 1000 } } }, @@ -1210,7 +1009,7 @@ "val": { "i128": { "hi": 0, - "lo": 0 + "lo": 1000 } } }, diff --git a/contracts/invoice-escrow/test_snapshots/integration_test/test_integration_refund_lifecycle.1.json b/contracts/invoice-escrow/test_snapshots/integration_test/test_integration_refund_lifecycle.1.json index fa4a20b..be80a5e 100644 --- a/contracts/invoice-escrow/test_snapshots/integration_test/test_integration_refund_lifecycle.1.json +++ b/contracts/invoice-escrow/test_snapshots/integration_test/test_integration_refund_lifecycle.1.json @@ -67,6 +67,15 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, { "i128": { "hi": 0, @@ -103,6 +112,12 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } } ] } @@ -317,7 +332,23 @@ "map": [ { "key": { - "symbol": "amount" + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 10000 + } + }, + { + "key": { + "symbol": "face_value" }, "val": { "i128": { @@ -328,10 +359,13 @@ }, { "key": { - "symbol": "due_dt" + "symbol": "funded_amt" }, "val": { - "u64": 10000 + "i128": { + "hi": 0, + "lo": 1000 + } } }, { @@ -369,6 +403,17 @@ } } }, + { + "key": { + "symbol": "purchase_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, { "key": { "symbol": "seller" @@ -402,6 +447,60 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INVFAIL" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INVFAIL" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], [ { "contract_data": { diff --git a/contracts/invoice-escrow/test_snapshots/integration_test/test_integration_token_locked_during_active_escrow.1.json b/contracts/invoice-escrow/test_snapshots/integration_test/test_integration_token_locked_during_active_escrow.1.json index c00373d..8b1eb96 100644 --- a/contracts/invoice-escrow/test_snapshots/integration_test/test_integration_token_locked_during_active_escrow.1.json +++ b/contracts/invoice-escrow/test_snapshots/integration_test/test_integration_token_locked_during_active_escrow.1.json @@ -67,6 +67,15 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "i128": { + "hi": 0, + "lo": 500 + } + }, { "i128": { "hi": 0, @@ -104,6 +113,12 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "i128": { + "hi": 0, + "lo": 500 + } } ] } @@ -163,88 +178,6 @@ } ] ], - [ - [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON", - { - "function": { - "contract_fn": { - "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", - "function_name": "record_payment", - "args": [ - { - "symbol": "INVLOCK" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON" - }, - { - "i128": { - "hi": 0, - "lo": 500 - } - } - ] - } - }, - "sub_invocations": [ - { - "function": { - "contract_fn": { - "contract_address": "CDS3FDGQ4JA2V3F26Y4BMWWJEC5TT26RJBN7KIQKUMVO2MAOCMDTSZ7A", - "function_name": "transfer", - "args": [ - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" - }, - { - "i128": { - "hi": 0, - "lo": 500 - } - } - ] - } - }, - "sub_invocations": [] - } - ] - } - ] - ], - [], - [ - [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", - { - "function": { - "contract_fn": { - "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", - "function_name": "transfer", - "args": [ - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" - }, - { - "i128": { - "hi": 0, - "lo": 100 - } - } - ] - } - }, - "sub_invocations": [] - } - ] - ], - [], [] ], "ledger": { @@ -384,39 +317,6 @@ 6311999 ] ], - [ - { - "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", - "key": { - "ledger_key_nonce": { - "nonce": 6277191135259896685 - } - }, - "durability": "temporary" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", - "key": { - "ledger_key_nonce": { - "nonce": 6277191135259896685 - } - }, - "durability": "temporary", - "val": "void" - } - }, - "ext": "v0" - }, - 6311999 - ] - ], [ { "contract_data": { @@ -456,7 +356,23 @@ "map": [ { "key": { - "symbol": "amount" + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 20000 + } + }, + { + "key": { + "symbol": "face_value" }, "val": { "i128": { @@ -467,10 +383,13 @@ }, { "key": { - "symbol": "due_dt" + "symbol": "funded_amt" }, "val": { - "u64": 20000 + "i128": { + "hi": 0, + "lo": 500 + } } }, { @@ -501,6 +420,17 @@ "key": { "symbol": "paid_amt" }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "purchase_price" + }, "val": { "i128": { "hi": 0, @@ -521,7 +451,7 @@ "symbol": "status" }, "val": { - "u32": 2 + "u32": 1 } }, { @@ -541,6 +471,60 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INVLOCK" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INVLOCK" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "i128": { + "hi": 0, + "lo": 500 + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], [ { "contract_data": { @@ -641,55 +625,7 @@ "val": { "i128": { "hi": 0, - "lo": 400 - } - } - } - }, - "ext": "v0" - }, - 4095 - ] - ], - [ - { - "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" - } - ] - }, - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" - } - ] - }, - "durability": "persistent", - "val": { - "i128": { - "hi": 0, - "lo": 100 + "lo": 500 } } } @@ -785,7 +721,7 @@ "symbol": "transfer_locked" }, "val": { - "bool": false + "bool": true } } ] @@ -882,185 +818,6 @@ 6311999 ] ], - [ - { - "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON", - "key": { - "ledger_key_nonce": { - "nonce": 8370022561469687789 - } - }, - "durability": "temporary" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON", - "key": { - "ledger_key_nonce": { - "nonce": 8370022561469687789 - } - }, - "durability": "temporary", - "val": "void" - } - }, - "ext": "v0" - }, - 6311999 - ] - ], - [ - { - "contract_data": { - "contract": "CDS3FDGQ4JA2V3F26Y4BMWWJEC5TT26RJBN7KIQKUMVO2MAOCMDTSZ7A", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" - } - ] - }, - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CDS3FDGQ4JA2V3F26Y4BMWWJEC5TT26RJBN7KIQKUMVO2MAOCMDTSZ7A", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "amount" - }, - "val": { - "i128": { - "hi": 0, - "lo": 15 - } - } - }, - { - "key": { - "symbol": "authorized" - }, - "val": { - "bool": true - } - }, - { - "key": { - "symbol": "clawback" - }, - "val": { - "bool": false - } - } - ] - } - } - }, - "ext": "v0" - }, - 518400 - ] - ], - [ - { - "contract_data": { - "contract": "CDS3FDGQ4JA2V3F26Y4BMWWJEC5TT26RJBN7KIQKUMVO2MAOCMDTSZ7A", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" - } - ] - }, - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CDS3FDGQ4JA2V3F26Y4BMWWJEC5TT26RJBN7KIQKUMVO2MAOCMDTSZ7A", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "amount" - }, - "val": { - "i128": { - "hi": 0, - "lo": 500 - } - } - }, - { - "key": { - "symbol": "authorized" - }, - "val": { - "bool": true - } - }, - { - "key": { - "symbol": "clawback" - }, - "val": { - "bool": false - } - } - ] - } - } - }, - "ext": "v0" - }, - 518400 - ] - ], [ { "contract_data": { @@ -1105,7 +862,7 @@ "val": { "i128": { "hi": 0, - "lo": 485 + "lo": 0 } } }, @@ -1178,7 +935,7 @@ "val": { "i128": { "hi": 0, - "lo": 0 + "lo": 500 } } }, @@ -1251,7 +1008,7 @@ "val": { "i128": { "hi": 0, - "lo": 0 + "lo": 500 } } }, diff --git a/contracts/invoice-escrow/test_snapshots/test/test_cancel_escrow_already_funded_rejected.1.json b/contracts/invoice-escrow/test_snapshots/test/test_cancel_escrow_already_funded_rejected.1.json new file mode 100644 index 0000000..eb518f8 --- /dev/null +++ b/contracts/invoice-escrow/test_snapshots/test/test_cancel_escrow_already_funded_rejected.1.json @@ -0,0 +1,920 @@ +{ + "generators": { + "address": 7, + "nonce": 0 + }, + "auth": [ + [], + [], + [ + [ + "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV", + { + "function": { + "contract_fn": { + "contract_address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", + "function_name": "set_admin", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", + "function_name": "mint", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_escrow", + "args": [ + { + "symbol": "INV_CFUND" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, + { + "u64": 9999999 + }, + { + "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "fund_escrow", + "args": [ + { + "symbol": "INV_CFUND" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + } + ] + } + }, + "sub_invocations": [ + { + "function": { + "contract_fn": { + "contract_address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", + "function_name": "transfer", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + } + ] + } + }, + "sub_invocations": [] + } + ] + } + ] + ], + [] + ], + "ledger": { + "protocol_version": 22, + "sequence_number": 0, + "timestamp": 0, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + [ + { + "account": { + "account_id": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "account": { + "account_id": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV", + "balance": 0, + "seq_num": 0, + "num_sub_entries": 0, + "inflation_dest": null, + "flags": 0, + "home_domain": "", + "thresholds": "01010101", + "signers": [], + "ext": "v0" + } + }, + "ext": "v0" + }, + null + ] + ], + [ + { + "contract_data": { + "contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "symbol": "INV_CFUND" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "symbol": "INV_CFUND" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 9999999 + } + }, + { + "key": { + "symbol": "face_value" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, + { + "key": { + "symbol": "funded_amt" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, + { + "key": { + "symbol": "funder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + }, + { + "key": { + "symbol": "inv_id" + }, + "val": { + "symbol": "INV_CFUND" + } + }, + { + "key": { + "symbol": "inv_token" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "paid_amt" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "purchase_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, + { + "key": { + "symbol": "seller" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG" + } + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV_CFUND" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV_CFUND" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent", + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + } + }, + "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": [ + { + "key": { + "vec": [ + { + "symbol": "Config" + } + ] + }, + "val": { + "map": [ + { + "key": { + "symbol": "admin" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "fee_bps" + }, + "val": { + "u32": 0 + } + } + ] + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": [ + { + "key": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, + { + "key": { + "symbol": "authorized" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "clawback" + }, + "val": { + "bool": false + } + } + ] + } + } + }, + "ext": "v0" + }, + 518400 + ] + ], + [ + { + "contract_data": { + "contract": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "authorized" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "clawback" + }, + "val": { + "bool": false + } + } + ] + } + } + }, + "ext": "v0" + }, + 518400 + ] + ], + [ + { + "contract_data": { + "contract": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": "stellar_asset", + "storage": [ + { + "key": { + "symbol": "METADATA" + }, + "val": { + "map": [ + { + "key": { + "symbol": "decimal" + }, + "val": { + "u32": 7 + } + }, + { + "key": { + "symbol": "name" + }, + "val": { + "string": "aaa:GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV" + } + }, + { + "key": { + "symbol": "symbol" + }, + "val": { + "string": "aaa" + } + } + ] + } + }, + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "vec": [ + { + "symbol": "AssetInfo" + } + ] + }, + "val": { + "vec": [ + { + "symbol": "AlphaNum4" + }, + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "aaa\\0" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "bytes": "0000000000000000000000000000000000000000000000000000000000000005" + } + } + ] + } + ] + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 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/invoice-escrow/test_snapshots/test/test_cancel_escrow_emits_event.1.json b/contracts/invoice-escrow/test_snapshots/test/test_cancel_escrow_emits_event.1.json new file mode 100644 index 0000000..b8c2aaa --- /dev/null +++ b/contracts/invoice-escrow/test_snapshots/test/test_cancel_escrow_emits_event.1.json @@ -0,0 +1,645 @@ +{ + "generators": { + "address": 6, + "nonce": 0 + }, + "auth": [ + [], + [], + [ + [ + "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV", + { + "function": { + "contract_fn": { + "contract_address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", + "function_name": "set_admin", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_escrow", + "args": [ + { + "symbol": "INV_CANC" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, + { + "u64": 9999999 + }, + { + "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "cancel_escrow", + "args": [ + { + "symbol": "INV_CANC" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + } + }, + "sub_invocations": [] + } + ] + ] + ], + "ledger": { + "protocol_version": 22, + "sequence_number": 0, + "timestamp": 0, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + [ + { + "account": { + "account_id": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "account": { + "account_id": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV", + "balance": 0, + "seq_num": 0, + "num_sub_entries": 0, + "inflation_dest": null, + "flags": 0, + "home_domain": "", + "thresholds": "01010101", + "signers": [], + "ext": "v0" + } + }, + "ext": "v0" + }, + null + ] + ], + [ + { + "contract_data": { + "contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "symbol": "INV_CANC" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "symbol": "INV_CANC" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 9999999 + } + }, + { + "key": { + "symbol": "face_value" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, + { + "key": { + "symbol": "funded_amt" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "funder" + }, + "val": "void" + }, + { + "key": { + "symbol": "inv_id" + }, + "val": { + "symbol": "INV_CANC" + } + }, + { + "key": { + "symbol": "inv_token" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "paid_amt" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "purchase_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, + { + "key": { + "symbol": "seller" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG" + } + } + ] + } + } + }, + "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": [ + { + "key": { + "vec": [ + { + "symbol": "Config" + } + ] + }, + "val": { + "map": [ + { + "key": { + "symbol": "admin" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "fee_bps" + }, + "val": { + "u32": 300 + } + } + ] + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": "stellar_asset", + "storage": [ + { + "key": { + "symbol": "METADATA" + }, + "val": { + "map": [ + { + "key": { + "symbol": "decimal" + }, + "val": { + "u32": 7 + } + }, + { + "key": { + "symbol": "name" + }, + "val": { + "string": "aaa:GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV" + } + }, + { + "key": { + "symbol": "symbol" + }, + "val": { + "string": "aaa" + } + } + ] + } + }, + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "vec": [ + { + "symbol": "AssetInfo" + } + ] + }, + "val": { + "vec": [ + { + "symbol": "AlphaNum4" + }, + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "aaa\\0" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "bytes": "0000000000000000000000000000000000000000000000000000000000000005" + } + } + ] + } + ] + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 120960 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4095 + ] + ] + ] + }, + "events": [ + { + "event": { + "ext": "v0", + "contract_id": "0000000000000000000000000000000000000000000000000000000000000001", + "type_": "contract", + "body": { + "v0": { + "topics": [ + { + "symbol": "escrow_cancelled" + } + ], + "data": { + "vec": [ + { + "symbol": "INV_CANC" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + } + } + } + }, + "failed_call": false + } + ] +} \ No newline at end of file diff --git a/contracts/invoice-escrow/test_snapshots/test/test_cancel_escrow_happy_path.1.json b/contracts/invoice-escrow/test_snapshots/test/test_cancel_escrow_happy_path.1.json new file mode 100644 index 0000000..814a16a --- /dev/null +++ b/contracts/invoice-escrow/test_snapshots/test/test_cancel_escrow_happy_path.1.json @@ -0,0 +1,618 @@ +{ + "generators": { + "address": 6, + "nonce": 0 + }, + "auth": [ + [], + [], + [ + [ + "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV", + { + "function": { + "contract_fn": { + "contract_address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", + "function_name": "set_admin", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_escrow", + "args": [ + { + "symbol": "INV_CANC" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, + { + "u64": 9999999 + }, + { + "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "cancel_escrow", + "args": [ + { + "symbol": "INV_CANC" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [] + ], + "ledger": { + "protocol_version": 22, + "sequence_number": 0, + "timestamp": 0, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + [ + { + "account": { + "account_id": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "account": { + "account_id": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV", + "balance": 0, + "seq_num": 0, + "num_sub_entries": 0, + "inflation_dest": null, + "flags": 0, + "home_domain": "", + "thresholds": "01010101", + "signers": [], + "ext": "v0" + } + }, + "ext": "v0" + }, + null + ] + ], + [ + { + "contract_data": { + "contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "symbol": "INV_CANC" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "symbol": "INV_CANC" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 9999999 + } + }, + { + "key": { + "symbol": "face_value" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, + { + "key": { + "symbol": "funded_amt" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "funder" + }, + "val": "void" + }, + { + "key": { + "symbol": "inv_id" + }, + "val": { + "symbol": "INV_CANC" + } + }, + { + "key": { + "symbol": "inv_token" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "paid_amt" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "purchase_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, + { + "key": { + "symbol": "seller" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG" + } + } + ] + } + } + }, + "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": [ + { + "key": { + "vec": [ + { + "symbol": "Config" + } + ] + }, + "val": { + "map": [ + { + "key": { + "symbol": "admin" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "fee_bps" + }, + "val": { + "u32": 300 + } + } + ] + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": "stellar_asset", + "storage": [ + { + "key": { + "symbol": "METADATA" + }, + "val": { + "map": [ + { + "key": { + "symbol": "decimal" + }, + "val": { + "u32": 7 + } + }, + { + "key": { + "symbol": "name" + }, + "val": { + "string": "aaa:GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV" + } + }, + { + "key": { + "symbol": "symbol" + }, + "val": { + "string": "aaa" + } + } + ] + } + }, + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "vec": [ + { + "symbol": "AssetInfo" + } + ] + }, + "val": { + "vec": [ + { + "symbol": "AlphaNum4" + }, + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "aaa\\0" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "bytes": "0000000000000000000000000000000000000000000000000000000000000005" + } + } + ] + } + ] + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 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/invoice-escrow/test_snapshots/test/test_cancel_escrow_non_seller_rejected.1.json b/contracts/invoice-escrow/test_snapshots/test/test_cancel_escrow_non_seller_rejected.1.json new file mode 100644 index 0000000..9a4998d --- /dev/null +++ b/contracts/invoice-escrow/test_snapshots/test/test_cancel_escrow_non_seller_rejected.1.json @@ -0,0 +1,563 @@ +{ + "generators": { + "address": 7, + "nonce": 0 + }, + "auth": [ + [], + [], + [ + [ + "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV", + { + "function": { + "contract_fn": { + "contract_address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", + "function_name": "set_admin", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_escrow", + "args": [ + { + "symbol": "INV_CANC" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, + { + "u64": 9999999 + }, + { + "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [] + ], + "ledger": { + "protocol_version": 22, + "sequence_number": 0, + "timestamp": 0, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + [ + { + "account": { + "account_id": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "account": { + "account_id": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV", + "balance": 0, + "seq_num": 0, + "num_sub_entries": 0, + "inflation_dest": null, + "flags": 0, + "home_domain": "", + "thresholds": "01010101", + "signers": [], + "ext": "v0" + } + }, + "ext": "v0" + }, + null + ] + ], + [ + { + "contract_data": { + "contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "symbol": "INV_CANC" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "symbol": "INV_CANC" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 9999999 + } + }, + { + "key": { + "symbol": "face_value" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, + { + "key": { + "symbol": "funded_amt" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "funder" + }, + "val": "void" + }, + { + "key": { + "symbol": "inv_id" + }, + "val": { + "symbol": "INV_CANC" + } + }, + { + "key": { + "symbol": "inv_token" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "paid_amt" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "purchase_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, + { + "key": { + "symbol": "seller" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG" + } + } + ] + } + } + }, + "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": [ + { + "key": { + "vec": [ + { + "symbol": "Config" + } + ] + }, + "val": { + "map": [ + { + "key": { + "symbol": "admin" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "fee_bps" + }, + "val": { + "u32": 300 + } + } + ] + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": "stellar_asset", + "storage": [ + { + "key": { + "symbol": "METADATA" + }, + "val": { + "map": [ + { + "key": { + "symbol": "decimal" + }, + "val": { + "u32": 7 + } + }, + { + "key": { + "symbol": "name" + }, + "val": { + "string": "aaa:GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV" + } + }, + { + "key": { + "symbol": "symbol" + }, + "val": { + "string": "aaa" + } + } + ] + } + }, + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "vec": [ + { + "symbol": "AssetInfo" + } + ] + }, + "val": { + "vec": [ + { + "symbol": "AlphaNum4" + }, + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "aaa\\0" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "bytes": "0000000000000000000000000000000000000000000000000000000000000005" + } + } + ] + } + ] + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 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/invoice-escrow/test_snapshots/test/test_create_and_fund.1.json b/contracts/invoice-escrow/test_snapshots/test/test_create_and_fund.1.json index 21dcb82..387f257 100644 --- a/contracts/invoice-escrow/test_snapshots/test/test_create_and_fund.1.json +++ b/contracts/invoice-escrow/test_snapshots/test/test_create_and_fund.1.json @@ -66,6 +66,15 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, { "i128": { "hi": 0, @@ -102,6 +111,12 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } } ] } @@ -248,7 +263,23 @@ "map": [ { "key": { - "symbol": "amount" + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 1000000 + } + }, + { + "key": { + "symbol": "face_value" }, "val": { "i128": { @@ -259,10 +290,13 @@ }, { "key": { - "symbol": "due_dt" + "symbol": "funded_amt" }, "val": { - "u64": 1000000 + "i128": { + "hi": 0, + "lo": 1000 + } } }, { @@ -300,6 +334,17 @@ } } }, + { + "key": { + "symbol": "purchase_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, { "key": { "symbol": "seller" @@ -333,6 +378,60 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV123" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV123" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent", + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], [ { "contract_data": { diff --git a/contracts/invoice-escrow/test_snapshots/test/test_create_escrow_duplicate_invoice_id.1.json b/contracts/invoice-escrow/test_snapshots/test/test_create_escrow_duplicate_invoice_id.1.json index 13d4abc..1d4e01d 100644 --- a/contracts/invoice-escrow/test_snapshots/test/test_create_escrow_duplicate_invoice_id.1.json +++ b/contracts/invoice-escrow/test_snapshots/test/test_create_escrow_duplicate_invoice_id.1.json @@ -21,6 +21,15 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, { "i128": { "hi": 0, @@ -94,7 +103,23 @@ "map": [ { "key": { - "symbol": "amount" + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 1000000 + } + }, + { + "key": { + "symbol": "face_value" }, "val": { "i128": { @@ -105,10 +130,13 @@ }, { "key": { - "symbol": "due_dt" + "symbol": "funded_amt" }, "val": { - "u64": 1000000 + "i128": { + "hi": 0, + "lo": 0 + } } }, { @@ -144,6 +172,17 @@ } } }, + { + "key": { + "symbol": "purchase_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, { "key": { "symbol": "seller" diff --git a/contracts/invoice-escrow/test_snapshots/test/test_escrow_created_event.1.json b/contracts/invoice-escrow/test_snapshots/test/test_escrow_created_event.1.json index c3f0ae6..0085c8d 100644 --- a/contracts/invoice-escrow/test_snapshots/test/test_escrow_created_event.1.json +++ b/contracts/invoice-escrow/test_snapshots/test/test_escrow_created_event.1.json @@ -41,6 +41,15 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "i128": { + "hi": 0, + "lo": 5000 + } + }, { "i128": { "hi": 0, @@ -174,7 +183,23 @@ "map": [ { "key": { - "symbol": "amount" + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 2000000 + } + }, + { + "key": { + "symbol": "face_value" }, "val": { "i128": { @@ -185,10 +210,13 @@ }, { "key": { - "symbol": "due_dt" + "symbol": "funded_amt" }, "val": { - "u64": 2000000 + "i128": { + "hi": 0, + "lo": 0 + } } }, { @@ -224,6 +252,17 @@ } } }, + { + "key": { + "symbol": "purchase_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 5000 + } + } + }, { "key": { "symbol": "seller" @@ -540,6 +579,15 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "i128": { + "hi": 0, + "lo": 5000 + } + }, { "i128": { "hi": 0, diff --git a/contracts/invoice-escrow/test_snapshots/test/test_escrow_funded_event.1.json b/contracts/invoice-escrow/test_snapshots/test/test_escrow_funded_event.1.json index 56d2942..3820316 100644 --- a/contracts/invoice-escrow/test_snapshots/test/test_escrow_funded_event.1.json +++ b/contracts/invoice-escrow/test_snapshots/test/test_escrow_funded_event.1.json @@ -66,6 +66,15 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "i128": { + "hi": 0, + "lo": 3000 + } + }, { "i128": { "hi": 0, @@ -102,6 +111,12 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + }, + { + "i128": { + "hi": 0, + "lo": 3000 + } } ] } @@ -245,7 +260,23 @@ "map": [ { "key": { - "symbol": "amount" + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 1000000 + } + }, + { + "key": { + "symbol": "face_value" }, "val": { "i128": { @@ -256,10 +287,13 @@ }, { "key": { - "symbol": "due_dt" + "symbol": "funded_amt" }, "val": { - "u64": 1000000 + "i128": { + "hi": 0, + "lo": 3000 + } } }, { @@ -297,6 +331,17 @@ } } }, + { + "key": { + "symbol": "purchase_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 3000 + } + } + }, { "key": { "symbol": "seller" @@ -330,6 +375,60 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV999" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV999" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent", + "val": { + "i128": { + "hi": 0, + "lo": 3000 + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], [ { "contract_data": { @@ -869,6 +968,18 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" }, + { + "i128": { + "hi": 0, + "lo": 3000 + } + }, + { + "i128": { + "hi": 0, + "lo": 3000 + } + }, { "i128": { "hi": 0, diff --git a/contracts/invoice-escrow/test_snapshots/test/test_escrow_refunded_event.1.json b/contracts/invoice-escrow/test_snapshots/test/test_escrow_refunded_event.1.json index 0b06033..8757ed6 100644 --- a/contracts/invoice-escrow/test_snapshots/test/test_escrow_refunded_event.1.json +++ b/contracts/invoice-escrow/test_snapshots/test/test_escrow_refunded_event.1.json @@ -66,6 +66,15 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "i128": { + "hi": 0, + "lo": 2000 + } + }, { "i128": { "hi": 0, @@ -102,6 +111,12 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + }, + { + "i128": { + "hi": 0, + "lo": 2000 + } } ] } @@ -246,7 +261,23 @@ "map": [ { "key": { - "symbol": "amount" + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 1000 + } + }, + { + "key": { + "symbol": "face_value" }, "val": { "i128": { @@ -257,10 +288,13 @@ }, { "key": { - "symbol": "due_dt" + "symbol": "funded_amt" }, "val": { - "u64": 1000 + "i128": { + "hi": 0, + "lo": 2000 + } } }, { @@ -298,6 +332,17 @@ } } }, + { + "key": { + "symbol": "purchase_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 2000 + } + } + }, { "key": { "symbol": "seller" @@ -331,6 +376,60 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV222" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV222" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent", + "val": { + "i128": { + "hi": 0, + "lo": 2000 + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], [ { "contract_data": { @@ -867,9 +966,6 @@ { "symbol": "INV222" }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" - }, { "i128": { "hi": 0, diff --git a/contracts/invoice-escrow/test_snapshots/test/test_fee_calculation_max_fee.1.json b/contracts/invoice-escrow/test_snapshots/test/test_fee_calculation_max_fee.1.json index 9156bb5..38f631d 100644 --- a/contracts/invoice-escrow/test_snapshots/test/test_fee_calculation_max_fee.1.json +++ b/contracts/invoice-escrow/test_snapshots/test/test_fee_calculation_max_fee.1.json @@ -91,6 +91,15 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, { "i128": { "hi": 0, @@ -127,52 +136,6 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" - } - ] - } - }, - "sub_invocations": [ - { - "function": { - "contract_fn": { - "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "function_name": "transfer", - "args": [ - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" - }, - { - "i128": { - "hi": 0, - "lo": 1000 - } - } - ] - } - }, - "sub_invocations": [] - } - ] - } - ] - ], - [ - [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", - { - "function": { - "contract_fn": { - "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "record_payment", - "args": [ - { - "symbol": "INV001" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" }, { "i128": { @@ -191,7 +154,7 @@ "function_name": "transfer", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" @@ -211,7 +174,6 @@ } ] ], - [], [] ], "ledger": { @@ -324,7 +286,23 @@ "map": [ { "key": { - "symbol": "amount" + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 1000000 + } + }, + { + "key": { + "symbol": "face_value" }, "val": { "i128": { @@ -335,10 +313,13 @@ }, { "key": { - "symbol": "due_dt" + "symbol": "funded_amt" }, "val": { - "u64": 1000000 + "i128": { + "hi": 0, + "lo": 1000 + } } }, { @@ -369,6 +350,17 @@ "key": { "symbol": "paid_amt" }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "purchase_price" + }, "val": { "i128": { "hi": 0, @@ -389,7 +381,7 @@ "symbol": "status" }, "val": { - "u32": 2 + "u32": 1 } }, { @@ -409,6 +401,60 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV001" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV001" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent", + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], [ { "contract_data": { @@ -647,39 +693,6 @@ 6311999 ] ], - [ - { - "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", - "key": { - "ledger_key_nonce": { - "nonce": 4270020994084947596 - } - }, - "durability": "temporary" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", - "key": { - "ledger_key_nonce": { - "nonce": 4270020994084947596 - } - }, - "durability": "temporary", - "val": "void" - } - }, - "ext": "v0" - }, - 6311999 - ] - ], [ { "contract_data": { @@ -715,152 +728,6 @@ ] }, "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "amount" - }, - "val": { - "i128": { - "hi": 0, - "lo": 0 - } - } - }, - { - "key": { - "symbol": "authorized" - }, - "val": { - "bool": true - } - }, - { - "key": { - "symbol": "clawback" - }, - "val": { - "bool": false - } - } - ] - } - } - }, - "ext": "v0" - }, - 518400 - ] - ], - [ - { - "contract_data": { - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" - } - ] - }, - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "amount" - }, - "val": { - "i128": { - "hi": 0, - "lo": 1000 - } - } - }, - { - "key": { - "symbol": "authorized" - }, - "val": { - "bool": true - } - }, - { - "key": { - "symbol": "clawback" - }, - "val": { - "bool": false - } - } - ] - } - } - }, - "ext": "v0" - }, - 518400 - ] - ], - [ - { - "contract_data": { - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" - } - ] - }, - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" - } - ] - }, - "durability": "persistent", "val": { "map": [ { @@ -1016,7 +883,7 @@ "val": { "i128": { "hi": 0, - "lo": 0 + "lo": 1000 } } }, diff --git a/contracts/invoice-escrow/test_snapshots/test/test_fee_calculation_zero_fee.1.json b/contracts/invoice-escrow/test_snapshots/test/test_fee_calculation_zero_fee.1.json index ec46eaf..8f2298e 100644 --- a/contracts/invoice-escrow/test_snapshots/test/test_fee_calculation_zero_fee.1.json +++ b/contracts/invoice-escrow/test_snapshots/test/test_fee_calculation_zero_fee.1.json @@ -91,6 +91,15 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, { "i128": { "hi": 0, @@ -127,52 +136,6 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" - } - ] - } - }, - "sub_invocations": [ - { - "function": { - "contract_fn": { - "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "function_name": "transfer", - "args": [ - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" - }, - { - "i128": { - "hi": 0, - "lo": 1000 - } - } - ] - } - }, - "sub_invocations": [] - } - ] - } - ] - ], - [ - [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", - { - "function": { - "contract_fn": { - "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "record_payment", - "args": [ - { - "symbol": "INV001" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" }, { "i128": { @@ -191,7 +154,7 @@ "function_name": "transfer", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" @@ -211,7 +174,6 @@ } ] ], - [], [] ], "ledger": { @@ -324,7 +286,23 @@ "map": [ { "key": { - "symbol": "amount" + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 1000000 + } + }, + { + "key": { + "symbol": "face_value" }, "val": { "i128": { @@ -335,10 +313,13 @@ }, { "key": { - "symbol": "due_dt" + "symbol": "funded_amt" }, "val": { - "u64": 1000000 + "i128": { + "hi": 0, + "lo": 1000 + } } }, { @@ -369,6 +350,17 @@ "key": { "symbol": "paid_amt" }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "purchase_price" + }, "val": { "i128": { "hi": 0, @@ -389,7 +381,7 @@ "symbol": "status" }, "val": { - "u32": 2 + "u32": 1 } }, { @@ -409,6 +401,60 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV001" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV001" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent", + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], [ { "contract_data": { @@ -647,39 +693,6 @@ 6311999 ] ], - [ - { - "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", - "key": { - "ledger_key_nonce": { - "nonce": 4270020994084947596 - } - }, - "durability": "temporary" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", - "key": { - "ledger_key_nonce": { - "nonce": 4270020994084947596 - } - }, - "durability": "temporary", - "val": "void" - } - }, - "ext": "v0" - }, - 6311999 - ] - ], [ { "contract_data": { @@ -715,152 +728,6 @@ ] }, "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "amount" - }, - "val": { - "i128": { - "hi": 0, - "lo": 0 - } - } - }, - { - "key": { - "symbol": "authorized" - }, - "val": { - "bool": true - } - }, - { - "key": { - "symbol": "clawback" - }, - "val": { - "bool": false - } - } - ] - } - } - }, - "ext": "v0" - }, - 518400 - ] - ], - [ - { - "contract_data": { - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" - } - ] - }, - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "amount" - }, - "val": { - "i128": { - "hi": 0, - "lo": 0 - } - } - }, - { - "key": { - "symbol": "authorized" - }, - "val": { - "bool": true - } - }, - { - "key": { - "symbol": "clawback" - }, - "val": { - "bool": false - } - } - ] - } - } - }, - "ext": "v0" - }, - 518400 - ] - ], - [ - { - "contract_data": { - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" - } - ] - }, - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" - } - ] - }, - "durability": "persistent", "val": { "map": [ { @@ -943,7 +810,7 @@ "val": { "i128": { "hi": 0, - "lo": 1000 + "lo": 0 } } }, @@ -1016,7 +883,7 @@ "val": { "i128": { "hi": 0, - "lo": 0 + "lo": 1000 } } }, diff --git a/contracts/invoice-escrow/test_snapshots/test/test_fund_cancelled_escrow_rejected.1.json b/contracts/invoice-escrow/test_snapshots/test/test_fund_cancelled_escrow_rejected.1.json new file mode 100644 index 0000000..a074dae --- /dev/null +++ b/contracts/invoice-escrow/test_snapshots/test/test_fund_cancelled_escrow_rejected.1.json @@ -0,0 +1,618 @@ +{ + "generators": { + "address": 7, + "nonce": 0 + }, + "auth": [ + [], + [], + [ + [ + "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV", + { + "function": { + "contract_fn": { + "contract_address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", + "function_name": "set_admin", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_escrow", + "args": [ + { + "symbol": "INV_CANC" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, + { + "u64": 9999999 + }, + { + "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "cancel_escrow", + "args": [ + { + "symbol": "INV_CANC" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [] + ], + "ledger": { + "protocol_version": 22, + "sequence_number": 0, + "timestamp": 0, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + [ + { + "account": { + "account_id": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "account": { + "account_id": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV", + "balance": 0, + "seq_num": 0, + "num_sub_entries": 0, + "inflation_dest": null, + "flags": 0, + "home_domain": "", + "thresholds": "01010101", + "signers": [], + "ext": "v0" + } + }, + "ext": "v0" + }, + null + ] + ], + [ + { + "contract_data": { + "contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "symbol": "INV_CANC" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "symbol": "INV_CANC" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 9999999 + } + }, + { + "key": { + "symbol": "face_value" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, + { + "key": { + "symbol": "funded_amt" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "funder" + }, + "val": "void" + }, + { + "key": { + "symbol": "inv_id" + }, + "val": { + "symbol": "INV_CANC" + } + }, + { + "key": { + "symbol": "inv_token" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "paid_amt" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "purchase_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, + { + "key": { + "symbol": "seller" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG" + } + } + ] + } + } + }, + "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": [ + { + "key": { + "vec": [ + { + "symbol": "Config" + } + ] + }, + "val": { + "map": [ + { + "key": { + "symbol": "admin" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "fee_bps" + }, + "val": { + "u32": 300 + } + } + ] + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": "stellar_asset", + "storage": [ + { + "key": { + "symbol": "METADATA" + }, + "val": { + "map": [ + { + "key": { + "symbol": "decimal" + }, + "val": { + "u32": 7 + } + }, + { + "key": { + "symbol": "name" + }, + "val": { + "string": "aaa:GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL7NV" + } + }, + { + "key": { + "symbol": "symbol" + }, + "val": { + "string": "aaa" + } + } + ] + } + }, + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "vec": [ + { + "symbol": "AssetInfo" + } + ] + }, + "val": { + "vec": [ + { + "symbol": "AlphaNum4" + }, + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "aaa\\0" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "bytes": "0000000000000000000000000000000000000000000000000000000000000005" + } + } + ] + } + ] + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 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/invoice-escrow/test_snapshots/test/test_fund_escrow_already_funded.1.json b/contracts/invoice-escrow/test_snapshots/test/test_fund_escrow_already_funded.1.json index 92ad01f..4007025 100644 --- a/contracts/invoice-escrow/test_snapshots/test/test_fund_escrow_already_funded.1.json +++ b/contracts/invoice-escrow/test_snapshots/test/test_fund_escrow_already_funded.1.json @@ -91,6 +91,15 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, { "i128": { "hi": 0, @@ -127,6 +136,12 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } } ] } @@ -271,7 +286,23 @@ "map": [ { "key": { - "symbol": "amount" + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 1000000 + } + }, + { + "key": { + "symbol": "face_value" }, "val": { "i128": { @@ -282,10 +313,13 @@ }, { "key": { - "symbol": "due_dt" + "symbol": "funded_amt" }, "val": { - "u64": 1000000 + "i128": { + "hi": 0, + "lo": 1000 + } } }, { @@ -323,6 +357,17 @@ } } }, + { + "key": { + "symbol": "purchase_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, { "key": { "symbol": "seller" @@ -356,6 +401,60 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV001" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV001" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent", + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], [ { "contract_data": { diff --git a/contracts/invoice-escrow/test_snapshots/test/test_get_escrow_data.1.json b/contracts/invoice-escrow/test_snapshots/test/test_get_escrow_data.1.json index 13d4abc..1d4e01d 100644 --- a/contracts/invoice-escrow/test_snapshots/test/test_get_escrow_data.1.json +++ b/contracts/invoice-escrow/test_snapshots/test/test_get_escrow_data.1.json @@ -21,6 +21,15 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, { "i128": { "hi": 0, @@ -94,7 +103,23 @@ "map": [ { "key": { - "symbol": "amount" + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 1000000 + } + }, + { + "key": { + "symbol": "face_value" }, "val": { "i128": { @@ -105,10 +130,13 @@ }, { "key": { - "symbol": "due_dt" + "symbol": "funded_amt" }, "val": { - "u64": 1000000 + "i128": { + "hi": 0, + "lo": 0 + } } }, { @@ -144,6 +172,17 @@ } } }, + { + "key": { + "symbol": "purchase_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, { "key": { "symbol": "seller" diff --git a/contracts/invoice-escrow/test_snapshots/test/test_no_refund_event_on_invalid_state.1.json b/contracts/invoice-escrow/test_snapshots/test/test_no_refund_event_on_invalid_state.1.json index 3dcfba6..11ed5f3 100644 --- a/contracts/invoice-escrow/test_snapshots/test/test_no_refund_event_on_invalid_state.1.json +++ b/contracts/invoice-escrow/test_snapshots/test/test_no_refund_event_on_invalid_state.1.json @@ -41,6 +41,15 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, { "i128": { "hi": 0, @@ -175,7 +184,23 @@ "map": [ { "key": { - "symbol": "amount" + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 1000 + } + }, + { + "key": { + "symbol": "face_value" }, "val": { "i128": { @@ -186,10 +211,13 @@ }, { "key": { - "symbol": "due_dt" + "symbol": "funded_amt" }, "val": { - "u64": 1000 + "i128": { + "hi": 0, + "lo": 0 + } } }, { @@ -225,6 +253,17 @@ } } }, + { + "key": { + "symbol": "purchase_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, { "key": { "symbol": "seller" diff --git a/contracts/invoice-escrow/test_snapshots/test/test_no_settlement_event_on_invalid_state.1.json b/contracts/invoice-escrow/test_snapshots/test/test_no_settlement_event_on_invalid_state.1.json index 089cdf6..69c8610 100644 --- a/contracts/invoice-escrow/test_snapshots/test/test_no_settlement_event_on_invalid_state.1.json +++ b/contracts/invoice-escrow/test_snapshots/test/test_no_settlement_event_on_invalid_state.1.json @@ -66,6 +66,15 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, { "i128": { "hi": 0, @@ -200,7 +209,23 @@ "map": [ { "key": { - "symbol": "amount" + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 1000000 + } + }, + { + "key": { + "symbol": "face_value" }, "val": { "i128": { @@ -211,10 +236,13 @@ }, { "key": { - "symbol": "due_dt" + "symbol": "funded_amt" }, "val": { - "u64": 1000000 + "i128": { + "hi": 0, + "lo": 0 + } } }, { @@ -250,6 +278,17 @@ } } }, + { + "key": { + "symbol": "purchase_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, { "key": { "symbol": "seller" diff --git a/contracts/invoice-escrow/test_snapshots/test/test_partial_payment_lifecycle.1.json b/contracts/invoice-escrow/test_snapshots/test/test_partial_payment_lifecycle.1.json index 6015244..df5427e 100644 --- a/contracts/invoice-escrow/test_snapshots/test/test_partial_payment_lifecycle.1.json +++ b/contracts/invoice-escrow/test_snapshots/test/test_partial_payment_lifecycle.1.json @@ -91,6 +91,15 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, { "i128": { "hi": 0, @@ -127,115 +136,11 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" - } - ] - } - }, - "sub_invocations": [ - { - "function": { - "contract_fn": { - "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "function_name": "transfer", - "args": [ - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" - }, - { - "i128": { - "hi": 0, - "lo": 1000 - } - } - ] - } - }, - "sub_invocations": [] - } - ] - } - ] - ], - [ - [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", - { - "function": { - "contract_fn": { - "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "record_payment", - "args": [ - { - "symbol": "INV_PARTIAL" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" - }, - { - "i128": { - "hi": 0, - "lo": 400 - } - } - ] - } - }, - "sub_invocations": [ - { - "function": { - "contract_fn": { - "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "function_name": "transfer", - "args": [ - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" - }, - { - "i128": { - "hi": 0, - "lo": 400 - } - } - ] - } - }, - "sub_invocations": [] - } - ] - } - ] - ], - [], - [], - [], - [], - [], - [], - [ - [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", - { - "function": { - "contract_fn": { - "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "record_payment", - "args": [ - { - "symbol": "INV_PARTIAL" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" }, { "i128": { "hi": 0, - "lo": 600 + "lo": 1000 } } ] @@ -249,7 +154,7 @@ "function_name": "transfer", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" @@ -257,7 +162,7 @@ { "i128": { "hi": 0, - "lo": 600 + "lo": 1000 } } ] @@ -269,11 +174,6 @@ } ] ], - [], - [], - [], - [], - [], [] ], "ledger": { @@ -386,7 +286,23 @@ "map": [ { "key": { - "symbol": "amount" + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 1000000 + } + }, + { + "key": { + "symbol": "face_value" }, "val": { "i128": { @@ -397,10 +313,13 @@ }, { "key": { - "symbol": "due_dt" + "symbol": "funded_amt" }, "val": { - "u64": 1000000 + "i128": { + "hi": 0, + "lo": 1000 + } } }, { @@ -431,6 +350,17 @@ "key": { "symbol": "paid_amt" }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "purchase_price" + }, "val": { "i128": { "hi": 0, @@ -451,7 +381,7 @@ "symbol": "status" }, "val": { - "u32": 2 + "u32": 1 } }, { @@ -471,6 +401,60 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV_PARTIAL" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV_PARTIAL" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent", + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], [ { "contract_data": { @@ -709,72 +693,6 @@ 6311999 ] ], - [ - { - "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", - "key": { - "ledger_key_nonce": { - "nonce": 4270020994084947596 - } - }, - "durability": "temporary" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", - "key": { - "ledger_key_nonce": { - "nonce": 4270020994084947596 - } - }, - "durability": "temporary", - "val": "void" - } - }, - "ext": "v0" - }, - 6311999 - ] - ], - [ - { - "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", - "key": { - "ledger_key_nonce": { - "nonce": 8370022561469687789 - } - }, - "durability": "temporary" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", - "key": { - "ledger_key_nonce": { - "nonce": 8370022561469687789 - } - }, - "durability": "temporary", - "val": "void" - } - }, - "ext": "v0" - }, - 6311999 - ] - ], [ { "contract_data": { @@ -810,152 +728,6 @@ ] }, "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "amount" - }, - "val": { - "i128": { - "hi": 0, - "lo": 0 - } - } - }, - { - "key": { - "symbol": "authorized" - }, - "val": { - "bool": true - } - }, - { - "key": { - "symbol": "clawback" - }, - "val": { - "bool": false - } - } - ] - } - } - }, - "ext": "v0" - }, - 518400 - ] - ], - [ - { - "contract_data": { - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" - } - ] - }, - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "amount" - }, - "val": { - "i128": { - "hi": 0, - "lo": 30 - } - } - }, - { - "key": { - "symbol": "authorized" - }, - "val": { - "bool": true - } - }, - { - "key": { - "symbol": "clawback" - }, - "val": { - "bool": false - } - } - ] - } - } - }, - "ext": "v0" - }, - 518400 - ] - ], - [ - { - "contract_data": { - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" - } - ] - }, - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" - } - ] - }, - "durability": "persistent", "val": { "map": [ { @@ -1038,7 +810,7 @@ "val": { "i128": { "hi": 0, - "lo": 970 + "lo": 0 } } }, @@ -1111,7 +883,7 @@ "val": { "i128": { "hi": 0, - "lo": 0 + "lo": 1000 } } }, diff --git a/contracts/invoice-escrow/test_snapshots/test/test_payment_settled_event.1.json b/contracts/invoice-escrow/test_snapshots/test/test_payment_settled_event.1.json index bffc007..e6aff38 100644 --- a/contracts/invoice-escrow/test_snapshots/test/test_payment_settled_event.1.json +++ b/contracts/invoice-escrow/test_snapshots/test/test_payment_settled_event.1.json @@ -91,6 +91,15 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, { "i128": { "hi": 0, @@ -127,52 +136,6 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" - } - ] - } - }, - "sub_invocations": [ - { - "function": { - "contract_fn": { - "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "function_name": "transfer", - "args": [ - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" - }, - { - "i128": { - "hi": 0, - "lo": 1000 - } - } - ] - } - }, - "sub_invocations": [] - } - ] - } - ] - ], - [ - [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", - { - "function": { - "contract_fn": { - "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "record_payment", - "args": [ - { - "symbol": "INV111" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" }, { "i128": { @@ -191,7 +154,7 @@ "function_name": "transfer", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" @@ -210,7 +173,8 @@ ] } ] - ] + ], + [] ], "ledger": { "protocol_version": 22, @@ -322,7 +286,23 @@ "map": [ { "key": { - "symbol": "amount" + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 1000000 + } + }, + { + "key": { + "symbol": "face_value" }, "val": { "i128": { @@ -333,10 +313,13 @@ }, { "key": { - "symbol": "due_dt" + "symbol": "funded_amt" }, "val": { - "u64": 1000000 + "i128": { + "hi": 0, + "lo": 1000 + } } }, { @@ -367,6 +350,17 @@ "key": { "symbol": "paid_amt" }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "purchase_price" + }, "val": { "i128": { "hi": 0, @@ -387,7 +381,7 @@ "symbol": "status" }, "val": { - "u32": 2 + "u32": 1 } }, { @@ -407,6 +401,60 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV111" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV111" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent", + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], [ { "contract_data": { @@ -645,39 +693,6 @@ 6311999 ] ], - [ - { - "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", - "key": { - "ledger_key_nonce": { - "nonce": 4270020994084947596 - } - }, - "durability": "temporary" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", - "key": { - "ledger_key_nonce": { - "nonce": 4270020994084947596 - } - }, - "durability": "temporary", - "val": "void" - } - }, - "ext": "v0" - }, - 6311999 - ] - ], [ { "contract_data": { @@ -713,152 +728,6 @@ ] }, "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "amount" - }, - "val": { - "i128": { - "hi": 0, - "lo": 0 - } - } - }, - { - "key": { - "symbol": "authorized" - }, - "val": { - "bool": true - } - }, - { - "key": { - "symbol": "clawback" - }, - "val": { - "bool": false - } - } - ] - } - } - }, - "ext": "v0" - }, - 518400 - ] - ], - [ - { - "contract_data": { - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" - } - ] - }, - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "amount" - }, - "val": { - "i128": { - "hi": 0, - "lo": 30 - } - } - }, - { - "key": { - "symbol": "authorized" - }, - "val": { - "bool": true - } - }, - { - "key": { - "symbol": "clawback" - }, - "val": { - "bool": false - } - } - ] - } - } - }, - "ext": "v0" - }, - 518400 - ] - ], - [ - { - "contract_data": { - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" - } - ] - }, - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" - } - ] - }, - "durability": "persistent", "val": { "map": [ { @@ -941,7 +810,7 @@ "val": { "i128": { "hi": 0, - "lo": 970 + "lo": 0 } } }, @@ -1014,7 +883,7 @@ "val": { "i128": { "hi": 0, - "lo": 0 + "lo": 1000 } } }, @@ -1178,176 +1047,5 @@ ] ] }, - "events": [ - { - "event": { - "ext": "v0", - "contract_id": "8011bbf4cdf04e5bc6ac886935b99aa4b2c0cabde133f9d7fb3e656799f0a896", - "type_": "contract", - "body": { - "v0": { - "topics": [ - { - "symbol": "transfer" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" - }, - { - "string": "aaa:GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJXFF" - } - ], - "data": { - "i128": { - "hi": 0, - "lo": 1000 - } - } - } - } - }, - "failed_call": false - }, - { - "event": { - "ext": "v0", - "contract_id": "8011bbf4cdf04e5bc6ac886935b99aa4b2c0cabde133f9d7fb3e656799f0a896", - "type_": "contract", - "body": { - "v0": { - "topics": [ - { - "symbol": "transfer" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" - }, - { - "string": "aaa:GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJXFF" - } - ], - "data": { - "i128": { - "hi": 0, - "lo": 970 - } - } - } - } - }, - "failed_call": false - }, - { - "event": { - "ext": "v0", - "contract_id": "8011bbf4cdf04e5bc6ac886935b99aa4b2c0cabde133f9d7fb3e656799f0a896", - "type_": "contract", - "body": { - "v0": { - "topics": [ - { - "symbol": "transfer" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" - }, - { - "string": "aaa:GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJXFF" - } - ], - "data": { - "i128": { - "hi": 0, - "lo": 30 - } - } - } - } - }, - "failed_call": false - }, - { - "event": { - "ext": "v0", - "contract_id": "8011bbf4cdf04e5bc6ac886935b99aa4b2c0cabde133f9d7fb3e656799f0a896", - "type_": "contract", - "body": { - "v0": { - "topics": [ - { - "symbol": "transfer" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" - }, - { - "string": "aaa:GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJXFF" - } - ], - "data": { - "i128": { - "hi": 0, - "lo": 1000 - } - } - } - } - }, - "failed_call": false - }, - { - "event": { - "ext": "v0", - "contract_id": "0000000000000000000000000000000000000000000000000000000000000001", - "type_": "contract", - "body": { - "v0": { - "topics": [ - { - "symbol": "payment_settled" - } - ], - "data": { - "vec": [ - { - "symbol": "INV111" - }, - { - "i128": { - "hi": 0, - "lo": 1000 - } - }, - { - "i128": { - "hi": 0, - "lo": 30 - } - }, - { - "i128": { - "hi": 0, - "lo": 970 - } - } - ] - } - } - } - }, - "failed_call": false - } - ] + "events": [] } \ No newline at end of file diff --git a/contracts/invoice-escrow/test_snapshots/test/test_record_payment.1.json b/contracts/invoice-escrow/test_snapshots/test/test_record_payment.1.json index fb4dfd1..809f65d 100644 --- a/contracts/invoice-escrow/test_snapshots/test/test_record_payment.1.json +++ b/contracts/invoice-escrow/test_snapshots/test/test_record_payment.1.json @@ -91,6 +91,15 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, { "i128": { "hi": 0, @@ -127,54 +136,6 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" - } - ] - } - }, - "sub_invocations": [ - { - "function": { - "contract_fn": { - "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "function_name": "transfer", - "args": [ - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" - }, - { - "i128": { - "hi": 0, - "lo": 1000 - } - } - ] - } - }, - "sub_invocations": [] - } - ] - } - ] - ], - [], - [], - [ - [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", - { - "function": { - "contract_fn": { - "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "record_payment", - "args": [ - { - "symbol": "INV456" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" }, { "i128": { @@ -193,7 +154,7 @@ "function_name": "transfer", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" @@ -215,9 +176,6 @@ ], [], [], - [], - [], - [], [] ], "ledger": { @@ -330,7 +288,23 @@ "map": [ { "key": { - "symbol": "amount" + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 1000000 + } + }, + { + "key": { + "symbol": "face_value" }, "val": { "i128": { @@ -341,10 +315,13 @@ }, { "key": { - "symbol": "due_dt" + "symbol": "funded_amt" }, "val": { - "u64": 1000000 + "i128": { + "hi": 0, + "lo": 1000 + } } }, { @@ -375,6 +352,17 @@ "key": { "symbol": "paid_amt" }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "purchase_price" + }, "val": { "i128": { "hi": 0, @@ -395,7 +383,7 @@ "symbol": "status" }, "val": { - "u32": 2 + "u32": 1 } }, { @@ -415,6 +403,60 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV456" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV456" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent", + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], [ { "contract_data": { @@ -653,39 +695,6 @@ 6311999 ] ], - [ - { - "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", - "key": { - "ledger_key_nonce": { - "nonce": 4270020994084947596 - } - }, - "durability": "temporary" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", - "key": { - "ledger_key_nonce": { - "nonce": 4270020994084947596 - } - }, - "durability": "temporary", - "val": "void" - } - }, - "ext": "v0" - }, - 6311999 - ] - ], [ { "contract_data": { @@ -721,152 +730,6 @@ ] }, "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "amount" - }, - "val": { - "i128": { - "hi": 0, - "lo": 0 - } - } - }, - { - "key": { - "symbol": "authorized" - }, - "val": { - "bool": true - } - }, - { - "key": { - "symbol": "clawback" - }, - "val": { - "bool": false - } - } - ] - } - } - }, - "ext": "v0" - }, - 518400 - ] - ], - [ - { - "contract_data": { - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" - } - ] - }, - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "amount" - }, - "val": { - "i128": { - "hi": 0, - "lo": 30 - } - } - }, - { - "key": { - "symbol": "authorized" - }, - "val": { - "bool": true - } - }, - { - "key": { - "symbol": "clawback" - }, - "val": { - "bool": false - } - } - ] - } - } - }, - "ext": "v0" - }, - 518400 - ] - ], - [ - { - "contract_data": { - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" - } - ] - }, - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" - } - ] - }, - "durability": "persistent", "val": { "map": [ { @@ -949,7 +812,7 @@ "val": { "i128": { "hi": 0, - "lo": 970 + "lo": 0 } } }, @@ -1022,7 +885,7 @@ "val": { "i128": { "hi": 0, - "lo": 0 + "lo": 1000 } } }, diff --git a/contracts/invoice-escrow/test_snapshots/test/test_record_payment_already_settled.1.json b/contracts/invoice-escrow/test_snapshots/test/test_record_payment_already_settled.1.json index 97f8688..61dcb20 100644 --- a/contracts/invoice-escrow/test_snapshots/test/test_record_payment_already_settled.1.json +++ b/contracts/invoice-escrow/test_snapshots/test/test_record_payment_already_settled.1.json @@ -91,6 +91,15 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, { "i128": { "hi": 0, @@ -127,52 +136,6 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" - } - ] - } - }, - "sub_invocations": [ - { - "function": { - "contract_fn": { - "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "function_name": "transfer", - "args": [ - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" - }, - { - "i128": { - "hi": 0, - "lo": 1000 - } - } - ] - } - }, - "sub_invocations": [] - } - ] - } - ] - ], - [ - [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", - { - "function": { - "contract_fn": { - "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "record_payment", - "args": [ - { - "symbol": "INV001" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" }, { "i128": { @@ -191,7 +154,7 @@ "function_name": "transfer", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" @@ -323,7 +286,23 @@ "map": [ { "key": { - "symbol": "amount" + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 1000000 + } + }, + { + "key": { + "symbol": "face_value" }, "val": { "i128": { @@ -334,10 +313,13 @@ }, { "key": { - "symbol": "due_dt" + "symbol": "funded_amt" }, "val": { - "u64": 1000000 + "i128": { + "hi": 0, + "lo": 1000 + } } }, { @@ -368,6 +350,17 @@ "key": { "symbol": "paid_amt" }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "purchase_price" + }, "val": { "i128": { "hi": 0, @@ -388,7 +381,7 @@ "symbol": "status" }, "val": { - "u32": 2 + "u32": 1 } }, { @@ -408,6 +401,60 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV001" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV001" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent", + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], [ { "contract_data": { @@ -646,39 +693,6 @@ 6311999 ] ], - [ - { - "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", - "key": { - "ledger_key_nonce": { - "nonce": 4270020994084947596 - } - }, - "durability": "temporary" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", - "key": { - "ledger_key_nonce": { - "nonce": 4270020994084947596 - } - }, - "durability": "temporary", - "val": "void" - } - }, - "ext": "v0" - }, - 6311999 - ] - ], [ { "contract_data": { @@ -714,152 +728,6 @@ ] }, "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "amount" - }, - "val": { - "i128": { - "hi": 0, - "lo": 0 - } - } - }, - { - "key": { - "symbol": "authorized" - }, - "val": { - "bool": true - } - }, - { - "key": { - "symbol": "clawback" - }, - "val": { - "bool": false - } - } - ] - } - } - }, - "ext": "v0" - }, - 518400 - ] - ], - [ - { - "contract_data": { - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" - } - ] - }, - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "amount" - }, - "val": { - "i128": { - "hi": 0, - "lo": 30 - } - } - }, - { - "key": { - "symbol": "authorized" - }, - "val": { - "bool": true - } - }, - { - "key": { - "symbol": "clawback" - }, - "val": { - "bool": false - } - } - ] - } - } - }, - "ext": "v0" - }, - 518400 - ] - ], - [ - { - "contract_data": { - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" - } - ] - }, - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" - } - ] - }, - "durability": "persistent", "val": { "map": [ { @@ -942,7 +810,7 @@ "val": { "i128": { "hi": 0, - "lo": 970 + "lo": 0 } } }, @@ -1015,7 +883,7 @@ "val": { "i128": { "hi": 0, - "lo": 1000 + "lo": 2000 } } }, diff --git a/contracts/invoice-escrow/test_snapshots/test/test_record_payment_amount_exceeds_escrow.1.json b/contracts/invoice-escrow/test_snapshots/test/test_record_payment_amount_exceeds_escrow.1.json index d2ebd33..61dcb20 100644 --- a/contracts/invoice-escrow/test_snapshots/test/test_record_payment_amount_exceeds_escrow.1.json +++ b/contracts/invoice-escrow/test_snapshots/test/test_record_payment_amount_exceeds_escrow.1.json @@ -91,6 +91,15 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, { "i128": { "hi": 0, @@ -127,6 +136,12 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } } ] } @@ -271,7 +286,23 @@ "map": [ { "key": { - "symbol": "amount" + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 1000000 + } + }, + { + "key": { + "symbol": "face_value" }, "val": { "i128": { @@ -282,10 +313,13 @@ }, { "key": { - "symbol": "due_dt" + "symbol": "funded_amt" }, "val": { - "u64": 1000000 + "i128": { + "hi": 0, + "lo": 1000 + } } }, { @@ -323,6 +357,17 @@ } } }, + { + "key": { + "symbol": "purchase_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, { "key": { "symbol": "seller" @@ -356,6 +401,60 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV001" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV001" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent", + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], [ { "contract_data": { diff --git a/contracts/invoice-escrow/test_snapshots/test/test_record_payment_not_funded.1.json b/contracts/invoice-escrow/test_snapshots/test/test_record_payment_not_funded.1.json index 25a4c27..73e3e77 100644 --- a/contracts/invoice-escrow/test_snapshots/test/test_record_payment_not_funded.1.json +++ b/contracts/invoice-escrow/test_snapshots/test/test_record_payment_not_funded.1.json @@ -21,6 +21,15 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, { "i128": { "hi": 0, @@ -94,7 +103,23 @@ "map": [ { "key": { - "symbol": "amount" + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 1000000 + } + }, + { + "key": { + "symbol": "face_value" }, "val": { "i128": { @@ -105,10 +130,13 @@ }, { "key": { - "symbol": "due_dt" + "symbol": "funded_amt" }, "val": { - "u64": 1000000 + "i128": { + "hi": 0, + "lo": 0 + } } }, { @@ -144,6 +172,17 @@ } } }, + { + "key": { + "symbol": "purchase_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, { "key": { "symbol": "seller" diff --git a/contracts/invoice-escrow/test_snapshots/test/test_record_payment_removes_initial_fund_even_on_full_payment.1.json b/contracts/invoice-escrow/test_snapshots/test/test_record_payment_removes_initial_fund_even_on_full_payment.1.json index 27b8a4a..112aa88 100644 --- a/contracts/invoice-escrow/test_snapshots/test/test_record_payment_removes_initial_fund_even_on_full_payment.1.json +++ b/contracts/invoice-escrow/test_snapshots/test/test_record_payment_removes_initial_fund_even_on_full_payment.1.json @@ -91,6 +91,15 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "i128": { + "hi": 0, + "lo": 5000 + } + }, { "i128": { "hi": 0, @@ -127,53 +136,6 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" - } - ] - } - }, - "sub_invocations": [ - { - "function": { - "contract_fn": { - "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "function_name": "transfer", - "args": [ - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" - }, - { - "i128": { - "hi": 0, - "lo": 5000 - } - } - ] - } - }, - "sub_invocations": [] - } - ] - } - ] - ], - [], - [ - [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", - { - "function": { - "contract_fn": { - "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "record_payment", - "args": [ - { - "symbol": "INV_FULL" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" }, { "i128": { @@ -192,7 +154,7 @@ "function_name": "transfer", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" @@ -213,7 +175,6 @@ ] ], [], - [], [] ], "ledger": { @@ -326,7 +287,23 @@ "map": [ { "key": { - "symbol": "amount" + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 100 + } + }, + { + "key": { + "symbol": "face_value" }, "val": { "i128": { @@ -337,10 +314,13 @@ }, { "key": { - "symbol": "due_dt" + "symbol": "funded_amt" }, "val": { - "u64": 100 + "i128": { + "hi": 0, + "lo": 5000 + } } }, { @@ -371,6 +351,17 @@ "key": { "symbol": "paid_amt" }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "purchase_price" + }, "val": { "i128": { "hi": 0, @@ -391,7 +382,7 @@ "symbol": "status" }, "val": { - "u32": 2 + "u32": 1 } }, { @@ -411,6 +402,60 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV_FULL" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV_FULL" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent", + "val": { + "i128": { + "hi": 0, + "lo": 5000 + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], [ { "contract_data": { @@ -649,39 +694,6 @@ 6311999 ] ], - [ - { - "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", - "key": { - "ledger_key_nonce": { - "nonce": 4270020994084947596 - } - }, - "durability": "temporary" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", - "key": { - "ledger_key_nonce": { - "nonce": 4270020994084947596 - } - }, - "durability": "temporary", - "val": "void" - } - }, - "ext": "v0" - }, - 6311999 - ] - ], [ { "contract_data": { @@ -717,152 +729,6 @@ ] }, "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "amount" - }, - "val": { - "i128": { - "hi": 0, - "lo": 0 - } - } - }, - { - "key": { - "symbol": "authorized" - }, - "val": { - "bool": true - } - }, - { - "key": { - "symbol": "clawback" - }, - "val": { - "bool": false - } - } - ] - } - } - }, - "ext": "v0" - }, - 518400 - ] - ], - [ - { - "contract_data": { - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" - } - ] - }, - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "amount" - }, - "val": { - "i128": { - "hi": 0, - "lo": 0 - } - } - }, - { - "key": { - "symbol": "authorized" - }, - "val": { - "bool": true - } - }, - { - "key": { - "symbol": "clawback" - }, - "val": { - "bool": false - } - } - ] - } - } - }, - "ext": "v0" - }, - 518400 - ] - ], - [ - { - "contract_data": { - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" - } - ] - }, - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" - } - ] - }, - "durability": "persistent", "val": { "map": [ { @@ -945,7 +811,7 @@ "val": { "i128": { "hi": 0, - "lo": 5000 + "lo": 0 } } }, @@ -1018,7 +884,7 @@ "val": { "i128": { "hi": 0, - "lo": 0 + "lo": 5000 } } }, diff --git a/contracts/invoice-escrow/test_snapshots/test/test_refund_after_due_date.1.json b/contracts/invoice-escrow/test_snapshots/test/test_refund_after_due_date.1.json index c65ca88..142c6f5 100644 --- a/contracts/invoice-escrow/test_snapshots/test/test_refund_after_due_date.1.json +++ b/contracts/invoice-escrow/test_snapshots/test/test_refund_after_due_date.1.json @@ -66,6 +66,15 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, { "i128": { "hi": 0, @@ -102,6 +111,12 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } } ] } @@ -248,7 +263,23 @@ "map": [ { "key": { - "symbol": "amount" + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 10000 + } + }, + { + "key": { + "symbol": "face_value" }, "val": { "i128": { @@ -259,10 +290,13 @@ }, { "key": { - "symbol": "due_dt" + "symbol": "funded_amt" }, "val": { - "u64": 10000 + "i128": { + "hi": 0, + "lo": 1000 + } } }, { @@ -300,6 +334,17 @@ } } }, + { + "key": { + "symbol": "purchase_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, { "key": { "symbol": "seller" @@ -333,6 +378,60 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV001" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV001" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent", + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], [ { "contract_data": { diff --git a/contracts/invoice-escrow/test_snapshots/test/test_refund_after_partial_payment.1.json b/contracts/invoice-escrow/test_snapshots/test/test_refund_after_partial_payment.1.json index f234e00..4938a23 100644 --- a/contracts/invoice-escrow/test_snapshots/test/test_refund_after_partial_payment.1.json +++ b/contracts/invoice-escrow/test_snapshots/test/test_refund_after_partial_payment.1.json @@ -91,6 +91,15 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, { "i128": { "hi": 0, @@ -127,57 +136,11 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" - } - ] - } - }, - "sub_invocations": [ - { - "function": { - "contract_fn": { - "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "function_name": "transfer", - "args": [ - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" - }, - { - "i128": { - "hi": 0, - "lo": 1000 - } - } - ] - } - }, - "sub_invocations": [] - } - ] - } - ] - ], - [ - [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", - { - "function": { - "contract_fn": { - "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "record_payment", - "args": [ - { - "symbol": "INV_REF_PART" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" }, { "i128": { "hi": 0, - "lo": 300 + "lo": 1000 } } ] @@ -191,7 +154,7 @@ "function_name": "transfer", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" @@ -199,7 +162,7 @@ { "i128": { "hi": 0, - "lo": 300 + "lo": 1000 } } ] @@ -211,17 +174,12 @@ } ] ], - [], - [], - [], - [], - [], [] ], "ledger": { "protocol_version": 22, "sequence_number": 0, - "timestamp": 1001, + "timestamp": 0, "network_id": "0000000000000000000000000000000000000000000000000000000000000000", "base_reserve": 0, "min_persistent_entry_ttl": 4096, @@ -328,7 +286,23 @@ "map": [ { "key": { - "symbol": "amount" + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 1000 + } + }, + { + "key": { + "symbol": "face_value" }, "val": { "i128": { @@ -339,10 +313,13 @@ }, { "key": { - "symbol": "due_dt" + "symbol": "funded_amt" }, "val": { - "u64": 1000 + "i128": { + "hi": 0, + "lo": 1000 + } } }, { @@ -376,7 +353,18 @@ "val": { "i128": { "hi": 0, - "lo": 300 + "lo": 0 + } + } + }, + { + "key": { + "symbol": "purchase_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 } } }, @@ -393,7 +381,7 @@ "symbol": "status" }, "val": { - "u32": 3 + "u32": 1 } }, { @@ -413,6 +401,60 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV_REF_PART" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV_REF_PART" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent", + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], [ { "contract_data": { @@ -651,39 +693,6 @@ 6311999 ] ], - [ - { - "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", - "key": { - "ledger_key_nonce": { - "nonce": 4270020994084947596 - } - }, - "durability": "temporary" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", - "key": { - "ledger_key_nonce": { - "nonce": 4270020994084947596 - } - }, - "durability": "temporary", - "val": "void" - } - }, - "ext": "v0" - }, - 6311999 - ] - ], [ { "contract_data": { @@ -728,153 +737,7 @@ "val": { "i128": { "hi": 0, - "lo": 0 - } - } - }, - { - "key": { - "symbol": "authorized" - }, - "val": { - "bool": true - } - }, - { - "key": { - "symbol": "clawback" - }, - "val": { - "bool": false - } - } - ] - } - } - }, - "ext": "v0" - }, - 518400 - ] - ], - [ - { - "contract_data": { - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" - } - ] - }, - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "amount" - }, - "val": { - "i128": { - "hi": 0, - "lo": 9 - } - } - }, - { - "key": { - "symbol": "authorized" - }, - "val": { - "bool": true - } - }, - { - "key": { - "symbol": "clawback" - }, - "val": { - "bool": false - } - } - ] - } - } - }, - "ext": "v0" - }, - 518400 - ] - ], - [ - { - "contract_data": { - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" - } - ] - }, - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "amount" - }, - "val": { - "i128": { - "hi": 0, - "lo": 300 + "lo": 1000 } } }, @@ -947,7 +810,7 @@ "val": { "i128": { "hi": 0, - "lo": 991 + "lo": 0 } } }, @@ -1020,7 +883,7 @@ "val": { "i128": { "hi": 0, - "lo": 700 + "lo": 1000 } } }, diff --git a/contracts/invoice-escrow/test_snapshots/test/test_refund_already_settled.1.json b/contracts/invoice-escrow/test_snapshots/test/test_refund_already_settled.1.json index ae90046..d60d7f3 100644 --- a/contracts/invoice-escrow/test_snapshots/test/test_refund_already_settled.1.json +++ b/contracts/invoice-escrow/test_snapshots/test/test_refund_already_settled.1.json @@ -91,6 +91,15 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, { "i128": { "hi": 0, @@ -127,52 +136,6 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" - } - ] - } - }, - "sub_invocations": [ - { - "function": { - "contract_fn": { - "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "function_name": "transfer", - "args": [ - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" - }, - { - "i128": { - "hi": 0, - "lo": 1000 - } - } - ] - } - }, - "sub_invocations": [] - } - ] - } - ] - ], - [ - [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", - { - "function": { - "contract_fn": { - "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "record_payment", - "args": [ - { - "symbol": "INV001" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" }, { "i128": { @@ -191,7 +154,7 @@ "function_name": "transfer", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" @@ -216,7 +179,7 @@ "ledger": { "protocol_version": 22, "sequence_number": 0, - "timestamp": 10001, + "timestamp": 0, "network_id": "0000000000000000000000000000000000000000000000000000000000000000", "base_reserve": 0, "min_persistent_entry_ttl": 4096, @@ -323,7 +286,23 @@ "map": [ { "key": { - "symbol": "amount" + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 10000 + } + }, + { + "key": { + "symbol": "face_value" }, "val": { "i128": { @@ -334,10 +313,13 @@ }, { "key": { - "symbol": "due_dt" + "symbol": "funded_amt" }, "val": { - "u64": 10000 + "i128": { + "hi": 0, + "lo": 1000 + } } }, { @@ -368,6 +350,17 @@ "key": { "symbol": "paid_amt" }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "purchase_price" + }, "val": { "i128": { "hi": 0, @@ -388,7 +381,7 @@ "symbol": "status" }, "val": { - "u32": 2 + "u32": 1 } }, { @@ -408,6 +401,60 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV001" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV001" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent", + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], [ { "contract_data": { @@ -646,39 +693,6 @@ 6311999 ] ], - [ - { - "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", - "key": { - "ledger_key_nonce": { - "nonce": 4270020994084947596 - } - }, - "durability": "temporary" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", - "key": { - "ledger_key_nonce": { - "nonce": 4270020994084947596 - } - }, - "durability": "temporary", - "val": "void" - } - }, - "ext": "v0" - }, - 6311999 - ] - ], [ { "contract_data": { @@ -714,152 +728,6 @@ ] }, "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "amount" - }, - "val": { - "i128": { - "hi": 0, - "lo": 0 - } - } - }, - { - "key": { - "symbol": "authorized" - }, - "val": { - "bool": true - } - }, - { - "key": { - "symbol": "clawback" - }, - "val": { - "bool": false - } - } - ] - } - } - }, - "ext": "v0" - }, - 518400 - ] - ], - [ - { - "contract_data": { - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" - } - ] - }, - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "amount" - }, - "val": { - "i128": { - "hi": 0, - "lo": 30 - } - } - }, - { - "key": { - "symbol": "authorized" - }, - "val": { - "bool": true - } - }, - { - "key": { - "symbol": "clawback" - }, - "val": { - "bool": false - } - } - ] - } - } - }, - "ext": "v0" - }, - 518400 - ] - ], - [ - { - "contract_data": { - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" - } - ] - }, - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", - "key": { - "vec": [ - { - "symbol": "Balance" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" - } - ] - }, - "durability": "persistent", "val": { "map": [ { @@ -942,7 +810,7 @@ "val": { "i128": { "hi": 0, - "lo": 970 + "lo": 0 } } }, @@ -1015,7 +883,7 @@ "val": { "i128": { "hi": 0, - "lo": 0 + "lo": 1000 } } }, diff --git a/contracts/invoice-escrow/test_snapshots/test/test_refund_at_due_date.1.json b/contracts/invoice-escrow/test_snapshots/test/test_refund_at_due_date.1.json index 954c99e..dba2b37 100644 --- a/contracts/invoice-escrow/test_snapshots/test/test_refund_at_due_date.1.json +++ b/contracts/invoice-escrow/test_snapshots/test/test_refund_at_due_date.1.json @@ -66,6 +66,15 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, { "i128": { "hi": 0, @@ -102,6 +111,12 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } } ] } @@ -248,7 +263,23 @@ "map": [ { "key": { - "symbol": "amount" + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 10000 + } + }, + { + "key": { + "symbol": "face_value" }, "val": { "i128": { @@ -259,10 +290,13 @@ }, { "key": { - "symbol": "due_dt" + "symbol": "funded_amt" }, "val": { - "u64": 10000 + "i128": { + "hi": 0, + "lo": 1000 + } } }, { @@ -300,6 +334,17 @@ } } }, + { + "key": { + "symbol": "purchase_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, { "key": { "symbol": "seller" @@ -333,6 +378,60 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV001" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV001" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent", + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], [ { "contract_data": { diff --git a/contracts/invoice-escrow/test_snapshots/test/test_refund_before_due_date.1.json b/contracts/invoice-escrow/test_snapshots/test/test_refund_before_due_date.1.json index 2bfb83f..bac1a49 100644 --- a/contracts/invoice-escrow/test_snapshots/test/test_refund_before_due_date.1.json +++ b/contracts/invoice-escrow/test_snapshots/test/test_refund_before_due_date.1.json @@ -66,6 +66,15 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, { "i128": { "hi": 0, @@ -102,6 +111,12 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } } ] } @@ -246,7 +261,23 @@ "map": [ { "key": { - "symbol": "amount" + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 10000 + } + }, + { + "key": { + "symbol": "face_value" }, "val": { "i128": { @@ -257,10 +288,13 @@ }, { "key": { - "symbol": "due_dt" + "symbol": "funded_amt" }, "val": { - "u64": 10000 + "i128": { + "hi": 0, + "lo": 1000 + } } }, { @@ -298,6 +332,17 @@ } } }, + { + "key": { + "symbol": "purchase_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, { "key": { "symbol": "seller" @@ -331,6 +376,60 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV001" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV001" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent", + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], [ { "contract_data": { diff --git a/contracts/invoice-escrow/test_snapshots/test/test_refund_not_funded.1.json b/contracts/invoice-escrow/test_snapshots/test/test_refund_not_funded.1.json index c5d9986..123f0c8 100644 --- a/contracts/invoice-escrow/test_snapshots/test/test_refund_not_funded.1.json +++ b/contracts/invoice-escrow/test_snapshots/test/test_refund_not_funded.1.json @@ -21,6 +21,15 @@ { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, { "i128": { "hi": 0, @@ -94,7 +103,23 @@ "map": [ { "key": { - "symbol": "amount" + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 1000 + } + }, + { + "key": { + "symbol": "face_value" }, "val": { "i128": { @@ -105,10 +130,13 @@ }, { "key": { - "symbol": "due_dt" + "symbol": "funded_amt" }, "val": { - "u64": 1000 + "i128": { + "hi": 0, + "lo": 0 + } } }, { @@ -144,6 +172,17 @@ } } }, + { + "key": { + "symbol": "purchase_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, { "key": { "symbol": "seller" diff --git a/contracts/invoice-token/src/lib.rs b/contracts/invoice-token/src/lib.rs index d60e300..2f136bf 100644 --- a/contracts/invoice-token/src/lib.rs +++ b/contracts/invoice-token/src/lib.rs @@ -181,7 +181,10 @@ impl InvoiceToken { return Err(Error::InsufficientBalance); } storage::set_balance(&env, &from, balance - amount); - storage::set_total_supply(&env, storage::get_total_supply(&env) - amount); + let new_supply = storage::get_total_supply(&env) + .checked_sub(amount) + .ok_or(Error::Overflow)?; + storage::set_total_supply(&env, new_supply); events::burn_event(&env, &from, amount); Ok(()) } @@ -213,7 +216,10 @@ impl InvoiceToken { allow.expiration_ledger, ); storage::set_balance(&env, &from, balance - amount); - storage::set_total_supply(&env, storage::get_total_supply(&env) - amount); + let new_supply = storage::get_total_supply(&env) + .checked_sub(amount) + .ok_or(Error::Overflow)?; + storage::set_total_supply(&env, new_supply); events::burn_event(&env, &from, amount); Ok(()) } diff --git a/contracts/payment-distributor/src/integration_test.rs b/contracts/payment-distributor/src/integration_test.rs index eb2e3d6..bdc6f3b 100644 --- a/contracts/payment-distributor/src/integration_test.rs +++ b/contracts/payment-distributor/src/integration_test.rs @@ -68,8 +68,8 @@ fn test_integration_settle_then_distribute() { // Escrow lifecycle let due_date = 99_999u64; - escrow.create_escrow(&invoice_id, &seller, &amount, &due_date, &pt_id.address(), &inv_token_id); - escrow.fund_escrow(&invoice_id, &buyer); + escrow.create_escrow(&invoice_id, &seller, &seller, &amount, &amount, &due_date, &pt_id.address(), &inv_token_id); + escrow.fund_escrow(&invoice_id, &buyer, &amount); assert_eq!(pt_client.balance(&escrow_id), amount); @@ -128,8 +128,8 @@ fn test_integration_distribute_while_escrow_funded_not_settled() { let amount = 500i128; pt_asset.mint(&buyer, &amount); - escrow.create_escrow(&invoice_id, &seller, &amount, &99_999u64, &pt_id.address(), &inv_token_id); - escrow.fund_escrow(&invoice_id, &buyer); + escrow.create_escrow(&invoice_id, &seller, &seller, &amount, &amount, &99_999u64, &pt_id.address(), &inv_token_id); + escrow.fund_escrow(&invoice_id, &buyer, &amount); // Escrow is Funded (not Settled). The distributor has no funds yet. // Attempting to distribute 0 tokens should fail with InvalidAmount. @@ -231,8 +231,8 @@ fn test_integration_refund_does_not_affect_distributor() { pt_asset.mint(&buyer, &amount); env.ledger().set_timestamp(5_000); - escrow.create_escrow(&invoice_id, &seller, &amount, &due_date, &pt_id.address(), &inv_token_id); - escrow.fund_escrow(&invoice_id, &buyer); + escrow.create_escrow(&invoice_id, &seller, &seller, &amount, &amount, &due_date, &pt_id.address(), &inv_token_id); + escrow.fund_escrow(&invoice_id, &buyer, &amount); // Advance past due date and refund env.ledger().set_timestamp(10_001);