diff --git a/smart-contracts/Cargo.lock b/smart-contracts/Cargo.lock index b01eb934..61771ec3 100644 --- a/smart-contracts/Cargo.lock +++ b/smart-contracts/Cargo.lock @@ -503,6 +503,7 @@ dependencies = [ name = "dispute-resolution" version = "0.1.0" dependencies = [ + "agent_registry", "gas-interface", "soroban-sdk", ] @@ -813,6 +814,21 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e04e2fd2b8188ea827b32ef11de88377086d690286ab35747ef7f9bf3ccb590" +[[package]] +name = "integration-tests" +version = "0.1.0" +dependencies = [ + "agent-bidding", + "agent-marketplace", + "agent_registry", + "dispute-resolution", + "oracle-manager", + "price-oracle", + "soroban-sdk", + "task-store", + "upgrade-manager", +] + [[package]] name = "itertools" version = "0.10.5" diff --git a/smart-contracts/Cargo.toml b/smart-contracts/Cargo.toml index e6080d7f..91ece4ba 100644 --- a/smart-contracts/Cargo.toml +++ b/smart-contracts/Cargo.toml @@ -12,6 +12,7 @@ members = [ "contracts/dispute_resolution", "contracts/oracle_manager", "contracts/price_oracle", + "tests/integration", ] resolver = "2" diff --git a/smart-contracts/contracts/agent_bidding/src/errors.rs b/smart-contracts/contracts/agent_bidding/src/errors.rs index ecac4fbc..dd463577 100644 --- a/smart-contracts/contracts/agent_bidding/src/errors.rs +++ b/smart-contracts/contracts/agent_bidding/src/errors.rs @@ -73,17 +73,17 @@ pub enum Error { AuctionNotAbortable = 25, /// An arithmetic operation overflowed while scoring bids. ArithmeticOverflow = 26, - /// Contract instance has already been initialized. + /// Contract already initialized. AlreadyInitialized = 27, - /// Contract is currently paused. + /// The contract is currently paused. ContractPaused = 28, - /// Winner cannot claim refund via bond refund path. + /// The winning bidder cannot claim a refund on bond. WinnerCannotClaimRefund = 29, - /// Refund has already been claimed for this bidder. + /// The refund has already been claimed. RefundAlreadyClaimed = 30, - /// Claim window has expired. + /// The claim window for bond refund has expired. ClaimWindowExpired = 31, - /// Bond has already been refunded. + /// Bond already refunded. AlreadyRefunded = 32, /// No payment asset (Stellar Asset Contract) has been configured. AssetNotConfigured = 33, @@ -93,4 +93,8 @@ pub enum Error { InvalidAmount = 35, /// The escrow has already been released or refunded. EscrowAlreadySettled = 36, + /// The auction already has the maximum number of bidders. + MaxBiddersReached = 37, + /// The requested audit range is invalid. + InvalidAuditRange = 38, } diff --git a/smart-contracts/contracts/agent_bidding/src/lib.rs b/smart-contracts/contracts/agent_bidding/src/lib.rs index b11e29b1..122e9274 100644 --- a/smart-contracts/contracts/agent_bidding/src/lib.rs +++ b/smart-contracts/contracts/agent_bidding/src/lib.rs @@ -86,6 +86,8 @@ mod errors; pub mod gas; #[cfg(test)] mod property_tests; +#[cfg(test)] +mod tests; mod types; pub use errors::Error; @@ -109,6 +111,7 @@ use soroban_sdk::{ /// Threshold (ledgers remaining) below which we extend. const TTL_THRESHOLD: u32 = 100_000; +const TTL_EXTEND_TO: u32 = 535_680; /// Target TTL after extension (~31 days at 5s ledgers). const CONTRACT_VERSION: &str = "1.0.0"; @@ -129,18 +132,6 @@ fn require_admin(env: &Env) -> Result { Ok(admin) } -fn require_not_paused(env: &Env) -> Result<(), Error> { - let paused: bool = env - .storage() - .instance() - .get(&DataKey::Paused) - .unwrap_or(false); - if paused { - return Err(Error::ContractPaused); - } - Ok(()) -} - /// Extend TTL for a single persistent key, but only when it exists. fn extend_ttl_for_key(env: &Env, key: &DataKey) { if env.storage().persistent().has(key) { @@ -239,6 +230,19 @@ fn scaled_ratio(numerator: i128, denominator: i128) -> Result { .ok_or(Error::ArithmeticOverflow) } +fn require_not_paused(env: &Env) -> Result<(), Error> { + if env + .storage() + .instance() + .get(&DataKey::Paused) + .unwrap_or(false) + { + Err(Error::ContractPaused) + } else { + Ok(()) + } +} + // ─── Token helpers ─────────────────────────────────────────────────────────── /// Decimals in which every `*_stroops` amount handled by this contract is @@ -433,6 +437,16 @@ impl AgentBiddingContract { env.storage().instance().get(&DataKey::Admin) } + pub fn set_paused(env: Env, admin: Address, paused: bool) -> Result<(), Error> { + let stored_admin = require_admin(&env)?; + if admin != stored_admin { + return Err(Error::Unauthorized); + } + admin.require_auth(); + env.storage().instance().set(&DataKey::Paused, &paused); + Ok(()) + } + pub fn contract_version(env: Env) -> String { env.storage() .instance() @@ -440,6 +454,27 @@ impl AgentBiddingContract { .unwrap_or_else(|| String::from_str(&env, CONTRACT_VERSION)) } + pub fn upgrade(env: Env, new_wasm_hash: BytesN<32>, new_version: String) -> Result<(), Error> { + let admin = require_admin(&env)?; + let old_version = Self::contract_version(env.clone()); + env.deployer() + .update_current_contract_wasm(new_wasm_hash.clone()); + env.storage() + .instance() + .set(&DataKey::Version, &new_version); + env.events().publish( + (symbol_short!("bidding"), symbol_short!("upgraded")), + ( + old_version, + new_version, + new_wasm_hash, + admin, + env.ledger().sequence(), + ), + ); + Ok(()) + } + // ── Creation ───────────────────────────────────────────────────────── /// Initialise a new auction for `task_id`. diff --git a/smart-contracts/contracts/agent_bidding/src/property_tests.rs b/smart-contracts/contracts/agent_bidding/src/property_tests.rs index 218eaa5a..50f6dec7 100644 --- a/smart-contracts/contracts/agent_bidding/src/property_tests.rs +++ b/smart-contracts/contracts/agent_bidding/src/property_tests.rs @@ -63,7 +63,7 @@ fn create_test_auction( /// Recompute the commitment hash from plaintext fields. /// Mirrors `compute_commitment` in the contract and `commitment_of`. -fn test_commitment( +pub(crate) fn test_commitment( client: &AgentBiddingContractClient<'_>, task_id: &Symbol, bidder: &Address, diff --git a/smart-contracts/contracts/agent_bidding/src/tests.rs b/smart-contracts/contracts/agent_bidding/src/tests.rs new file mode 100644 index 00000000..2b15e920 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/src/tests.rs @@ -0,0 +1,569 @@ +//! # Agent Bidding Contract Unit Tests +//! +//! Comprehensive unit tests covering every public function, error case, edge case, +//! and event emission for `AgentBiddingContract`. + +extern crate std; + +use super::*; +use soroban_sdk::{ + testutils::{Address as _, Ledger as _}, + Address, BytesN, Env, String, Symbol, +}; + +fn setup() -> (Env, AgentBiddingContractClient<'static>) { + let env = Env::default(); + env.mock_all_auths(); + let id = env.register(AgentBiddingContract, ()); + let client = AgentBiddingContractClient::new(&env, &id); + (env, client) +} + +fn setup_with_admin() -> (Env, AgentBiddingContractClient<'static>, Address) { + let (env, client) = setup(); + let admin = Address::generate(&env); + client.initialize(&admin); + (env, client, admin) +} + +fn create_default_auction( + _env: &Env, + client: &AgentBiddingContractClient<'_>, + creator: &Address, + task_id: &Symbol, +) { + client.create_auction( + creator, + task_id, + &AuctionConfig { + duration_secs: 3600, + reveal_duration_secs: 3600, + reserve_price: 1_000_000, + max_price: 10_000_000, + bond: 500_000, + }, + ); +} + +// ─── Initialize & Admin ────────────────────────────────────────────────────── + +#[test] +fn initialize_sets_admin_and_version() { + let (env, client) = setup(); + let admin = Address::generate(&env); + assert!(client.try_initialize(&admin).is_ok()); + + assert_eq!(client.admin(), Some(admin)); + assert_eq!( + client.contract_version(), + String::from_str(&env, CONTRACT_VERSION) + ); +} + +#[test] +fn initialize_cannot_be_called_twice() { + let (_env, client, admin) = setup_with_admin(); + let err = client.try_initialize(&admin); + assert_eq!(err, Err(Ok(Error::AlreadyInitialized))); +} + +#[test] +fn admin_query_returns_none_when_uninitialized() { + let (_env, client) = setup(); + assert_eq!(client.admin(), None); +} + +// ─── Pause & Unpause ───────────────────────────────────────────────────────── + +#[test] +fn admin_can_pause_and_unpause() { + let (_env, client, admin) = setup_with_admin(); + assert!(!client.is_paused()); + + client.set_paused(&admin, &true); + assert!(client.is_paused()); + + client.set_paused(&admin, &false); + assert!(!client.is_paused()); +} + +#[test] +fn non_admin_cannot_pause() { + let (env, client, _admin) = setup_with_admin(); + let stranger = Address::generate(&env); + let err = client.try_set_paused(&stranger, &true); + assert_eq!(err, Err(Ok(Error::Unauthorized))); +} + +// ─── Contract Upgrade ──────────────────────────────────────────────────────── + +#[test] +fn upgrade_contract_version() { + let (env, client, _admin) = setup_with_admin(); + let dummy_wasm_hash = env + .deployer() + .upload_contract_wasm(soroban_sdk::Bytes::new(&env)); + let new_ver = String::from_str(&env, "2.0.0"); + + assert!(client.try_upgrade(&dummy_wasm_hash, &new_ver).is_ok()); + assert_eq!(client.contract_version(), new_ver); +} + +// ─── Create Auction ────────────────────────────────────────────────────────── + +#[test] +fn create_auction_success_and_events() { + let (env, client) = setup(); + let creator = Address::generate(&env); + let task_id = Symbol::new(&env, "task_1"); + + client.create_auction( + &creator, + &task_id, + &AuctionConfig { + duration_secs: 3600, + reveal_duration_secs: 1800, + reserve_price: 1_000_000, + max_price: 5_000_000, + bond: 200_000, + }, + ); + + let auction = client.get_auction(&task_id).unwrap(); + assert_eq!(auction.task_id, task_id); + assert_eq!(auction.creator, creator); + assert_eq!(auction.config.reserve_price, 1_000_000); + assert_eq!(auction.config.max_price, 5_000_000); + assert_eq!(auction.config.bond, 200_000); + assert_eq!(auction.phase, AuctionPhase::Bidding); + assert_eq!(auction.bid_count, 0); +} + +#[test] +fn create_auction_defaults_on_zero_durations_and_max_price() { + let (env, client) = setup(); + let creator = Address::generate(&env); + let task_id = Symbol::new(&env, "task_def"); + + client.create_auction( + &creator, + &task_id, + &AuctionConfig { + duration_secs: 0, + reveal_duration_secs: 0, + reserve_price: 1_000_000, + max_price: 0, + bond: 100_000, + }, + ); + + let auction = client.get_auction(&task_id).unwrap(); + assert_eq!(auction.config.duration_secs, DEFAULT_BIDDING_DURATION_SECS); + assert_eq!( + auction.config.reveal_duration_secs, + DEFAULT_REVEAL_DURATION_SECS + ); + assert_eq!(auction.config.max_price, MAX_BID_PRICE); +} + +#[test] +fn create_auction_duplicate_id_fails() { + let (env, client) = setup(); + let creator = Address::generate(&env); + let task_id = Symbol::new(&env, "task_dup"); + + create_default_auction(&env, &client, &creator, &task_id); + + let err = client.try_create_auction( + &creator, + &task_id, + &AuctionConfig { + duration_secs: 3600, + reveal_duration_secs: 3600, + reserve_price: 1_000_000, + max_price: 10_000_000, + bond: 500_000, + }, + ); + assert_eq!(err, Err(Ok(Error::AlreadyExists))); +} + +#[test] +fn create_auction_invalid_bond_or_price() { + let (env, client) = setup(); + let creator = Address::generate(&env); + + // Zero / negative bond + let err = client.try_create_auction( + &creator, + &Symbol::new(&env, "t1"), + &AuctionConfig { + duration_secs: 3600, + reveal_duration_secs: 3600, + reserve_price: 1_000_000, + max_price: 10_000_000, + bond: 0, + }, + ); + assert_eq!(err, Err(Ok(Error::InvalidBond))); + + // Zero / negative reserve price + let err = client.try_create_auction( + &creator, + &Symbol::new(&env, "t2"), + &AuctionConfig { + duration_secs: 3600, + reveal_duration_secs: 3600, + reserve_price: 0, + max_price: 10_000_000, + bond: 500_000, + }, + ); + assert_eq!(err, Err(Ok(Error::InvalidPrice))); + + // max_price < reserve_price + let err = client.try_create_auction( + &creator, + &Symbol::new(&env, "t3"), + &AuctionConfig { + duration_secs: 3600, + reveal_duration_secs: 3600, + reserve_price: 5_000_000, + max_price: 4_000_000, + bond: 500_000, + }, + ); + assert_eq!(err, Err(Ok(Error::InvalidPriceRange))); +} + +#[test] +fn create_auction_fails_when_paused() { + let (env, client, admin) = setup_with_admin(); + client.set_paused(&admin, &true); + + let creator = Address::generate(&env); + let err = client.try_create_auction( + &creator, + &Symbol::new(&env, "t_paused"), + &AuctionConfig { + duration_secs: 3600, + reveal_duration_secs: 3600, + reserve_price: 1_000_000, + max_price: 10_000_000, + bond: 500_000, + }, + ); + assert_eq!(err, Err(Ok(Error::ContractPaused))); +} + +// ─── Submit Bid ────────────────────────────────────────────────────────────── + +#[test] +fn submit_bid_success() { + let (env, client) = setup(); + let creator = Address::generate(&env); + let bidder = Address::generate(&env); + let task_id = Symbol::new(&env, "task_bid1"); + + create_default_auction(&env, &client, &creator, &task_id); + + let salt = BytesN::from_array(&env, &[1u8; 32]); + let terms = String::from_str(&env, "Fast execution"); + let comm = client.commitment_of(&task_id, &bidder, &2_000_000, &terms, &salt); + + let res = client.try_submit_bid(&task_id, &bidder, &comm, &500_000, &85); + assert!(res.is_ok()); + + let bid = client.get_bid(&task_id, &bidder).unwrap(); + assert_eq!(bid.bidder, bidder); + assert_eq!(bid.commitment, comm); + assert_eq!(bid.bond, 500_000); + assert_eq!(bid.reputation, 85); + assert!(!bid.revealed); + + let bidders = client.get_bidders(&task_id, &0, &10); + assert_eq!(bidders.len(), 1); + assert_eq!(bidders.get(0).unwrap(), bidder); +} + +#[test] +fn submit_bid_errors() { + let (env, client) = setup(); + let creator = Address::generate(&env); + let bidder = Address::generate(&env); + let task_id = Symbol::new(&env, "task_bid_err"); + + create_default_auction(&env, &client, &creator, &task_id); + + let salt = BytesN::from_array(&env, &[1u8; 32]); + let terms = String::from_str(&env, ""); + let comm = client.commitment_of(&task_id, &bidder, &2_000_000, &terms, &salt); + + // Invalid bond + assert_eq!( + client.try_submit_bid(&task_id, &bidder, &comm, &100_000, &50), + Err(Ok(Error::InvalidBond)) + ); + + // Invalid reputation (> 100) + assert_eq!( + client.try_submit_bid(&task_id, &bidder, &comm, &500_000, &101), + Err(Ok(Error::InvalidReputation)) + ); + + // Zero commitment + let zero_comm = BytesN::from_array(&env, &[0u8; 32]); + assert_eq!( + client.try_submit_bid(&task_id, &bidder, &zero_comm, &500_000, &50), + Err(Ok(Error::InvalidCommitment)) + ); + + // Valid submission + client.submit_bid(&task_id, &bidder, &comm, &500_000, &50); + + // Duplicate submission + assert_eq!( + client.try_submit_bid(&task_id, &bidder, &comm, &500_000, &50), + Err(Ok(Error::BidAlreadyExists)) + ); + + // Submission after deadline + env.ledger().set_timestamp(env.ledger().timestamp() + 3601); + let bidder2 = Address::generate(&env); + let comm2 = client.commitment_of(&task_id, &bidder2, &2_000_000, &terms, &salt); + assert_eq!( + client.try_submit_bid(&task_id, &bidder2, &comm2, &500_000, &50), + Err(Ok(Error::BiddingPeriodEnded)) + ); +} + +// ─── Reveal Bid ────────────────────────────────────────────────────────────── + +#[test] +fn reveal_bid_success() { + let (env, client) = setup(); + let creator = Address::generate(&env); + let bidder = Address::generate(&env); + let task_id = Symbol::new(&env, "task_rvl"); + + create_default_auction(&env, &client, &creator, &task_id); + + let salt = BytesN::from_array(&env, &[2u8; 32]); + let terms = String::from_str(&env, "Terms details"); + let price: i128 = 3_000_000; + let comm = client.commitment_of(&task_id, &bidder, &price, &terms, &salt); + + client.submit_bid(&task_id, &bidder, &comm, &500_000, &90); + + // Advance timestamp into reveal window + env.ledger().set_timestamp(env.ledger().timestamp() + 3601); + + let res = client.try_reveal_bid(&task_id, &bidder, &price, &terms, &salt); + assert!(res.is_ok()); + + let bid = client.get_bid(&task_id, &bidder).unwrap(); + assert!(bid.revealed); + assert_eq!(bid.price_stroops, price); + assert_eq!(bid.terms, terms); +} + +#[test] +fn reveal_bid_errors() { + let (env, client) = setup(); + let creator = Address::generate(&env); + let bidder = Address::generate(&env); + let task_id = Symbol::new(&env, "task_rvl_err"); + + create_default_auction(&env, &client, &creator, &task_id); + + let salt = BytesN::from_array(&env, &[2u8; 32]); + let terms = String::from_str(&env, "Terms"); + let price: i128 = 3_000_000; + let comm = client.commitment_of(&task_id, &bidder, &price, &terms, &salt); + + client.submit_bid(&task_id, &bidder, &comm, &500_000, &90); + + // Reveal too early (bidding active) + assert_eq!( + client.try_reveal_bid(&task_id, &bidder, &price, &terms, &salt), + Err(Ok(Error::BiddingPeriodActive)) + ); + + // Advance into reveal window + env.ledger().set_timestamp(env.ledger().timestamp() + 3601); + + // Wrong commitment / incorrect price during reveal + assert_eq!( + client.try_reveal_bid(&task_id, &bidder, &4_000_000, &terms, &salt), + Err(Ok(Error::InvalidCommitment)) + ); + + // Reveal after reveal_deadline + env.ledger().set_timestamp(env.ledger().timestamp() + 3601); + assert_eq!( + client.try_reveal_bid(&task_id, &bidder, &price, &terms, &salt), + Err(Ok(Error::RevealPeriodEnded)) + ); +} + +// ─── Reveal Bids & Winner Selection ────────────────────────────────────────── + +#[test] +fn reveal_bids_selects_highest_score_and_tie_break() { + let (env, client) = setup(); + let creator = Address::generate(&env); + let task_id = Symbol::new(&env, "task_winner"); + + create_default_auction(&env, &client, &creator, &task_id); + + let bidder1 = Address::generate(&env); + let bidder2 = Address::generate(&env); + + // Bidder 1: price 5M, reputation 80 + let salt1 = BytesN::from_array(&env, &[1u8; 32]); + let terms1 = String::from_str(&env, ""); + let comm1 = client.commitment_of(&task_id, &bidder1, &5_000_000, &terms1, &salt1); + client.submit_bid(&task_id, &bidder1, &comm1, &500_000, &80); + + // Bidder 2: price 3M, reputation 80 (lower price should win tie-break) + let salt2 = BytesN::from_array(&env, &[2u8; 32]); + let terms2 = String::from_str(&env, ""); + let comm2 = client.commitment_of(&task_id, &bidder2, &3_000_000, &terms2, &salt2); + client.submit_bid(&task_id, &bidder2, &comm2, &500_000, &80); + + // Advance time and reveal both + env.ledger().set_timestamp(env.ledger().timestamp() + 3601); + client.reveal_bid(&task_id, &bidder1, &5_000_000, &terms1, &salt1); + client.reveal_bid(&task_id, &bidder2, &3_000_000, &terms2, &salt2); + + // Finalize reveals + client.reveal_bids(&creator, &task_id); + + let auction = client.get_auction(&task_id).unwrap(); + assert_eq!(auction.phase, AuctionPhase::Reveal); + + let winner = client.get_winner(&task_id).unwrap(); + assert_eq!(winner, bidder2); +} + +#[test] +fn reveal_bids_fails_when_no_bids_revealed() { + let (env, client) = setup(); + let creator = Address::generate(&env); + let task_id = Symbol::new(&env, "task_no_rvl"); + + create_default_auction(&env, &client, &creator, &task_id); + + // Advance past reveal window + env.ledger().set_timestamp(env.ledger().timestamp() + 7201); + + let err = client.try_reveal_bids(&creator, &task_id); + assert_eq!(err, Err(Ok(Error::NotEnoughBids))); +} + +// ─── Claim Refund & Award Contract ─────────────────────────────────────────── + +#[test] +fn claim_bid_refund_and_award_contract_flow() { + let (env, client) = setup(); + let creator = Address::generate(&env); + let task_id = Symbol::new(&env, "task_award"); + + create_default_auction(&env, &client, &creator, &task_id); + + let winner_addr = Address::generate(&env); + let loser_addr = Address::generate(&env); + + // Winner bid: 2M + let salt1 = BytesN::from_array(&env, &[1u8; 32]); + let terms1 = String::from_str(&env, ""); + let comm1 = client.commitment_of(&task_id, &winner_addr, &2_000_000, &terms1, &salt1); + client.submit_bid(&task_id, &winner_addr, &comm1, &500_000, &90); + + // Loser bid: 8M + let salt2 = BytesN::from_array(&env, &[2u8; 32]); + let terms2 = String::from_str(&env, ""); + let comm2 = client.commitment_of(&task_id, &loser_addr, &8_000_000, &terms2, &salt2); + client.submit_bid(&task_id, &loser_addr, &comm2, &500_000, &50); + + env.ledger().set_timestamp(env.ledger().timestamp() + 3601); + client.reveal_bid(&task_id, &winner_addr, &2_000_000, &terms1, &salt1); + client.reveal_bid(&task_id, &loser_addr, &8_000_000, &terms2, &salt2); + + client.reveal_bids(&creator, &task_id); + + // Loser claims refund + assert!(client.try_claim_bid_refund(&task_id, &loser_addr).is_ok()); + + // Winner cannot claim refund via claim_bid_refund path + assert_eq!( + client.try_claim_bid_refund(&task_id, &winner_addr), + Err(Ok(Error::WinnerCannotClaimRefund)) + ); + + // Award contract + assert!(client.try_award_contract(&creator, &task_id).is_ok()); + + let auction = client.get_auction(&task_id).unwrap(); + assert_eq!(auction.phase, AuctionPhase::Awarded); + + let escrow = client.get_escrow(&task_id).unwrap(); + assert_eq!(escrow.agent, winner_addr); + assert_eq!(escrow.amount, 2_000_000); + + // Awarding twice fails + assert_eq!( + client.try_award_contract(&creator, &task_id), + Err(Ok(Error::AlreadyAwarded)) + ); +} + +// ─── Abort Auction ─────────────────────────────────────────────────────────── + +#[test] +fn abort_auction_when_no_reveals() { + let (env, client) = setup(); + let creator = Address::generate(&env); + let bidder = Address::generate(&env); + let task_id = Symbol::new(&env, "task_abort"); + + create_default_auction(&env, &client, &creator, &task_id); + + let salt = BytesN::from_array(&env, &[1u8; 32]); + let terms = String::from_str(&env, ""); + let comm = client.commitment_of(&task_id, &bidder, &2_000_000, &terms, &salt); + client.submit_bid(&task_id, &bidder, &comm, &500_000, &50); + + // Calling abort while reveal period active fails + env.ledger().set_timestamp(env.ledger().timestamp() + 3601); + assert_eq!( + client.try_abort_auction(&creator, &task_id), + Err(Ok(Error::RevealPeriodActive)) + ); + + // Advance past reveal deadline + env.ledger().set_timestamp(env.ledger().timestamp() + 3601); + + assert!(client.try_abort_auction(&creator, &task_id).is_ok()); + + let auction = client.get_auction(&task_id).unwrap(); + assert_eq!(auction.phase, AuctionPhase::Cancelled); + + let bid = client.get_bid(&task_id, &bidder).unwrap(); + assert!(bid.refunded); +} + +// ─── Pagination ────────────────────────────────────────────────────────────── + +#[test] +fn get_bidders_pagination_limits() { + let (env, client) = setup(); + let creator = Address::generate(&env); + let task_id = Symbol::new(&env, "task_page"); + + create_default_auction(&env, &client, &creator, &task_id); + + // Page size > MAX_PAGE_SIZE (50) is clamped to MAX_PAGE_SIZE and succeeds + let bidders = client.get_bidders(&task_id, &0, &51); + assert_eq!(bidders.len(), 0); +} diff --git a/smart-contracts/contracts/agent_bidding/test_snapshots/tests/abort_auction_when_no_reveals.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/abort_auction_when_no_reveals.1.json new file mode 100644 index 00000000..351341c2 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/abort_auction_when_no_reveals.1.json @@ -0,0 +1,675 @@ +{ + "generators": { + "address": 3, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "task_abort" + }, + { + "map": [ + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "duration_secs" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 10000000 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "task_abort" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "bytes": "5b7b049c4f3e07efb1767cb8b4c81581b9a8e09de730023b7feef34ac5efeab4" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "abort_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "task_abort" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [] + ], + "ledger": { + "protocol_version": 22, + "sequence_number": 0, + "timestamp": 7202, + "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": "Auction" + }, + { + "symbol": "task_abort" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "task_abort" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "config" + }, + "val": { + "map": [ + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "duration_secs" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 10000000 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + }, + { + "key": { + "symbol": "created_at" + }, + "val": { + "u64": 0 + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "deadline" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "escrow_created" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "phase" + }, + "val": { + "u32": 3 + } + }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "task_id" + }, + "val": { + "symbol": "task_abort" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "task_abort" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "task_abort" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "5b7b049c4f3e07efb1767cb8b4c81581b9a8e09de730023b7feef34ac5efeab4" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "price_stroops" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "refunded" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "reputation" + }, + "val": { + "u32": 50 + } + }, + { + "key": { + "symbol": "revealed" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "score" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "terms" + }, + "val": { + "string": "" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "task_abort" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "task_abort" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "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/smart-contracts/contracts/agent_bidding/test_snapshots/tests/admin_can_pause_and_unpause.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/admin_can_pause_and_unpause.1.json new file mode 100644 index 00000000..82734ea9 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/admin_can_pause_and_unpause.1.json @@ -0,0 +1,383 @@ +{ + "generators": { + "address": 2, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "initialize", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "set_paused", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "bool": true + } + ] + } + }, + "sub_invocations": [] + } + ], + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "set_paused", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "bool": true + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "set_paused", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "bool": false + } + ] + } + }, + "sub_invocations": [] + } + ], + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "set_paused", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "bool": false + } + ] + } + }, + "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": "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": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "vec": [ + { + "symbol": "Paused" + } + ] + }, + "val": { + "bool": false + } + }, + { + "key": { + "vec": [ + { + "symbol": "Version" + } + ] + }, + "val": { + "string": "1.0.0" + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 2032731177588607455 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 2032731177588607455 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4095 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/smart-contracts/contracts/agent_bidding/test_snapshots/tests/admin_query_returns_none_when_uninitialized.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/admin_query_returns_none_when_uninitialized.1.json new file mode 100644 index 00000000..a90f00a8 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/admin_query_returns_none_when_uninitialized.1.json @@ -0,0 +1,76 @@ +{ + "generators": { + "address": 1, + "nonce": 0 + }, + "auth": [ + [], + [] + ], + "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": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_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/smart-contracts/contracts/agent_bidding/test_snapshots/tests/claim_bid_refund_and_award_contract_flow.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/claim_bid_refund_and_award_contract_flow.1.json new file mode 100644 index 00000000..2fdcbb30 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/claim_bid_refund_and_award_contract_flow.1.json @@ -0,0 +1,1274 @@ +{ + "generators": { + "address": 4, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "task_award" + }, + { + "map": [ + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "duration_secs" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 10000000 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "task_award" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "bytes": "2e9a75f8cb741c9c6e5ce304dbb5a9ec3044dee0b54978fcdeb9665384b42e8d" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 90 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "task_award" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "bytes": "a2948c96a42c6313ef7bbe2d7213fde5e9e1ffd324962a63555552bc752c512d" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bid", + "args": [ + { + "symbol": "task_award" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "i128": { + "hi": 0, + "lo": 2000000 + } + }, + { + "string": "" + }, + { + "bytes": "0101010101010101010101010101010101010101010101010101010101010101" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bid", + "args": [ + { + "symbol": "task_award" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "i128": { + "hi": 0, + "lo": 8000000 + } + }, + { + "string": "" + }, + { + "bytes": "0202020202020202020202020202020202020202020202020202020202020202" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bids", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "task_award" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "claim_bid_refund", + "args": [ + { + "symbol": "task_award" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "award_contract", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "task_award" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [], + [] + ], + "ledger": { + "protocol_version": 22, + "sequence_number": 0, + "timestamp": 3601, + "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": "Auction" + }, + { + "symbol": "task_award" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "task_award" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 2 + } + }, + { + "key": { + "symbol": "config" + }, + "val": { + "map": [ + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "duration_secs" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 10000000 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + }, + { + "key": { + "symbol": "created_at" + }, + "val": { + "u64": 0 + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "deadline" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "escrow_created" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "phase" + }, + "val": { + "u32": 2 + } + }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 2 + } + }, + { + "key": { + "symbol": "task_id" + }, + "val": { + "symbol": "task_award" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "task_award" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "task_award" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "2e9a75f8cb741c9c6e5ce304dbb5a9ec3044dee0b54978fcdeb9665384b42e8d" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "price_stroops" + }, + "val": { + "i128": { + "hi": 0, + "lo": 2000000 + } + } + }, + { + "key": { + "symbol": "refunded" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "reputation" + }, + "val": { + "u32": 90 + } + }, + { + "key": { + "symbol": "revealed" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "score" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, + { + "key": { + "symbol": "terms" + }, + "val": { + "string": "" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "task_award" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "task_award" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "a2948c96a42c6313ef7bbe2d7213fde5e9e1ffd324962a63555552bc752c512d" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "price_stroops" + }, + "val": { + "i128": { + "hi": 0, + "lo": 8000000 + } + } + }, + { + "key": { + "symbol": "refunded" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "reputation" + }, + "val": { + "u32": 50 + } + }, + { + "key": { + "symbol": "revealed" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "score" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "terms" + }, + "val": { + "string": "" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "task_award" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "task_award" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "symbol": "task_award" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "symbol": "task_award" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "agent" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": { + "hi": 0, + "lo": 2000000 + } + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "refunded" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "released" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "task_id" + }, + "val": { + "symbol": "task_award" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Winner" + }, + { + "symbol": "task_award" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Winner" + }, + { + "symbol": "task_award" + } + ] + }, + "durability": "persistent", + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 4270020994084947596 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 4270020994084947596 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 5806905060045992000 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 5806905060045992000 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 2032731177588607455 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 2032731177588607455 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 8370022561469687789 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 8370022561469687789 + } + }, + "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/smart-contracts/contracts/agent_bidding/test_snapshots/tests/create_auction_defaults_on_zero_durations_and_max_price.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/create_auction_defaults_on_zero_durations_and_max_price.1.json new file mode 100644 index 00000000..e1f7a0e6 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/create_auction_defaults_on_zero_durations_and_max_price.1.json @@ -0,0 +1,405 @@ +{ + "generators": { + "address": 2, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "task_def" + }, + { + "map": [ + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100000 + } + } + }, + { + "key": { + "symbol": "duration_secs" + }, + "val": { + "u64": 0 + } + }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 0 + } + } + ] + } + ] + } + }, + "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": "Auction" + }, + { + "symbol": "task_def" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "task_def" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "config" + }, + "val": { + "map": [ + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100000 + } + } + }, + { + "key": { + "symbol": "duration_secs" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100000000000000000 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + }, + { + "key": { + "symbol": "created_at" + }, + "val": { + "u64": 0 + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "deadline" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "escrow_created" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "phase" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "task_id" + }, + "val": { + "symbol": "task_def" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "task_def" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "task_def" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_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/smart-contracts/contracts/agent_bidding/test_snapshots/tests/create_auction_duplicate_id_fails.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/create_auction_duplicate_id_fails.1.json new file mode 100644 index 00000000..23ed9d84 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/create_auction_duplicate_id_fails.1.json @@ -0,0 +1,405 @@ +{ + "generators": { + "address": 2, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "task_dup" + }, + { + "map": [ + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "duration_secs" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 10000000 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + ] + } + }, + "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": "Auction" + }, + { + "symbol": "task_dup" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "task_dup" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "config" + }, + "val": { + "map": [ + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "duration_secs" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 10000000 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + }, + { + "key": { + "symbol": "created_at" + }, + "val": { + "u64": 0 + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "deadline" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "escrow_created" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "phase" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "task_id" + }, + "val": { + "symbol": "task_dup" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "task_dup" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "task_dup" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_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/smart-contracts/contracts/agent_bidding/test_snapshots/tests/create_auction_fails_when_paused.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/create_auction_fails_when_paused.1.json new file mode 100644 index 00000000..59304bf7 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/create_auction_fails_when_paused.1.json @@ -0,0 +1,273 @@ +{ + "generators": { + "address": 3, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "initialize", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "set_paused", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "bool": true + } + ] + } + }, + "sub_invocations": [] + } + ], + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "set_paused", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "bool": true + } + ] + } + }, + "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": "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": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "vec": [ + { + "symbol": "Paused" + } + ] + }, + "val": { + "bool": true + } + }, + { + "key": { + "vec": [ + { + "symbol": "Version" + } + ] + }, + "val": { + "string": "1.0.0" + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_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/smart-contracts/contracts/agent_bidding/test_snapshots/tests/create_auction_invalid_bond_or_price.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/create_auction_invalid_bond_or_price.1.json new file mode 100644 index 00000000..ef8b31a4 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/create_auction_invalid_bond_or_price.1.json @@ -0,0 +1,78 @@ +{ + "generators": { + "address": 2, + "nonce": 0 + }, + "auth": [ + [], + [], + [], + [] + ], + "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": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_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/smart-contracts/contracts/agent_bidding/test_snapshots/tests/create_auction_success_and_events.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/create_auction_success_and_events.1.json new file mode 100644 index 00000000..c632c6ad --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/create_auction_success_and_events.1.json @@ -0,0 +1,405 @@ +{ + "generators": { + "address": 2, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "task_1" + }, + { + "map": [ + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 200000 + } + } + }, + { + "key": { + "symbol": "duration_secs" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 5000000 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 1800 + } + } + ] + } + ] + } + }, + "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": "Auction" + }, + { + "symbol": "task_1" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "task_1" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "config" + }, + "val": { + "map": [ + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 200000 + } + } + }, + { + "key": { + "symbol": "duration_secs" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 5000000 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 1800 + } + } + ] + } + }, + { + "key": { + "symbol": "created_at" + }, + "val": { + "u64": 0 + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "deadline" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "escrow_created" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "phase" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 5400 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "task_id" + }, + "val": { + "symbol": "task_1" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "task_1" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "task_1" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_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/smart-contracts/contracts/agent_bidding/test_snapshots/tests/get_bidders_pagination_limits.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/get_bidders_pagination_limits.1.json new file mode 100644 index 00000000..5f965090 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/get_bidders_pagination_limits.1.json @@ -0,0 +1,405 @@ +{ + "generators": { + "address": 2, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "task_page" + }, + { + "map": [ + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "duration_secs" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 10000000 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + ] + } + }, + "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": "Auction" + }, + { + "symbol": "task_page" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "task_page" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "config" + }, + "val": { + "map": [ + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "duration_secs" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 10000000 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + }, + { + "key": { + "symbol": "created_at" + }, + "val": { + "u64": 0 + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "deadline" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "escrow_created" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "phase" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "task_id" + }, + "val": { + "symbol": "task_page" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "task_page" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "task_page" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_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/smart-contracts/contracts/agent_bidding/test_snapshots/tests/initialize_cannot_be_called_twice.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/initialize_cannot_be_called_twice.1.json new file mode 100644 index 00000000..31d6df9f --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/initialize_cannot_be_called_twice.1.json @@ -0,0 +1,153 @@ +{ + "generators": { + "address": 2, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "initialize", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + }, + "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": "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": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "vec": [ + { + "symbol": "Version" + } + ] + }, + "val": { + "string": "1.0.0" + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_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/smart-contracts/contracts/agent_bidding/test_snapshots/tests/initialize_sets_admin_and_version.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/initialize_sets_admin_and_version.1.json new file mode 100644 index 00000000..40f82bd8 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/initialize_sets_admin_and_version.1.json @@ -0,0 +1,154 @@ +{ + "generators": { + "address": 2, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "initialize", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + }, + "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": "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": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "vec": [ + { + "symbol": "Version" + } + ] + }, + "val": { + "string": "1.0.0" + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_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/smart-contracts/contracts/agent_bidding/test_snapshots/tests/non_admin_cannot_pause.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/non_admin_cannot_pause.1.json new file mode 100644 index 00000000..6d2ed3ec --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/non_admin_cannot_pause.1.json @@ -0,0 +1,153 @@ +{ + "generators": { + "address": 3, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "initialize", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + }, + "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": "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": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "vec": [ + { + "symbol": "Version" + } + ] + }, + "val": { + "string": "1.0.0" + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_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/smart-contracts/contracts/agent_bidding/test_snapshots/tests/reveal_bid_errors.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/reveal_bid_errors.1.json new file mode 100644 index 00000000..e02e2a9f --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/reveal_bid_errors.1.json @@ -0,0 +1,620 @@ +{ + "generators": { + "address": 3, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "task_rvl_err" + }, + { + "map": [ + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "duration_secs" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 10000000 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "task_rvl_err" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "bytes": "a633f2ff00097af1b108422331aebda98ae3a2e11218aecf385b4ccbae794a88" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 90 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [], + [] + ], + "ledger": { + "protocol_version": 22, + "sequence_number": 0, + "timestamp": 7202, + "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": "Auction" + }, + { + "symbol": "task_rvl_err" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "task_rvl_err" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "config" + }, + "val": { + "map": [ + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "duration_secs" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 10000000 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + }, + { + "key": { + "symbol": "created_at" + }, + "val": { + "u64": 0 + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "deadline" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "escrow_created" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "phase" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "task_id" + }, + "val": { + "symbol": "task_rvl_err" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "task_rvl_err" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "task_rvl_err" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "a633f2ff00097af1b108422331aebda98ae3a2e11218aecf385b4ccbae794a88" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "price_stroops" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "refunded" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "reputation" + }, + "val": { + "u32": 90 + } + }, + { + "key": { + "symbol": "revealed" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "score" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "terms" + }, + "val": { + "string": "" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "task_rvl_err" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "task_rvl_err" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "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/smart-contracts/contracts/agent_bidding/test_snapshots/tests/reveal_bid_success.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/reveal_bid_success.1.json new file mode 100644 index 00000000..2b44f971 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/reveal_bid_success.1.json @@ -0,0 +1,685 @@ +{ + "generators": { + "address": 3, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "task_rvl" + }, + { + "map": [ + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "duration_secs" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 10000000 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "task_rvl" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "bytes": "6b22653cb3092052431758267da5a100948678f869d8281a57f97c4fdd726e5a" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 90 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bid", + "args": [ + { + "symbol": "task_rvl" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "i128": { + "hi": 0, + "lo": 3000000 + } + }, + { + "string": "Terms details" + }, + { + "bytes": "0202020202020202020202020202020202020202020202020202020202020202" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [] + ], + "ledger": { + "protocol_version": 22, + "sequence_number": 0, + "timestamp": 3601, + "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": "Auction" + }, + { + "symbol": "task_rvl" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "task_rvl" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "config" + }, + "val": { + "map": [ + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "duration_secs" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 10000000 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + }, + { + "key": { + "symbol": "created_at" + }, + "val": { + "u64": 0 + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "deadline" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "escrow_created" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "phase" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "task_id" + }, + "val": { + "symbol": "task_rvl" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "task_rvl" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "task_rvl" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "6b22653cb3092052431758267da5a100948678f869d8281a57f97c4fdd726e5a" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "price_stroops" + }, + "val": { + "i128": { + "hi": 0, + "lo": 3000000 + } + } + }, + { + "key": { + "symbol": "refunded" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "reputation" + }, + "val": { + "u32": 90 + } + }, + { + "key": { + "symbol": "revealed" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "score" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "terms" + }, + "val": { + "string": "Terms details" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "task_rvl" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "task_rvl" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "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_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/smart-contracts/contracts/agent_bidding/test_snapshots/tests/reveal_bids_fails_when_no_bids_revealed.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/reveal_bids_fails_when_no_bids_revealed.1.json new file mode 100644 index 00000000..d9fb34f6 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/reveal_bids_fails_when_no_bids_revealed.1.json @@ -0,0 +1,405 @@ +{ + "generators": { + "address": 2, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "task_no_rvl" + }, + { + "map": [ + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "duration_secs" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 10000000 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [] + ], + "ledger": { + "protocol_version": 22, + "sequence_number": 0, + "timestamp": 7201, + "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": "Auction" + }, + { + "symbol": "task_no_rvl" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "task_no_rvl" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "config" + }, + "val": { + "map": [ + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "duration_secs" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 10000000 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + }, + { + "key": { + "symbol": "created_at" + }, + "val": { + "u64": 0 + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "deadline" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "escrow_created" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "phase" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "task_id" + }, + "val": { + "symbol": "task_no_rvl" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "task_no_rvl" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "task_no_rvl" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_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/smart-contracts/contracts/agent_bidding/test_snapshots/tests/reveal_bids_selects_highest_score_and_tie_break.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/reveal_bids_selects_highest_score_and_tie_break.1.json new file mode 100644 index 00000000..69215379 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/reveal_bids_selects_highest_score_and_tie_break.1.json @@ -0,0 +1,1065 @@ +{ + "generators": { + "address": 4, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "task_winner" + }, + { + "map": [ + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "duration_secs" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 10000000 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "task_winner" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "bytes": "f27705a014c7f4d5f76b90fb0c2f0bb7925fbd532d64a1e7c6ed052c75731902" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 80 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "task_winner" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "bytes": "1b15afda1ae8a994674b4591d87ef8c676d2217571d3b7c640590612e3eab7b0" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 80 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bid", + "args": [ + { + "symbol": "task_winner" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "i128": { + "hi": 0, + "lo": 5000000 + } + }, + { + "string": "" + }, + { + "bytes": "0101010101010101010101010101010101010101010101010101010101010101" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bid", + "args": [ + { + "symbol": "task_winner" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "i128": { + "hi": 0, + "lo": 3000000 + } + }, + { + "string": "" + }, + { + "bytes": "0202020202020202020202020202020202020202020202020202020202020202" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bids", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "task_winner" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [] + ], + "ledger": { + "protocol_version": 22, + "sequence_number": 0, + "timestamp": 3601, + "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": "Auction" + }, + { + "symbol": "task_winner" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "task_winner" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 2 + } + }, + { + "key": { + "symbol": "config" + }, + "val": { + "map": [ + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "duration_secs" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 10000000 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + }, + { + "key": { + "symbol": "created_at" + }, + "val": { + "u64": 0 + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "deadline" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "escrow_created" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "phase" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 2 + } + }, + { + "key": { + "symbol": "task_id" + }, + "val": { + "symbol": "task_winner" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "task_winner" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "task_winner" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "f27705a014c7f4d5f76b90fb0c2f0bb7925fbd532d64a1e7c6ed052c75731902" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "price_stroops" + }, + "val": { + "i128": { + "hi": 0, + "lo": 5000000 + } + } + }, + { + "key": { + "symbol": "refunded" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "reputation" + }, + "val": { + "u32": 80 + } + }, + { + "key": { + "symbol": "revealed" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "score" + }, + "val": { + "i128": { + "hi": 0, + "lo": 400 + } + } + }, + { + "key": { + "symbol": "terms" + }, + "val": { + "string": "" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "task_winner" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "task_winner" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "1b15afda1ae8a994674b4591d87ef8c676d2217571d3b7c640590612e3eab7b0" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "price_stroops" + }, + "val": { + "i128": { + "hi": 0, + "lo": 3000000 + } + } + }, + { + "key": { + "symbol": "refunded" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "reputation" + }, + "val": { + "u32": 80 + } + }, + { + "key": { + "symbol": "revealed" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "score" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, + { + "key": { + "symbol": "terms" + }, + "val": { + "string": "" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "task_winner" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "task_winner" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Winner" + }, + { + "symbol": "task_winner" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Winner" + }, + { + "symbol": "task_winner" + } + ] + }, + "durability": "persistent", + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 4270020994084947596 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 4270020994084947596 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 2032731177588607455 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 2032731177588607455 + } + }, + "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/smart-contracts/contracts/agent_bidding/test_snapshots/tests/submit_bid_errors.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/submit_bid_errors.1.json new file mode 100644 index 00000000..12b9632b --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/submit_bid_errors.1.json @@ -0,0 +1,623 @@ +{ + "generators": { + "address": 4, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "task_bid_err" + }, + { + "map": [ + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "duration_secs" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 10000000 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [], + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "task_bid_err" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "bytes": "eb141fa2b2e7a22ee0f6142eed3a8e1b7259ca51600d901035af60c66abc96f4" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [], + [] + ], + "ledger": { + "protocol_version": 22, + "sequence_number": 0, + "timestamp": 3601, + "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": "Auction" + }, + { + "symbol": "task_bid_err" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "task_bid_err" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "config" + }, + "val": { + "map": [ + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "duration_secs" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 10000000 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + }, + { + "key": { + "symbol": "created_at" + }, + "val": { + "u64": 0 + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "deadline" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "escrow_created" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "phase" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "task_id" + }, + "val": { + "symbol": "task_bid_err" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "task_bid_err" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "task_bid_err" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "eb141fa2b2e7a22ee0f6142eed3a8e1b7259ca51600d901035af60c66abc96f4" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "price_stroops" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "refunded" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "reputation" + }, + "val": { + "u32": 50 + } + }, + { + "key": { + "symbol": "revealed" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "score" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "terms" + }, + "val": { + "string": "" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "task_bid_err" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "task_bid_err" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 2032731177588607455 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 2032731177588607455 + } + }, + "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/smart-contracts/contracts/agent_bidding/test_snapshots/tests/submit_bid_success.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/submit_bid_success.1.json new file mode 100644 index 00000000..6eb71d52 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/submit_bid_success.1.json @@ -0,0 +1,619 @@ +{ + "generators": { + "address": 3, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "task_bid1" + }, + { + "map": [ + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "duration_secs" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 10000000 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "task_bid1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "bytes": "6ddd4389a7914e38f11ef6be73da14912787566a8d6399c89e1d7a7c11294db6" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 85 + } + ] + } + }, + "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": "Auction" + }, + { + "symbol": "task_bid1" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "task_bid1" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "config" + }, + "val": { + "map": [ + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "duration_secs" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 10000000 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + }, + { + "key": { + "symbol": "created_at" + }, + "val": { + "u64": 0 + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "deadline" + }, + "val": { + "u64": 3600 + } + }, + { + "key": { + "symbol": "escrow_created" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "phase" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "task_id" + }, + "val": { + "symbol": "task_bid1" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "task_bid1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "task_bid1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "6ddd4389a7914e38f11ef6be73da14912787566a8d6399c89e1d7a7c11294db6" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "price_stroops" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "refunded" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "reputation" + }, + "val": { + "u32": 85 + } + }, + { + "key": { + "symbol": "revealed" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "score" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "terms" + }, + "val": { + "string": "" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "task_bid1" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "task_bid1" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "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/smart-contracts/contracts/agent_bidding/test_snapshots/tests/upgrade_contract_version.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/upgrade_contract_version.1.json new file mode 100644 index 00000000..614f09d5 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/tests/upgrade_contract_version.1.json @@ -0,0 +1,208 @@ +{ + "generators": { + "address": 2, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "initialize", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "upgrade", + "args": [ + { + "bytes": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + { + "string": "2.0.0" + } + ] + } + }, + "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": "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": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "vec": [ + { + "symbol": "Version" + } + ] + }, + "val": { + "string": "2.0.0" + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4095 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/smart-contracts/contracts/agent_marketplace/src/test.rs b/smart-contracts/contracts/agent_marketplace/src/test.rs index c0d87041..064f48a6 100644 --- a/smart-contracts/contracts/agent_marketplace/src/test.rs +++ b/smart-contracts/contracts/agent_marketplace/src/test.rs @@ -480,6 +480,156 @@ fn negative_auth_initialize() { assert!(client.try_initialize(&admin).is_err()); } +#[test] +fn search_services_filters_by_max_response_time() { + let (env, client) = setup(); + let owner = Address::generate(&env); + + client.list_service( + &Symbol::new(&env, "svc_fast"), + &Symbol::new(&env, "agent1"), + &owner, + &Symbol::new(&env, "coding"), + &1_000_000_i128, + &100_u32, + &24_u32, + ); + client.list_service( + &Symbol::new(&env, "svc_slow"), + &Symbol::new(&env, "agent2"), + &owner, + &Symbol::new(&env, "coding"), + &1_000_000_i128, + &500_u32, + &24_u32, + ); + + let results = client.search_services(&Symbol::new(&env, "coding"), &0_i128, &200_u32); + assert_eq!(results.len(), 1); + assert_eq!( + results.get(0).unwrap().listing_id, + Symbol::new(&env, "svc_fast") + ); +} + +#[test] +fn complete_booking_errors() { + let (env, client) = setup(); + let owner = Address::generate(&env); + let client_addr = Address::generate(&env); + + // Non-existent booking + assert_eq!( + client.try_complete_booking(&Symbol::new(&env, "non_existent")), + Err(Ok(Error::BookingNotFound)) + ); + + client.list_service( + &Symbol::new(&env, "svc1"), + &Symbol::new(&env, "agent1"), + &owner, + &Symbol::new(&env, "research"), + &1_000_000_i128, + &200_u32, + &24_u32, + ); + + let bk_id = Symbol::new(&env, "bk_comp"); + client.book_agent( + &Symbol::new(&env, "svc1"), + &client_addr, + &1_000_000_i128, + &bk_id, + ); + + client.complete_booking(&bk_id); + + // Already completed + assert_eq!( + client.try_complete_booking(&bk_id), + Err(Ok(Error::BookingAlreadyCompleted)) + ); +} + +#[test] +fn cancel_booking_errors() { + let (env, client) = setup(); + let owner = Address::generate(&env); + let client_addr = Address::generate(&env); + + // Non-existent booking + assert_eq!( + client.try_cancel_booking(&Symbol::new(&env, "non_existent")), + Err(Ok(Error::BookingNotFound)) + ); + + client.list_service( + &Symbol::new(&env, "svc1"), + &Symbol::new(&env, "agent1"), + &owner, + &Symbol::new(&env, "research"), + &1_000_000_i128, + &200_u32, + &24_u32, + ); + + let bk_id = Symbol::new(&env, "bk_canc"); + client.book_agent( + &Symbol::new(&env, "svc1"), + &client_addr, + &1_000_000_i128, + &bk_id, + ); + + client.cancel_booking(&bk_id); + + // Already cancelled + assert_eq!( + client.try_cancel_booking(&bk_id), + Err(Ok(Error::BookingAlreadyCancelled)) + ); +} + +#[test] +fn rate_booking_errors() { + let (env, client) = setup(); + let owner = Address::generate(&env); + let client_addr = Address::generate(&env); + + client.list_service( + &Symbol::new(&env, "svc1"), + &Symbol::new(&env, "agent1"), + &owner, + &Symbol::new(&env, "research"), + &1_000_000_i128, + &200_u32, + &24_u32, + ); + + let bk_id = Symbol::new(&env, "bk_rate"); + client.book_agent( + &Symbol::new(&env, "svc1"), + &client_addr, + &1_000_000_i128, + &bk_id, + ); + + // Cannot rate uncompleted booking + assert_eq!( + client.try_rate_booking(&bk_id, &5), + Err(Ok(Error::BookingAlreadyCancelled)) + ); + + client.complete_booking(&bk_id); + client.rate_booking(&bk_id, &5); + + // Cannot rate twice + assert_eq!( + client.try_rate_booking(&bk_id, &4), + Err(Ok(Error::AlreadyExists)) + ); +} + #[test] fn negative_auth_set_admin() { let (env, client, _admin) = setup_with_admin(); diff --git a/smart-contracts/contracts/agent_marketplace/test_snapshots/test/cancel_booking_errors.1.json b/smart-contracts/contracts/agent_marketplace/test_snapshots/test/cancel_booking_errors.1.json new file mode 100644 index 00000000..67edf787 --- /dev/null +++ b/smart-contracts/contracts/agent_marketplace/test_snapshots/test/cancel_booking_errors.1.json @@ -0,0 +1,549 @@ +{ + "generators": { + "address": 3, + "nonce": 0 + }, + "auth": [ + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "list_service", + "args": [ + { + "symbol": "svc1" + }, + { + "symbol": "agent1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "research" + }, + { + "i128": { + "hi": 0, + "lo": 1000000 + } + }, + { + "u32": 200 + }, + { + "u32": 24 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "book_agent", + "args": [ + { + "symbol": "svc1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "i128": { + "hi": 0, + "lo": 1000000 + } + }, + { + "symbol": "bk_canc" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "cancel_booking", + "args": [ + { + "symbol": "bk_canc" + } + ] + } + }, + "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": "Booking" + }, + { + "symbol": "bk_canc" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Booking" + }, + { + "symbol": "bk_canc" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "agent_id" + }, + "val": { + "symbol": "agent1" + } + }, + { + "key": { + "symbol": "booking_id" + }, + "val": { + "symbol": "bk_canc" + } + }, + { + "key": { + "symbol": "cancelled" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "client" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "completed" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "created_at" + }, + "val": { + "u64": 0 + } + }, + { + "key": { + "symbol": "escrow_amount" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "listing_id" + }, + "val": { + "symbol": "svc1" + } + }, + { + "key": { + "symbol": "rating" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ListingsByCapability" + }, + { + "symbol": "research" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ListingsByCapability" + }, + { + "symbol": "research" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "symbol": "svc1" + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ServiceListing" + }, + { + "symbol": "svc1" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ServiceListing" + }, + { + "symbol": "svc1" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "active" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "agent_id" + }, + "val": { + "symbol": "agent1" + } + }, + { + "key": { + "symbol": "availability_hours" + }, + "val": { + "u32": 24 + } + }, + { + "key": { + "symbol": "capability" + }, + "val": { + "symbol": "research" + } + }, + { + "key": { + "symbol": "listing_id" + }, + "val": { + "symbol": "svc1" + } + }, + { + "key": { + "symbol": "max_response_time" + }, + "val": { + "u32": 200 + } + }, + { + "key": { + "symbol": "owner" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "price_stroops" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "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_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/smart-contracts/contracts/agent_marketplace/test_snapshots/test/complete_booking_errors.1.json b/smart-contracts/contracts/agent_marketplace/test_snapshots/test/complete_booking_errors.1.json new file mode 100644 index 00000000..1d67c851 --- /dev/null +++ b/smart-contracts/contracts/agent_marketplace/test_snapshots/test/complete_booking_errors.1.json @@ -0,0 +1,549 @@ +{ + "generators": { + "address": 3, + "nonce": 0 + }, + "auth": [ + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "list_service", + "args": [ + { + "symbol": "svc1" + }, + { + "symbol": "agent1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "research" + }, + { + "i128": { + "hi": 0, + "lo": 1000000 + } + }, + { + "u32": 200 + }, + { + "u32": 24 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "book_agent", + "args": [ + { + "symbol": "svc1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "i128": { + "hi": 0, + "lo": 1000000 + } + }, + { + "symbol": "bk_comp" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "complete_booking", + "args": [ + { + "symbol": "bk_comp" + } + ] + } + }, + "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": "Booking" + }, + { + "symbol": "bk_comp" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Booking" + }, + { + "symbol": "bk_comp" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "agent_id" + }, + "val": { + "symbol": "agent1" + } + }, + { + "key": { + "symbol": "booking_id" + }, + "val": { + "symbol": "bk_comp" + } + }, + { + "key": { + "symbol": "cancelled" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "client" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "completed" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "created_at" + }, + "val": { + "u64": 0 + } + }, + { + "key": { + "symbol": "escrow_amount" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "listing_id" + }, + "val": { + "symbol": "svc1" + } + }, + { + "key": { + "symbol": "rating" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ListingsByCapability" + }, + { + "symbol": "research" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ListingsByCapability" + }, + { + "symbol": "research" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "symbol": "svc1" + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ServiceListing" + }, + { + "symbol": "svc1" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ServiceListing" + }, + { + "symbol": "svc1" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "active" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "agent_id" + }, + "val": { + "symbol": "agent1" + } + }, + { + "key": { + "symbol": "availability_hours" + }, + "val": { + "u32": 24 + } + }, + { + "key": { + "symbol": "capability" + }, + "val": { + "symbol": "research" + } + }, + { + "key": { + "symbol": "listing_id" + }, + "val": { + "symbol": "svc1" + } + }, + { + "key": { + "symbol": "max_response_time" + }, + "val": { + "u32": 200 + } + }, + { + "key": { + "symbol": "owner" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "price_stroops" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "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/smart-contracts/contracts/agent_marketplace/test_snapshots/test/rate_booking_errors.1.json b/smart-contracts/contracts/agent_marketplace/test_snapshots/test/rate_booking_errors.1.json new file mode 100644 index 00000000..02a54f5d --- /dev/null +++ b/smart-contracts/contracts/agent_marketplace/test_snapshots/test/rate_booking_errors.1.json @@ -0,0 +1,674 @@ +{ + "generators": { + "address": 3, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "list_service", + "args": [ + { + "symbol": "svc1" + }, + { + "symbol": "agent1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "research" + }, + { + "i128": { + "hi": 0, + "lo": 1000000 + } + }, + { + "u32": 200 + }, + { + "u32": 24 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "book_agent", + "args": [ + { + "symbol": "svc1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "i128": { + "hi": 0, + "lo": 1000000 + } + }, + { + "symbol": "bk_rate" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "complete_booking", + "args": [ + { + "symbol": "bk_rate" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "rate_booking", + "args": [ + { + "symbol": "bk_rate" + }, + { + "u32": 5 + } + ] + } + }, + "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": "AgentRating" + }, + { + "symbol": "agent1" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "AgentRating" + }, + { + "symbol": "agent1" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "agent_id" + }, + "val": { + "symbol": "agent1" + } + }, + { + "key": { + "symbol": "rating_sum" + }, + "val": { + "u64": 5 + } + }, + { + "key": { + "symbol": "total_ratings" + }, + "val": { + "u64": 1 + } + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Booking" + }, + { + "symbol": "bk_rate" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Booking" + }, + { + "symbol": "bk_rate" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "agent_id" + }, + "val": { + "symbol": "agent1" + } + }, + { + "key": { + "symbol": "booking_id" + }, + "val": { + "symbol": "bk_rate" + } + }, + { + "key": { + "symbol": "cancelled" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "client" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "completed" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "created_at" + }, + "val": { + "u64": 0 + } + }, + { + "key": { + "symbol": "escrow_amount" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "listing_id" + }, + "val": { + "symbol": "svc1" + } + }, + { + "key": { + "symbol": "rating" + }, + "val": { + "u32": 5 + } + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ListingsByCapability" + }, + { + "symbol": "research" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ListingsByCapability" + }, + { + "symbol": "research" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "symbol": "svc1" + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ServiceListing" + }, + { + "symbol": "svc1" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ServiceListing" + }, + { + "symbol": "svc1" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "active" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "agent_id" + }, + "val": { + "symbol": "agent1" + } + }, + { + "key": { + "symbol": "availability_hours" + }, + "val": { + "u32": 24 + } + }, + { + "key": { + "symbol": "capability" + }, + "val": { + "symbol": "research" + } + }, + { + "key": { + "symbol": "listing_id" + }, + "val": { + "symbol": "svc1" + } + }, + { + "key": { + "symbol": "max_response_time" + }, + "val": { + "u32": 200 + } + }, + { + "key": { + "symbol": "owner" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "price_stroops" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "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/smart-contracts/contracts/agent_marketplace/test_snapshots/test/search_services_filters_by_max_response_time.1.json b/smart-contracts/contracts/agent_marketplace/test_snapshots/test/search_services_filters_by_max_response_time.1.json new file mode 100644 index 00000000..54509e89 --- /dev/null +++ b/smart-contracts/contracts/agent_marketplace/test_snapshots/test/search_services_filters_by_max_response_time.1.json @@ -0,0 +1,500 @@ +{ + "generators": { + "address": 2, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "list_service", + "args": [ + { + "symbol": "svc_fast" + }, + { + "symbol": "agent1" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "coding" + }, + { + "i128": { + "hi": 0, + "lo": 1000000 + } + }, + { + "u32": 100 + }, + { + "u32": 24 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "list_service", + "args": [ + { + "symbol": "svc_slow" + }, + { + "symbol": "agent2" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "coding" + }, + { + "i128": { + "hi": 0, + "lo": 1000000 + } + }, + { + "u32": 500 + }, + { + "u32": 24 + } + ] + } + }, + "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": "ListingsByCapability" + }, + { + "symbol": "coding" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ListingsByCapability" + }, + { + "symbol": "coding" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "symbol": "svc_fast" + }, + { + "symbol": "svc_slow" + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ServiceListing" + }, + { + "symbol": "svc_fast" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ServiceListing" + }, + { + "symbol": "svc_fast" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "active" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "agent_id" + }, + "val": { + "symbol": "agent1" + } + }, + { + "key": { + "symbol": "availability_hours" + }, + "val": { + "u32": 24 + } + }, + { + "key": { + "symbol": "capability" + }, + "val": { + "symbol": "coding" + } + }, + { + "key": { + "symbol": "listing_id" + }, + "val": { + "symbol": "svc_fast" + } + }, + { + "key": { + "symbol": "max_response_time" + }, + "val": { + "u32": 100 + } + }, + { + "key": { + "symbol": "owner" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "price_stroops" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ServiceListing" + }, + { + "symbol": "svc_slow" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ServiceListing" + }, + { + "symbol": "svc_slow" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "active" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "agent_id" + }, + "val": { + "symbol": "agent2" + } + }, + { + "key": { + "symbol": "availability_hours" + }, + "val": { + "u32": 24 + } + }, + { + "key": { + "symbol": "capability" + }, + "val": { + "symbol": "coding" + } + }, + { + "key": { + "symbol": "listing_id" + }, + "val": { + "symbol": "svc_slow" + } + }, + { + "key": { + "symbol": "max_response_time" + }, + "val": { + "u32": 500 + } + }, + { + "key": { + "symbol": "owner" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "price_stroops" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4095 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/smart-contracts/contracts/agent_registry/src/bond_tests.rs b/smart-contracts/contracts/agent_registry/src/bond_tests.rs index db9072e0..a016db4c 100644 --- a/smart-contracts/contracts/agent_registry/src/bond_tests.rs +++ b/smart-contracts/contracts/agent_registry/src/bond_tests.rs @@ -119,5 +119,8 @@ fn slashed_agent_must_restore_bond_before_reregistration() { DEFAULT_MIN_BOND_STROOPS ); client.register_agent(&record); - assert_eq!(client.get_bond(&agent_id).unwrap().amount_stroops, DEFAULT_MIN_BOND_STROOPS); + assert_eq!( + client.get_bond(&agent_id).unwrap().amount_stroops, + DEFAULT_MIN_BOND_STROOPS + ); } diff --git a/smart-contracts/contracts/agent_registry/src/lib.rs b/smart-contracts/contracts/agent_registry/src/lib.rs index 4e186b30..48551ce0 100644 --- a/smart-contracts/contracts/agent_registry/src/lib.rs +++ b/smart-contracts/contracts/agent_registry/src/lib.rs @@ -53,7 +53,7 @@ use events::{ MinBondSetEvent, MultisigConfigSetEvent, MultisigConfigUpdatedEvent, OperationApproved, OperationCancelled, OperationExecuted, OperationProposed, RegistryInitializedEvent, ReputationDecayed, ReputationUpdated, SlaBonusAwardedEvent, SlaSetEvent, - SlaViolationDetectedEvent, + SlaViolationDetectedEvent, StorageConfigSetEvent, }; use soroban_sdk::{ contract, contractimpl, contracttype, symbol_short, Address, BytesN, Env, Map, String, Symbol, @@ -2076,7 +2076,9 @@ impl AgentRegistryContract { /// Admin: configure the dispute-resolution contract allowed to slash bonds. pub fn set_dispute_resolver(env: Env, resolver: Address) -> Result<(), Error> { let admin = require_admin(&env)?; - env.storage().instance().set(&DataKey::DisputeResolver, &resolver); + env.storage() + .instance() + .set(&DataKey::DisputeResolver, &resolver); env.events().publish( (symbol_short!("registry"), symbol_short!("dispute")), resolver.clone(), @@ -2426,11 +2428,7 @@ impl AgentRegistryContract { } /// Reserve an agent's bond until its dispute is finally resolved. - pub fn lock_bond_for_dispute( - env: Env, - caller: Address, - agent_id: Symbol, - ) -> Result<(), Error> { + pub fn lock_bond_for_dispute(env: Env, caller: Address, agent_id: Symbol) -> Result<(), Error> { require_dispute_resolver(&env, &caller)?; let lock_key = DataKey::DisputeBondLock(agent_id.clone()); if env.storage().persistent().has(&lock_key) { diff --git a/smart-contracts/contracts/dispute_resolution/src/lib.rs b/smart-contracts/contracts/dispute_resolution/src/lib.rs index 13728b93..5f8951c2 100644 --- a/smart-contracts/contracts/dispute_resolution/src/lib.rs +++ b/smart-contracts/contracts/dispute_resolution/src/lib.rs @@ -13,10 +13,9 @@ mod types; pub use errors::Error; pub use types::*; -use soroban_sdk::xdr::ToXdr; use soroban_sdk::{ - contract, contractclient, contractimpl, contracttype, symbol_short, Address, BytesN, Env, - String, Symbol, Vec, + contract, contractclient, contractimpl, contracttype, symbol_short, Address, BytesN, Env, Map, + String, Symbol, Val, Vec, }; /// Evidence phase duration: 48 hours. @@ -150,17 +149,16 @@ fn apply_final_ruling( if *outcome == DisputeOutcome::SupportFiler { let bond_key = DataKey::AgentBond(dispute.agent_id.clone()); let cached_bond: i128 = env.storage().persistent().get(&bond_key).unwrap_or(0); - let reason = String::from_str(&env, "verified dispute upheld"); + let reason = String::from_str(env, "verified dispute upheld"); dispute.bond_slashed = registry.slash_bond_from_dispute( &env.current_contract_address(), &dispute.registry_agent_id, &50, &reason, ); - env.storage().persistent().set( - &bond_key, - &cached_bond.saturating_sub(dispute.bond_slashed), - ); + env.storage() + .persistent() + .set(&bond_key, &cached_bond.saturating_sub(dispute.bond_slashed)); let reputation_key = DataKey::AgentReputation(dispute.agent_id.clone()); let reputation: u32 = env.storage().persistent().get(&reputation_key).unwrap_or(0); env.storage() @@ -282,7 +280,9 @@ impl DisputeResolutionContract { return Err(Error::InvalidVoterPool); } } - env.storage().instance().set(&DataKey::ActiveVoters, &voters); + env.storage() + .instance() + .set(&DataKey::ActiveVoters, &voters); env.events().publish( (symbol_short!("dispute"), symbol_short!("voters")), voters.len(), @@ -292,11 +292,7 @@ impl DisputeResolutionContract { /// Set the registry-sourced reputation used for voter eligibility and /// ruling consequences. Reputation is bounded to 0..=100. - pub fn set_reputation( - env: Env, - account: Address, - reputation: u32, - ) -> Result<(), Error> { + pub fn set_reputation(env: Env, account: Address, reputation: u32) -> Result<(), Error> { require_not_paused(&env)?; require_admin(&env)?; if reputation > 100 { @@ -316,11 +312,7 @@ impl DisputeResolutionContract { /// Record a bond snapshot for provisional ruling details. Final slashes /// are computed from the registry's live bond balance. - pub fn set_agent_bond( - env: Env, - agent_id: Address, - bond_amount: i128, - ) -> Result<(), Error> { + pub fn set_agent_bond(env: Env, agent_id: Address, bond_amount: i128) -> Result<(), Error> { require_not_paused(&env)?; require_admin(&env)?; if bond_amount < 0 { @@ -337,7 +329,9 @@ impl DisputeResolutionContract { pub fn set_agent_registry(env: Env, registry: Address) -> Result<(), Error> { require_not_paused(&env)?; require_admin(&env)?; - env.storage().instance().set(&DataKey::AgentRegistry, ®istry); + env.storage() + .instance() + .set(&DataKey::AgentRegistry, ®istry); Ok(()) } @@ -358,11 +352,7 @@ impl DisputeResolutionContract { /// Record escrow associated with a task. The final `resolved` event supplies /// destination amounts to the configured payment coordinator. - pub fn set_task_escrow( - env: Env, - task_id: Symbol, - amount: i128, - ) -> Result<(), Error> { + pub fn set_task_escrow(env: Env, task_id: Symbol, amount: i128) -> Result<(), Error> { require_not_paused(&env)?; require_admin(&env)?; if amount < 0 { @@ -393,7 +383,7 @@ impl DisputeResolutionContract { ) -> Result { require_not_paused(&env)?; filer.require_auth(); - if reason.len() == 0 || reason.len() > MAX_REASON_BYTES { + if reason.is_empty() || reason.len() > MAX_REASON_BYTES { return Err(Error::InvalidReason); } let key = DataKey::Dispute(task_id.clone()); @@ -427,10 +417,8 @@ impl DisputeResolutionContract { if env.storage().persistent().has(&bond_key) { extend_ttl(&env, &bond_key); } - AgentRegistryClient::new(&env, ®istry_address).lock_bond_for_dispute( - &env.current_contract_address(), - ®istry_agent_id, - ); + AgentRegistryClient::new(&env, ®istry_address) + .lock_bond_for_dispute(&env.current_contract_address(), ®istry_agent_id); let now = env.ledger().timestamp(); let evidence_deadline = now.saturating_add(EVIDENCE_PHASE); let dispute = Dispute { @@ -504,9 +492,10 @@ impl DisputeResolutionContract { evidence_hash: evidence_hash.clone(), submitted_at: now, }; - env.storage() - .persistent() - .set(&DataKey::Evidence(dispute_id.clone(), evidence_id), &evidence); + env.storage().persistent().set( + &DataKey::Evidence(dispute_id.clone(), evidence_id), + &evidence, + ); env.storage() .persistent() .set(&count_key, &evidence_id.saturating_add(1)); @@ -524,7 +513,7 @@ impl DisputeResolutionContract { submitter, evidence_hash, submitted_at: now, - evidence_index: evidence_count, + evidence_index: evidence_id, }, ); Ok(evidence_id) @@ -613,11 +602,11 @@ impl DisputeResolutionContract { let mut filer_votes = 0u32; let mut agent_votes = 0u32; for voter in dispute.voters.iter() { - if let Some(vote) = env - .storage() - .persistent() - .get::<_, Vote>(¤t_vote_key(&env, &dispute_id, &voter)) - { + if let Some(vote) = env.storage().persistent().get::<_, Vote>(¤t_vote_key( + &env, + &dispute_id, + &voter, + )) { match vote.ruling { VoteSide::SupportFiler => filer_votes += 1, VoteSide::SupportAgent => agent_votes += 1, @@ -770,6 +759,12 @@ impl DisputeResolutionContract { .unwrap_or(0) } + /// Estimate the CPU-instruction cost of `operation` for a dispute with + /// `juror_count` jurors. Backed by the calibrated model in [`gas`]. + pub fn estimate_gas(_env: Env, operation: Symbol, juror_count: u32) -> u64 { + gas::estimate(operation, juror_count) + } + pub fn get_evidence(env: Env, dispute_id: Symbol, evidence_id: u32) -> Option { env.storage() .persistent() diff --git a/smart-contracts/contracts/dispute_resolution/src/test.rs b/smart-contracts/contracts/dispute_resolution/src/test.rs index 34bb43a5..15d386db 100644 --- a/smart-contracts/contracts/dispute_resolution/src/test.rs +++ b/smart-contracts/contracts/dispute_resolution/src/test.rs @@ -125,7 +125,10 @@ fn filing_validates_reason_and_stores_record() { let dispute = fixture.client.get_dispute(&id).unwrap(); assert_eq!(dispute.status, DisputeStatus::EvidencePhase); assert_eq!(dispute.evidence_deadline, dispute.filed_at + EVIDENCE_PHASE); - assert_eq!(dispute.voting_deadline, dispute.evidence_deadline + VOTING_PHASE); + assert_eq!( + dispute.voting_deadline, + dispute.evidence_deadline + VOTING_PHASE + ); } #[test] @@ -231,12 +234,17 @@ fn insufficient_votes_return_a_neutral_split_without_penalties() { let fixture = setup(); file(&fixture); advance_to_voting(&fixture); - fixture - .client - .vote(&fixture.task_id, &fixture.voters[0], &VoteSide::SupportFiler); + fixture.client.vote( + &fixture.task_id, + &fixture.voters[0], + &VoteSide::SupportFiler, + ); advance_to_resolution(&fixture); - assert_eq!(fixture.client.resolve(&fixture.task_id), DisputeOutcome::Tie); + assert_eq!( + fixture.client.resolve(&fixture.task_id), + DisputeOutcome::Tie + ); advance_to_appeal_finalization(&fixture); fixture.client.finalize_dispute(&fixture.task_id); let dispute = fixture.client.get_dispute(&fixture.task_id).unwrap(); @@ -293,7 +301,9 @@ fn appeal_reopens_voting_and_reverses_provisional_slash() { DisputeOutcome::SupportFiler ); assert_eq!( - fixture.client.try_appeal_dispute(&fixture.task_id, &fixture.filer), + fixture + .client + .try_appeal_dispute(&fixture.task_id, &fixture.filer), Err(Ok(Error::Unauthorized)) ); fixture @@ -352,21 +362,21 @@ fn finalized_verified_dispute_slashes_registry_bond_with_reason() { #[test] fn negative_auth_set_admin() { - let (env, client, _admin) = setup_with_admin(); - let intruder = Address::generate(&env); - env.mock_auths(&[]); - assert!(client.try_set_admin(&intruder).is_err()); + let fixture = setup(); + let intruder = Address::generate(&fixture.env); + fixture.env.mock_auths(&[]); + assert!(fixture.client.try_set_admin(&intruder).is_err()); } #[test] fn evidence_index_zero_survives_submission() { let fixture = setup(); file(&fixture); - + let hash0 = BytesN::from_array(&fixture.env, &[1u8; 32]); let hash1 = BytesN::from_array(&fixture.env, &[2u8; 32]); let hash2 = BytesN::from_array(&fixture.env, &[3u8; 32]); - + // Submit 3 pieces of evidence let id0 = fixture .client @@ -377,28 +387,28 @@ fn evidence_index_zero_survives_submission() { let id2 = fixture .client .submit_evidence(&fixture.task_id, &fixture.filer, &hash2); - + // Verify evidence IDs are sequential assert_eq!(id0, 0); assert_eq!(id1, 1); assert_eq!(id2, 2); - + // Verify count is correct assert_eq!(fixture.client.get_evidence_count(&fixture.task_id), 3); - + // CRITICAL: Verify evidence #0 is retrievable and has correct data let evidence0 = fixture.client.get_evidence(&fixture.task_id, &0).unwrap(); assert_eq!(evidence0.evidence_id, 0); assert_eq!(evidence0.evidence_hash, hash0); assert_eq!(evidence0.submitter, fixture.filer); assert_eq!(evidence0.dispute_id, fixture.task_id); - + // Verify evidence #1 and #2 are also retrievable let evidence1 = fixture.client.get_evidence(&fixture.task_id, &1).unwrap(); assert_eq!(evidence1.evidence_id, 1); assert_eq!(evidence1.evidence_hash, hash1); assert_eq!(evidence1.submitter, fixture.agent); - + let evidence2 = fixture.client.get_evidence(&fixture.task_id, &2).unwrap(); assert_eq!(evidence2.evidence_id, 2); assert_eq!(evidence2.evidence_hash, hash2); @@ -450,10 +460,7 @@ fn negative_auth_set_voters() { let (env, client, _admin) = setup_with_admin(); let voters = soroban_sdk::vec![&env, Address::generate(&env)]; env.mock_auths(&[]); - assert_eq!( - client.try_set_voters(&voters), - Err(Ok(Error::Unauthorized)) - ); + assert_eq!(client.try_set_voters(&voters), Err(Ok(Error::Unauthorized))); } #[test] diff --git a/smart-contracts/contracts/dispute_resolution/src/types.rs b/smart-contracts/contracts/dispute_resolution/src/types.rs index 36a3700d..d44b55f1 100644 --- a/smart-contracts/contracts/dispute_resolution/src/types.rs +++ b/smart-contracts/contracts/dispute_resolution/src/types.rs @@ -125,14 +125,6 @@ pub struct JurorsSetEvent { /// /// Emitted after a juror's vote is persisted, so indexers can reconstruct /// per-dispute tallies without reading every `JurorVote` record. -#[contracttype] -#[derive(Clone, Debug, PartialEq)] -pub struct VoteCastEvent { - pub dispute_id: Symbol, - pub juror: Address, - pub side: VoteSide, -} - #[contracttype] #[derive(Clone, Debug, PartialEq)] pub struct VoteCastEvent { @@ -160,13 +152,3 @@ pub struct AdminChangedEvent { pub old_admin: Address, pub new_admin: Address, } - -/// Event: VoteCast -#[contracttype] -#[derive(Clone, Debug, PartialEq)] -pub struct VoteCastEvent { - pub dispute_id: Symbol, - pub juror: Address, - pub side: VoteSide, - pub timestamp: u64, -} diff --git a/smart-contracts/contracts/dispute_resolution/test_snapshots/test/appeal_errors.1.json b/smart-contracts/contracts/dispute_resolution/test_snapshots/test/appeal_errors.1.json new file mode 100644 index 00000000..0e2f334c --- /dev/null +++ b/smart-contracts/contracts/dispute_resolution/test_snapshots/test/appeal_errors.1.json @@ -0,0 +1,616 @@ +{ + "generators": { + "address": 9, + "nonce": 0 + }, + "auth": [ + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "set_jurors", + "args": [ + { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "file_dispute", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + }, + { + "symbol": "agent1" + }, + { + "symbol": "disp_app_err" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "cast_vote", + "args": [ + { + "symbol": "disp_app_err" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "u32": 1 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "appeal_dispute", + "args": [ + { + "symbol": "disp_app_err" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [] + ], + "ledger": { + "protocol_version": 22, + "sequence_number": 0, + "timestamp": 432001, + "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": "Dispute" + }, + { + "symbol": "disp_app_err" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Dispute" + }, + { + "symbol": "disp_app_err" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "agent_id" + }, + "val": { + "symbol": "agent1" + } + }, + { + "key": { + "symbol": "appeal_deadline" + }, + "val": { + "u64": 604800 + } + }, + { + "key": { + "symbol": "appealed" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "bond_amount" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "dispute_id" + }, + "val": { + "symbol": "disp_app_err" + } + }, + { + "key": { + "symbol": "evidence_deadline" + }, + "val": { + "u64": 259200 + } + }, + { + "key": { + "symbol": "filed_at" + }, + "val": { + "u64": 0 + } + }, + { + "key": { + "symbol": "filer" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + } + }, + { + "key": { + "symbol": "jurors" + }, + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + } + }, + { + "key": { + "symbol": "resolution" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "voting_deadline" + }, + "val": { + "u64": 432000 + } + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "JurorVote" + }, + { + "symbol": "disp_app_err" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "JurorVote" + }, + { + "symbol": "disp_app_err" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "dispute_id" + }, + "val": { + "symbol": "disp_app_err" + } + }, + { + "key": { + "symbol": "juror" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "side" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "voted_at" + }, + "val": { + "u64": 0 + } + } + ] + } + } + }, + "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": "ActiveJurors" + } + ] + }, + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + } + }, + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "vec": [ + { + "symbol": "Paused" + } + ] + }, + "val": { + "bool": false + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON", + "key": { + "ledger_key_nonce": { + "nonce": 2032731177588607455 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON", + "key": { + "ledger_key_nonce": { + "nonce": 2032731177588607455 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_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/smart-contracts/contracts/dispute_resolution/test_snapshots/test/file_dispute_duplicate_fails.1.json b/smart-contracts/contracts/dispute_resolution/test_snapshots/test/file_dispute_duplicate_fails.1.json new file mode 100644 index 00000000..9b1e0578 --- /dev/null +++ b/smart-contracts/contracts/dispute_resolution/test_snapshots/test/file_dispute_duplicate_fails.1.json @@ -0,0 +1,415 @@ +{ + "generators": { + "address": 8, + "nonce": 0 + }, + "auth": [ + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "set_jurors", + "args": [ + { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "file_dispute", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + }, + { + "symbol": "agent1" + }, + { + "symbol": "disp_dup" + } + ] + } + }, + "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": "Dispute" + }, + { + "symbol": "disp_dup" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Dispute" + }, + { + "symbol": "disp_dup" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "agent_id" + }, + "val": { + "symbol": "agent1" + } + }, + { + "key": { + "symbol": "appeal_deadline" + }, + "val": { + "u64": 604800 + } + }, + { + "key": { + "symbol": "appealed" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "bond_amount" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "dispute_id" + }, + "val": { + "symbol": "disp_dup" + } + }, + { + "key": { + "symbol": "evidence_deadline" + }, + "val": { + "u64": 259200 + } + }, + { + "key": { + "symbol": "filed_at" + }, + "val": { + "u64": 0 + } + }, + { + "key": { + "symbol": "filer" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + } + }, + { + "key": { + "symbol": "jurors" + }, + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + } + }, + { + "key": { + "symbol": "resolution" + }, + "val": "void" + }, + { + "key": { + "symbol": "status" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "voting_deadline" + }, + "val": { + "u64": 432000 + } + } + ] + } + } + }, + "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": "ActiveJurors" + } + ] + }, + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + } + }, + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "vec": [ + { + "symbol": "Paused" + } + ] + }, + "val": { + "bool": false + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", + "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/smart-contracts/contracts/dispute_resolution/test_snapshots/test/initialize_cannot_run_twice.1.json b/smart-contracts/contracts/dispute_resolution/test_snapshots/test/initialize_cannot_run_twice.1.json new file mode 100644 index 00000000..04f65ffc --- /dev/null +++ b/smart-contracts/contracts/dispute_resolution/test_snapshots/test/initialize_cannot_run_twice.1.json @@ -0,0 +1,102 @@ +{ + "generators": { + "address": 2, + "nonce": 0 + }, + "auth": [ + [], + [], + [] + ], + "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": "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": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "vec": [ + { + "symbol": "Paused" + } + ] + }, + "val": { + "bool": false + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "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/smart-contracts/contracts/dispute_resolution/test_snapshots/test/resolve_dispute_agent_wins.1.json b/smart-contracts/contracts/dispute_resolution/test_snapshots/test/resolve_dispute_agent_wins.1.json new file mode 100644 index 00000000..5dba4bb9 --- /dev/null +++ b/smart-contracts/contracts/dispute_resolution/test_snapshots/test/resolve_dispute_agent_wins.1.json @@ -0,0 +1,986 @@ +{ + "generators": { + "address": 8, + "nonce": 0 + }, + "auth": [ + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "set_jurors", + "args": [ + { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "file_dispute", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + }, + { + "symbol": "agent1" + }, + { + "symbol": "disp_agent" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "cast_vote", + "args": [ + { + "symbol": "disp_agent" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "u32": 1 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "cast_vote", + "args": [ + { + "symbol": "disp_agent" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "u32": 1 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "cast_vote", + "args": [ + { + "symbol": "disp_agent" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "u32": 1 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "cast_vote", + "args": [ + { + "symbol": "disp_agent" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "u32": 0 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [] + ], + "ledger": { + "protocol_version": 22, + "sequence_number": 0, + "timestamp": 432001, + "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": "Dispute" + }, + { + "symbol": "disp_agent" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Dispute" + }, + { + "symbol": "disp_agent" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "agent_id" + }, + "val": { + "symbol": "agent1" + } + }, + { + "key": { + "symbol": "appeal_deadline" + }, + "val": { + "u64": 604800 + } + }, + { + "key": { + "symbol": "appealed" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "bond_amount" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "dispute_id" + }, + "val": { + "symbol": "disp_agent" + } + }, + { + "key": { + "symbol": "evidence_deadline" + }, + "val": { + "u64": 259200 + } + }, + { + "key": { + "symbol": "filed_at" + }, + "val": { + "u64": 0 + } + }, + { + "key": { + "symbol": "filer" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + } + }, + { + "key": { + "symbol": "jurors" + }, + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + } + }, + { + "key": { + "symbol": "resolution" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "status" + }, + "val": { + "u32": 3 + } + }, + { + "key": { + "symbol": "voting_deadline" + }, + "val": { + "u64": 432000 + } + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "JurorVote" + }, + { + "symbol": "disp_agent" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "JurorVote" + }, + { + "symbol": "disp_agent" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "dispute_id" + }, + "val": { + "symbol": "disp_agent" + } + }, + { + "key": { + "symbol": "juror" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "side" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "voted_at" + }, + "val": { + "u64": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "JurorVote" + }, + { + "symbol": "disp_agent" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "JurorVote" + }, + { + "symbol": "disp_agent" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "dispute_id" + }, + "val": { + "symbol": "disp_agent" + } + }, + { + "key": { + "symbol": "juror" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "side" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "voted_at" + }, + "val": { + "u64": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "JurorVote" + }, + { + "symbol": "disp_agent" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "JurorVote" + }, + { + "symbol": "disp_agent" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "dispute_id" + }, + "val": { + "symbol": "disp_agent" + } + }, + { + "key": { + "symbol": "juror" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + }, + { + "key": { + "symbol": "side" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "voted_at" + }, + "val": { + "u64": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "JurorVote" + }, + { + "symbol": "disp_agent" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "JurorVote" + }, + { + "symbol": "disp_agent" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "dispute_id" + }, + "val": { + "symbol": "disp_agent" + } + }, + { + "key": { + "symbol": "juror" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "side" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "voted_at" + }, + "val": { + "u64": 0 + } + } + ] + } + } + }, + "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": "ActiveJurors" + } + ] + }, + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + } + }, + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "vec": [ + { + "symbol": "Paused" + } + ] + }, + "val": { + "bool": false + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": 2032731177588607455 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": 2032731177588607455 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 4270020994084947596 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 4270020994084947596 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", + "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/smart-contracts/contracts/dispute_resolution/test_snapshots/test/submit_evidence_errors.1.json b/smart-contracts/contracts/dispute_resolution/test_snapshots/test/submit_evidence_errors.1.json new file mode 100644 index 00000000..0e1d1154 --- /dev/null +++ b/smart-contracts/contracts/dispute_resolution/test_snapshots/test/submit_evidence_errors.1.json @@ -0,0 +1,416 @@ +{ + "generators": { + "address": 8, + "nonce": 0 + }, + "auth": [ + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "set_jurors", + "args": [ + { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "file_dispute", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + }, + { + "symbol": "agent1" + }, + { + "symbol": "disp_ev" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [] + ], + "ledger": { + "protocol_version": 22, + "sequence_number": 0, + "timestamp": 259210, + "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": "Dispute" + }, + { + "symbol": "disp_ev" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Dispute" + }, + { + "symbol": "disp_ev" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "agent_id" + }, + "val": { + "symbol": "agent1" + } + }, + { + "key": { + "symbol": "appeal_deadline" + }, + "val": { + "u64": 604800 + } + }, + { + "key": { + "symbol": "appealed" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "bond_amount" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "dispute_id" + }, + "val": { + "symbol": "disp_ev" + } + }, + { + "key": { + "symbol": "evidence_deadline" + }, + "val": { + "u64": 259200 + } + }, + { + "key": { + "symbol": "filed_at" + }, + "val": { + "u64": 0 + } + }, + { + "key": { + "symbol": "filer" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + } + }, + { + "key": { + "symbol": "jurors" + }, + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + } + }, + { + "key": { + "symbol": "resolution" + }, + "val": "void" + }, + { + "key": { + "symbol": "status" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "voting_deadline" + }, + "val": { + "u64": 432000 + } + } + ] + } + } + }, + "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": "ActiveJurors" + } + ] + }, + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + } + }, + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "vec": [ + { + "symbol": "Paused" + } + ] + }, + "val": { + "bool": false + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "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/smart-contracts/contracts/dispute_resolution/tests/gas.rs b/smart-contracts/contracts/dispute_resolution/tests/gas.rs index e344fcdd..4d2defcb 100644 --- a/smart-contracts/contracts/dispute_resolution/tests/gas.rs +++ b/smart-contracts/contracts/dispute_resolution/tests/gas.rs @@ -1,5 +1,5 @@ use dispute_resolution::{DisputeResolutionContract, DisputeResolutionContractClient}; -use soroban_sdk::{testutils::Address as _, Address, Env, Symbol, Vec}; +use soroban_sdk::{testutils::Address as _, Address, Env, String, Symbol}; #[test] fn dispute_estimate_is_within_twenty_percent_of_file_dispute_cost() { @@ -9,23 +9,12 @@ fn dispute_estimate_is_within_twenty_percent_of_file_dispute_cost() { let client = DisputeResolutionContractClient::new(&env, &id); client.initialize(&Address::generate(&env)); - let jurors = Vec::from_array( - &env, - [ - Address::generate(&env), - Address::generate(&env), - Address::generate(&env), - Address::generate(&env), - Address::generate(&env), - ], - ); - client.set_jurors(&jurors); - env.cost_estimate().budget().reset_tracker(); client.file_dispute( + &Symbol::new(&env, "task"), + &Address::generate(&env), &Address::generate(&env), - &Symbol::new(&env, "agent"), - &Symbol::new(&env, "dispute"), + &String::from_str(&env, "reason"), ); let actual = env.cost_estimate().budget().cpu_instruction_cost(); let estimate = client.estimate_gas(&Symbol::new(&env, "dispute"), &5); diff --git a/smart-contracts/contracts/error-registry/src/lib.rs b/smart-contracts/contracts/error-registry/src/lib.rs index 1ff246cf..9dd30c31 100644 --- a/smart-contracts/contracts/error-registry/src/lib.rs +++ b/smart-contracts/contracts/error-registry/src/lib.rs @@ -239,9 +239,7 @@ impl ErrorRegistryContract { env.storage() .instance() .set(&DataKey::Version, &rollback_version); - env.storage() - .instance() - .remove(&DataKey::LastUpgradeLedger); + env.storage().instance().remove(&DataKey::LastUpgradeLedger); env.events().publish( (symbol_short!("upgrade"), symbol_short!("rollback")), @@ -351,11 +349,7 @@ impl ErrorRegistryContract { let mut records = Vec::new(&env); for id in ids.iter() { - if let Some(record) = env - .storage() - .persistent() - .get(&DataKey::Record(id)) - { + if let Some(record) = env.storage().persistent().get(&DataKey::Record(id)) { if is_active(now, &record) { records.push_back(record); } @@ -391,11 +385,7 @@ impl ErrorRegistryContract { scanned += 1; let error_key = DataKey::Record(id.clone()); - match env - .storage() - .persistent() - .get(&error_key) - { + match env.storage().persistent().get(&error_key) { Some(record) if is_active(now, &record) => { kept_ids.push_back(id); } diff --git a/smart-contracts/contracts/error-resolver/src/agent_errors.rs b/smart-contracts/contracts/error-resolver/src/agent_errors.rs index aae94896..8668399d 100644 --- a/smart-contracts/contracts/error-resolver/src/agent_errors.rs +++ b/smart-contracts/contracts/error-resolver/src/agent_errors.rs @@ -743,6 +743,6 @@ mod test { client.add_authorized_caller(®istry); let log = client.get_audit_log(); - assert!(log.len() >= 1); + assert!(!log.is_empty()); } } diff --git a/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/admin_can_manage_allowlist_directly.1.json b/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/admin_can_manage_allowlist_directly.1.json index bc6bf0a2..98c442e3 100644 --- a/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/admin_can_manage_allowlist_directly.1.json +++ b/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/admin_can_manage_allowlist_directly.1.json @@ -5,7 +5,25 @@ }, "auth": [ [], - [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "initialize", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], [], [ [ @@ -229,6 +247,18 @@ } ] } + }, + { + "key": { + "vec": [ + { + "symbol": "Version" + } + ] + }, + "val": { + "string": "1.0.0" + } } ] } @@ -273,6 +303,39 @@ 6311999 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], [ { "contract_data": { diff --git a/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/approve_and_execute_multisig.1.json b/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/approve_and_execute_multisig.1.json index b002848d..47d69d40 100644 --- a/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/approve_and_execute_multisig.1.json +++ b/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/approve_and_execute_multisig.1.json @@ -5,7 +5,25 @@ }, "auth": [ [], - [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "initialize", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], [ [ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", @@ -396,6 +414,18 @@ } ] } + }, + { + "key": { + "vec": [ + { + "symbol": "Version" + } + ] + }, + "val": { + "string": "1.0.0" + } } ] } @@ -473,6 +503,39 @@ 6311999 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], [ { "contract_data": { diff --git a/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/audit_log_records_operations.1.json b/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/audit_log_records_operations.1.json index b8afa1d7..479d8146 100644 --- a/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/audit_log_records_operations.1.json +++ b/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/audit_log_records_operations.1.json @@ -5,7 +5,25 @@ }, "auth": [ [], - [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "initialize", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], [ [ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", @@ -176,6 +194,18 @@ } ] } + }, + { + "key": { + "vec": [ + { + "symbol": "Version" + } + ] + }, + "val": { + "string": "1.0.0" + } } ] } @@ -220,6 +250,39 @@ 6311999 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], [ { "contract_code": { diff --git a/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/cannot_approve_twice.1.json b/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/cannot_approve_twice.1.json index e9865ecf..913f3f36 100644 --- a/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/cannot_approve_twice.1.json +++ b/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/cannot_approve_twice.1.json @@ -5,7 +5,25 @@ }, "auth": [ [], - [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "initialize", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], [ [ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", @@ -341,6 +359,18 @@ } ] } + }, + { + "key": { + "vec": [ + { + "symbol": "Version" + } + ] + }, + "val": { + "string": "1.0.0" + } } ] } @@ -385,6 +415,39 @@ 6311999 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], [ { "contract_data": { diff --git a/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/execute_fails_before_timelock.1.json b/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/execute_fails_before_timelock.1.json index 7741b033..56e6bf76 100644 --- a/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/execute_fails_before_timelock.1.json +++ b/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/execute_fails_before_timelock.1.json @@ -5,7 +5,25 @@ }, "auth": [ [], - [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "initialize", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], [ [ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", @@ -280,6 +298,18 @@ } ] } + }, + { + "key": { + "vec": [ + { + "symbol": "Version" + } + ] + }, + "val": { + "string": "1.0.0" + } } ] } @@ -324,6 +354,39 @@ 6311999 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], [ { "contract_code": { diff --git a/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/initialize_sets_admin_and_signer.1.json b/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/initialize_sets_admin_and_signer.1.json index b26585a4..f3808e33 100644 --- a/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/initialize_sets_admin_and_signer.1.json +++ b/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/initialize_sets_admin_and_signer.1.json @@ -5,7 +5,25 @@ }, "auth": [ [], - [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "initialize", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], [], [], [] @@ -118,6 +136,18 @@ } ] } + }, + { + "key": { + "vec": [ + { + "symbol": "Version" + } + ] + }, + "val": { + "string": "1.0.0" + } } ] } @@ -129,6 +159,39 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], [ { "contract_code": { diff --git a/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/non_signer_cannot_add_signer.1.json b/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/non_signer_cannot_add_signer.1.json index c225930f..d04d85de 100644 --- a/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/non_signer_cannot_add_signer.1.json +++ b/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/non_signer_cannot_add_signer.1.json @@ -5,7 +5,25 @@ }, "auth": [ [], - [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "initialize", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], [] ], "ledger": { @@ -116,6 +134,18 @@ } ] } + }, + { + "key": { + "vec": [ + { + "symbol": "Version" + } + ] + }, + "val": { + "string": "1.0.0" + } } ] } @@ -127,6 +157,39 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], [ { "contract_code": { diff --git a/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/propose_and_execute_add_caller_single_quorum.1.json b/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/propose_and_execute_add_caller_single_quorum.1.json index 4a772372..411430a3 100644 --- a/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/propose_and_execute_add_caller_single_quorum.1.json +++ b/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/propose_and_execute_add_caller_single_quorum.1.json @@ -5,7 +5,25 @@ }, "auth": [ [], - [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "initialize", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], [ [ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", @@ -285,6 +303,18 @@ } ] } + }, + { + "key": { + "vec": [ + { + "symbol": "Version" + } + ] + }, + "val": { + "string": "1.0.0" + } } ] } @@ -329,6 +359,39 @@ 6311999 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], [ { "contract_data": { diff --git a/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/set_quorum_works.1.json b/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/set_quorum_works.1.json index 48bc14d1..84a3a927 100644 --- a/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/set_quorum_works.1.json +++ b/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/set_quorum_works.1.json @@ -5,7 +5,25 @@ }, "auth": [ [], - [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "initialize", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], [ [ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", @@ -172,6 +190,18 @@ } ] } + }, + { + "key": { + "vec": [ + { + "symbol": "Version" + } + ] + }, + "val": { + "string": "1.0.0" + } } ] } @@ -216,6 +246,39 @@ 6311999 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], [ { "contract_code": { diff --git a/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/signer_can_add_and_remove_other_signers.1.json b/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/signer_can_add_and_remove_other_signers.1.json index 4ca94a44..6767f1e8 100644 --- a/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/signer_can_add_and_remove_other_signers.1.json +++ b/smart-contracts/contracts/error-resolver/test_snapshots/agent_errors/test/signer_can_add_and_remove_other_signers.1.json @@ -5,7 +5,25 @@ }, "auth": [ [], - [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "initialize", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], [ [ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", @@ -295,6 +313,18 @@ } ] } + }, + { + "key": { + "vec": [ + { + "symbol": "Version" + } + ] + }, + "val": { + "string": "1.0.0" + } } ] } @@ -372,6 +402,39 @@ 6311999 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], [ { "contract_data": { diff --git a/smart-contracts/contracts/oracle_manager/src/lib.rs b/smart-contracts/contracts/oracle_manager/src/lib.rs index e883eeda..fabda2b3 100644 --- a/smart-contracts/contracts/oracle_manager/src/lib.rs +++ b/smart-contracts/contracts/oracle_manager/src/lib.rs @@ -93,12 +93,12 @@ fn try_oracle_get_price( oracle: &Address, pair: &Symbol, ) -> Result, Error> { - use soroban_sdk::{InvokeError, Map, TryIntoVal}; + use soroban_sdk::{ConversionError, InvokeError, Map, TryIntoVal}; let fn_name = Symbol::new(env, "get_price"); let args = soroban_sdk::vec![env, pair.into_val(env)]; - let result: Result, Result> = + let result: Result, Result> = env.try_invoke_contract(oracle, &fn_name, args); match result { @@ -124,7 +124,7 @@ fn try_oracle_get_price( ); Err(Error::OracleCallFailed) } - Err(Ok(InvokeError::ContractError(code))) | Ok(Err(InvokeError::ContractError(code))) => { + Err(Ok(InvokeError::Contract(code))) => { if code == 4 { // FeedNotFound = 4 Ok(None) @@ -158,7 +158,6 @@ fn try_oracle_get_price( } } - /// Read the admin-set fallback price for `pair`, if any. fn read_fallback(env: &Env, pair: &Symbol) -> Option { let key = DataKey::FallbackPrice(pair.clone()); @@ -209,11 +208,6 @@ impl OracleManagerContract { Ok(()) } - /// Return current admin address. - pub fn get_admin(env: Env) -> Option
{ - env.storage().instance().get(&DataKey::Admin) - } - /// Pause the contract. Only admin can call this. pub fn pause(env: Env) -> Result<(), Error> { require_admin(&env)?; @@ -699,7 +693,7 @@ mod test { fn oracle_not_initialized_emits_failure_event() { let f = fixture(); init(&f); - + // Deploy oracle but DON'T initialize it let oracle_id = f.env.register(price_oracle::PriceOracleContract, ()); f.client.set_oracle(&Some(oracle_id)); @@ -707,7 +701,7 @@ mod test { // Clear events from setup let _ = f.env.events().all(); - + // Should fall back to fallback price let result = f.client.resolve_price(&f.pair); assert_eq!(result.price, 5_000_000); @@ -727,14 +721,14 @@ mod test { let f = fixture(); init(&f); let oracle_id = deploy_oracle(&f); - + let oracle_client = price_oracle::PriceOracleContractClient::new(&f.env, &oracle_id); let now = f.env.ledger().timestamp(); oracle_client.submit_price(&f.pair, &10_000_000i128, &now); - + // Pause the oracle oracle_client.pause(); - + f.client.set_oracle(&Some(oracle_id)); f.client.set_fallback_price(&f.pair, &6_000_000i128); @@ -760,7 +754,7 @@ mod test { let f = fixture(); init(&f); let oracle_id = f.env.register(price_oracle::PriceOracleContract, ()); - + // Uninitialized oracle, no fallback f.client.set_oracle(&Some(oracle_id)); @@ -786,7 +780,7 @@ mod test { let f = fixture(); init(&f); let bad_oracle = Address::generate(&f.env); - + f.client.set_oracle(&Some(bad_oracle)); f.client.set_fallback_price(&f.pair, &5_000_000i128); @@ -801,7 +795,7 @@ mod test { let failure_event = events.iter().find(|(_, topics, _)| { topics == &(symbol_short!("mgr"), symbol_short!("ora_fail")).into_val(&f.env) }); - + assert!(failure_event.is_some()); // The OracleFailureEvent struct contains pair and error_code fields } @@ -860,4 +854,3 @@ mod test { ); } } - diff --git a/smart-contracts/contracts/task_store/src/lib.rs b/smart-contracts/contracts/task_store/src/lib.rs index b222e4ca..c432ece1 100644 --- a/smart-contracts/contracts/task_store/src/lib.rs +++ b/smart-contracts/contracts/task_store/src/lib.rs @@ -311,7 +311,18 @@ fn ensure_can_update( Err(denied) } +fn read_admin(env: &Env) -> Result { + env.storage() + .instance() + .get(&DataKey::Admin) + .ok_or(Error::NotInitialized) +} +fn require_admin(env: &Env) -> Result { + let admin = read_admin(env)?; + admin.require_auth(); + Ok(admin) +} /// Call `OracleManager::resolve_price(pair)` via a low-level cross-contract /// call and return the resolved price in stroops on success, or `None` on any @@ -355,7 +366,6 @@ impl TaskStoreContract { if env.storage().instance().has(&DataKey::Admin) { return Err(Error::AlreadyInitialized); } - admin.require_auth(); env.storage().instance().set(&DataKey::Admin, &admin); env.storage().instance().set(&DataKey::Paused, &false); env.storage() @@ -366,12 +376,13 @@ impl TaskStoreContract { Ok(()) } - pub fn get_admin(env: Env) -> Option
{ + pub fn admin(env: Env) -> Option
{ env.storage().instance().get(&DataKey::Admin) } - pub fn admin(env: Env) -> Option
{ - env.storage().instance().get(&DataKey::Admin) + /// Return the current admin address, if set. + pub fn get_admin(env: Env) -> Option
{ + Self::admin(env) } /// Pause the contract. Only admin can call this. @@ -585,6 +596,12 @@ impl TaskStoreContract { Ok(result) } + /// Estimate the CPU-instruction cost of `operation` over `count` task + /// records. Backed by the calibrated model in [`gas`]. + pub fn estimate_gas(_env: Env, operation: Symbol, count: u32) -> u64 { + gas::estimate(operation, count) + } + pub fn get_task_status(env: Env, task_id: BytesN<32>) -> Result { Ok(read_metadata(&env, &task_id)?.status) } @@ -883,7 +900,7 @@ mod test { use super::*; use soroban_sdk::{ testutils::{Address as _, Events, Ledger}, - Address, Bytes, Env, IntoVal, TryFromVal, TryIntoVal, Val, + Address, Bytes, Env, IntoVal, }; struct Fixture { @@ -1166,18 +1183,45 @@ mod test { assert!(!fixture.client.is_paused()); } + #[test] + fn pause_blocks_store_task_metadata() { + let fixture = fixture(); + let agents = Vec::from_array(&fixture.env, [fixture.agent.clone()]); + let dag = Bytes::from_slice(&fixture.env, &[0x78, 0x9c, 0x03, 0x00]); + + fixture.client.pause(); + + let result = fixture.client.try_store_task_metadata( + &fixture.submitter, + &fixture.task_id, + &fixture.prompt_hash, + &agents, + &dag, + &1u32, + &None, + ); + assert_eq!(result, Err(Ok(Error::ContractPaused))); + } + // ── Admin / set_oracle_manager ──────────────────────────────────────────── #[test] fn initialize_sets_admin() { - // `fixture()` already ran `initialize`; the admin is retrievable. - let fixture = fixture(); - assert!(fixture.client.get_admin().is_some()); - assert!(fixture.client.admin().is_some()); + // Use a fresh env to test initialize from scratch (fixture() already calls it). + let env = Env::default(); + env.mock_all_auths(); + let contract_id = env.register(TaskStoreContract, ()); + let client = TaskStoreContractClient::new(&env, &contract_id); + let admin = Address::generate(&env); + client.initialize(&admin); + assert_eq!(client.get_admin(), Some(admin.clone())); + // Both accessor names resolve to the same stored admin. + assert_eq!(client.admin(), Some(admin)); } #[test] fn double_initialize_is_rejected() { + // fixture() already called initialize, so a second call should fail. let fixture = fixture(); let admin = Address::generate(&fixture.env); assert_eq!( @@ -1217,26 +1261,6 @@ mod test { ); } - #[test] - fn pause_blocks_store_task_metadata() { - let fixture = fixture(); - let agents = Vec::from_array(&fixture.env, [fixture.agent.clone()]); - let dag = Bytes::from_slice(&fixture.env, &[0x78, 0x9c, 0x03, 0x00]); - - fixture.client.pause(); - - let result = fixture.client.try_store_task_metadata( - &fixture.submitter, - &fixture.task_id, - &fixture.prompt_hash, - &agents, - &dag, - &1u32, - &None, - ); - assert_eq!(result, Err(Ok(Error::ContractPaused))); - } - // ── Oracle pricing integration (cross-contract) ──────────────────────────── #[test] @@ -1287,8 +1311,7 @@ mod test { mgr_client.initialize(&admin_mgr); mgr_client.set_oracle(&Some(oracle_id)); - // Initialise TaskStore and point it at the OracleManager. - // `fixture()` already ran `initialize`; just wire up the oracle. + // TaskStore already initialized by fixture(); just wire up OracleManager. fixture.client.set_oracle_manager(&Some(mgr_id)); // store_task_metadata with a price_pair — should stamp the oracle price. @@ -1335,7 +1358,7 @@ mod test { mgr_client.set_oracle(&Some(oracle_id)); // No fallback set → NoPriceAvailable from oracle_manager. - // `fixture()` already ran `initialize`; just wire up the oracle. + // TaskStore already initialized by fixture(); just wire up OracleManager. fixture.client.set_oracle_manager(&Some(mgr_id)); let agents = Vec::from_array(&fixture.env, [fixture.agent.clone()]); @@ -1353,44 +1376,6 @@ mod test { assert_eq!(result, Err(Ok(Error::OraclePriceUnavailable))); } - #[test] - fn unpause_allows_store_task_metadata() { - let fixture = fixture(); - fixture.client.pause(); - fixture.client.unpause(); - - store(&fixture, 1); - let metadata = fixture.client.get_task_metadata(&fixture.task_id); - assert_eq!(metadata.task_id, fixture.task_id); - } - - #[test] - fn pause_blocks_update_task_status() { - let fixture = fixture(); - store(&fixture, 1); - - fixture.client.pause(); - - let result = fixture.client.try_update_task_status( - &fixture.task_id, - &fixture.agent, - &TaskStatus::Running, - ); - assert_eq!(result, Err(Ok(Error::ContractPaused))); - } - - #[test] - fn get_task_metadata_still_works_when_paused() { - let fixture = fixture(); - store(&fixture, 1); - - fixture.client.pause(); - - // Reads should still work when paused. - let metadata = fixture.client.get_task_metadata(&fixture.task_id); - assert_eq!(metadata.task_id, fixture.task_id); - } - #[test] fn stale_oracle_with_fallback_uses_fallback_price() { use oracle_manager::OracleManagerContract; @@ -1419,7 +1404,7 @@ mod test { // Set a fallback price for this pair. mgr_client.set_fallback_price(&pair, &8_000_000i128); - // `fixture()` already ran `initialize`; just wire up the oracle. + // TaskStore already initialized by fixture(); just wire up OracleManager. fixture.client.set_oracle_manager(&Some(mgr_id)); let agents = Vec::from_array(&fixture.env, [fixture.agent.clone()]); @@ -1444,7 +1429,7 @@ mod test { let fixture = fixture(); // A dummy OracleManager address is enough (the error happens before - // we call out to it). + // we call out to it). TaskStore already initialized by fixture(). let mgr = Address::generate(&fixture.env); fixture.client.set_oracle_manager(&Some(mgr)); @@ -1494,6 +1479,7 @@ mod test { mgr_b_client.initialize(&Address::generate(&fixture.env)); mgr_b_client.set_oracle(&Some(oracle_b)); + // TaskStore already initialized by fixture(); just wire up OracleManager. // ── First task uses mgr_a ──────────────────────────────────────────── fixture.client.set_oracle_manager(&Some(mgr_a)); @@ -1538,4 +1524,44 @@ mod test { Some(20_000_000i128) ); } + + // ── Pause / Unpause ──────────────────────────────────────────────────── + + #[test] + fn unpause_allows_store_task_metadata() { + let fixture = fixture(); + fixture.client.pause(); + fixture.client.unpause(); + + store(&fixture, 1); + let metadata = fixture.client.get_task_metadata(&fixture.task_id); + assert_eq!(metadata.task_id, fixture.task_id); + } + + #[test] + fn pause_blocks_update_task_status() { + let fixture = fixture(); + store(&fixture, 1); + + fixture.client.pause(); + + let result = fixture.client.try_update_task_status( + &fixture.task_id, + &fixture.agent, + &TaskStatus::Running, + ); + assert_eq!(result, Err(Ok(Error::ContractPaused))); + } + + #[test] + fn get_task_metadata_still_works_when_paused() { + let fixture = fixture(); + store(&fixture, 1); + + fixture.client.pause(); + + // Reads should still work when paused. + let metadata = fixture.client.get_task_metadata(&fixture.task_id); + assert_eq!(metadata.task_id, fixture.task_id); + } } diff --git a/smart-contracts/contracts/task_store/src/types.rs b/smart-contracts/contracts/task_store/src/types.rs index a52ff396..4144bcff 100644 --- a/smart-contracts/contracts/task_store/src/types.rs +++ b/smart-contracts/contracts/task_store/src/types.rs @@ -134,10 +134,14 @@ pub struct TaskWithHistory { pub enum DataKey { /// Admin address — the only address permitted to call `set_oracle_manager`. Admin, - Paused, + /// Contract version string. Version, + /// Emergency-stop flag; `true` blocks all state-mutating entrypoints. Paused, + /// Legacy task metadata keyed by task ID. Task(BytesN<32>), + /// Lifecycle task record (with version-history support) keyed by task ID. + LifecycleTask(BytesN<32>), /// Optional OracleManager contract address used to resolve quoted prices. OracleManager, /// Optional coordinator address, set by the admin. @@ -145,8 +149,6 @@ pub enum DataKey { /// Alongside the task creator, this is the only role permitted to drive /// `update_status` transitions on another party's task. Coordinator, - /// Emergency-stop flag; `true` blocks all state-mutating entrypoints. - Paused, /// Address that created a task, keyed by task id. /// /// Held separately from [`DataKey::Task`] so the existing @@ -336,7 +338,16 @@ pub enum Error { NotInitialized = 11, Unauthorized = 12, UpgradeFailed = 13, + /// The contract is paused and cannot accept mutations. ContractPaused = 14, + /// OracleManager is configured but `price_pair` was not supplied. MissingPricePair = 15, + /// OracleManager returned no usable price (stale feed + no fallback). OraclePriceUnavailable = 16, + /// A batched request exceeded the maximum allowed size. + BatchTooLarge = 17, + /// The supplied budget/price value is invalid. + InvalidBudget = 18, + /// The caller is not an authorized updater for this task. + NotAuthorizedUpdater = 19, } diff --git a/smart-contracts/contracts/upgrade-manager/src/lib.rs b/smart-contracts/contracts/upgrade-manager/src/lib.rs index b5c633fa..06e63a0c 100644 --- a/smart-contracts/contracts/upgrade-manager/src/lib.rs +++ b/smart-contracts/contracts/upgrade-manager/src/lib.rs @@ -990,7 +990,7 @@ fn estimate_migration_gas(_env: &Env, migration_plan: &MigrationPlan) -> u64 { } #[cfg(test)] -mod tests { +mod contract_tests { use super::*; use soroban_sdk::{ testutils::{Address as _, Ledger as _}, @@ -1451,4 +1451,92 @@ mod tests { let result = client.try_rollback_upgrade(); assert_eq!(result, Err(Ok(UpgradeError::Unauthorized))); } + + #[test] + fn test_set_admin_and_auth() { + let (env, client, admin) = create_test_env(); + let initial_hash = test_wasm_hash(&env, 1); + client.initialize(&admin, &String::from_str(&env, "1.0.0"), &initial_hash); + + let new_admin = Address::generate(&env); + client.set_admin(&new_admin); + assert_eq!(client.get_admin(), Some(new_admin)); + } + + #[test] + fn test_pause_blocks_operations() { + let (env, client, admin) = create_test_env(); + let initial_hash = test_wasm_hash(&env, 1); + client.initialize(&admin, &String::from_str(&env, "1.0.0"), &initial_hash); + + assert!(!client.is_paused()); + client.pause(); + assert!(client.is_paused()); + + let migration_plan = MigrationPlan { + pre_migration_checks: Vec::new(&env), + data_transformations: Vec::new(&env), + post_migration_validations: Vec::new(&env), + estimated_items: 5, + }; + + let res = client.try_propose_upgrade( + &String::from_str(&env, "2.0.0"), + &test_wasm_hash(&env, 2), + &String::from_str(&env, "Paused upgrade"), + &migration_plan, + ); + assert_eq!(res, Err(Ok(UpgradeError::ContractPaused))); + + client.unpause(); + assert!(!client.is_paused()); + } + + #[test] + fn test_propose_downgrade_fails() { + let (env, client, admin) = create_test_env(); + let initial_hash = test_wasm_hash(&env, 1); + client.initialize(&admin, &String::from_str(&env, "2.0.0"), &initial_hash); + + let migration_plan = MigrationPlan { + pre_migration_checks: Vec::new(&env), + data_transformations: Vec::new(&env), + post_migration_validations: Vec::new(&env), + estimated_items: 5, + }; + + // Proposing 1.0.0 when current is 2.0.0 fails + let res = client.try_propose_upgrade( + &String::from_str(&env, "1.0.0"), + &test_wasm_hash(&env, 2), + &String::from_str(&env, "Downgrade"), + &migration_plan, + ); + assert_eq!(res, Err(Ok(UpgradeError::DowngradeNotAllowed))); + } + + #[test] + fn test_execute_unvalidated_proposal_fails() { + let (env, client, admin) = create_test_env(); + let initial_hash = test_wasm_hash(&env, 1); + client.initialize(&admin, &String::from_str(&env, "1.0.0"), &initial_hash); + + let migration_plan = MigrationPlan { + pre_migration_checks: Vec::new(&env), + data_transformations: Vec::new(&env), + post_migration_validations: Vec::new(&env), + estimated_items: 5, + }; + + client.propose_upgrade( + &String::from_str(&env, "2.0.0"), + &test_wasm_hash(&env, 2), + &String::from_str(&env, "Unvalidated"), + &migration_plan, + ); + + // Execute without validate_proposal fails + let res = client.try_execute_upgrade(); + assert_eq!(res, Err(Ok(UpgradeError::ProposalNotValidated))); + } } diff --git a/smart-contracts/contracts/upgrade-manager/test_snapshots/tests/test_execute_unvalidated_proposal_fails.1.json b/smart-contracts/contracts/upgrade-manager/test_snapshots/tests/test_execute_unvalidated_proposal_fails.1.json new file mode 100644 index 00000000..361fc4b0 --- /dev/null +++ b/smart-contracts/contracts/upgrade-manager/test_snapshots/tests/test_execute_unvalidated_proposal_fails.1.json @@ -0,0 +1,515 @@ +{ + "generators": { + "address": 2, + "nonce": 0 + }, + "auth": [ + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "propose_upgrade", + "args": [ + { + "string": "2.0.0" + }, + { + "bytes": "0200000000000000000000000000000000000000000000000000000000000000" + }, + { + "string": "Unvalidated" + }, + { + "map": [ + { + "key": { + "symbol": "data_transformations" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "estimated_items" + }, + "val": { + "u32": 5 + } + }, + { + "key": { + "symbol": "post_migration_validations" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "pre_migration_checks" + }, + "val": { + "vec": [] + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [] + ], + "ledger": { + "protocol_version": 22, + "sequence_number": 1, + "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": "CurrentVersion" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CurrentVersion" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "admin" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Initial deployment" + } + }, + { + "key": { + "symbol": "rollback_deadline" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "upgrade_ledger" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "version" + }, + "val": { + "string": "1.0.0" + } + }, + { + "key": { + "symbol": "wasm_hash" + }, + "val": { + "bytes": "0100000000000000000000000000000000000000000000000000000000000000" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535681 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Proposal" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Proposal" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Unvalidated" + } + }, + { + "key": { + "symbol": "estimated_gas" + }, + "val": { + "u64": 0 + } + }, + { + "key": { + "symbol": "migration_plan" + }, + "val": { + "map": [ + { + "key": { + "symbol": "data_transformations" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "estimated_items" + }, + "val": { + "u32": 5 + } + }, + { + "key": { + "symbol": "post_migration_validations" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "pre_migration_checks" + }, + "val": { + "vec": [] + } + } + ] + } + }, + { + "key": { + "symbol": "new_version" + }, + "val": { + "string": "2.0.0" + } + }, + { + "key": { + "symbol": "new_wasm_hash" + }, + "val": { + "bytes": "0200000000000000000000000000000000000000000000000000000000000000" + } + }, + { + "key": { + "symbol": "proposed_ledger" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "proposer" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "validated" + }, + "val": { + "bool": false + } + } + ] + } + } + }, + "ext": "v0" + }, + 535681 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Version" + }, + { + "string": "1.0.0" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Version" + }, + { + "string": "1.0.0" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "admin" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Initial deployment" + } + }, + { + "key": { + "symbol": "rollback_deadline" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "upgrade_ledger" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "version" + }, + "val": { + "string": "1.0.0" + } + }, + { + "key": { + "symbol": "wasm_hash" + }, + "val": { + "bytes": "0100000000000000000000000000000000000000000000000000000000000000" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535681 + ] + ], + [ + { + "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": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "vec": [ + { + "symbol": "Paused" + } + ] + }, + "val": { + "bool": false + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 4096 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6312000 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4096 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/smart-contracts/contracts/upgrade-manager/test_snapshots/tests/test_gas_estimation.1.json b/smart-contracts/contracts/upgrade-manager/test_snapshots/tests/test_gas_estimation.1.json new file mode 100644 index 00000000..ba5ae393 --- /dev/null +++ b/smart-contracts/contracts/upgrade-manager/test_snapshots/tests/test_gas_estimation.1.json @@ -0,0 +1,76 @@ +{ + "generators": { + "address": 2, + "nonce": 0 + }, + "auth": [ + [], + [] + ], + "ledger": { + "protocol_version": 22, + "sequence_number": 1, + "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": "ledger_key_contract_instance", + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + 4096 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4096 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/smart-contracts/contracts/upgrade-manager/test_snapshots/tests/test_initialize_upgrade_manager.1.json b/smart-contracts/contracts/upgrade-manager/test_snapshots/tests/test_initialize_upgrade_manager.1.json new file mode 100644 index 00000000..467f25d3 --- /dev/null +++ b/smart-contracts/contracts/upgrade-manager/test_snapshots/tests/test_initialize_upgrade_manager.1.json @@ -0,0 +1,285 @@ +{ + "generators": { + "address": 2, + "nonce": 0 + }, + "auth": [ + [], + [], + [], + [] + ], + "ledger": { + "protocol_version": 22, + "sequence_number": 1, + "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": "CurrentVersion" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CurrentVersion" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "admin" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Initial deployment" + } + }, + { + "key": { + "symbol": "rollback_deadline" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "upgrade_ledger" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "version" + }, + "val": { + "string": "1.0.0" + } + }, + { + "key": { + "symbol": "wasm_hash" + }, + "val": { + "bytes": "0100000000000000000000000000000000000000000000000000000000000000" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535681 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Version" + }, + { + "string": "1.0.0" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Version" + }, + { + "string": "1.0.0" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "admin" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Initial deployment" + } + }, + { + "key": { + "symbol": "rollback_deadline" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "upgrade_ledger" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "version" + }, + "val": { + "string": "1.0.0" + } + }, + { + "key": { + "symbol": "wasm_hash" + }, + "val": { + "bytes": "0100000000000000000000000000000000000000000000000000000000000000" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535681 + ] + ], + [ + { + "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": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "vec": [ + { + "symbol": "Paused" + } + ] + }, + "val": { + "bool": false + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 4096 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4096 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/smart-contracts/contracts/upgrade-manager/test_snapshots/tests/test_pause_blocks_operations.1.json b/smart-contracts/contracts/upgrade-manager/test_snapshots/tests/test_pause_blocks_operations.1.json new file mode 100644 index 00000000..e5ec5a5b --- /dev/null +++ b/smart-contracts/contracts/upgrade-manager/test_snapshots/tests/test_pause_blocks_operations.1.json @@ -0,0 +1,383 @@ +{ + "generators": { + "address": 2, + "nonce": 0 + }, + "auth": [ + [], + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "pause", + "args": [] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "unpause", + "args": [] + } + }, + "sub_invocations": [] + } + ] + ], + [] + ], + "ledger": { + "protocol_version": 22, + "sequence_number": 1, + "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": "CurrentVersion" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CurrentVersion" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "admin" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Initial deployment" + } + }, + { + "key": { + "symbol": "rollback_deadline" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "upgrade_ledger" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "version" + }, + "val": { + "string": "1.0.0" + } + }, + { + "key": { + "symbol": "wasm_hash" + }, + "val": { + "bytes": "0100000000000000000000000000000000000000000000000000000000000000" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535681 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Version" + }, + { + "string": "1.0.0" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Version" + }, + { + "string": "1.0.0" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "admin" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Initial deployment" + } + }, + { + "key": { + "symbol": "rollback_deadline" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "upgrade_ledger" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "version" + }, + "val": { + "string": "1.0.0" + } + }, + { + "key": { + "symbol": "wasm_hash" + }, + "val": { + "bytes": "0100000000000000000000000000000000000000000000000000000000000000" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535681 + ] + ], + [ + { + "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": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "vec": [ + { + "symbol": "Paused" + } + ] + }, + "val": { + "bool": false + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 4096 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6312000 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6312000 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4096 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/smart-contracts/contracts/upgrade-manager/test_snapshots/tests/test_propose_and_execute_upgrade.1.json b/smart-contracts/contracts/upgrade-manager/test_snapshots/tests/test_propose_and_execute_upgrade.1.json new file mode 100644 index 00000000..5a5dd5db --- /dev/null +++ b/smart-contracts/contracts/upgrade-manager/test_snapshots/tests/test_propose_and_execute_upgrade.1.json @@ -0,0 +1,681 @@ +{ + "generators": { + "address": 2, + "nonce": 0 + }, + "auth": [ + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "propose_upgrade", + "args": [ + { + "string": "2.0.0" + }, + { + "bytes": "0200000000000000000000000000000000000000000000000000000000000000" + }, + { + "string": "Major upgrade" + }, + { + "map": [ + { + "key": { + "symbol": "data_transformations" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "estimated_items" + }, + "val": { + "u32": 10 + } + }, + { + "key": { + "symbol": "post_migration_validations" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "pre_migration_checks" + }, + "val": { + "vec": [] + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "validate_proposal", + "args": [] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "execute_upgrade", + "args": [] + } + }, + "sub_invocations": [] + } + ] + ], + [] + ], + "ledger": { + "protocol_version": 22, + "sequence_number": 1, + "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": "CurrentVersion" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CurrentVersion" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "admin" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Major upgrade" + } + }, + { + "key": { + "symbol": "rollback_deadline" + }, + "val": { + "u32": 34561 + } + }, + { + "key": { + "symbol": "upgrade_ledger" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "version" + }, + "val": { + "string": "2.0.0" + } + }, + { + "key": { + "symbol": "wasm_hash" + }, + "val": { + "bytes": "0200000000000000000000000000000000000000000000000000000000000000" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535681 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Rollback" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Rollback" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "can_rollback" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "previous_version" + }, + "val": { + "map": [ + { + "key": { + "symbol": "admin" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Initial deployment" + } + }, + { + "key": { + "symbol": "rollback_deadline" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "upgrade_ledger" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "version" + }, + "val": { + "string": "1.0.0" + } + }, + { + "key": { + "symbol": "wasm_hash" + }, + "val": { + "bytes": "0100000000000000000000000000000000000000000000000000000000000000" + } + } + ] + } + }, + { + "key": { + "symbol": "rollback_deadline" + }, + "val": { + "u32": 34561 + } + } + ] + } + } + }, + "ext": "v0" + }, + 535681 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Version" + }, + { + "string": "1.0.0" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Version" + }, + { + "string": "1.0.0" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "admin" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Initial deployment" + } + }, + { + "key": { + "symbol": "rollback_deadline" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "upgrade_ledger" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "version" + }, + "val": { + "string": "1.0.0" + } + }, + { + "key": { + "symbol": "wasm_hash" + }, + "val": { + "bytes": "0100000000000000000000000000000000000000000000000000000000000000" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535681 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Version" + }, + { + "string": "2.0.0" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Version" + }, + { + "string": "2.0.0" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "admin" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Major upgrade" + } + }, + { + "key": { + "symbol": "rollback_deadline" + }, + "val": { + "u32": 34561 + } + }, + { + "key": { + "symbol": "upgrade_ledger" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "version" + }, + "val": { + "string": "2.0.0" + } + }, + { + "key": { + "symbol": "wasm_hash" + }, + "val": { + "bytes": "0200000000000000000000000000000000000000000000000000000000000000" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535681 + ] + ], + [ + { + "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": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "vec": [ + { + "symbol": "Paused" + } + ] + }, + "val": { + "bool": false + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 535681 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6312000 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6312000 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6312000 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 535681 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/smart-contracts/contracts/upgrade-manager/test_snapshots/tests/test_propose_downgrade_fails.1.json b/smart-contracts/contracts/upgrade-manager/test_snapshots/tests/test_propose_downgrade_fails.1.json new file mode 100644 index 00000000..ff3a332a --- /dev/null +++ b/smart-contracts/contracts/upgrade-manager/test_snapshots/tests/test_propose_downgrade_fails.1.json @@ -0,0 +1,284 @@ +{ + "generators": { + "address": 2, + "nonce": 0 + }, + "auth": [ + [], + [], + [] + ], + "ledger": { + "protocol_version": 22, + "sequence_number": 1, + "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": "CurrentVersion" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CurrentVersion" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "admin" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Initial deployment" + } + }, + { + "key": { + "symbol": "rollback_deadline" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "upgrade_ledger" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "version" + }, + "val": { + "string": "2.0.0" + } + }, + { + "key": { + "symbol": "wasm_hash" + }, + "val": { + "bytes": "0100000000000000000000000000000000000000000000000000000000000000" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535681 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Version" + }, + { + "string": "2.0.0" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Version" + }, + { + "string": "2.0.0" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "admin" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Initial deployment" + } + }, + { + "key": { + "symbol": "rollback_deadline" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "upgrade_ledger" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "version" + }, + "val": { + "string": "2.0.0" + } + }, + { + "key": { + "symbol": "wasm_hash" + }, + "val": { + "bytes": "0100000000000000000000000000000000000000000000000000000000000000" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535681 + ] + ], + [ + { + "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": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "vec": [ + { + "symbol": "Paused" + } + ] + }, + "val": { + "bool": false + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 4096 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4096 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/smart-contracts/contracts/upgrade-manager/test_snapshots/tests/test_rollback_after_deadline.1.json b/smart-contracts/contracts/upgrade-manager/test_snapshots/tests/test_rollback_after_deadline.1.json new file mode 100644 index 00000000..67e39502 --- /dev/null +++ b/smart-contracts/contracts/upgrade-manager/test_snapshots/tests/test_rollback_after_deadline.1.json @@ -0,0 +1,681 @@ +{ + "generators": { + "address": 2, + "nonce": 0 + }, + "auth": [ + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "propose_upgrade", + "args": [ + { + "string": "2.0.0" + }, + { + "bytes": "0200000000000000000000000000000000000000000000000000000000000000" + }, + { + "string": "Test upgrade" + }, + { + "map": [ + { + "key": { + "symbol": "data_transformations" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "estimated_items" + }, + "val": { + "u32": 5 + } + }, + { + "key": { + "symbol": "post_migration_validations" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "pre_migration_checks" + }, + "val": { + "vec": [] + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "validate_proposal", + "args": [] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "execute_upgrade", + "args": [] + } + }, + "sub_invocations": [] + } + ] + ], + [] + ], + "ledger": { + "protocol_version": 22, + "sequence_number": 34562, + "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": "CurrentVersion" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CurrentVersion" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "admin" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Test upgrade" + } + }, + { + "key": { + "symbol": "rollback_deadline" + }, + "val": { + "u32": 34561 + } + }, + { + "key": { + "symbol": "upgrade_ledger" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "version" + }, + "val": { + "string": "2.0.0" + } + }, + { + "key": { + "symbol": "wasm_hash" + }, + "val": { + "bytes": "0200000000000000000000000000000000000000000000000000000000000000" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535681 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Rollback" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Rollback" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "can_rollback" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "previous_version" + }, + "val": { + "map": [ + { + "key": { + "symbol": "admin" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Initial deployment" + } + }, + { + "key": { + "symbol": "rollback_deadline" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "upgrade_ledger" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "version" + }, + "val": { + "string": "1.0.0" + } + }, + { + "key": { + "symbol": "wasm_hash" + }, + "val": { + "bytes": "0100000000000000000000000000000000000000000000000000000000000000" + } + } + ] + } + }, + { + "key": { + "symbol": "rollback_deadline" + }, + "val": { + "u32": 34561 + } + } + ] + } + } + }, + "ext": "v0" + }, + 535681 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Version" + }, + { + "string": "1.0.0" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Version" + }, + { + "string": "1.0.0" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "admin" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Initial deployment" + } + }, + { + "key": { + "symbol": "rollback_deadline" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "upgrade_ledger" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "version" + }, + "val": { + "string": "1.0.0" + } + }, + { + "key": { + "symbol": "wasm_hash" + }, + "val": { + "bytes": "0100000000000000000000000000000000000000000000000000000000000000" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535681 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Version" + }, + { + "string": "2.0.0" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Version" + }, + { + "string": "2.0.0" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "admin" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Test upgrade" + } + }, + { + "key": { + "symbol": "rollback_deadline" + }, + "val": { + "u32": 34561 + } + }, + { + "key": { + "symbol": "upgrade_ledger" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "version" + }, + "val": { + "string": "2.0.0" + } + }, + { + "key": { + "symbol": "wasm_hash" + }, + "val": { + "bytes": "0200000000000000000000000000000000000000000000000000000000000000" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535681 + ] + ], + [ + { + "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": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "vec": [ + { + "symbol": "Paused" + } + ] + }, + "val": { + "bool": false + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 535681 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6312000 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6312000 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6312000 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 535681 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/smart-contracts/contracts/upgrade-manager/test_snapshots/tests/test_rollback_within_window.1.json b/smart-contracts/contracts/upgrade-manager/test_snapshots/tests/test_rollback_within_window.1.json new file mode 100644 index 00000000..e5a33a4d --- /dev/null +++ b/smart-contracts/contracts/upgrade-manager/test_snapshots/tests/test_rollback_within_window.1.json @@ -0,0 +1,618 @@ +{ + "generators": { + "address": 2, + "nonce": 0 + }, + "auth": [ + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "propose_upgrade", + "args": [ + { + "string": "2.0.0" + }, + { + "bytes": "0200000000000000000000000000000000000000000000000000000000000000" + }, + { + "string": "Test upgrade" + }, + { + "map": [ + { + "key": { + "symbol": "data_transformations" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "estimated_items" + }, + "val": { + "u32": 5 + } + }, + { + "key": { + "symbol": "post_migration_validations" + }, + "val": { + "vec": [] + } + }, + { + "key": { + "symbol": "pre_migration_checks" + }, + "val": { + "vec": [] + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "validate_proposal", + "args": [] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "execute_upgrade", + "args": [] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "rollback_upgrade", + "args": [] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [] + ], + "ledger": { + "protocol_version": 22, + "sequence_number": 1, + "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": "CurrentVersion" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CurrentVersion" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "admin" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Initial deployment" + } + }, + { + "key": { + "symbol": "rollback_deadline" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "upgrade_ledger" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "version" + }, + "val": { + "string": "1.0.0" + } + }, + { + "key": { + "symbol": "wasm_hash" + }, + "val": { + "bytes": "0100000000000000000000000000000000000000000000000000000000000000" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535681 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Version" + }, + { + "string": "1.0.0" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Version" + }, + { + "string": "1.0.0" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "admin" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Initial deployment" + } + }, + { + "key": { + "symbol": "rollback_deadline" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "upgrade_ledger" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "version" + }, + "val": { + "string": "1.0.0" + } + }, + { + "key": { + "symbol": "wasm_hash" + }, + "val": { + "bytes": "0100000000000000000000000000000000000000000000000000000000000000" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535681 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Version" + }, + { + "string": "2.0.0" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Version" + }, + { + "string": "2.0.0" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "admin" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Test upgrade" + } + }, + { + "key": { + "symbol": "rollback_deadline" + }, + "val": { + "u32": 34561 + } + }, + { + "key": { + "symbol": "upgrade_ledger" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "version" + }, + "val": { + "string": "2.0.0" + } + }, + { + "key": { + "symbol": "wasm_hash" + }, + "val": { + "bytes": "0200000000000000000000000000000000000000000000000000000000000000" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535681 + ] + ], + [ + { + "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": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "vec": [ + { + "symbol": "Paused" + } + ] + }, + "val": { + "bool": false + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 535681 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6312000 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6312000 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6312000 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6312000 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 535681 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/smart-contracts/contracts/upgrade-manager/test_snapshots/tests/test_set_admin_and_auth.1.json b/smart-contracts/contracts/upgrade-manager/test_snapshots/tests/test_set_admin_and_auth.1.json new file mode 100644 index 00000000..9e42e5bf --- /dev/null +++ b/smart-contracts/contracts/upgrade-manager/test_snapshots/tests/test_set_admin_and_auth.1.json @@ -0,0 +1,336 @@ +{ + "generators": { + "address": 3, + "nonce": 0 + }, + "auth": [ + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "set_admin", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [] + ], + "ledger": { + "protocol_version": 22, + "sequence_number": 1, + "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": "CurrentVersion" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CurrentVersion" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "admin" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Initial deployment" + } + }, + { + "key": { + "symbol": "rollback_deadline" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "upgrade_ledger" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "version" + }, + "val": { + "string": "1.0.0" + } + }, + { + "key": { + "symbol": "wasm_hash" + }, + "val": { + "bytes": "0100000000000000000000000000000000000000000000000000000000000000" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535681 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Version" + }, + { + "string": "1.0.0" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Version" + }, + { + "string": "1.0.0" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "admin" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + }, + { + "key": { + "symbol": "description" + }, + "val": { + "string": "Initial deployment" + } + }, + { + "key": { + "symbol": "rollback_deadline" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "upgrade_ledger" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "version" + }, + "val": { + "string": "1.0.0" + } + }, + { + "key": { + "symbol": "wasm_hash" + }, + "val": { + "bytes": "0100000000000000000000000000000000000000000000000000000000000000" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535681 + ] + ], + [ + { + "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": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "vec": [ + { + "symbol": "Paused" + } + ] + }, + "val": { + "bool": false + } + } + ] + } + } + } + }, + "ext": "v0" + }, + 4096 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6312000 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4096 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/smart-contracts/tests/integration/Cargo.toml b/smart-contracts/tests/integration/Cargo.toml new file mode 100644 index 00000000..6d041625 --- /dev/null +++ b/smart-contracts/tests/integration/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "integration-tests" +version = "0.1.0" +edition = "2021" +publish = false + +[lib] +crate-type = ["rlib"] + +[dependencies] +soroban-sdk = { version = "=22.0.11", features = ["testutils"] } +agent_registry = { path = "../../contracts/agent_registry" } +agent-bidding = { path = "../../contracts/agent_bidding" } +agent-marketplace = { path = "../../contracts/agent_marketplace" } +dispute-resolution = { path = "../../contracts/dispute_resolution" } +task-store = { path = "../../contracts/task_store" } +oracle-manager = { path = "../../contracts/oracle_manager" } +price-oracle = { path = "../../contracts/price_oracle" } +upgrade-manager = { path = "../../contracts/upgrade-manager", default-features = false } diff --git a/smart-contracts/tests/integration/src/lib.rs b/smart-contracts/tests/integration/src/lib.rs new file mode 100644 index 00000000..9ba7e8fe --- /dev/null +++ b/smart-contracts/tests/integration/src/lib.rs @@ -0,0 +1,275 @@ +//! # Cross-Contract Integration Tests +//! +//! Tests end-to-end workflows across multiple smart contracts (registry, bidding, +//! marketplace, task store, dispute resolution, oracle manager, price oracle). + +#![cfg(test)] + +extern crate std; + +use agent_bidding::{ + AgentBiddingContract, AgentBiddingContractClient, AuctionConfig, AuctionPhase, +}; +use agent_marketplace::{AgentMarketplaceContract, AgentMarketplaceContractClient}; +use agent_registry::{AgentRegistryContract, AgentRegistryContractClient}; +use dispute_resolution::{ + DisputeResolutionContract, DisputeResolutionContractClient, DisputeStatus, VoteSide, +}; +use oracle_manager::{OracleManagerContract, OracleManagerContractClient}; +use price_oracle::{PriceOracleContract, PriceOracleContractClient}; +use soroban_sdk::{ + testutils::{Address as _, Ledger as _}, + Address, BytesN, Env, String, Symbol, Vec, +}; +use task_store::{TaskStatus, TaskStoreContract, TaskStoreContractClient}; + +/// Full end-to-end flow: Registry -> Bidding -> Escrow Award +#[test] +fn test_flow_registry_to_bidding_and_escrow() { + let env = Env::default(); + env.mock_all_auths(); + env.ledger().set_timestamp(1_700_000_000); + + // Register Contracts + let reg_id = env.register(AgentRegistryContract, ()); + let reg_client = AgentRegistryContractClient::new(&env, ®_id); + + let bidding_id = env.register(AgentBiddingContract, ()); + let bidding_client = AgentBiddingContractClient::new(&env, &bidding_id); + + let admin = Address::generate(&env); + reg_client.initialize(&admin, &100_000i128, &86_400u64, &50u32); + bidding_client.initialize(&admin); + + let agent_owner = Address::generate(&env); + let agent_id = Symbol::new(&env, "agent_1"); + + // 1. Agent registers on-chain + reg_client.register_agent( + &agent_owner, + &agent_id, + &Symbol::new(&env, "coding"), + &String::from_str(&env, "ipfs://metadata"), + ); + + // 2. Creator creates bidding auction + let creator = Address::generate(&env); + let task_id = Symbol::new(&env, "task_auc_1"); + bidding_client.create_auction( + &creator, + &task_id, + &AuctionConfig { + duration_secs: 3600, + reveal_duration_secs: 3600, + reserve_price: 1_000_000, + max_price: 10_000_000, + bond: 500_000, + }, + ); + + // 3. Agent submits sealed bid + let salt = BytesN::from_array(&env, &[42u8; 32]); + let terms = String::from_str(&env, "Completed in 2 hours"); + let price: i128 = 2_500_000; + let comm = bidding_client.commitment_of(&task_id, &agent_owner, &price, &terms, &salt); + bidding_client.submit_bid(&task_id, &agent_owner, &comm, &500_000, &95); + + // 4. Advance time to reveal window & reveal + env.ledger().set_timestamp(1_700_000_000 + 3601); + bidding_client.reveal_bid(&task_id, &agent_owner, &price, &terms, &salt); + + // 5. Select winner & award contract + bidding_client.reveal_bids(&creator, &task_id); + bidding_client.award_contract(&creator, &task_id); + + // Verify auction awarded and escrow recorded + let auction = bidding_client.get_auction(&task_id).unwrap(); + assert_eq!(auction.phase, AuctionPhase::Awarded); + + let escrow = bidding_client.get_escrow(&task_id).unwrap(); + assert_eq!(escrow.agent, agent_owner); + assert_eq!(escrow.amount, price); +} + +/// Full end-to-end flow: Registry -> Marketplace -> Booking -> Completion & Rating +#[test] +fn test_flow_registry_to_marketplace_and_payment() { + let env = Env::default(); + env.mock_all_auths(); + env.ledger().set_timestamp(1_700_000_000); + + let reg_id = env.register(AgentRegistryContract, ()); + let reg_client = AgentRegistryContractClient::new(&env, ®_id); + + let market_id = env.register(AgentMarketplaceContract, ()); + let market_client = AgentMarketplaceContractClient::new(&env, &market_id); + + let admin = Address::generate(&env); + reg_client.initialize(&admin, &100_000i128, &86_400u64, &50u32); + market_client.initialize(&admin); + + let agent_owner = Address::generate(&env); + let agent_id = Symbol::new(&env, "expert_agent"); + + // 1. Register agent + reg_client.register_agent( + &agent_owner, + &agent_id, + &Symbol::new(&env, "research"), + &String::from_str(&env, "ipfs://meta"), + ); + + // 2. List service on marketplace + let listing_id = Symbol::new(&env, "svc_research_1"); + market_client.list_service( + &listing_id, + &agent_id, + &agent_owner, + &Symbol::new(&env, "research"), + &1_500_000i128, + &120u32, + &24u32, + ); + + // 3. Client searches service & books agent + let client_addr = Address::generate(&env); + let results = + market_client.search_services(&Symbol::new(&env, "research"), &2_000_000i128, &200u32); + assert_eq!(results.len(), 1); + + let booking_id = Symbol::new(&env, "book_1"); + market_client.book_agent(&listing_id, &client_addr, &1_500_000i128, &booking_id); + + let booking = market_client.get_booking(&booking_id).unwrap(); + assert_eq!(booking.escrow_amount, 1_500_000); + assert!(!booking.completed); + + // 4. Agent completes service & client rates + market_client.complete_booking(&booking_id); + let completed_booking = market_client.get_booking(&booking_id).unwrap(); + assert!(completed_booking.completed); + + market_client.rate_booking(&booking_id, &5u32); + let rating = market_client.get_agent_rating(&agent_id); + assert_eq!(rating.total_ratings, 1); + assert_eq!(rating.rating_sum, 5); +} + +/// Full end-to-end flow: Price Oracle -> Oracle Manager -> Task Store Metadata Pricing +#[test] +fn test_flow_oracle_to_task_store() { + let env = Env::default(); + env.mock_all_auths(); + env.ledger().set_timestamp(1_700_000_000); + + // Deploy PriceOracle + let oracle_id = env.register(PriceOracleContract, ()); + let oracle_client = PriceOracleContractClient::new(&env, &oracle_id); + let admin = Address::generate(&env); + oracle_client.initialize(&admin, &3600u64); + + let pair = Symbol::new(&env, "XLM_USD"); + oracle_client.submit_price(&pair, &12_500_000i128, &1_700_000_000); + + // Deploy OracleManager + let mgr_id = env.register(OracleManagerContract, ()); + let mgr_client = OracleManagerContractClient::new(&env, &mgr_id); + mgr_client.initialize(&admin); + mgr_client.set_oracle(&Some(oracle_id)); + + // Deploy TaskStore and wire OracleManager + let task_store_id = env.register(TaskStoreContract, ()); + let task_store_client = TaskStoreContractClient::new(&env, &task_store_id); + task_store_client.initialize(&admin); + task_store_client.set_oracle_manager(&Some(mgr_id.clone())); + + // Store task metadata with price pair + let submitter = Address::generate(&env); + let agent = Address::generate(&env); + let task_id = BytesN::from_array(&env, &[100u8; 32]); + let prompt_hash = BytesN::from_array(&env, &[101u8; 32]); + let agents = Vec::from_array(&env, [agent.clone()]); + let dag = soroban_sdk::Bytes::from_slice(&env, &[0x78, 0x9c, 0x01]); + + task_store_client.store_task_metadata( + &submitter, + &task_id, + &prompt_hash, + &agents, + &dag, + &7u32, + &Some(pair.clone()), + ); + + let meta = task_store_client.get_task_metadata(&task_id).unwrap(); + assert_eq!(meta.quoted_price_stroops, Some(12_500_000i128)); + assert_eq!(meta.price_pair, Some(pair)); + + // Update status + task_store_client.update_task_status(&task_id, &agent, &TaskStatus::Running); + assert_eq!( + task_store_client.get_task_status(&task_id).unwrap(), + TaskStatus::Running + ); +} + +/// Full end-to-end flow: Dispute Filing -> Evidence -> Juror Voting -> Resolution & Appeal +#[test] +fn test_flow_dispute_resolution_lifecycle() { + let env = Env::default(); + env.mock_all_auths(); + env.ledger().set_timestamp(1_700_000_000); + + let dispute_id = env.register(DisputeResolutionContract, ()); + let client = DisputeResolutionContractClient::new(&env, &dispute_id); + let admin = Address::generate(&env); + client.initialize(&admin); + + let jurors = soroban_sdk::vec![ + &env, + Address::generate(&env), + Address::generate(&env), + Address::generate(&env), + Address::generate(&env), + Address::generate(&env), + ]; + client.set_jurors(&jurors); + + let filer = Address::generate(&env); + let agent_id = Symbol::new(&env, "faulty_agent"); + let d_id = Symbol::new(&env, "disp_100"); + + // 1. File dispute + client.file_dispute(&filer, &agent_id, &d_id); + let dispute = client.get_dispute(&d_id).unwrap(); + assert_eq!(dispute.status, DisputeStatus::Filed); + + // 2. Submit evidence + let ev_hash = BytesN::from_array(&env, &[99u8; 32]); + client.submit_evidence(&d_id, &filer, &ev_hash); + assert_eq!(client.get_evidence_count(&d_id), 1); + + // 3. Jurors vote (3 for Client, 2 for Agent) + client.cast_vote(&d_id, &jurors.get(0).unwrap(), &VoteSide::Client); + client.cast_vote(&d_id, &jurors.get(1).unwrap(), &VoteSide::Client); + client.cast_vote(&d_id, &jurors.get(2).unwrap(), &VoteSide::Client); + client.cast_vote(&d_id, &jurors.get(3).unwrap(), &VoteSide::Agent); + client.cast_vote(&d_id, &jurors.get(4).unwrap(), &VoteSide::Agent); + + // 4. Advance past voting deadline & resolve + env.ledger() + .set_timestamp(1_700_000_000 + 259_200 + 172_800 + 1); + client.resolve_dispute(&d_id); + + let resolved = client.get_dispute(&d_id).unwrap(); + assert_eq!(resolved.status, DisputeStatus::Resolved); + assert_eq!(resolved.resolution, Some(0)); // Client won + + // 5. Appeal dispute within appeal window + let appellant = Address::generate(&env); + client.appeal_dispute(&d_id, &appellant); + + let appealed = client.get_dispute(&d_id).unwrap(); + assert_eq!(appealed.status, DisputeStatus::Appealed); + assert!(appealed.appealed); +}