diff --git a/contracts/invoice-escrow/src/events.rs b/contracts/invoice-escrow/src/events.rs index a1ca452..31d51b4 100644 --- a/contracts/invoice-escrow/src/events.rs +++ b/contracts/invoice-escrow/src/events.rs @@ -13,6 +13,7 @@ pub fn escrow_created( due_dt: u64, token: &Address, inv_token: &Address, + commitment: &soroban_sdk::BytesN<32>, ) { env.events().publish( (Symbol::new(env, "escrow_created"),), @@ -25,6 +26,7 @@ pub fn escrow_created( due_dt, token, inv_token, + commitment, ), ); } diff --git a/contracts/invoice-escrow/src/integration_test.rs b/contracts/invoice-escrow/src/integration_test.rs index d5301ba..d152795 100644 --- a/contracts/invoice-escrow/src/integration_test.rs +++ b/contracts/invoice-escrow/src/integration_test.rs @@ -3,9 +3,18 @@ use invoice_token::{InvoiceToken, InvoiceTokenClient}; use soroban_sdk::token::{Client as TokenClient, StellarAssetClient as AssetClient}; use soroban_sdk::{ testutils::{Address as _, Ledger as _}, - Address, Env, String as SorobanString, Symbol, + Address, Bytes, BytesN, Env, String as SorobanString, Symbol, }; +/// Helper function to create a test commitment hash (SHA-256 format) +fn test_commitment(env: &Env, data: &str) -> BytesN<32> { + let mut array = [0u8; 32]; + let bytes = data.as_bytes(); + let len = bytes.len().min(32); + array[..len].copy_from_slice(&bytes[..len]); + BytesN::from_array(env, &array) +} + #[test] fn test_integration_escrow_lifecycle_happy_path() { let env = Env::default(); @@ -62,6 +71,7 @@ fn test_integration_escrow_lifecycle_happy_path() { &due_date, &payment_token_id.address(), &inv_token_id, + &test_commitment(&env, "test_invoice_data"), ); // 8. Fund Escrow (Buyer buys the invoice) @@ -149,6 +159,7 @@ fn test_integration_refund_lifecycle() { &due_date, &payment_token_id.address(), &inv_token_id, + &test_commitment(&env, "test_invoice_data"), ); escrow_client.fund_escrow(&invoice_id, &buyer, &amount); @@ -219,6 +230,7 @@ fn test_integration_token_locked_during_active_escrow() { &due_date, &payment_token_id.address(), &inv_token_id, + &test_commitment(&env, "test_invoice_data"), ); // Token is locked even before funding (initialized locked) diff --git a/contracts/invoice-escrow/src/lib.rs b/contracts/invoice-escrow/src/lib.rs index 374ef1f..0004b0a 100644 --- a/contracts/invoice-escrow/src/lib.rs +++ b/contracts/invoice-escrow/src/lib.rs @@ -43,6 +43,7 @@ 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) + /// commitment: immutable on-chain anchor (SHA-256 hash of off-chain invoice data) pub fn create_escrow( env: Env, invoice_id: Symbol, @@ -53,6 +54,7 @@ impl InvoiceEscrow { due_date: u64, payment_token: Address, invoice_token: Address, + commitment: soroban_sdk::BytesN<32>, ) -> Result<(), Error> { seller.require_auth(); if face_value <= 0 || purchase_price <= 0 { @@ -75,6 +77,7 @@ impl InvoiceEscrow { inv_token: invoice_token.clone(), paid_amt: 0, status: EscrowStatus::Created, + commitment: commitment.clone(), }; storage::set_escrow(&env, invoice_id.clone(), &data); events::escrow_created( @@ -87,6 +90,7 @@ impl InvoiceEscrow { due_date, &payment_token, &invoice_token, + &commitment, ); Ok(()) } diff --git a/contracts/invoice-escrow/src/test.rs b/contracts/invoice-escrow/src/test.rs index 6dcece0..51901d2 100644 --- a/contracts/invoice-escrow/src/test.rs +++ b/contracts/invoice-escrow/src/test.rs @@ -4,7 +4,16 @@ use super::*; use soroban_sdk::testutils::{Address as _, Events, Ledger}; use soroban_sdk::token::Client as TokenClient; use soroban_sdk::token::StellarAssetClient as AssetClient; -use soroban_sdk::{contract, contractimpl, Address, Env, IntoVal, Symbol, TryIntoVal}; +use soroban_sdk::{contract, contractimpl, Address, BytesN, Env, IntoVal, Symbol, TryIntoVal}; + +/// Helper function to create a test commitment hash (SHA-256 format) +fn test_commitment(env: &Env, data: &str) -> BytesN<32> { + let mut array = [0u8; 32]; + let bytes = data.as_bytes(); + let len = bytes.len().min(32); + array[..len].copy_from_slice(&bytes[..len]); + BytesN::from_array(env, &array) +} #[contract] struct MockInvoiceToken; @@ -61,6 +70,7 @@ fn test_create_and_fund() { &1000000, &payment_token.address, &inv_token_id, + &test_commitment(&env, "test_invoice_data"), ); // Fund escrow @@ -117,6 +127,7 @@ fn test_record_payment() { &1000000, &payment_token.address, &inv_token_id, + &test_commitment(&env, "test_invoice_data"), ); escrow_client.fund_escrow(&invoice_id, &buyer, &amount); @@ -174,6 +185,7 @@ fn test_escrow_created_event() { &due_date, &payment_token_id.address(), &inv_token_id, + &test_commitment(&env, "test_invoice_data"), ); // Assert escrow_created event was emitted @@ -188,8 +200,17 @@ fn test_escrow_created_event() { (Symbol::new(&env, "escrow_created"),).into_val(&env) ); - let event_data: (Symbol, Address, Address, i128, i128, u64, Address, Address) = - data.try_into_val(&env).unwrap(); + let event_data: ( + Symbol, + Address, + Address, + i128, + i128, + u64, + Address, + Address, + BytesN<32>, + ) = data.try_into_val(&env).unwrap(); assert_eq!(event_data.0, invoice_id); assert_eq!(event_data.1, seller); assert_eq!(event_data.2, seller); @@ -198,6 +219,9 @@ fn test_escrow_created_event() { assert_eq!(event_data.5, due_date); assert_eq!(event_data.6, payment_token_id.address()); assert_eq!(event_data.7, inv_token_id); + assert_eq!(event_data.8, test_commitment(&env, "test_invoice_data")); + assert_eq!(event_data.6, payment_token_id.address()); + assert_eq!(event_data.7, inv_token_id); } #[test] @@ -232,6 +256,7 @@ fn test_escrow_funded_event() { &1000000, &payment_token_id.address(), &inv_token_id, + &test_commitment(&env, "test_invoice_data"), ); escrow_client.fund_escrow(&invoice_id, &buyer, &amount); @@ -286,6 +311,7 @@ fn test_payment_settled_event() { &1000000, &payment_token_id.address(), &inv_token_id, + &test_commitment(&env, "test_invoice_data"), ); escrow_client.fund_escrow(&invoice_id, &buyer, &amount); @@ -342,6 +368,7 @@ fn test_escrow_refunded_event() { &due_date, &payment_token_id.address(), &inv_token_id, + &test_commitment(&env, "test_invoice_data"), ); escrow_client.fund_escrow(&invoice_id, &buyer, &amount); @@ -399,6 +426,7 @@ fn test_no_settlement_event_on_invalid_state() { &1000000, &payment_token_id.address(), &inv_token_id, + &test_commitment(&env, "test_invoice_data"), ); // Try to record payment without funding first (should fail) @@ -452,6 +480,7 @@ fn test_no_refund_event_on_invalid_state() { &due_date, &payment_token_id.address(), &inv_token_id, + &test_commitment(&env, "test_invoice_data"), ); // Set ledger timestamp past due date @@ -523,6 +552,7 @@ fn test_create_escrow_requires_seller_auth() { &1000000, &payment_token, &inv_token, + &test_commitment(&env, "test_invoice_data"), ); assert!(result.is_err()); } @@ -584,6 +614,7 @@ fn test_create_escrow_zero_amount() { &1000000, &payment_token, &inv_token, + &test_commitment(&env, "test_invoice_data"), ); assert_eq!(result, Err(Ok(Error::InvalidAmount))); } @@ -613,6 +644,7 @@ fn test_create_escrow_negative_amount() { &1000000, &payment_token, &inv_token, + &test_commitment(&env, "test_invoice_data"), ); assert_eq!(result, Err(Ok(Error::InvalidAmount))); } @@ -643,6 +675,7 @@ fn test_create_escrow_duplicate_invoice_id() { &1000000, &payment_token, &inv_token, + &test_commitment(&env, "test_invoice_data"), ); // Second create with same invoice_id should fail @@ -655,6 +688,7 @@ fn test_create_escrow_duplicate_invoice_id() { &2000000, &payment_token, &inv_token, + &test_commitment(&env, "test_invoice_data"), ); assert_eq!(result, Err(Ok(Error::EscrowExists))); } @@ -747,6 +781,7 @@ fn test_fund_escrow_already_funded() { &1000000, &payment_token_id.address(), &inv_token_id, + &test_commitment(&env, "test_invoice_data"), ); // First funding should succeed @@ -783,6 +818,7 @@ fn test_record_payment_not_funded() { &1000000, &payment_token, &inv_token, + &test_commitment(&env, "test_invoice_data"), ); // Try to record payment without funding first @@ -823,6 +859,7 @@ fn test_record_payment_already_settled() { &1000000, &payment_token_id.address(), &inv_token_id, + &test_commitment(&env, "test_invoice_data"), ); escrow_client.fund_escrow(&invoice_id, &buyer, &1000); @@ -866,6 +903,7 @@ fn test_record_payment_amount_exceeds_escrow() { &1000000, &payment_token_id.address(), &inv_token_id, + &test_commitment(&env, "test_invoice_data"), ); escrow_client.fund_escrow(&invoice_id, &buyer, &1000); @@ -900,6 +938,7 @@ fn test_refund_not_funded() { &1000, &payment_token, &inv_token, + &test_commitment(&env, "test_invoice_data"), ); // Set time past due date @@ -944,6 +983,7 @@ fn test_refund_before_due_date() { &due_date, &payment_token_id.address(), &inv_token_id, + &test_commitment(&env, "test_invoice_data"), ); escrow_client.fund_escrow(&invoice_id, &buyer, &1000); @@ -989,6 +1029,7 @@ fn test_refund_at_due_date() { &due_date, &payment_token_id.address(), &inv_token_id, + &test_commitment(&env, "test_invoice_data"), ); escrow_client.fund_escrow(&invoice_id, &buyer, &1000); @@ -1040,6 +1081,7 @@ fn test_refund_after_due_date() { &due_date, &payment_token_id.address(), &inv_token_id, + &test_commitment(&env, "test_invoice_data"), ); escrow_client.fund_escrow(&invoice_id, &buyer, &1000); @@ -1092,6 +1134,7 @@ fn test_refund_already_settled() { &due_date, &payment_token_id.address(), &inv_token_id, + &test_commitment(&env, "test_invoice_data"), ); escrow_client.fund_escrow(&invoice_id, &buyer, &1000); @@ -1142,6 +1185,7 @@ fn test_fee_calculation_zero_fee() { &1000000, &payment_token_id.address(), &inv_token_id, + &test_commitment(&env, "test_invoice_data"), ); escrow_client.fund_escrow(&invoice_id, &buyer, &1000); @@ -1187,6 +1231,7 @@ fn test_fee_calculation_max_fee() { &1000000, &payment_token_id.address(), &inv_token_id, + &test_commitment(&env, "test_invoice_data"), ); escrow_client.fund_escrow(&invoice_id, &buyer, &1000); @@ -1301,6 +1346,7 @@ fn test_get_escrow_data() { &due_date, &payment_token, &inv_token, + &test_commitment(&env, "test_invoice_data"), ); // Get escrow data and verify @@ -1340,6 +1386,7 @@ fn test_create_escrow_not_initialized() { &1000000, &payment_token, &inv_token, + &test_commitment(&env, "test_invoice_data"), ); assert_eq!(result, Err(Ok(Error::NotInit))); } @@ -1392,6 +1439,7 @@ fn test_partial_payment_lifecycle() { &1000000, &payment_token.address, &inv_token_id, + &test_commitment(&env, "test_invoice_data"), ); escrow_client.fund_escrow(&invoice_id, &buyer, &amount); @@ -1474,6 +1522,7 @@ fn test_refund_after_partial_payment() { &due_date, &payment_token.address, &inv_token_id, + &test_commitment(&env, "test_invoice_data"), ); escrow_client.fund_escrow(&invoice_id, &buyer, &amount); @@ -1539,6 +1588,7 @@ fn test_record_payment_removes_initial_fund_even_on_full_payment() { &100, &pt_id.address(), &inv_token_id, + &test_commitment(&env, "test_invoice_data"), ); escrow_client.fund_escrow(&invoice_id, &buyer, &amount); @@ -1577,6 +1627,7 @@ fn setup_escrow_created(env: &Env) -> (Address, InvoiceEscrowClient<'_>, Address &9_999_999u64, &pt_id.address(), &inv_token_id, + &test_commitment(&env, "test_invoice_data"), ); let _ = (pt_asset,); @@ -1654,6 +1705,7 @@ fn test_cancel_escrow_already_funded_rejected() { &9_999_999u64, &pt_id.address(), &inv_token_id, + &test_commitment(&env, "test_invoice_data"), ); client.fund_escrow(&invoice_id, &buyer, &1000); @@ -1676,3 +1728,251 @@ fn test_fund_cancelled_escrow_rejected() { let res = client.try_fund_escrow(&invoice_id, &buyer, &1000); assert_eq!(res, Err(Ok(Error::EscrowCancelled))); } + +// ========== Commitment Hash Tests ========== + +#[test] +fn test_create_escrow_with_commitment() { + let env = Env::default(); + env.mock_all_auths(); + + let escrow_id = env.register(InvoiceEscrow, ()); + let escrow_client = InvoiceEscrowClient::new(&env, &escrow_id); + + let admin = Address::generate(&env); + let seller = Address::generate(&env); + let payment_token = Address::generate(&env); + let inv_token = Address::generate(&env); + let invoice_id = Symbol::new(&env, "INV_CMT"); + + escrow_client.initialize(&admin, &300); + + let commitment = test_commitment(&env, "invoice_pdf_hash_12345"); + + escrow_client.create_escrow( + &invoice_id, + &seller, + &seller, + &1000, + &1000, + &1000000, + &payment_token, + &inv_token, + &commitment, + ); + + // Verify escrow was created with commitment + let escrow_data = escrow_client.get_escrow(&invoice_id); + assert_eq!(escrow_data.commitment, commitment); +} + +#[test] +fn test_commitment_immutable_after_creation() { + let env = Env::default(); + env.mock_all_auths(); + + let escrow_id = env.register(InvoiceEscrow, ()); + let escrow_client = InvoiceEscrowClient::new(&env, &escrow_id); + + let admin = Address::generate(&env); + let seller = Address::generate(&env); + let payment_token = Address::generate(&env); + let inv_token = Address::generate(&env); + let invoice_id = Symbol::new(&env, "INV_IMM"); + + escrow_client.initialize(&admin, &300); + + let original_commitment = test_commitment(&env, "original_invoice_data"); + + escrow_client.create_escrow( + &invoice_id, + &seller, + &seller, + &1000, + &1000, + &1000000, + &payment_token, + &inv_token, + &original_commitment, + ); + + // Verify commitment is stored + let escrow_data = escrow_client.get_escrow(&invoice_id); + assert_eq!(escrow_data.commitment, original_commitment); + + // Commitment should remain unchanged throughout the lifecycle + // (There's no update_commitment function, so this test verifies immutability by design) +} + +#[test] +fn test_commitment_included_in_created_event() { + let env = Env::default(); + env.mock_all_auths(); + + let escrow_id = env.register_contract(None, InvoiceEscrow); + let escrow_client = InvoiceEscrowClient::new(&env, &escrow_id); + + let admin = Address::generate(&env); + let seller = Address::generate(&env); + let payment_token = Address::generate(&env); + let inv_token = Address::generate(&env); + let invoice_id = Symbol::new(&env, "INV_EVT"); + + escrow_client.initialize(&admin, &300); + + let commitment = test_commitment(&env, "event_test_invoice"); + + escrow_client.create_escrow( + &invoice_id, + &seller, + &seller, + &1000, + &1000, + &1000000, + &payment_token, + &inv_token, + &commitment, + ); + + // Assert escrow_created event was emitted with commitment + let events = env.events().all(); + let event = events.last().unwrap(); + + let (_contract_addr, topics, data) = event; + + assert_eq!( + topics, + (Symbol::new(&env, "escrow_created"),).into_val(&env) + ); + + // Event data should include commitment as the 9th field + let event_data: ( + Symbol, + Address, + Address, + i128, + i128, + u64, + Address, + Address, + BytesN<32>, + ) = data.try_into_val(&env).unwrap(); + assert_eq!(event_data.0, invoice_id); + assert_eq!(event_data.1, seller); + assert_eq!(event_data.8, commitment); // Commitment is the 9th field +} + +#[test] +fn test_different_commitments_for_different_invoices() { + let env = Env::default(); + env.mock_all_auths(); + + let escrow_id = env.register(InvoiceEscrow, ()); + let escrow_client = InvoiceEscrowClient::new(&env, &escrow_id); + + let admin = Address::generate(&env); + let seller = Address::generate(&env); + let payment_token = Address::generate(&env); + let inv_token = Address::generate(&env); + + escrow_client.initialize(&admin, &300); + + // Create first invoice with commitment A + let invoice_id_1 = Symbol::new(&env, "INV_A"); + let commitment_a = test_commitment(&env, "invoice_a_data"); + escrow_client.create_escrow( + &invoice_id_1, + &seller, + &seller, + &1000, + &1000, + &1000000, + &payment_token, + &inv_token, + &commitment_a, + ); + + // Create second invoice with commitment B + let invoice_id_2 = Symbol::new(&env, "INV_B"); + let commitment_b = test_commitment(&env, "invoice_b_data"); + escrow_client.create_escrow( + &invoice_id_2, + &seller, + &seller, + &2000, + &2000, + &2000000, + &payment_token, + &inv_token, + &commitment_b, + ); + + // Verify each invoice has its own commitment + let escrow_a = escrow_client.get_escrow(&invoice_id_1); + let escrow_b = escrow_client.get_escrow(&invoice_id_2); + + assert_eq!(escrow_a.commitment, commitment_a); + assert_eq!(escrow_b.commitment, commitment_b); + assert_ne!(escrow_a.commitment, escrow_b.commitment); +} + +#[test] +fn test_commitment_persists_through_lifecycle() { + let env = Env::default(); + env.mock_all_auths(); + + let escrow_id = env.register_contract(None, InvoiceEscrow); + let escrow_client = InvoiceEscrowClient::new(&env, &escrow_id); + + let admin = Address::generate(&env); + let payment_token_admin = Address::generate(&env); + let payment_token_id = env.register_stellar_asset_contract_v2(payment_token_admin.clone()); + let payment_token = TokenClient::new(&env, &payment_token_id.address()); + let payment_token_asset = AssetClient::new(&env, &payment_token_id.address()); + let inv_token_id = env.register_contract(None, MockInvoiceToken); + + escrow_client.initialize(&admin, &300); + + let seller = Address::generate(&env); + let buyer = Address::generate(&env); + let payer = Address::generate(&env); + let invoice_id = Symbol::new(&env, "INV_LIF"); + let amount = 1000; + + payment_token_asset.mint(&buyer, &amount); + payment_token_asset.mint(&payer, &amount); + + let commitment = test_commitment(&env, "lifecycle_test_invoice"); + + // Create escrow with commitment + escrow_client.create_escrow( + &invoice_id, + &seller, + &payer, + &amount, + &amount, + &1000000, + &payment_token.address, + &inv_token_id, + &commitment, + ); + + // Verify commitment after creation + let escrow_data = escrow_client.get_escrow(&invoice_id); + assert_eq!(escrow_data.commitment, commitment); + + // Fund escrow + escrow_client.fund_escrow(&invoice_id, &buyer, &amount); + + // Verify commitment persists after funding + let escrow_data = escrow_client.get_escrow(&invoice_id); + assert_eq!(escrow_data.commitment, commitment); + + // Record payment + escrow_client.record_payment(&invoice_id, &payer, &amount); + + // Verify commitment persists after settlement + let escrow_data = escrow_client.get_escrow(&invoice_id); + assert_eq!(escrow_data.commitment, commitment); + assert_eq!(escrow_data.status, EscrowStatus::Settled); +} diff --git a/contracts/invoice-escrow/src/types.rs b/contracts/invoice-escrow/src/types.rs index 3887723..c7caa3a 100644 --- a/contracts/invoice-escrow/src/types.rs +++ b/contracts/invoice-escrow/src/types.rs @@ -70,4 +70,7 @@ pub struct EscrowData { pub paid_amt: i128, /// Current status. pub status: EscrowStatus, + /// Commitment hash: immutable on-chain anchor for off-chain invoice data (PDF hash, ERP ID, etc.). + /// Set at creation, cannot be modified. SHA-256 hash (32 bytes). + pub commitment: soroban_sdk::BytesN<32>, } 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 df95fc8..a608ceb 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 @@ -115,6 +115,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -509,6 +512,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" 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 be80a5e..c2329bd 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 @@ -90,6 +90,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -330,6 +333,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" 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 15ec92b..57e6842 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 @@ -90,6 +90,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -502,6 +505,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" 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 index eb518f8..1ddb544 100644 --- 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 @@ -89,6 +89,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -259,6 +262,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" 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 index b8c2aaa..4c880a1 100644 --- 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 @@ -64,6 +64,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -203,6 +206,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" 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 index 814a16a..3eedd1e 100644 --- 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 @@ -64,6 +64,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -204,6 +207,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" 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 index 9a4998d..0926bf2 100644 --- 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 @@ -64,6 +64,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -182,6 +185,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" diff --git a/contracts/invoice-escrow/test_snapshots/test/test_commitment_immutable_after_creation.1.json b/contracts/invoice-escrow/test_snapshots/test/test_commitment_immutable_after_creation.1.json new file mode 100644 index 0000000..4684045 --- /dev/null +++ b/contracts/invoice-escrow/test_snapshots/test/test_commitment_immutable_after_creation.1.json @@ -0,0 +1,349 @@ +{ + "generators": { + "address": 5, + "nonce": 0 + }, + "auth": [ + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_escrow", + "args": [ + { + "symbol": "INV_IMM" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, + { + "u64": 1000000 + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "6f726967696e616c5f696e766f6963655f646174610000000000000000000000" + } + ] + } + }, + "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": [ + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "symbol": "INV_IMM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "symbol": "INV_IMM" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "6f726967696e616c5f696e766f6963655f646174610000000000000000000000" + } + }, + { + "key": { + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 1000000 + } + }, + { + "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_IMM" + } + }, + { + "key": { + "symbol": "inv_token" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + }, + { + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + } + ] + } + } + }, + "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_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4095 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/contracts/invoice-escrow/test_snapshots/test/test_commitment_included_in_created_event.1.json b/contracts/invoice-escrow/test_snapshots/test/test_commitment_included_in_created_event.1.json new file mode 100644 index 0000000..04b22d2 --- /dev/null +++ b/contracts/invoice-escrow/test_snapshots/test/test_commitment_included_in_created_event.1.json @@ -0,0 +1,403 @@ +{ + "generators": { + "address": 5, + "nonce": 0 + }, + "auth": [ + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_escrow", + "args": [ + { + "symbol": "INV_EVT" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, + { + "u64": 1000000 + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "6576656e745f746573745f696e766f6963650000000000000000000000000000" + } + ] + } + }, + "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": [ + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "symbol": "INV_EVT" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "symbol": "INV_EVT" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "6576656e745f746573745f696e766f6963650000000000000000000000000000" + } + }, + { + "key": { + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 1000000 + } + }, + { + "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_EVT" + } + }, + { + "key": { + "symbol": "inv_token" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + }, + { + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + } + ] + } + } + }, + "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_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4095 + ] + ] + ] + }, + "events": [ + { + "event": { + "ext": "v0", + "contract_id": "0000000000000000000000000000000000000000000000000000000000000001", + "type_": "contract", + "body": { + "v0": { + "topics": [ + { + "symbol": "escrow_created" + } + ], + "data": { + "vec": [ + { + "symbol": "INV_EVT" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, + { + "u64": 1000000 + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "6576656e745f746573745f696e766f6963650000000000000000000000000000" + } + ] + } + } + } + }, + "failed_call": false + } + ] +} \ No newline at end of file diff --git a/contracts/invoice-escrow/test_snapshots/test/test_commitment_persists_through_lifecycle.1.json b/contracts/invoice-escrow/test_snapshots/test/test_commitment_persists_through_lifecycle.1.json new file mode 100644 index 0000000..358b124 --- /dev/null +++ b/contracts/invoice-escrow/test_snapshots/test/test_commitment_persists_through_lifecycle.1.json @@ -0,0 +1,1295 @@ +{ + "generators": { + "address": 8, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJXFF", + { + "function": { + "contract_fn": { + "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "function_name": "set_admin", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "function_name": "mint", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "function_name": "mint", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_escrow", + "args": [ + { + "symbol": "INV_LIF" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, + { + "u64": 1000000 + }, + { + "address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "6c6966656379636c655f746573745f696e766f69636500000000000000000000" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "fund_escrow", + "args": [ + { + "symbol": "INV_LIF" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + } + ] + } + }, + "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_LIF" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + } + ] + } + }, + "sub_invocations": [ + { + "function": { + "contract_fn": { + "contract_address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "function_name": "transfer", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + }, + { + "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": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJXFF" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "account": { + "account_id": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJXFF", + "balance": 0, + "seq_num": 0, + "num_sub_entries": 0, + "inflation_dest": null, + "flags": 0, + "home_domain": "", + "thresholds": "01010101", + "signers": [], + "ext": "v0" + } + }, + "ext": "v0" + }, + null + ] + ], + [ + { + "contract_data": { + "contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJXFF", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJXFF", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "symbol": "INV_LIF" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "symbol": "INV_LIF" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "6c6966656379636c655f746573745f696e766f69636500000000000000000000" + } + }, + { + "key": { + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 1000000 + } + }, + { + "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_LIF" + } + }, + { + "key": { + "symbol": "inv_token" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + }, + { + "key": { + "symbol": "paid_amt" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, + { + "key": { + "symbol": "purchase_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, + { + "key": { + "symbol": "seller" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "u32": 2 + } + }, + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN" + } + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV_LIF" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "FunderAmount" + }, + { + "symbol": "INV_LIF" + }, + { + "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": 300 + } + } + ] + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM", + "key": { + "ledger_key_nonce": { + "nonce": 2032731177588607455 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM", + "key": { + "ledger_key_nonce": { + "nonce": 2032731177588607455 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 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": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": { + "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": [ + { + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": { + "hi": 0, + "lo": 970 + } + } + }, + { + "key": { + "symbol": "authorized" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "clawback" + }, + "val": { + "bool": false + } + } + ] + } + } + }, + "ext": "v0" + }, + 518400 + ] + ], + [ + { + "contract_data": { + "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "key": { + "vec": [ + { + "symbol": "Balance" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + } + ] + }, + "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": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CCABDO7UZXYE4W6GVSEGSNNZTKSLFQGKXXQTH6OX7M7GKZ4Z6CUJNGZN", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": "stellar_asset", + "storage": [ + { + "key": { + "symbol": "METADATA" + }, + "val": { + "map": [ + { + "key": { + "symbol": "decimal" + }, + "val": { + "u32": 7 + } + }, + { + "key": { + "symbol": "name" + }, + "val": { + "string": "aaa:GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJXFF" + } + }, + { + "key": { + "symbol": "symbol" + }, + "val": { + "string": "aaa" + } + } + ] + } + }, + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "vec": [ + { + "symbol": "AssetInfo" + } + ] + }, + "val": { + "vec": [ + { + "symbol": "AlphaNum4" + }, + { + "map": [ + { + "key": { + "symbol": "asset_code" + }, + "val": { + "string": "aaa\\0" + } + }, + { + "key": { + "symbol": "issuer" + }, + "val": { + "bytes": "0000000000000000000000000000000000000000000000000000000000000004" + } + } + ] + } + ] + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 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 387f257..ff5c7f3 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 @@ -89,6 +89,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -261,6 +264,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" 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 1d4e01d..a859097 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 @@ -44,6 +44,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -101,6 +104,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" diff --git a/contracts/invoice-escrow/test_snapshots/test/test_create_escrow_with_commitment.1.json b/contracts/invoice-escrow/test_snapshots/test/test_create_escrow_with_commitment.1.json new file mode 100644 index 0000000..d7d2361 --- /dev/null +++ b/contracts/invoice-escrow/test_snapshots/test/test_create_escrow_with_commitment.1.json @@ -0,0 +1,349 @@ +{ + "generators": { + "address": 5, + "nonce": 0 + }, + "auth": [ + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_escrow", + "args": [ + { + "symbol": "INV_CMT" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, + { + "u64": 1000000 + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "696e766f6963655f7064665f686173685f313233343500000000000000000000" + } + ] + } + }, + "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": [ + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "symbol": "INV_CMT" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "symbol": "INV_CMT" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "696e766f6963655f7064665f686173685f313233343500000000000000000000" + } + }, + { + "key": { + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 1000000 + } + }, + { + "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_CMT" + } + }, + { + "key": { + "symbol": "inv_token" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + }, + { + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + } + ] + } + } + }, + "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_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4095 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/contracts/invoice-escrow/test_snapshots/test/test_different_commitments_for_different_invoices.1.json b/contracts/invoice-escrow/test_snapshots/test/test_different_commitments_for_different_invoices.1.json new file mode 100644 index 0000000..b9c4e24 --- /dev/null +++ b/contracts/invoice-escrow/test_snapshots/test/test_different_commitments_for_different_invoices.1.json @@ -0,0 +1,592 @@ +{ + "generators": { + "address": 5, + "nonce": 0 + }, + "auth": [ + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_escrow", + "args": [ + { + "symbol": "INV_A" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, + { + "i128": { + "hi": 0, + "lo": 1000 + } + }, + { + "u64": 1000000 + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "696e766f6963655f615f64617461000000000000000000000000000000000000" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_escrow", + "args": [ + { + "symbol": "INV_B" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "i128": { + "hi": 0, + "lo": 2000 + } + }, + { + "i128": { + "hi": 0, + "lo": 2000 + } + }, + { + "u64": 2000000 + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "696e766f6963655f625f64617461000000000000000000000000000000000000" + } + ] + } + }, + "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": [ + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "symbol": "INV_A" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "symbol": "INV_A" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "696e766f6963655f615f64617461000000000000000000000000000000000000" + } + }, + { + "key": { + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 1000000 + } + }, + { + "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_A" + } + }, + { + "key": { + "symbol": "inv_token" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + }, + { + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "symbol": "INV_B" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "symbol": "INV_B" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "696e766f6963655f625f64617461000000000000000000000000000000000000" + } + }, + { + "key": { + "symbol": "debtor" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "due_dt" + }, + "val": { + "u64": 2000000 + } + }, + { + "key": { + "symbol": "face_value" + }, + "val": { + "i128": { + "hi": 0, + "lo": 2000 + } + } + }, + { + "key": { + "symbol": "funded_amt" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "funder" + }, + "val": "void" + }, + { + "key": { + "symbol": "inv_id" + }, + "val": { + "symbol": "INV_B" + } + }, + { + "key": { + "symbol": "inv_token" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + }, + { + "key": { + "symbol": "paid_amt" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "purchase_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 2000 + } + } + }, + { + "key": { + "symbol": "seller" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "token" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + } + ] + } + } + }, + "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_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4095 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/contracts/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 0085c8d..0cbdd33 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 @@ -64,6 +64,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -181,6 +184,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" @@ -602,6 +613,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } 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 3820316..010ba7d 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 @@ -89,6 +89,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -258,6 +261,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" 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 8757ed6..fdfdc37 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 @@ -89,6 +89,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -259,6 +262,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" 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 b774a69..dc36db5 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 @@ -114,6 +114,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -337,6 +340,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" 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 8326edd..c56731b 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 @@ -114,6 +114,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -337,6 +340,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" 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 index a074dae..cca1018 100644 --- 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 @@ -64,6 +64,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -204,6 +207,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" 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 4007025..eeabbd7 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 @@ -114,6 +114,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -284,6 +287,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" 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 1d4e01d..a859097 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 @@ -44,6 +44,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -101,6 +104,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" 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 11ed5f3..dd30f65 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 @@ -64,6 +64,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -182,6 +185,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" 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 177e76b..2ff14a6 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 @@ -89,6 +89,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -207,6 +210,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" 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 cfe303c..9d77698 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 @@ -114,6 +114,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -399,6 +402,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" 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 0854524..183e1ee 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 @@ -114,6 +114,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -335,6 +338,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" 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 05cf9e4..e2cca42 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 @@ -114,6 +114,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -343,6 +346,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" 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 a860662..aec97c2 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 @@ -114,6 +114,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -336,6 +339,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" 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 4e77cd9..ce636a5 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 @@ -114,6 +114,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -284,6 +287,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" 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 e9cc4cd..64c775a 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 @@ -44,6 +44,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -101,6 +104,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" 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 b022bb5..6cecb17 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 @@ -114,6 +114,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -339,6 +342,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" 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 142c6f5..ce12938 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 @@ -89,6 +89,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -261,6 +264,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" 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 889a466..bbfce25 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 @@ -114,6 +114,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -341,6 +344,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" 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 86c6467..2ec84a4 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 @@ -114,6 +114,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -336,6 +339,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" 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 dba2b37..32da65b 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 @@ -89,6 +89,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -261,6 +264,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" 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 bac1a49..22d0b53 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 @@ -89,6 +89,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -259,6 +262,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" 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 123f0c8..5965939 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 @@ -44,6 +44,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -101,6 +104,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" diff --git a/contracts/payment-distributor/src/integration_test.rs b/contracts/payment-distributor/src/integration_test.rs index 6573dbc..7b3dc90 100644 --- a/contracts/payment-distributor/src/integration_test.rs +++ b/contracts/payment-distributor/src/integration_test.rs @@ -13,9 +13,18 @@ use invoice_token::{InvoiceToken, InvoiceTokenClient}; use soroban_sdk::token::{Client as TokenClient, StellarAssetClient as AssetClient}; use soroban_sdk::{ testutils::{Address as _, Ledger as _}, - Address, Env, String as SorobanString, Symbol, + Address, Bytes, BytesN, Env, String as SorobanString, Symbol, }; +/// Helper function to create a test commitment hash (SHA-256 format) +fn test_commitment(env: &Env, data: &str) -> BytesN<32> { + let mut array = [0u8; 32]; + let bytes = data.as_bytes(); + let len = bytes.len().min(32); + array[..len].copy_from_slice(&bytes[..len]); + BytesN::from_array(env, &array) +} + // --------------------------------------------------------------------------- // Happy-path integration: create → fund → settle → distribute // --------------------------------------------------------------------------- @@ -77,6 +86,7 @@ fn test_integration_settle_then_distribute() { &due_date, &pt_id.address(), &inv_token_id, + &test_commitment(&env, "test_invoice_data"), ); escrow.fund_escrow(&invoice_id, &buyer, &amount); @@ -146,6 +156,7 @@ fn test_integration_distribute_while_escrow_funded_not_settled() { &99_999u64, &pt_id.address(), &inv_token_id, + &test_commitment(&env, "test_invoice_data"), ); escrow.fund_escrow(&invoice_id, &buyer, &amount); @@ -258,6 +269,7 @@ fn test_integration_refund_does_not_affect_distributor() { &due_date, &pt_id.address(), &inv_token_id, + &test_commitment(&env, "test_invoice_data"), ); escrow.fund_escrow(&invoice_id, &buyer, &amount); diff --git a/contracts/payment-distributor/test_snapshots/integration_test/test_integration_distribute_while_escrow_funded_not_settled.1.json b/contracts/payment-distributor/test_snapshots/integration_test/test_integration_distribute_while_escrow_funded_not_settled.1.json index 8ca7ee0..9b30c58 100644 --- a/contracts/payment-distributor/test_snapshots/integration_test/test_integration_distribute_while_escrow_funded_not_settled.1.json +++ b/contracts/payment-distributor/test_snapshots/integration_test/test_integration_distribute_while_escrow_funded_not_settled.1.json @@ -92,6 +92,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -329,6 +332,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" diff --git a/contracts/payment-distributor/test_snapshots/integration_test/test_integration_refund_does_not_affect_distributor.1.json b/contracts/payment-distributor/test_snapshots/integration_test/test_integration_refund_does_not_affect_distributor.1.json index 4ba483d..19de372 100644 --- a/contracts/payment-distributor/test_snapshots/integration_test/test_integration_refund_does_not_affect_distributor.1.json +++ b/contracts/payment-distributor/test_snapshots/integration_test/test_integration_refund_does_not_affect_distributor.1.json @@ -92,6 +92,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -331,6 +334,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor" diff --git a/contracts/payment-distributor/test_snapshots/integration_test/test_integration_settle_then_distribute.1.json b/contracts/payment-distributor/test_snapshots/integration_test/test_integration_settle_then_distribute.1.json index d126958..9235572 100644 --- a/contracts/payment-distributor/test_snapshots/integration_test/test_integration_settle_then_distribute.1.json +++ b/contracts/payment-distributor/test_snapshots/integration_test/test_integration_settle_then_distribute.1.json @@ -117,6 +117,9 @@ }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + }, + { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" } ] } @@ -526,6 +529,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "746573745f696e766f6963655f64617461000000000000000000000000000000" + } + }, { "key": { "symbol": "debtor"