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