From 520c5516a5c88ad18b58b9ec7ac626fcbba5fd70 Mon Sep 17 00:00:00 2001 From: mananuf Date: Sun, 30 Aug 2026 17:28:04 +0100 Subject: [PATCH 1/4] feat(contracts): harden agent_bidding commit-reveal against front-running (#350) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Analyses the sealed-bid auction's attack surface and closes the gaps found. The full threat model, per-attack mitigation, and residual risks live in smart-contracts/docs/agent-bidding-security.md; each claim there names the test that proves it. Front-running (A-1): `reveal_bids` became callable the instant bidding closed, so an attacker could reveal their own poor bid and finalise in the same ledger, scoring out every bidder who had not yet landed a reveal. Adds a bounded reveal window (`reveal_deadline`) and refuses finalisation while the window is open and any bid is still sealed. Early finalisation stays allowed once `revealed_count == bid_count`, where nothing is left to race. Free last-look option (A-2): non-reveal was costless, making a sealed bid a free option to walk away after reading the field. `award_contract` now settles bonds asymmetrically — revealers are refunded, non-revealers forfeit via a new `SealedBid.forfeited` flag. Commitment replay (A-3): the pre-image bound only the bidder, so identical plaintext committed identically across auctions and deployments, leaking still-sealed bids. Adds domain separation over (domain, contract_id, task_id) and publishes `commitment_of` so off-chain tooling cannot drift from what `reveal_bid` verifies. Position-size caps (A-6): `max_price` per auction, global `MAX_BID_PRICE`, `MAX_BIDDERS`, `MAX_TERMS_LEN`, bounded phase durations, checked scoring arithmetic, and a paginated `get_bidders`. The bidder cap is what keeps the loops in `reveal_bids`/`award_contract` from being pushed past the resource limit and wedging an auction. Also adds `abort_auction` so an auction nobody reveals on cannot strand bonds forever (A-7), and `require_auth` on `reveal_bids`/`award_contract`, which previously mutated state with no caller at all (A-8). Tests grow 27 → 50, covering replay (cross-auction, cross-bidder, re-reveal), late reveal, double commit, the finalisation front-run, forfeiture, every cap, and the abort path. Cargo.lock is refreshed: it still listed three removed crates and missed agent-registry's upgrade-manager dep, which fails CI's `--locked` builds. Resolves #350 Co-Authored-By: Claude Opus 5 (1M context) --- smart-contracts/Cargo.lock | 29 +- .../contracts/agent_bidding/README.md | 97 +- .../contracts/agent_bidding/src/errors.rs | 28 +- .../contracts/agent_bidding/src/lib.rs | 1857 +- .../contracts/agent_bidding/src/types.rs | 135 +- ...on_rejected_when_a_bid_was_revealed.1.json | 687 + ...n_rejected_while_reveal_window_open.1.json | 406 + ..._releases_bonds_when_nobody_reveals.1.json | 889 + ...d_contract_before_reveal_bids_fails.1.json | 149 +- ...contract_creates_escrow_and_refunds.1.json | 273 +- ...act_forfeits_bonds_of_non_revealers.1.json | 1152 + ...ntract_refunds_all_revealed_bidders.1.json | 1218 + ...d_contract_rejects_unrelated_caller.1.json | 939 + .../test/award_contract_twice_fails.1.json | 273 +- ...ed_auction_accepts_no_further_calls.1.json | 676 + ..._cannot_be_replayed_across_auctions.1.json | 949 + ...annot_be_replayed_by_another_bidder.1.json | 897 + ...ent_of_matches_what_reveal_verifies.1.json | 686 + .../create_auction_duplicate_fails.1.json | 119 +- .../test/create_auction_emits_event.1.json | 148 +- ...uction_rejects_inverted_price_range.1.json | 76 + ...tion_rejects_out_of_range_durations.1.json | 77 + ..._rejects_price_above_global_ceiling.1.json | 76 + .../test/create_auction_stores_record.1.json | 119 +- .../full_sealed_bid_reveal_award_flow.1.json | 345 +- .../get_bidders_pages_and_clamps_limit.1.json | 1469 ++ ...isplace_an_already_selected_winner.1.json} | 382 +- .../non_revealed_bidder_cannot_win.1.json | 243 +- ...eal_bid_after_reveal_deadline_fails.1.json | 620 + .../reveal_bid_before_deadline_fails.1.json | 148 +- .../reveal_bid_rejects_oversized_terms.1.json | 619 + .../reveal_bid_rejects_price_above_cap.1.json | 619 + ...eal_bid_rejects_price_below_reserve.1.json | 619 + .../test/reveal_bid_twice_fails.1.json | 186 +- .../reveal_bid_verifies_commitment.1.json | 158 +- .../reveal_bid_wrong_commitment_fails.1.json | 149 +- .../reveal_bids_before_deadline_fails.1.json | 119 +- ...t_run_while_reveals_are_outstanding.1.json | 1066 + .../test/reveal_bids_emits_event.1.json | 215 +- ...es_early_when_every_bid_is_revealed.1.json | 1066 + .../test/reveal_bids_no_revealed_fails.1.json | 122 +- ...ects_cheapest_when_reputation_equal.1.json | 250 +- ...elects_high_reputation_on_price_tie.1.json | 250 +- .../test/reveal_bids_twice_fails.1.json | 786 + ...d_cannot_be_reopened_at_a_new_price.1.json | 787 + .../submit_bid_after_deadline_fails.1.json | 120 +- .../test/submit_bid_duplicate_fails.1.json | 148 +- .../test/submit_bid_emits_event.1.json | 150 +- ...submit_bid_invalid_reputation_fails.1.json | 120 +- ...bmit_bid_rejects_beyond_max_bidders.1.json | 21608 ++++++++++++++++ .../submit_bid_rejects_zero_commitment.1.json | 405 + ...d_second_different_commitment_fails.1.json | 620 + .../test/submit_bid_succeeds.1.json | 149 +- .../test/submit_bid_wrong_bond_fails.1.json | 120 +- ...r_selection_price_preference_on_tie.1.json | 250 +- .../contracts/agent_registry/src/events.rs | 2 +- .../contracts/agent_registry/src/lib.rs | 58 +- .../contracts/agent_registry/src/test.rs | 76 +- .../contracts/agent_registry/src/upgrade.rs | 110 +- .../agent_registry/src/upgrade_tests.rs | 273 +- .../contracts/upgrade-manager/src/events.rs | 2 +- .../contracts/upgrade-manager/src/lib.rs | 136 +- .../upgrade-manager/src/migration.rs | 97 +- .../upgrade-manager/src/upgradeable.rs | 53 +- .../docs/agent-bidding-security.md | 378 + 65 files changed, 45240 insertions(+), 1808 deletions(-) create mode 100644 smart-contracts/contracts/agent_bidding/test_snapshots/test/abort_auction_rejected_when_a_bid_was_revealed.1.json create mode 100644 smart-contracts/contracts/agent_bidding/test_snapshots/test/abort_auction_rejected_while_reveal_window_open.1.json create mode 100644 smart-contracts/contracts/agent_bidding/test_snapshots/test/abort_auction_releases_bonds_when_nobody_reveals.1.json create mode 100644 smart-contracts/contracts/agent_bidding/test_snapshots/test/award_contract_forfeits_bonds_of_non_revealers.1.json create mode 100644 smart-contracts/contracts/agent_bidding/test_snapshots/test/award_contract_refunds_all_revealed_bidders.1.json create mode 100644 smart-contracts/contracts/agent_bidding/test_snapshots/test/award_contract_rejects_unrelated_caller.1.json create mode 100644 smart-contracts/contracts/agent_bidding/test_snapshots/test/cancelled_auction_accepts_no_further_calls.1.json create mode 100644 smart-contracts/contracts/agent_bidding/test_snapshots/test/commitment_cannot_be_replayed_across_auctions.1.json create mode 100644 smart-contracts/contracts/agent_bidding/test_snapshots/test/commitment_cannot_be_replayed_by_another_bidder.1.json create mode 100644 smart-contracts/contracts/agent_bidding/test_snapshots/test/commitment_of_matches_what_reveal_verifies.1.json create mode 100644 smart-contracts/contracts/agent_bidding/test_snapshots/test/create_auction_rejects_inverted_price_range.1.json create mode 100644 smart-contracts/contracts/agent_bidding/test_snapshots/test/create_auction_rejects_out_of_range_durations.1.json create mode 100644 smart-contracts/contracts/agent_bidding/test_snapshots/test/create_auction_rejects_price_above_global_ceiling.1.json create mode 100644 smart-contracts/contracts/agent_bidding/test_snapshots/test/get_bidders_pages_and_clamps_limit.1.json rename smart-contracts/contracts/agent_bidding/test_snapshots/test/{award_contract_refunds_all_losing_bidders.1.json => late_reveal_cannot_displace_an_already_selected_winner.1.json} (85%) create mode 100644 smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bid_after_reveal_deadline_fails.1.json create mode 100644 smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bid_rejects_oversized_terms.1.json create mode 100644 smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bid_rejects_price_above_cap.1.json create mode 100644 smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bid_rejects_price_below_reserve.1.json create mode 100644 smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bids_cannot_be_front_run_while_reveals_are_outstanding.1.json create mode 100644 smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bids_finalises_early_when_every_bid_is_revealed.1.json create mode 100644 smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bids_twice_fails.1.json create mode 100644 smart-contracts/contracts/agent_bidding/test_snapshots/test/revealed_bid_cannot_be_reopened_at_a_new_price.1.json create mode 100644 smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_rejects_beyond_max_bidders.1.json create mode 100644 smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_rejects_zero_commitment.1.json create mode 100644 smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_second_different_commitment_fails.1.json create mode 100644 smart-contracts/docs/agent-bidding-security.md diff --git a/smart-contracts/Cargo.lock b/smart-contracts/Cargo.lock index 6f581a53..8f3f2f53 100644 --- a/smart-contracts/Cargo.lock +++ b/smart-contracts/Cargo.lock @@ -9,13 +9,6 @@ dependencies = [ "soroban-sdk", ] -[[package]] -name = "agent-marketplace" -version = "0.1.0" -dependencies = [ - "soroban-sdk", -] - [[package]] name = "agent-registry" version = "0.1.0" @@ -25,6 +18,7 @@ dependencies = [ "rand_core", "soroban-sdk", "tokio", + "upgrade-manager", ] [[package]] @@ -488,13 +482,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "dispute-resolution" -version = "0.1.0" -dependencies = [ - "soroban-sdk", -] - [[package]] name = "downcast-rs" version = "1.2.1" @@ -1536,13 +1523,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "task-store" -version = "0.1.0" -dependencies = [ - "soroban-sdk", -] - [[package]] name = "thiserror" version = "1.0.69" @@ -1682,6 +1662,13 @@ version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" +[[package]] +name = "upgrade-manager" +version = "0.1.0" +dependencies = [ + "soroban-sdk", +] + [[package]] name = "version_check" version = "0.9.5" diff --git a/smart-contracts/contracts/agent_bidding/README.md b/smart-contracts/contracts/agent_bidding/README.md index 5c2106cb..05b0121c 100644 --- a/smart-contracts/contracts/agent_bidding/README.md +++ b/smart-contracts/contracts/agent_bidding/README.md @@ -5,63 +5,105 @@ On-chain sealed-bid auction for AI agent tasks on the [ai-net](https://github.co ## Overview The Agent Bidding contract implements a **commit-reveal auction** where agents -compete for tasks by submitting sealed bids. After the bidding period closes, -bidders reveal their plaintext prices and terms. The contract verifies each -commitment hash, then selects a winner using a **weighted composite score** -(60% price, 40% reputation). The task creator then awards the contract, which -creates an on-chain escrow entry and refunds every bidder's anti-spam bond. +compete for tasks by submitting sealed bids. After the bidding period closes, a +bounded **reveal window** opens in which bidders disclose their plaintext prices +and terms. The contract verifies each commitment hash, then selects a winner +using a **weighted composite score** (60% price, 40% reputation). The creator or +the winner then awards the contract, which creates an on-chain escrow entry, +returns the anti-spam bond of every bidder who revealed, and forfeits the bond +of every bidder who did not. + +The commit-reveal flow is hardened against front-running, bid replay, and +unbounded positions. **Read +[`docs/agent-bidding-security.md`](../../docs/agent-bidding-security.md) before +integrating** — it documents the attack surface, each mitigation, and the +residual risks the contract does *not* cover (self-declared reputation, public +reveals, Sybil bidding, and the fact that bonds and escrow are modelled as state +rather than custodied here). ## Auction Lifecycle +```text +create_auction deadline reveal_deadline + │ │ │ + ├────── bidding window ────┤ │ + │ submit_bid │ │ + │ ├───── reveal window ──────┤ + │ │ reveal_bid │ + │ │ ├──► reveal_bids + │ [Bidding] │ [Bidding] │ [Reveal] + │ │ │ ↓ + │ │ │ award_contract + │ │ │ [Awarded] + │ │ │ + │ │ └──► abort_auction + │ │ (no reveals) + │ │ [Cancelled] ``` -create_auction → submit_bid (sealed) → reveal_bid (each bidder) - ↓ ↓ - [Bidding] ──────────────────────────→ [Reveal] - ↓ - reveal_bids (winner computed) - ↓ - award_contract (escrow + refunds) - ↓ - [Awarded] -``` + +`reveal_bids` may also run **before** `reveal_deadline`, but only once every +sealed bid has been revealed — at that point there is nothing left to race. ## Functions | Function | Auth | Description | |---|---|---| -| `create_auction` | creator | Initialise auction with duration, reserve price, bond | +| `create_auction` | creator | Initialise auction from an `AuctionConfig` (durations, reserve, price cap, bond) | | `submit_bid` | bidder | Submit sealed commitment + bond + reputation | -| `reveal_bid` | bidder | Reveal plaintext (price, terms, salt) after deadline | -| `reveal_bids` | anyone | Finalise reveals and compute weighted-score winner | -| `award_contract` | anyone | Create escrow, refund all bonds, mark awarded | +| `reveal_bid` | bidder | Reveal plaintext (price, terms, salt) inside the reveal window | +| `reveal_bids` | any authenticated caller | Finalise reveals and compute the weighted-score winner | +| `award_contract` | creator **or** winner | Create escrow, settle bonds, mark awarded | +| `abort_auction` | any authenticated caller | Cancel a dead auction (no reveals) and release all bonds | +| `commitment_of` | — | Compute the commitment for a bid (see below) | | `get_auction` | — | Read auction record | | `get_bid` | — | Read a specific bid | | `get_escrow` | — | Read escrow entry | | `get_winner` | — | Read winning address | | `get_bidder_count` | — | Count bidders for a task | +| `get_bidders` | — | Read one page of the bidder list (`limit` clamped to 50) | ## Scoring Algorithm All revealed bids are normalised: -``` +```text price_score = 1000 × (max_price − price) ÷ max(max_price − min_price, 1) rep_score = 1000 × (rep − min_rep) ÷ max(max_rep − min_rep, 1) score = (60 × price_score + 40 × rep_score) ÷ 100 ``` +(`max_price`/`min_price` are the observed extremes among revealed bids, not the +auction's configured cap.) + **Tie-break:** highest score wins → if tied, lower price wins → if still tied, earliest submission wins. +> `reputation` is **self-declared** by the bidder and only range-checked. Until +> it is sourced from an attested oracle, treat the composite as price-driven +> with an advisory reputation tiebreak. + ## Commitment Hash -Bidders must compute the commitment **off-chain** before calling `submit_bid`: +Bidders compute the commitment **off-chain and locally** before calling +`submit_bid`: ```text -commitment = SHA-256(bidder_xdr || i128_price_xdr || terms_xdr || salt_xdr) +commitment = SHA-256( + domain_xdr || contract_id_xdr || task_id_xdr || + bidder_xdr || price_xdr || terms_xdr || salt_xdr +) ``` -Each field is serialised in Stellar XDR wire format and concatenated. +where `domain` is `COMMITMENT_DOMAIN` (`"ai-net:agent_bidding:v2:bid"`). Each +field is serialised in Stellar XDR wire format and concatenated. Binding the +contract id, task id, and bidder is what stops a commitment from being replayed +onto another auction, another deployment, or by another bidder. + +The `commitment_of` view is the same code path `reveal_bid` verifies against, so +tooling should mirror it rather than re-deriving the layout. Compute it +**locally** — invoking it against a public RPC endpoint hands the plaintext +price to whoever runs that node, defeating the seal. + A mismatched commitment during `reveal_bid` results in `InvalidCommitment`. ## Events @@ -75,6 +117,7 @@ All events share the first topic `bidding`: | `BidRevealedEvent` | `bid_rvld` | `reveal_bid` | | `BidsRevealedEvent` | `bids_rvld` | `reveal_bids` | | `ContractAwardedEvent` | `cntrct_aw` | `award_contract` | +| `AuctionAbortedEvent` | `aborted` | `abort_auction` | ## Running Tests @@ -94,7 +137,13 @@ cargo build -p agent-bidding --target wasm32v1-none --release | Name | Value | Note | |---|---|---| | `DEFAULT_BIDDING_DURATION_SECS` | 3 600 | 1 hour | +| `DEFAULT_REVEAL_DURATION_SECS` | 3 600 | 1 hour | +| `MIN_PHASE_DURATION_SECS` | 60 | Shortest bidding/reveal window | +| `MAX_PHASE_DURATION_SECS` | 2 592 000 | 30 days — bounds how long bonds can be locked | +| `MAX_BID_PRICE` | 10¹⁷ stroops | Global price ceiling; keeps scoring clear of `i128` overflow | +| `MAX_BIDDERS` | 100 | Bounds the loops in `reveal_bids` / `award_contract` | +| `MAX_TERMS_LEN` | 512 | Max bytes of revealed `terms` | | `MAX_REPUTATION` | 100 | Percentage scale | | `SCORE_SCALE` | 1 000 | Normalisation factor | | `PRICE_WEIGHT` | 60 | 60% | -| `REPUTATION_WEIGHT` | 40 | 40% | \ No newline at end of file +| `REPUTATION_WEIGHT` | 40 | 40% | diff --git a/smart-contracts/contracts/agent_bidding/src/errors.rs b/smart-contracts/contracts/agent_bidding/src/errors.rs index 6297fedc..98ce8200 100644 --- a/smart-contracts/contracts/agent_bidding/src/errors.rs +++ b/smart-contracts/contracts/agent_bidding/src/errors.rs @@ -5,7 +5,7 @@ //! callers can branch on the numeric code without coupling to a specific SDK //! build. //! -//! The code range used here (`1..=17`) is local to this contract. Codes are +//! The code range used here (`1..=26`) is local to this contract. Codes are //! chosen to read naturally in logs while remaining stable across releases: //! **never renumber an existing variant** once the contract is deployed. @@ -40,7 +40,7 @@ pub enum Error { NotEnoughBids = 11, /// Reputation score is out of the accepted `[0, 100]` range. InvalidReputation = 12, - /// The bid price must be positive and at least the reserve price. + /// The bid price must be positive and within `[reserve_price, max_price]`. InvalidPrice = 13, /// The locked bond does not match the auction's required bond. InvalidBond = 14, @@ -50,4 +50,28 @@ pub enum Error { WinnerNotDetermined = 16, /// The escrow for this auction has already been created. EscrowAlreadyCreated = 17, + + // ── Added by the front-running / commit-reveal hardening pass (#350) ──── + /// The reveal window has closed; this bid can no longer be revealed. + RevealPeriodEnded = 18, + /// The reveal window is still open, so the winner cannot be finalised yet. + RevealPeriodActive = 19, + /// The auction already holds [`MAX_BIDDERS`] sealed bids. + /// + /// [`MAX_BIDDERS`]: crate::MAX_BIDDERS + AuctionFull = 20, + /// A phase duration is outside `[MIN_PHASE_DURATION_SECS, MAX_PHASE_DURATION_SECS]`. + InvalidDuration = 21, + /// The revealed `terms` string exceeds [`MAX_TERMS_LEN`] bytes. + /// + /// [`MAX_TERMS_LEN`]: crate::MAX_TERMS_LEN + TermsTooLong = 22, + /// The auction's price bounds are inconsistent (e.g. `max_price < reserve_price`). + InvalidPriceRange = 23, + /// The auction has reached a terminal phase and accepts no further calls. + AuctionClosed = 24, + /// `abort_auction` was called on an auction that still has a valid reveal. + AuctionNotAbortable = 25, + /// An arithmetic operation overflowed while scoring bids. + ArithmeticOverflow = 26, } diff --git a/smart-contracts/contracts/agent_bidding/src/lib.rs b/smart-contracts/contracts/agent_bidding/src/lib.rs index 5ec4d1e0..96fc476a 100644 --- a/smart-contracts/contracts/agent_bidding/src/lib.rs +++ b/smart-contracts/contracts/agent_bidding/src/lib.rs @@ -4,29 +4,52 @@ //! //! On-chain sealed-bid auction for AI agent tasks. Agents compete for work by //! submitting **sealed bids** (commitments) during a configurable bidding -//! period. After the period closes, bidders reveal their plaintext prices and -//! terms. The contract verifies each commitment and selects a winner via a -//! weighted-score algorithm (60 % price, 40 % reputation). The creator then -//! awards the contract, which creates an escrow for the winning price and -//! refunds the bonds of every losing bidder. +//! period. After the period closes, a bounded **reveal window** opens in which +//! bidders disclose their plaintext prices and terms. The contract verifies +//! each commitment and selects a winner via a weighted-score algorithm (60 % +//! price, 40 % reputation). The creator or winner then awards the contract, +//! which creates an escrow for the winning price, returns the bonds of every +//! bidder who revealed, and forfeits the bonds of those who did not. //! //! ## Flow //! -//! 1. **`create_auction`** — creator initialises the auction with duration, -//! reserve price, and required bond. Phase = `Bidding`. +//! 1. **`create_auction`** — creator initialises the auction with a bidding +//! duration, a reveal duration, reserve price, price cap, and required +//! bond. Phase = `Bidding`. //! 2. **`submit_bid`** — agents submit sealed commitments during the bidding //! window. Each bid locks the required bond and records a self-declared -//! reputation score. -//! 3. **`reveal_bid`** — after the deadline, each bidder reveals their -//! plaintext `(price, terms, salt)`. The contract verifies the SHA-256 -//! commitment. -//! 4. **`reveal_bids`** — anyone calls this after the deadline to finalise the -//! reveal phase. The contract normalises price and reputation across all -//! revealed bids, computes composite scores, and selects the winner. -//! Phase → `Reveal`. -//! 5. **`award_contract`** — the creator (or anyone, after winner is -//! determined) creates the escrow entry for the winning price and marks -//! every bidder's bond as refunded. Phase → `Awarded`. +//! reputation score. At most [`MAX_BIDDERS`] bids are accepted. +//! 3. **`reveal_bid`** — between `deadline` and `reveal_deadline`, each bidder +//! reveals their plaintext `(price, terms, salt)`. The contract recomputes +//! the domain-separated SHA-256 commitment and compares it. +//! 4. **`reveal_bids`** — finalises the reveal phase. Callable only once the +//! reveal window has closed **or** every sealed bid has been revealed. The +//! contract normalises price and reputation across all revealed bids, +//! computes composite scores, and selects the winner. Phase → `Reveal`. +//! 5. **`award_contract`** — the creator or the winner creates the escrow +//! entry for the winning price, refunds the bonds of bidders who revealed, +//! and forfeits the rest. Phase → `Awarded`. +//! 6. **`abort_auction`** — rescue path for an auction that closed its reveal +//! window with zero reveals. Releases every bond. Phase → `Cancelled`. +//! +//! ## Security model +//! +//! The commit-reveal flow is hardened against front-running, bid replay, and +//! unbounded positions. The full threat model, including what the contract +//! does *not* defend against, lives in +//! [`docs/agent-bidding-security.md`](../../docs/agent-bidding-security.md). +//! The three load-bearing invariants: +//! +//! * **Bounded reveal window.** `reveal_bids` cannot run while the window is +//! open and bids are still outstanding, so nobody can finalise the auction +//! the instant bidding closes and win with the only revealed bid. +//! * **Domain-separated commitments.** Every commitment is bound to the +//! contract id, task id, and bidder, so a commitment observed on one auction +//! cannot be replayed onto another auction, another deployment, or another +//! bidder. +//! * **Non-reveal is not free.** A bidder who commits and stays silent +//! forfeits their bond, which prices the "last look" option that an +//! unpunished withdrawal would otherwise hand out for nothing. //! //! ## Scoring Algorithm //! @@ -38,6 +61,9 @@ //! score = (60 * price_score + 40 * rep_score) / 100 //! ``` //! +//! (`max_price`/`min_price` here are the observed extremes among revealed +//! bids, not the auction's configured cap.) +//! //! Tie-break: highest score wins. If scores are equal, the lowest-price bid //! wins. If prices are also equal, the earliest submission by order in the //! bidders list wins. @@ -45,20 +71,27 @@ //! ## Commitment Hash //! //! ```text -//! commitment = SHA-256(bidder_xdr || i128_price_xdr || terms_xdr || salt_xdr) +//! commitment = SHA-256( +//! domain_xdr || contract_id_xdr || task_id_xdr || +//! bidder_xdr || price_xdr || terms_xdr || salt_xdr +//! ) //! ``` //! -//! Each field is serialised to its Stellar XDR wire format. Off-chain tooling -//! must produce commitments using this exact encoding. +//! where `domain` is [`COMMITMENT_DOMAIN`]. Each field is serialised to its +//! Stellar XDR wire format. Off-chain tooling must produce commitments using +//! this exact encoding — or simply call the [`AgentBiddingContract::commitment_of`] +//! view, which is the same code path the contract verifies against. mod errors; mod types; pub use errors::Error; pub use types::{ - Auction, AuctionConfig, AuctionCreatedEvent, AuctionPhase, BidRevealedEvent, BidSubmittedEvent, - BidsRevealedEvent, ContractAwardedEvent, DataKey, Escrow, SealedBid, - DEFAULT_BIDDING_DURATION_SECS, MAX_REPUTATION, PRICE_WEIGHT, REPUTATION_WEIGHT, SCORE_SCALE, + Auction, AuctionAbortedEvent, AuctionConfig, AuctionCreatedEvent, AuctionPhase, + BidRevealedEvent, BidSubmittedEvent, BidsRevealedEvent, ContractAwardedEvent, DataKey, Escrow, + SealedBid, COMMITMENT_DOMAIN, DEFAULT_BIDDING_DURATION_SECS, DEFAULT_REVEAL_DURATION_SECS, + MAX_BIDDERS, MAX_BID_PRICE, MAX_PHASE_DURATION_SECS, MAX_REPUTATION, MAX_TERMS_LEN, + MIN_PHASE_DURATION_SECS, PRICE_WEIGHT, REPUTATION_WEIGHT, SCORE_SCALE, }; use soroban_sdk::{ @@ -73,6 +106,9 @@ const TTL_THRESHOLD: u32 = 100_000; /// Target TTL after extension (~31 days at 5s ledgers). const TTL_EXTEND_TO: u32 = 535_680; +/// Maximum page size accepted by [`AgentBiddingContract::get_bidders`]. +const MAX_PAGE_SIZE: u32 = 50; + // ─── Helpers ───────────────────────────────────────────────────────────────── /// Extend TTL for a single persistent key, but only when it exists. @@ -91,18 +127,59 @@ fn extend_ttl_batch(env: &Env, keys: &Vec) { } } +/// Load an auction or fail with [`Error::NotFound`]. +fn load_auction(env: &Env, task_id: &Symbol) -> Result { + env.storage() + .persistent() + .get(&DataKey::Auction(task_id.clone())) + .ok_or(Error::NotFound) +} + +/// Persist an auction and bump its rent. +fn save_auction(env: &Env, auction: &Auction) { + let key = DataKey::Auction(auction.task_id.clone()); + env.storage().persistent().set(&key, auction); + extend_ttl_for_key(env, &key); +} + +/// Reject calls against an auction that has reached a terminal phase. +fn require_live(auction: &Auction) -> Result<(), Error> { + match auction.phase { + AuctionPhase::Awarded | AuctionPhase::Cancelled => Err(Error::AuctionClosed), + _ => Ok(()), + } +} + +/// Normalise a caller-supplied phase duration, applying `default` when `0`. +/// +/// Rejects anything outside `[MIN_PHASE_DURATION_SECS, MAX_PHASE_DURATION_SECS]` +/// so a creator can neither make a window too short for honest bidders to hit +/// nor lock bonds for an unbounded stretch of time. +fn normalise_duration(secs: u64, default: u64) -> Result { + let value = if secs == 0 { default } else { secs }; + if !(MIN_PHASE_DURATION_SECS..=MAX_PHASE_DURATION_SECS).contains(&value) { + return Err(Error::InvalidDuration); + } + Ok(value) +} + /// Recompute the commitment hash from plaintext fields. /// -/// The preimage layout matches the off-chain construction: -/// `bidder_xdr || price_xdr || terms_xdr || salt_xdr`. +/// The pre-image is domain-separated by a version tag, the deployed contract +/// id, and the task id, so a commitment is only ever valid for the exact +/// `(deployment, auction, bidder)` triple it was built for. fn compute_commitment( env: &Env, + task_id: &Symbol, bidder: &Address, price: i128, terms: &String, salt: &BytesN<32>, ) -> BytesN<32> { let mut preimage = Bytes::new(env); + preimage.append(&String::from_str(env, COMMITMENT_DOMAIN).to_xdr(env)); + preimage.append(&env.current_contract_address().to_xdr(env)); + preimage.append(&task_id.clone().to_xdr(env)); preimage.append(&bidder.to_xdr(env)); preimage.append(&price.to_xdr(env)); preimage.append(&terms.clone().to_xdr(env)); @@ -110,6 +187,19 @@ fn compute_commitment( env.crypto().sha256(&preimage).into() } +/// `SCORE_SCALE * numerator / denominator`, saturating nothing and checking +/// every step. Returns [`Error::ArithmeticOverflow`] rather than panicking so +/// a pathological bid set cannot wedge the auction. +fn scaled_ratio(numerator: i128, denominator: i128) -> Result { + if denominator == 0 { + return Ok(SCORE_SCALE); + } + SCORE_SCALE + .checked_mul(numerator) + .and_then(|scaled| scaled.checked_div(denominator)) + .ok_or(Error::ArithmeticOverflow) +} + // ─── Contract ──────────────────────────────────────────────────────────────── #[contract] @@ -121,16 +211,17 @@ impl AgentBiddingContract { /// Initialise a new auction for `task_id`. /// - /// The `creator` must authorise the call. If `duration_secs` is `0`, - /// [`DEFAULT_BIDDING_DURATION_SECS`] (1 hour) is used. The task must not - /// already have an auction. Emits `(bidding, created)`. + /// The `creator` must authorise the call. Zero values in `config` fall back + /// to defaults: [`DEFAULT_BIDDING_DURATION_SECS`] for `duration_secs`, + /// [`DEFAULT_REVEAL_DURATION_SECS`] for `reveal_duration_secs`, and + /// [`MAX_BID_PRICE`] for `max_price`. The task must not already have an + /// auction. The stored config is the normalised one, so readers never see + /// a placeholder zero. Emits `(bidding, created)`. pub fn create_auction( env: Env, creator: Address, task_id: Symbol, - duration_secs: u64, - reserve_price: i128, - bond: i128, + config: AuctionConfig, ) -> Result<(), Error> { creator.require_auth(); @@ -139,32 +230,50 @@ impl AgentBiddingContract { return Err(Error::AlreadyExists); } - if bond <= 0 { + if config.bond <= 0 { return Err(Error::InvalidBond); } - if reserve_price <= 0 { + if config.reserve_price <= 0 || config.reserve_price > MAX_BID_PRICE { return Err(Error::InvalidPrice); } - let dur = if duration_secs == 0 { - DEFAULT_BIDDING_DURATION_SECS + // `0` means "no explicit cap", which still means the global ceiling — + // an uncapped i128 price would overflow the scoring arithmetic. + let max_price = if config.max_price == 0 { + MAX_BID_PRICE } else { - duration_secs + config.max_price }; + if max_price < config.reserve_price || max_price > MAX_BID_PRICE { + return Err(Error::InvalidPriceRange); + } + + let duration_secs = + normalise_duration(config.duration_secs, DEFAULT_BIDDING_DURATION_SECS)?; + let reveal_duration_secs = + normalise_duration(config.reveal_duration_secs, DEFAULT_REVEAL_DURATION_SECS)?; let now = env.ledger().timestamp(); - let deadline = now.saturating_add(dur); + let deadline = now.saturating_add(duration_secs); + let reveal_deadline = deadline.saturating_add(reveal_duration_secs); + + let normalised = AuctionConfig { + duration_secs, + reveal_duration_secs, + reserve_price: config.reserve_price, + max_price, + bond: config.bond, + }; let auction = Auction { task_id: task_id.clone(), creator: creator.clone(), - config: AuctionConfig { - duration_secs: dur, - reserve_price, - bond, - }, + config: normalised, created_at: now, deadline, + reveal_deadline, + bid_count: 0, + revealed_count: 0, phase: AuctionPhase::Bidding, escrow_created: false, }; @@ -183,10 +292,13 @@ impl AgentBiddingContract { AuctionCreatedEvent { task_id, creator, - duration_secs: dur, + duration_secs, + reveal_duration_secs, deadline, - reserve_price, - bond, + reveal_deadline, + reserve_price: config.reserve_price, + max_price, + bond: config.bond, }, ); @@ -198,11 +310,17 @@ impl AgentBiddingContract { /// Submit a sealed bid during the bidding period. /// /// * `bidder` — must authorise this call. - /// * `commitment` — SHA-256 of `(bidder, price, terms, salt)` encoded in XDR. + /// * `commitment` — see [`AgentBiddingContract::commitment_of`]. /// * `bond` — must equal the auction's required bond. /// * `reputation` — self-declared score in `[0, 100]`. /// - /// Emits `(bidding, bid_submitted)`. + /// One bid per bidder per auction; a second attempt is + /// [`Error::BidAlreadyExists`], which is what makes a commitment binding + /// (a bidder cannot keep re-committing until they like the field). The + /// auction accepts at most [`MAX_BIDDERS`] bids so that the loops in + /// `reveal_bids` and `award_contract` stay bounded. + /// + /// Emits `(bidding, bid_sbmtd)`. pub fn submit_bid( env: Env, task_id: Symbol, @@ -213,12 +331,8 @@ impl AgentBiddingContract { ) -> Result<(), Error> { bidder.require_auth(); - let auct_key = DataKey::Auction(task_id.clone()); - let auction: Auction = env - .storage() - .persistent() - .get(&auct_key) - .ok_or(Error::NotFound)?; + let mut auction = load_auction(&env, &task_id)?; + require_live(&auction)?; if auction.phase != AuctionPhase::Bidding { return Err(Error::NotInBiddingPhase); @@ -235,6 +349,9 @@ impl AgentBiddingContract { if reputation > MAX_REPUTATION { return Err(Error::InvalidReputation); } + if auction.bid_count >= MAX_BIDDERS { + return Err(Error::AuctionFull); + } // Zero-commitment is treated as invalid (non-binding). if commitment.to_array() == [0u8; 32] { @@ -248,11 +365,12 @@ impl AgentBiddingContract { let sealed = SealedBid { bidder: bidder.clone(), - commitment: commitment.clone(), + commitment, bond, reputation, revealed: false, refunded: false, + forfeited: false, price_stroops: 0, terms: String::from_str(&env, ""), score: 0, @@ -271,6 +389,9 @@ impl AgentBiddingContract { env.storage().persistent().set(&bidders_key, &bidders); extend_ttl_for_key(&env, &bidders_key); + auction.bid_count += 1; + save_auction(&env, &auction); + env.events().publish( (symbol_short!("bidding"), symbol_short!("bid_sbmtd")), BidSubmittedEvent { @@ -286,15 +407,18 @@ impl AgentBiddingContract { // ── Reveal Individual Bid ───────────────────────────────────────────── - /// Reveal a previously sealed bid after the bidding period has ended. + /// Reveal a previously sealed bid inside the reveal window. /// /// The caller provides the plaintext `(price_stroops, terms, salt)`. The /// contract recomputes the commitment hash and compares it to the stored /// commitment. A mismatch returns [`Error::InvalidCommitment`]. /// - /// * `price_stroops` — must be positive and at least the reserve price. - /// * `terms` — arbitrary bid terms (may be empty). - /// * `salt` — 32-byte blinding factor used to hide the bid preimage. + /// * Timing — only while `deadline <= now < reveal_deadline`. Too early is + /// [`Error::BiddingPeriodActive`]; too late is + /// [`Error::RevealPeriodEnded`] and the bond is forfeited at award time. + /// * `price_stroops` — must lie within `[reserve_price, max_price]`. + /// * `terms` — arbitrary bid terms, at most [`MAX_TERMS_LEN`] bytes. + /// * `salt` — 32-byte blinding factor used to hide the bid pre-image. /// /// Emits `(bidding, bid_rvld)`. pub fn reveal_bid( @@ -307,12 +431,8 @@ impl AgentBiddingContract { ) -> Result<(), Error> { bidder.require_auth(); - let auct_key = DataKey::Auction(task_id.clone()); - let auction: Auction = env - .storage() - .persistent() - .get(&auct_key) - .ok_or(Error::NotFound)?; + let mut auction = load_auction(&env, &task_id)?; + require_live(&auction)?; if auction.phase != AuctionPhase::Bidding { return Err(Error::NotInBiddingPhase); @@ -322,6 +442,9 @@ impl AgentBiddingContract { if now < auction.deadline { return Err(Error::BiddingPeriodActive); } + if now >= auction.reveal_deadline { + return Err(Error::RevealPeriodEnded); + } let bid_key = DataKey::Bid(task_id.clone(), bidder.clone()); let mut sealed: SealedBid = env @@ -334,22 +457,32 @@ impl AgentBiddingContract { return Err(Error::BidAlreadyRevealed); } - // Verify commitment. - let recomputed = compute_commitment(&env, &bidder, price_stroops, &terms, &salt); + if terms.len() > MAX_TERMS_LEN { + return Err(Error::TermsTooLong); + } + + // Verify commitment before anything else is trusted. The pre-image is + // bound to this contract and this task, so a commitment lifted from + // another auction hashes to a different digest and lands here. + let recomputed = compute_commitment(&env, &task_id, &bidder, price_stroops, &terms, &salt); if recomputed != sealed.commitment { return Err(Error::InvalidCommitment); } - if price_stroops <= 0 || price_stroops < auction.config.reserve_price { + if price_stroops < auction.config.reserve_price || price_stroops > auction.config.max_price + { return Err(Error::InvalidPrice); } sealed.revealed = true; sealed.price_stroops = price_stroops; - sealed.terms = terms.clone(); + sealed.terms = terms; env.storage().persistent().set(&bid_key, &sealed); extend_ttl_for_key(&env, &bid_key); + auction.revealed_count += 1; + save_auction(&env, &auction); + env.events().publish( (symbol_short!("bidding"), symbol_short!("bid_rvld")), BidRevealedEvent { @@ -366,20 +499,28 @@ impl AgentBiddingContract { /// Finalise the reveal phase and select the winning bidder. /// - /// Can be called by anyone after the bidding deadline. Iterates over all - /// revealed bids, normalises price and reputation across them, computes - /// the weighted composite score for each, and stores the winning bidder's - /// address. Non-revealed bids do **not** enter the scoring and cannot win. + /// Permissionless but authenticated: any `caller` may finalise, because the + /// outcome is a pure function of on-chain state, but the call still carries + /// a signature so it is attributable. /// - /// Requires at least one revealed bid. Phase transitions to `Reveal`. - /// Emits `(bidding, bids_rvld)`. - pub fn reveal_bids(env: Env, task_id: Symbol) -> Result<(), Error> { - let auct_key = DataKey::Auction(task_id.clone()); - let mut auction: Auction = env - .storage() - .persistent() - .get(&auct_key) - .ok_or(Error::NotFound)?; + /// **Timing is the anti-front-running control.** The call is refused with + /// [`Error::RevealPeriodActive`] while the reveal window is still open and + /// at least one sealed bid remains unrevealed. Without that gate, an + /// attacker could reveal their own bid and finalise in the same ledger the + /// bidding closed, winning uncontested against bidders who had not yet had + /// a chance to reveal. Once every bid is revealed there is nothing left to + /// race, so the auction may be finalised early. + /// + /// Non-revealed bids do **not** enter the scoring and cannot win. Requires + /// at least one revealed bid; an auction with none is resolved through + /// [`AgentBiddingContract::abort_auction`] instead. + /// + /// Phase transitions to `Reveal`. Emits `(bidding, bids_rvld)`. + pub fn reveal_bids(env: Env, caller: Address, task_id: Symbol) -> Result<(), Error> { + caller.require_auth(); + + let mut auction = load_auction(&env, &task_id)?; + require_live(&auction)?; if auction.phase != AuctionPhase::Bidding { return Err(Error::NotInBiddingPhase); @@ -389,6 +530,9 @@ impl AgentBiddingContract { if now < auction.deadline { return Err(Error::BiddingPeriodActive); } + if now < auction.reveal_deadline && auction.revealed_count < auction.bid_count { + return Err(Error::RevealPeriodActive); + } // Collect all revealed bids. let bidders_key = DataKey::Bidders(task_id.clone()); @@ -405,8 +549,7 @@ impl AgentBiddingContract { let mut min_rep: u32 = u32::MAX; let mut max_rep: u32 = 0; - for i in 0..bidders.len() { - let bidder = bidders.get(i).unwrap(); + for bidder in bidders.iter() { let bid_key = DataKey::Bid(task_id.clone(), bidder); if let Some(bid) = env.storage().persistent().get::<_, SealedBid>(&bid_key) { if bid.revealed { @@ -431,35 +574,43 @@ impl AgentBiddingContract { return Err(Error::NotEnoughBids); } - // Phase 2: compute scores. - let price_range = max_price - min_price; + // Phase 2: compute scores. Every price is bounded by `max_price <= + // MAX_BID_PRICE`, so these ranges cannot overflow, but the arithmetic + // is checked anyway rather than trusting that invariant to hold + // through future edits. + let price_range = max_price + .checked_sub(min_price) + .ok_or(Error::ArithmeticOverflow)?; let rep_range = (max_rep - min_rep) as i128; - // Collect scored bids index-mapped back to the bidders list. let mut best_score: i128 = -1; let mut best_price: i128 = i128::MAX; let mut winner: Option
= None; - for i in 0..revealed.len() { - let bid = revealed.get(i).unwrap(); - - let price_score: i128 = if price_range == 0 { - SCORE_SCALE - } else { - SCORE_SCALE * (max_price - bid.price_stroops) / price_range - }; - - let rep_score: i128 = if rep_range == 0 { - SCORE_SCALE - } else { - SCORE_SCALE * (bid.reputation - min_rep) as i128 / rep_range - }; - - let score = (PRICE_WEIGHT * price_score + REPUTATION_WEIGHT * rep_score) / 100; + for bid in revealed.iter() { + let price_delta = max_price + .checked_sub(bid.price_stroops) + .ok_or(Error::ArithmeticOverflow)?; + let price_score = scaled_ratio(price_delta, price_range)?; + let rep_score = scaled_ratio((bid.reputation - min_rep) as i128, rep_range)?; + + let score = PRICE_WEIGHT + .checked_mul(price_score) + .and_then(|weighted| { + REPUTATION_WEIGHT + .checked_mul(rep_score) + .and_then(|r| weighted.checked_add(r)) + }) + .and_then(|total| total.checked_div(100)) + .ok_or(Error::ArithmeticOverflow)?; // Update the stored bid with its score. let bid_key = DataKey::Bid(task_id.clone(), bid.bidder.clone()); - let mut stored: SealedBid = env.storage().persistent().get(&bid_key).unwrap(); + let mut stored: SealedBid = env + .storage() + .persistent() + .get(&bid_key) + .ok_or(Error::NotFound)?; stored.score = score; env.storage().persistent().set(&bid_key, &stored); extend_ttl_for_key(&env, &bid_key); @@ -487,8 +638,7 @@ impl AgentBiddingContract { // Transition phase. auction.phase = AuctionPhase::Reveal; - env.storage().persistent().set(&auct_key, &auction); - extend_ttl_for_key(&env, &auct_key); + save_auction(&env, &auction); env.events().publish( (symbol_short!("bidding"), symbol_short!("bids_rvld")), @@ -508,20 +658,26 @@ impl AgentBiddingContract { /// Award the contract to the winner determined by `reveal_bids`. /// + /// `caller` must authorise and must be either the auction creator or the + /// winning bidder — the two parties the escrow binds. Anyone else gets + /// [`Error::Unauthorized`]. + /// /// Creates an escrow entry locking the winning price for the winning - /// agent. Every bidder's bond is marked as refunded (the bond is an - /// anti-spam deposit returned to everyone once the auction concludes — - /// it is separate from the escrow amount). + /// agent, then settles every bond: bidders who revealed get theirs back, + /// bidders who never revealed **forfeit** theirs. The bond is an anti-spam + /// deposit separate from the escrow amount; forfeiting it is what stops a + /// sealed bid from being a free option to walk away after seeing everyone + /// else's price. /// /// Phase transitions to `Awarded`. Emits `(bidding, cntrct_aw)`. - pub fn award_contract(env: Env, task_id: Symbol) -> Result<(), Error> { - let auct_key = DataKey::Auction(task_id.clone()); - let mut auction: Auction = env - .storage() - .persistent() - .get(&auct_key) - .ok_or(Error::NotFound)?; + pub fn award_contract(env: Env, caller: Address, task_id: Symbol) -> Result<(), Error> { + caller.require_auth(); + let mut auction = load_auction(&env, &task_id)?; + + if auction.phase == AuctionPhase::Awarded { + return Err(Error::AlreadyAwarded); + } if auction.phase != AuctionPhase::Reveal { return Err(Error::NotInRevealPhase); } @@ -536,6 +692,10 @@ impl AgentBiddingContract { .get(&winner_key) .ok_or(Error::WinnerNotDetermined)?; + if caller != auction.creator && caller != winner { + return Err(Error::Unauthorized); + } + // Find the winning bid to get the price. let bid_key = DataKey::Bid(task_id.clone(), winner.clone()); let winning_bid: SealedBid = env @@ -559,7 +719,7 @@ impl AgentBiddingContract { env.storage().persistent().set(&escrow_key, &escrow); extend_ttl_for_key(&env, &escrow_key); - // Refund every bidder's bond (winner included). + // Settle every bidder's bond: refund those who revealed, forfeit the rest. let bidders_key = DataKey::Bidders(task_id.clone()); let bidders: Vec
= env .storage() @@ -568,25 +728,30 @@ impl AgentBiddingContract { .unwrap_or_else(|| Vec::new(&env)); let mut refunded_count: u32 = 0; + let mut forfeited_count: u32 = 0; let mut ttl_keys: Vec = Vec::new(&env); - for i in 0..bidders.len() { - let b = bidders.get(i).unwrap(); + for b in bidders.iter() { let bk = DataKey::Bid(task_id.clone(), b); if let Some(mut bid) = env.storage().persistent().get::<_, SealedBid>(&bk) { - if !bid.refunded { + if bid.refunded || bid.forfeited { + continue; + } + if bid.revealed { bid.refunded = true; - env.storage().persistent().set(&bk, &bid); - ttl_keys.push_back(bk); refunded_count += 1; + } else { + bid.forfeited = true; + forfeited_count += 1; } + env.storage().persistent().set(&bk, &bid); + ttl_keys.push_back(bk); } } extend_ttl_batch(&env, &ttl_keys); auction.phase = AuctionPhase::Awarded; auction.escrow_created = true; - env.storage().persistent().set(&auct_key, &auction); - extend_ttl_for_key(&env, &auct_key); + save_auction(&env, &auction); env.events().publish( (symbol_short!("bidding"), symbol_short!("cntrct_aw")), @@ -595,6 +760,80 @@ impl AgentBiddingContract { winner, escrow_amount, refunded_bidders: refunded_count, + forfeited_bidders: forfeited_count, + }, + ); + + Ok(()) + } + + // ── Abort a dead auction ─────────────────────────────────────────────── + + /// Cancel an auction whose reveal window closed without a single reveal, + /// releasing every bond. + /// + /// Without this path, an auction where nobody reveals — because the task + /// became irrelevant, or every bidder simply walked — would sit in + /// `Bidding` forever with `reveal_bids` permanently returning + /// [`Error::NotEnoughBids`], stranding all bonds. Bonds are refunded, not + /// forfeited: with no winner there is no counterparty the forfeiture would + /// compensate, so burning them would destroy value without deterring + /// anything. + /// + /// Permissionless but authenticated, so a vanished creator cannot strand + /// other people's bonds. Emits `(bidding, aborted)`. + pub fn abort_auction(env: Env, caller: Address, task_id: Symbol) -> Result<(), Error> { + caller.require_auth(); + + let mut auction = load_auction(&env, &task_id)?; + require_live(&auction)?; + + if auction.phase != AuctionPhase::Bidding { + return Err(Error::NotInBiddingPhase); + } + + let now = env.ledger().timestamp(); + if now < auction.reveal_deadline { + return Err(Error::RevealPeriodActive); + } + if auction.revealed_count > 0 { + // A revealed bid exists, so the auction can and must be finalised + // through `reveal_bids` rather than thrown away. + return Err(Error::AuctionNotAbortable); + } + + let bidders_key = DataKey::Bidders(task_id.clone()); + let bidders: Vec
= env + .storage() + .persistent() + .get(&bidders_key) + .unwrap_or_else(|| Vec::new(&env)); + + let mut refunded_count: u32 = 0; + let mut ttl_keys: Vec = Vec::new(&env); + for b in bidders.iter() { + let bk = DataKey::Bid(task_id.clone(), b); + if let Some(mut bid) = env.storage().persistent().get::<_, SealedBid>(&bk) { + if bid.refunded || bid.forfeited { + continue; + } + bid.refunded = true; + refunded_count += 1; + env.storage().persistent().set(&bk, &bid); + ttl_keys.push_back(bk); + } + } + extend_ttl_batch(&env, &ttl_keys); + + auction.phase = AuctionPhase::Cancelled; + save_auction(&env, &auction); + + env.events().publish( + (symbol_short!("bidding"), symbol_short!("aborted")), + AuctionAbortedEvent { + task_id, + caller, + refunded_bidders: refunded_count, }, ); @@ -603,6 +842,24 @@ impl AgentBiddingContract { // ── View Functions ───────────────────────────────────────────────────── + /// Compute the commitment an off-chain bidder must submit for this task. + /// + /// Exposed so tooling never has to re-implement the pre-image layout and + /// silently drift from what `reveal_bid` verifies. Callers should compute + /// this **locally** when preparing a bid — invoking it against a public RPC + /// hands the plaintext price to whoever runs that node, which defeats the + /// seal. + pub fn commitment_of( + env: Env, + task_id: Symbol, + bidder: Address, + price_stroops: i128, + terms: String, + salt: BytesN<32>, + ) -> BytesN<32> { + compute_commitment(&env, &task_id, &bidder, price_stroops, &terms, &salt) + } + /// Return the auction record for a task, if it exists. pub fn get_auction(env: Env, task_id: Symbol) -> Option { env.storage().persistent().get(&DataKey::Auction(task_id)) @@ -627,12 +884,34 @@ impl AgentBiddingContract { /// Return the number of bidders who submitted bids for this task. pub fn get_bidder_count(env: Env, task_id: Symbol) -> u32 { + env.storage() + .persistent() + .get::<_, Auction>(&DataKey::Auction(task_id)) + .map(|auction| auction.bid_count) + .unwrap_or(0) + } + + /// Return one page of the bidder list, in submission order. + /// + /// `limit` is clamped to [`MAX_PAGE_SIZE`] so a single call can never be + /// asked to materialise an unbounded vector. + pub fn get_bidders(env: Env, task_id: Symbol, start: u32, limit: u32) -> Vec
{ let bidders: Vec
= env .storage() .persistent() .get(&DataKey::Bidders(task_id)) .unwrap_or_else(|| Vec::new(&env)); - bidders.len() + + let mut page: Vec
= Vec::new(&env); + if start >= bidders.len() { + return page; + } + let capped = limit.min(MAX_PAGE_SIZE); + let end = start.saturating_add(capped).min(bidders.len()); + for i in start..end { + page.push_back(bidders.get(i).unwrap()); + } + page } } @@ -648,141 +927,249 @@ mod test { Address, Symbol, }; + const RESERVE: i128 = 1_000_000; // 0.1 XLM in stroops + const BOND: i128 = 500_000; // 0.05 XLM + const BID_SECS: u64 = 3_600; + const REVEAL_SECS: u64 = 3_600; + /// Creates a fresh in-memory test environment with the contract registered. - fn setup() -> (Env, AgentBiddingContractClient<'static>) { + fn setup() -> (Env, AgentBiddingContractClient<'static>, Address) { let env = Env::default(); env.mock_all_auths(); let id = env.register(AgentBiddingContract, ()); let client = AgentBiddingContractClient::new(&env, &id); - (env, client) + let anyone = Address::generate(&env); + (env, client, anyone) + } + + /// Default auction config: 1 h bidding, 1 h reveal, no explicit price cap. + fn config(env: &Env, duration_secs: u64) -> AuctionConfig { + let _ = env; + AuctionConfig { + duration_secs, + reveal_duration_secs: REVEAL_SECS, + reserve_price: RESERVE, + max_price: 0, // → MAX_BID_PRICE + bond: BOND, + } } /// Helper: create a test auction with default config. fn create_test_auction( - _env: &Env, + env: &Env, client: &AgentBiddingContractClient<'static>, creator: &Address, task_id: &Symbol, duration_secs: u64, ) { - client.create_auction( - creator, - task_id, - &duration_secs, - &1_000_000, // reserve price: 0.1 XLM in stroops - &500_000, // bond: 0.05 XLM - ); + client.create_auction(creator, task_id, &config(env, duration_secs)); } - /// Compute a commitment hash compatible with `compute_commitment` in the contract. - fn test_commitment( - env: &Env, - bidder: &Address, - price: i128, - terms: &String, - salt: &BytesN<32>, - ) -> BytesN<32> { - let mut preimage = Bytes::new(env); - preimage.append(&bidder.to_xdr(env)); - preimage.append(&price.to_xdr(env)); - preimage.append(&terms.clone().to_xdr(env)); - preimage.append(&salt.to_xdr(env)); - env.crypto().sha256(&preimage).into() + /// Advance the ledger clock into the reveal window of `task_id`. + fn enter_reveal_window(env: &Env, client: &AgentBiddingContractClient<'static>, task: &Symbol) { + let auction = client.get_auction(task).unwrap(); + env.ledger().set_timestamp(auction.deadline + 1); + } + + /// Advance the ledger clock past the reveal deadline of `task_id`. + fn close_reveal_window(env: &Env, client: &AgentBiddingContractClient<'static>, task: &Symbol) { + let auction = client.get_auction(task).unwrap(); + env.ledger().set_timestamp(auction.reveal_deadline + 1); + } + + fn salt(env: &Env, byte: u8) -> BytesN<32> { + BytesN::<32>::from_array(env, &[byte; 32]) + } + + fn terms(env: &Env, text: &str) -> String { + String::from_str(env, text) } // ── create_auction ─────────────────────────────────────────────────────── #[test] fn create_auction_stores_record() { - let (env, client) = setup(); + let (env, client, _) = setup(); let creator = Address::generate(&env); let task_id = Symbol::new(&env, "task_1"); client.create_auction( - &creator, &task_id, &0, // 0 → default duration - &1_000_000, &500_000, + &creator, + &task_id, + &AuctionConfig { + duration_secs: 0, // → default + reveal_duration_secs: 0, + reserve_price: RESERVE, + max_price: 0, + bond: BOND, + }, ); let auction = client.get_auction(&task_id).unwrap(); assert_eq!(auction.creator, creator); assert_eq!(auction.phase, AuctionPhase::Bidding); assert!(!auction.escrow_created); + assert_eq!(auction.bid_count, 0); + assert_eq!(auction.revealed_count, 0); assert_eq!(auction.config.duration_secs, DEFAULT_BIDDING_DURATION_SECS); + assert_eq!( + auction.config.reveal_duration_secs, + DEFAULT_REVEAL_DURATION_SECS + ); + // `0` normalises to the global ceiling, never left as a placeholder. + assert_eq!(auction.config.max_price, MAX_BID_PRICE); assert_eq!( auction.deadline, auction.created_at + DEFAULT_BIDDING_DURATION_SECS ); + assert_eq!( + auction.reveal_deadline, + auction.deadline + DEFAULT_REVEAL_DURATION_SECS + ); } #[test] fn create_auction_duplicate_fails() { - let (env, client) = setup(); + let (env, client, _) = setup(); let creator = Address::generate(&env); let task_id = Symbol::new(&env, "dup"); - client.create_auction(&creator, &task_id, &0, &1_000_000, &500_000); - let err = client.try_create_auction(&creator, &task_id, &0, &1_000_000, &500_000); - assert!(err.is_err()); + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); + let err = client.try_create_auction(&creator, &task_id, &config(&env, BID_SECS)); assert_eq!(err.err(), Some(Ok(Error::AlreadyExists))); } #[test] fn create_auction_emits_event() { - let (env, client) = setup(); + let (env, client, _) = setup(); let creator = Address::generate(&env); let task_id = Symbol::new(&env, "events"); - client.create_auction(&creator, &task_id, &0, &1_000_000, &500_000); + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); let all_events = env.events().all(); assert!(!all_events.is_empty(), "expected at least one event"); } + #[test] + fn create_auction_rejects_out_of_range_durations() { + let (env, client, _) = setup(); + let creator = Address::generate(&env); + + // Too short to be reachable by honest bidders. + let err = client.try_create_auction( + &creator, + &Symbol::new(&env, "short"), + &AuctionConfig { + duration_secs: MIN_PHASE_DURATION_SECS - 1, + reveal_duration_secs: REVEAL_SECS, + reserve_price: RESERVE, + max_price: 0, + bond: BOND, + }, + ); + assert_eq!(err.err(), Some(Ok(Error::InvalidDuration))); + + // Long enough to lock bonds effectively forever. + let err = client.try_create_auction( + &creator, + &Symbol::new(&env, "long"), + &AuctionConfig { + duration_secs: BID_SECS, + reveal_duration_secs: MAX_PHASE_DURATION_SECS + 1, + reserve_price: RESERVE, + max_price: 0, + bond: BOND, + }, + ); + assert_eq!(err.err(), Some(Ok(Error::InvalidDuration))); + } + + #[test] + fn create_auction_rejects_inverted_price_range() { + let (env, client, _) = setup(); + let creator = Address::generate(&env); + + let err = client.try_create_auction( + &creator, + &Symbol::new(&env, "inverted"), + &AuctionConfig { + duration_secs: BID_SECS, + reveal_duration_secs: REVEAL_SECS, + reserve_price: 5_000_000, + max_price: 1_000_000, // below the reserve + bond: BOND, + }, + ); + assert_eq!(err.err(), Some(Ok(Error::InvalidPriceRange))); + } + + #[test] + fn create_auction_rejects_price_above_global_ceiling() { + let (env, client, _) = setup(); + let creator = Address::generate(&env); + + let err = client.try_create_auction( + &creator, + &Symbol::new(&env, "huge"), + &AuctionConfig { + duration_secs: BID_SECS, + reveal_duration_secs: REVEAL_SECS, + reserve_price: MAX_BID_PRICE + 1, + max_price: 0, + bond: BOND, + }, + ); + assert_eq!(err.err(), Some(Ok(Error::InvalidPrice))); + } + // ── submit_bid ─────────────────────────────────────────────────────────── #[test] fn submit_bid_succeeds() { - let (env, client) = setup(); + let (env, client, _) = setup(); let creator = Address::generate(&env); let bidder = Address::generate(&env); let task_id = Symbol::new(&env, "bid_test"); - create_test_auction(&env, &client, &creator, &task_id, 3_600); + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); - let salt = BytesN::<32>::from_array(&env, &[1u8; 32]); + let s = salt(&env, 1); let price: i128 = 5_000_000; - let terms = String::from_str(&env, "Deliver in 3 days"); - let commitment = test_commitment(&env, &bidder, price, &terms, &salt); + let t = terms(&env, "Deliver in 3 days"); + let commitment = client.commitment_of(&task_id, &bidder, &price, &t, &s); - client.submit_bid(&task_id, &bidder, &commitment, &500_000, &85); + client.submit_bid(&task_id, &bidder, &commitment, &BOND, &85); let bid = client.get_bid(&task_id, &bidder).unwrap(); assert_eq!(bid.bidder, bidder); assert_eq!(bid.commitment, commitment); - assert_eq!(bid.bond, 500_000); + assert_eq!(bid.bond, BOND); assert_eq!(bid.reputation, 85); assert!(!bid.revealed); + assert!(!bid.forfeited); assert_eq!(client.get_bidder_count(&task_id), 1); + assert_eq!(client.get_auction(&task_id).unwrap().bid_count, 1); } #[test] fn submit_bid_emits_event() { - let (env, client) = setup(); + let (env, client, _) = setup(); let creator = Address::generate(&env); let bidder = Address::generate(&env); let task_id = Symbol::new(&env, "bid_event"); - create_test_auction(&env, &client, &creator, &task_id, 3_600); + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); - let salt = BytesN::<32>::from_array(&env, &[2u8; 32]); + let s = salt(&env, 2); let price: i128 = 3_000_000; - let terms = String::from_str(&env, "Fast track"); - let commitment = test_commitment(&env, &bidder, price, &terms, &salt); + let t = terms(&env, "Fast track"); + let commitment = client.commitment_of(&task_id, &bidder, &price, &t, &s); // Clear events from create_auction by draining. let _ = env.events().all(); - client.submit_bid(&task_id, &bidder, &commitment, &500_000, &90); + client.submit_bid(&task_id, &bidder, &commitment, &BOND, &90); let events = env.events().all(); assert_eq!(events.len(), 1, "expected exactly one BidSubmitted event"); @@ -790,216 +1177,600 @@ mod test { #[test] fn submit_bid_after_deadline_fails() { - let (env, client) = setup(); + let (env, client, _) = setup(); let creator = Address::generate(&env); let bidder = Address::generate(&env); let task_id = Symbol::new(&env, "late"); - create_test_auction(&env, &client, &creator, &task_id, 3600); + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); + enter_reveal_window(&env, &client, &task_id); - // Advance ledger past the deadline. - let auction = client.get_auction(&task_id).unwrap(); - env.ledger().set_timestamp(auction.deadline + 1); - - let salt = BytesN::<32>::from_array(&env, &[3u8; 32]); - let price: i128 = 2_000_000; - let terms = String::from_str(&env, "Late bid"); - let commitment = test_commitment(&env, &bidder, price, &terms, &salt); + let s = salt(&env, 3); + let t = terms(&env, "Late bid"); + let commitment = client.commitment_of(&task_id, &bidder, &2_000_000, &t, &s); - let err = client.try_submit_bid(&task_id, &bidder, &commitment, &500_000, &50); + let err = client.try_submit_bid(&task_id, &bidder, &commitment, &BOND, &50); assert_eq!(err.err(), Some(Ok(Error::BiddingPeriodEnded))); } #[test] fn submit_bid_invalid_reputation_fails() { - let (env, client) = setup(); + let (env, client, _) = setup(); let creator = Address::generate(&env); let bidder = Address::generate(&env); let task_id = Symbol::new(&env, "bad_rep"); - create_test_auction(&env, &client, &creator, &task_id, 3600); + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); - let salt = BytesN::<32>::from_array(&env, &[4u8; 32]); - let price: i128 = 2_000_000; - let terms = String::from_str(&env, "Bad rep"); - let commitment = test_commitment(&env, &bidder, price, &terms, &salt); + let s = salt(&env, 4); + let t = terms(&env, "Bad rep"); + let commitment = client.commitment_of(&task_id, &bidder, &2_000_000, &t, &s); - let err = client.try_submit_bid(&task_id, &bidder, &commitment, &500_000, &101); + let err = client.try_submit_bid(&task_id, &bidder, &commitment, &BOND, &101); assert_eq!(err.err(), Some(Ok(Error::InvalidReputation))); } #[test] fn submit_bid_wrong_bond_fails() { - let (env, client) = setup(); + let (env, client, _) = setup(); let creator = Address::generate(&env); let bidder = Address::generate(&env); let task_id = Symbol::new(&env, "bad_bond"); - create_test_auction(&env, &client, &creator, &task_id, 3600); + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); - let salt = BytesN::<32>::from_array(&env, &[5u8; 32]); - let commitment = - test_commitment(&env, &bidder, 1_000_000, &String::from_str(&env, ""), &salt); + let s = salt(&env, 5); + let t = terms(&env, ""); + let commitment = client.commitment_of(&task_id, &bidder, &RESERVE, &t, &s); let err = client.try_submit_bid(&task_id, &bidder, &commitment, &1, &50); assert_eq!(err.err(), Some(Ok(Error::InvalidBond))); } + /// A bidder gets exactly one commitment per auction — the double-commit + /// guard that makes a sealed bid binding rather than a draft. #[test] fn submit_bid_duplicate_fails() { - let (env, client) = setup(); + let (env, client, _) = setup(); let creator = Address::generate(&env); let bidder = Address::generate(&env); let task_id = Symbol::new(&env, "dup_bid"); - create_test_auction(&env, &client, &creator, &task_id, 3600); + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); - let salt = BytesN::<32>::from_array(&env, &[6u8; 32]); - let price: i128 = 2_000_000; - let terms = String::from_str(&env, "First"); - let commitment = test_commitment(&env, &bidder, price, &terms, &salt); + let s = salt(&env, 6); + let t = terms(&env, "First"); + let commitment = client.commitment_of(&task_id, &bidder, &2_000_000, &t, &s); - client.submit_bid(&task_id, &bidder, &commitment, &500_000, &80); + client.submit_bid(&task_id, &bidder, &commitment, &BOND, &80); - let err = client.try_submit_bid(&task_id, &bidder, &commitment, &500_000, &80); + let err = client.try_submit_bid(&task_id, &bidder, &commitment, &BOND, &80); assert_eq!(err.err(), Some(Ok(Error::BidAlreadyExists))); } + /// Re-committing with a *different* commitment is refused too, so a bidder + /// cannot overwrite an unfavourable commitment late in the bidding window. + #[test] + fn submit_bid_second_different_commitment_fails() { + let (env, client, _) = setup(); + let creator = Address::generate(&env); + let bidder = Address::generate(&env); + let task_id = Symbol::new(&env, "recommit"); + + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); + + let first = client.commitment_of( + &task_id, + &bidder, + &9_000_000, + &terms(&env, "high"), + &salt(&env, 61), + ); + let second = client.commitment_of( + &task_id, + &bidder, + &1_500_000, + &terms(&env, "low"), + &salt(&env, 62), + ); + assert_ne!(first, second); + + client.submit_bid(&task_id, &bidder, &first, &BOND, &80); + let err = client.try_submit_bid(&task_id, &bidder, &second, &BOND, &80); + assert_eq!(err.err(), Some(Ok(Error::BidAlreadyExists))); + + // The original commitment is the one that stands. + assert_eq!(client.get_bid(&task_id, &bidder).unwrap().commitment, first); + } + + #[test] + fn submit_bid_rejects_zero_commitment() { + let (env, client, _) = setup(); + let creator = Address::generate(&env); + let bidder = Address::generate(&env); + let task_id = Symbol::new(&env, "zero_c"); + + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); + + let zero = BytesN::<32>::from_array(&env, &[0u8; 32]); + let err = client.try_submit_bid(&task_id, &bidder, &zero, &BOND, &50); + assert_eq!(err.err(), Some(Ok(Error::InvalidCommitment))); + } + + // ── Position-size caps ─────────────────────────────────────────────────── + + #[test] + fn submit_bid_rejects_beyond_max_bidders() { + let (env, client, _) = setup(); + let creator = Address::generate(&env); + let task_id = Symbol::new(&env, "full"); + + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); + + for i in 0..MAX_BIDDERS { + let bidder = Address::generate(&env); + let c = client.commitment_of( + &task_id, + &bidder, + &2_000_000, + &terms(&env, "x"), + &salt(&env, (i % 250) as u8 + 1), + ); + client.submit_bid(&task_id, &bidder, &c, &BOND, &50); + } + + assert_eq!(client.get_bidder_count(&task_id), MAX_BIDDERS); + + let overflow_bidder = Address::generate(&env); + let c = client.commitment_of( + &task_id, + &overflow_bidder, + &2_000_000, + &terms(&env, "x"), + &salt(&env, 251), + ); + let err = client.try_submit_bid(&task_id, &overflow_bidder, &c, &BOND, &50); + assert_eq!(err.err(), Some(Ok(Error::AuctionFull))); + } + + #[test] + fn reveal_bid_rejects_price_above_cap() { + let (env, client, _) = setup(); + let creator = Address::generate(&env); + let bidder = Address::generate(&env); + let task_id = Symbol::new(&env, "capped"); + + client.create_auction( + &creator, + &task_id, + &AuctionConfig { + duration_secs: BID_SECS, + reveal_duration_secs: REVEAL_SECS, + reserve_price: RESERVE, + max_price: 4_000_000, + bond: BOND, + }, + ); + + // The commitment itself is well-formed; the *position size* is what + // gets rejected, and only at reveal time — that is the whole point of + // a sealed bid. + let over_cap: i128 = 9_000_000; + let s = salt(&env, 71); + let t = terms(&env, "oversized"); + let c = client.commitment_of(&task_id, &bidder, &over_cap, &t, &s); + client.submit_bid(&task_id, &bidder, &c, &BOND, &50); + + enter_reveal_window(&env, &client, &task_id); + + let err = client.try_reveal_bid(&task_id, &bidder, &over_cap, &t, &s); + assert_eq!(err.err(), Some(Ok(Error::InvalidPrice))); + } + + #[test] + fn reveal_bid_rejects_price_below_reserve() { + let (env, client, _) = setup(); + let creator = Address::generate(&env); + let bidder = Address::generate(&env); + let task_id = Symbol::new(&env, "under"); + + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); + + let under: i128 = RESERVE - 1; + let s = salt(&env, 72); + let t = terms(&env, "cheap"); + let c = client.commitment_of(&task_id, &bidder, &under, &t, &s); + client.submit_bid(&task_id, &bidder, &c, &BOND, &50); + + enter_reveal_window(&env, &client, &task_id); + + let err = client.try_reveal_bid(&task_id, &bidder, &under, &t, &s); + assert_eq!(err.err(), Some(Ok(Error::InvalidPrice))); + } + + #[test] + fn reveal_bid_rejects_oversized_terms() { + let (env, client, _) = setup(); + let creator = Address::generate(&env); + let bidder = Address::generate(&env); + let task_id = Symbol::new(&env, "big_terms"); + + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); + + // 520 bytes > MAX_TERMS_LEN (512). + let long = "x".repeat((MAX_TERMS_LEN + 8) as usize); + let long_terms = String::from_str(&env, &long); + let s = salt(&env, 73); + let price: i128 = 2_000_000; + let c = client.commitment_of(&task_id, &bidder, &price, &long_terms, &s); + client.submit_bid(&task_id, &bidder, &c, &BOND, &50); + + enter_reveal_window(&env, &client, &task_id); + + let err = client.try_reveal_bid(&task_id, &bidder, &price, &long_terms, &s); + assert_eq!(err.err(), Some(Ok(Error::TermsTooLong))); + } + // ── reveal_bid ─────────────────────────────────────────────────────────── #[test] fn reveal_bid_verifies_commitment() { - let (env, client) = setup(); + let (env, client, _) = setup(); let creator = Address::generate(&env); let bidder = Address::generate(&env); let task_id = Symbol::new(&env, "reveal_ok"); - create_test_auction(&env, &client, &creator, &task_id, 3600); + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); - let salt = BytesN::<32>::from_array(&env, &[7u8; 32]); + let s = salt(&env, 7); let price: i128 = 4_000_000; - let terms = String::from_str(&env, "Best offer"); - let commitment = test_commitment(&env, &bidder, price, &terms, &salt); - - client.submit_bid(&task_id, &bidder, &commitment, &500_000, &70); + let t = terms(&env, "Best offer"); + let c = client.commitment_of(&task_id, &bidder, &price, &t, &s); - // Advance past deadline. - env.ledger().set_timestamp(env.ledger().timestamp() + 3601); + client.submit_bid(&task_id, &bidder, &c, &BOND, &70); + enter_reveal_window(&env, &client, &task_id); - client.reveal_bid(&task_id, &bidder, &price, &terms, &salt); + client.reveal_bid(&task_id, &bidder, &price, &t, &s); let bid = client.get_bid(&task_id, &bidder).unwrap(); assert!(bid.revealed); assert_eq!(bid.price_stroops, price); - assert_eq!(bid.terms, terms); + assert_eq!(bid.terms, t); + assert_eq!(client.get_auction(&task_id).unwrap().revealed_count, 1); } #[test] fn reveal_bid_wrong_commitment_fails() { - let (env, client) = setup(); + let (env, client, _) = setup(); let creator = Address::generate(&env); let bidder = Address::generate(&env); let task_id = Symbol::new(&env, "bad_rev"); - create_test_auction(&env, &client, &creator, &task_id, 3600); - - let salt = BytesN::<32>::from_array(&env, &[8u8; 32]); - let price: i128 = 4_000_000; - let terms = String::from_str(&env, "Real"); - let commitment = test_commitment(&env, &bidder, price, &terms, &salt); + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); - client.submit_bid(&task_id, &bidder, &commitment, &500_000, &70); + let s = salt(&env, 8); + let t = terms(&env, "Original"); + let c = client.commitment_of(&task_id, &bidder, &4_000_000, &t, &s); + client.submit_bid(&task_id, &bidder, &c, &BOND, &70); - env.ledger().set_timestamp(env.ledger().timestamp() + 3601); + enter_reveal_window(&env, &client, &task_id); - // Try to reveal with a different price. - let err = client.try_reveal_bid(&task_id, &bidder, &(price + 1), &terms, &salt); + // Reveal a different (cheaper) price than was committed. + let err = client.try_reveal_bid(&task_id, &bidder, &1_000_000, &t, &s); assert_eq!(err.err(), Some(Ok(Error::InvalidCommitment))); } #[test] fn reveal_bid_before_deadline_fails() { - let (env, client) = setup(); + let (env, client, _) = setup(); let creator = Address::generate(&env); let bidder = Address::generate(&env); let task_id = Symbol::new(&env, "early_rev"); - create_test_auction(&env, &client, &creator, &task_id, 3600); + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); - let salt = BytesN::<32>::from_array(&env, &[9u8; 32]); - let price: i128 = 5_000_000; - let terms = String::from_str(&env, "Early"); - let commitment = test_commitment(&env, &bidder, price, &terms, &salt); - - client.submit_bid(&task_id, &bidder, &commitment, &500_000, &60); + let s = salt(&env, 9); + let price: i128 = 3_000_000; + let t = terms(&env, "Early"); + let c = client.commitment_of(&task_id, &bidder, &price, &t, &s); + client.submit_bid(&task_id, &bidder, &c, &BOND, &60); - // Do NOT advance ledger — still within deadline. - let err = client.try_reveal_bid(&task_id, &bidder, &price, &terms, &salt); + let err = client.try_reveal_bid(&task_id, &bidder, &price, &t, &s); assert_eq!(err.err(), Some(Ok(Error::BiddingPeriodActive))); } #[test] fn reveal_bid_twice_fails() { - let (env, client) = setup(); + let (env, client, _) = setup(); let creator = Address::generate(&env); let bidder = Address::generate(&env); - let task_id = Symbol::new(&env, "twice_rev"); + let task_id = Symbol::new(&env, "double_rev"); - create_test_auction(&env, &client, &creator, &task_id, 3600); + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); - let salt = BytesN::<32>::from_array(&env, &[10u8; 32]); + let s = salt(&env, 10); let price: i128 = 3_000_000; - let terms = String::from_str(&env, "Twice"); - let commitment = test_commitment(&env, &bidder, price, &terms, &salt); + let t = terms(&env, "Once"); + let c = client.commitment_of(&task_id, &bidder, &price, &t, &s); + client.submit_bid(&task_id, &bidder, &c, &BOND, &60); - client.submit_bid(&task_id, &bidder, &commitment, &500_000, &80); + enter_reveal_window(&env, &client, &task_id); + client.reveal_bid(&task_id, &bidder, &price, &t, &s); - env.ledger().set_timestamp(env.ledger().timestamp() + 3601); + let err = client.try_reveal_bid(&task_id, &bidder, &price, &t, &s); + assert_eq!(err.err(), Some(Ok(Error::BidAlreadyRevealed))); - client.reveal_bid(&task_id, &bidder, &price, &terms, &salt); + // The replayed reveal must not double-count toward the reveal tally, + // which the `reveal_bids` early-finalisation gate depends on. + assert_eq!(client.get_auction(&task_id).unwrap().revealed_count, 1); + } - let err = client.try_reveal_bid(&task_id, &bidder, &price, &terms, &salt); - assert_eq!(err.err(), Some(Ok(Error::BidAlreadyRevealed))); + // ── Late reveal ────────────────────────────────────────────────────────── + + #[test] + fn reveal_bid_after_reveal_deadline_fails() { + let (env, client, _) = setup(); + let creator = Address::generate(&env); + let bidder = Address::generate(&env); + let task_id = Symbol::new(&env, "late_rev"); + + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); + + let s = salt(&env, 81); + let price: i128 = 3_000_000; + let t = terms(&env, "Too slow"); + let c = client.commitment_of(&task_id, &bidder, &price, &t, &s); + client.submit_bid(&task_id, &bidder, &c, &BOND, &60); + + close_reveal_window(&env, &client, &task_id); + + let err = client.try_reveal_bid(&task_id, &bidder, &price, &t, &s); + assert_eq!(err.err(), Some(Ok(Error::RevealPeriodEnded))); + assert!(!client.get_bid(&task_id, &bidder).unwrap().revealed); + } + + #[test] + fn late_reveal_cannot_displace_an_already_selected_winner() { + let (env, client, anyone) = setup(); + let creator = Address::generate(&env); + let task_id = Symbol::new(&env, "no_displace"); + + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); + + let punctual = Address::generate(&env); + let tardy = Address::generate(&env); + + let s_p = salt(&env, 82); + let s_t = salt(&env, 83); + let t = terms(&env, "T"); + + // The tardy bidder has a strictly better bid — cheaper and higher + // reputation — so only the timing rule can keep them from winning. + let c_p = client.commitment_of(&task_id, &punctual, &8_000_000, &t, &s_p); + let c_t = client.commitment_of(&task_id, &tardy, &1_500_000, &t, &s_t); + client.submit_bid(&task_id, &punctual, &c_p, &BOND, &40); + client.submit_bid(&task_id, &tardy, &c_t, &BOND, &99); + + enter_reveal_window(&env, &client, &task_id); + client.reveal_bid(&task_id, &punctual, &8_000_000, &t, &s_p); + + close_reveal_window(&env, &client, &task_id); + client.reveal_bids(&anyone, &task_id); + assert_eq!(client.get_winner(&task_id).unwrap(), punctual); + + // The tardy bidder now tries to reveal and re-run selection. + let err = client.try_reveal_bid(&task_id, &tardy, &1_500_000, &t, &s_t); + assert_eq!(err.err(), Some(Ok(Error::NotInBiddingPhase))); + + let err = client.try_reveal_bids(&anyone, &task_id); + assert_eq!(err.err(), Some(Ok(Error::NotInBiddingPhase))); + assert_eq!(client.get_winner(&task_id).unwrap(), punctual); } - // ── reveal_bids (winner selection) ─────────────────────────────────────── + // ── Replay guards ──────────────────────────────────────────────────────── + + /// A commitment is bound to its auction: lifting one from task A and + /// submitting it to task B leaves it unrevealable. + #[test] + fn commitment_cannot_be_replayed_across_auctions() { + let (env, client, _) = setup(); + let creator = Address::generate(&env); + let bidder = Address::generate(&env); + let task_a = Symbol::new(&env, "task_a"); + let task_b = Symbol::new(&env, "task_b"); + + create_test_auction(&env, &client, &creator, &task_a, BID_SECS); + create_test_auction(&env, &client, &creator, &task_b, BID_SECS); + + let s = salt(&env, 91); + let price: i128 = 3_000_000; + let t = terms(&env, "Same bid"); + + let c_a = client.commitment_of(&task_a, &bidder, &price, &t, &s); + let c_b = client.commitment_of(&task_b, &bidder, &price, &t, &s); + assert_ne!( + c_a, c_b, + "identical plaintext must commit differently per auction" + ); + + // Replay A's commitment onto auction B. + client.submit_bid(&task_b, &bidder, &c_a, &BOND, &50); + + enter_reveal_window(&env, &client, &task_b); + let err = client.try_reveal_bid(&task_b, &bidder, &price, &t, &s); + assert_eq!(err.err(), Some(Ok(Error::InvalidCommitment))); + } + + /// A commitment is bound to its bidder: copying a rival's commitment off + /// the ledger yields a bid the copier can never open. + #[test] + fn commitment_cannot_be_replayed_by_another_bidder() { + let (env, client, _) = setup(); + let creator = Address::generate(&env); + let honest = Address::generate(&env); + let copycat = Address::generate(&env); + let task_id = Symbol::new(&env, "copycat"); + + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); + + let s = salt(&env, 92); + let price: i128 = 2_500_000; + let t = terms(&env, "Mine"); + let c = client.commitment_of(&task_id, &honest, &price, &t, &s); + + client.submit_bid(&task_id, &honest, &c, &BOND, &70); + // The copycat submits the exact bytes they observed on-chain. + client.submit_bid(&task_id, ©cat, &c, &BOND, &70); + + enter_reveal_window(&env, &client, &task_id); + + client.reveal_bid(&task_id, &honest, &price, &t, &s); + + // Even knowing the full plaintext, the copycat's commitment does not + // verify, because their own address is part of the pre-image. + let err = client.try_reveal_bid(&task_id, ©cat, &price, &t, &s); + assert_eq!(err.err(), Some(Ok(Error::InvalidCommitment))); + } + + /// A revealed bid cannot be re-revealed at a different price after the + /// winner has been computed. + #[test] + fn revealed_bid_cannot_be_reopened_at_a_new_price() { + let (env, client, anyone) = setup(); + let creator = Address::generate(&env); + let bidder = Address::generate(&env); + let task_id = Symbol::new(&env, "reopen"); + + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); + + let s = salt(&env, 93); + let price: i128 = 4_000_000; + let t = terms(&env, "Fixed"); + let c = client.commitment_of(&task_id, &bidder, &price, &t, &s); + client.submit_bid(&task_id, &bidder, &c, &BOND, &50); + + enter_reveal_window(&env, &client, &task_id); + client.reveal_bid(&task_id, &bidder, &price, &t, &s); + client.reveal_bids(&anyone, &task_id); + + let err = client.try_reveal_bid(&task_id, &bidder, &1_000_000, &t, &s); + assert_eq!(err.err(), Some(Ok(Error::NotInBiddingPhase))); + assert_eq!( + client.get_bid(&task_id, &bidder).unwrap().price_stroops, + price + ); + } + + // ── Front-running the finalisation ─────────────────────────────────────── + + /// The core front-running defence: an attacker who reveals the moment + /// bidding closes cannot immediately finalise and win uncontested. + #[test] + fn reveal_bids_cannot_be_front_run_while_reveals_are_outstanding() { + let (env, client, _) = setup(); + let creator = Address::generate(&env); + let attacker = Address::generate(&env); + let victim = Address::generate(&env); + let task_id = Symbol::new(&env, "frontrun"); + + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); + + let s_a = salt(&env, 101); + let s_v = salt(&env, 102); + let t = terms(&env, "T"); + + // The attacker's bid is far worse; only racing the finalisation could + // ever make it win. + let c_a = client.commitment_of(&task_id, &attacker, &9_000_000, &t, &s_a); + let c_v = client.commitment_of(&task_id, &victim, &1_200_000, &t, &s_v); + client.submit_bid(&task_id, &attacker, &c_a, &BOND, &10); + client.submit_bid(&task_id, &victim, &c_v, &BOND, &95); + + enter_reveal_window(&env, &client, &task_id); + + // Attacker reveals first and tries to close the auction on the spot. + client.reveal_bid(&task_id, &attacker, &9_000_000, &t, &s_a); + let err = client.try_reveal_bids(&attacker, &task_id); + assert_eq!( + err.err(), + Some(Ok(Error::RevealPeriodActive)), + "finalising must be refused while a sealed bid is still unrevealed" + ); + + // The victim reveals inside the window and wins. + client.reveal_bid(&task_id, &victim, &1_200_000, &t, &s_v); + client.reveal_bids(&attacker, &task_id); + assert_eq!(client.get_winner(&task_id).unwrap(), victim); + } + + /// Once nothing is outstanding there is no race left, so the auction may + /// be finalised before the reveal window elapses. + #[test] + fn reveal_bids_finalises_early_when_every_bid_is_revealed() { + let (env, client, anyone) = setup(); + let creator = Address::generate(&env); + let a = Address::generate(&env); + let b = Address::generate(&env); + let task_id = Symbol::new(&env, "all_in"); + + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); + + let t = terms(&env, "T"); + let s_a = salt(&env, 103); + let s_b = salt(&env, 104); + let c_a = client.commitment_of(&task_id, &a, &2_000_000, &t, &s_a); + let c_b = client.commitment_of(&task_id, &b, &3_000_000, &t, &s_b); + client.submit_bid(&task_id, &a, &c_a, &BOND, &80); + client.submit_bid(&task_id, &b, &c_b, &BOND, &80); + + enter_reveal_window(&env, &client, &task_id); + client.reveal_bid(&task_id, &a, &2_000_000, &t, &s_a); + client.reveal_bid(&task_id, &b, &3_000_000, &t, &s_b); + + // Reveal window is still open, but nothing is outstanding. + let auction = client.get_auction(&task_id).unwrap(); + assert!(env.ledger().timestamp() < auction.reveal_deadline); + + client.reveal_bids(&anyone, &task_id); + assert_eq!(client.get_winner(&task_id).unwrap(), a); + } + + // ── reveal_bids ────────────────────────────────────────────────────────── #[test] fn reveal_bids_selects_cheapest_when_reputation_equal() { - let (env, client) = setup(); + let (env, client, anyone) = setup(); let creator = Address::generate(&env); let task_id = Symbol::new(&env, "score_test"); - create_test_auction(&env, &client, &creator, &task_id, 3600); + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); - // Bidder A: cheaper, same reputation. let a = Address::generate(&env); - let salt_a = BytesN::<32>::from_array(&env, &[11u8; 32]); - let price_a: i128 = 2_000_000; - let terms_a = String::from_str(&env, "Cheap"); - let comm_a = test_commitment(&env, &a, price_a, &terms_a, &salt_a); - client.submit_bid(&task_id, &a, &comm_a, &500_000, &80); - - // Bidder B: more expensive, same reputation. let b = Address::generate(&env); - let salt_b = BytesN::<32>::from_array(&env, &[12u8; 32]); + let s_a = salt(&env, 11); + let s_b = salt(&env, 12); + let price_a: i128 = 2_000_000; let price_b: i128 = 5_000_000; - let terms_b = String::from_str(&env, "Expensive"); - let comm_b = test_commitment(&env, &b, price_b, &terms_b, &salt_b); - client.submit_bid(&task_id, &b, &comm_b, &500_000, &80); + let terms_a = terms(&env, "Cheap"); + let terms_b = terms(&env, "Expensive"); - // Advance past deadline and reveal. - env.ledger().set_timestamp(env.ledger().timestamp() + 3601); + let c_a = client.commitment_of(&task_id, &a, &price_a, &terms_a, &s_a); + let c_b = client.commitment_of(&task_id, &b, &price_b, &terms_b, &s_b); + client.submit_bid(&task_id, &a, &c_a, &BOND, &80); + client.submit_bid(&task_id, &b, &c_b, &BOND, &80); - client.reveal_bid(&task_id, &a, &price_a, &terms_a, &salt_a); - client.reveal_bid(&task_id, &b, &price_b, &terms_b, &salt_b); + enter_reveal_window(&env, &client, &task_id); + client.reveal_bid(&task_id, &a, &price_a, &terms_a, &s_a); + client.reveal_bid(&task_id, &b, &price_b, &terms_b, &s_b); - client.reveal_bids(&task_id); + client.reveal_bids(&anyone, &task_id); - let winner = client.get_winner(&task_id).unwrap(); - assert_eq!(winner, a, "cheaper bidder A should win at equal reputation"); + assert_eq!( + client.get_winner(&task_id).unwrap(), + a, + "cheaper bidder A should win at equal reputation" + ); - // Verify scores are stored. let bid_a = client.get_bid(&task_id, &a).unwrap(); let bid_b = client.get_bid(&task_id, &b).unwrap(); assert!( @@ -1010,230 +1781,480 @@ mod test { #[test] fn reveal_bids_selects_high_reputation_on_price_tie() { - let (env, client) = setup(); + let (env, client, anyone) = setup(); let creator = Address::generate(&env); let task_id = Symbol::new(&env, "score_best"); - create_test_auction(&env, &client, &creator, &task_id, 3600); + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); - // Bidder X: same price but higher reputation — higher rep wins. let x = Address::generate(&env); - let salt_x = BytesN::<32>::from_array(&env, &[13u8; 32]); - let price_x: i128 = 5_000_000; - let terms_x = String::from_str(&env, "Premium"); - let comm_x = test_commitment(&env, &x, price_x, &terms_x, &salt_x); - client.submit_bid(&task_id, &x, &comm_x, &500_000, &100); - - // Bidder Y: same price, low reputation. let y = Address::generate(&env); - let salt_y = BytesN::<32>::from_array(&env, &[14u8; 32]); - let price_y: i128 = 5_000_000; - let terms_y = String::from_str(&env, "Bargain"); - let comm_y = test_commitment(&env, &y, price_y, &terms_y, &salt_y); - client.submit_bid(&task_id, &y, &comm_y, &500_000, &10); + let price: i128 = 5_000_000; + let s_x = salt(&env, 13); + let s_y = salt(&env, 14); + let t_x = terms(&env, "Premium"); + let t_y = terms(&env, "Bargain"); - env.ledger().set_timestamp(env.ledger().timestamp() + 3601); + let c_x = client.commitment_of(&task_id, &x, &price, &t_x, &s_x); + let c_y = client.commitment_of(&task_id, &y, &price, &t_y, &s_y); + client.submit_bid(&task_id, &x, &c_x, &BOND, &100); + client.submit_bid(&task_id, &y, &c_y, &BOND, &10); - client.reveal_bid(&task_id, &x, &price_x, &terms_x, &salt_x); - client.reveal_bid(&task_id, &y, &price_y, &terms_y, &salt_y); + enter_reveal_window(&env, &client, &task_id); + client.reveal_bid(&task_id, &x, &price, &t_x, &s_x); + client.reveal_bid(&task_id, &y, &price, &t_y, &s_y); - client.reveal_bids(&task_id); + client.reveal_bids(&anyone, &task_id); - let winner = client.get_winner(&task_id).unwrap(); // At 60/40 weighting, when prices are identical the higher reputation wins. assert_eq!( - winner, x, + client.get_winner(&task_id).unwrap(), + x, "on price tie, higher-reputation bidder X should win" ); } #[test] fn reveal_bids_no_revealed_fails() { - let (env, client) = setup(); + let (env, client, anyone) = setup(); let creator = Address::generate(&env); let task_id = Symbol::new(&env, "no_rev"); - create_test_auction(&env, &client, &creator, &task_id, 3600); - - env.ledger().set_timestamp(env.ledger().timestamp() + 3601); + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); + close_reveal_window(&env, &client, &task_id); // No bid was submitted at all. - let err = client.try_reveal_bids(&task_id); + let err = client.try_reveal_bids(&anyone, &task_id); assert_eq!(err.err(), Some(Ok(Error::NotEnoughBids))); } #[test] fn reveal_bids_before_deadline_fails() { - let (env, client) = setup(); + let (env, client, anyone) = setup(); let creator = Address::generate(&env); let task_id = Symbol::new(&env, "early_rb"); - create_test_auction(&env, &client, &creator, &task_id, 3600); + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); - let err = client.try_reveal_bids(&task_id); + let err = client.try_reveal_bids(&anyone, &task_id); assert_eq!(err.err(), Some(Ok(Error::BiddingPeriodActive))); } #[test] fn reveal_bids_emits_event() { - let (env, client) = setup(); + let (env, client, anyone) = setup(); let creator = Address::generate(&env); let task_id = Symbol::new(&env, "rb_event"); - create_test_auction(&env, &client, &creator, &task_id, 3600); + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); let bidder = Address::generate(&env); - let salt = BytesN::<32>::from_array(&env, &[15u8; 32]); + let s = salt(&env, 15); let price: i128 = 3_000_000; - let terms = String::from_str(&env, "Solo"); - let comm = test_commitment(&env, &bidder, price, &terms, &salt); - client.submit_bid(&task_id, &bidder, &comm, &500_000, &75); + let t = terms(&env, "Solo"); + let c = client.commitment_of(&task_id, &bidder, &price, &t, &s); + client.submit_bid(&task_id, &bidder, &c, &BOND, &75); - env.ledger().set_timestamp(env.ledger().timestamp() + 3601); - client.reveal_bid(&task_id, &bidder, &price, &terms, &salt); + enter_reveal_window(&env, &client, &task_id); + client.reveal_bid(&task_id, &bidder, &price, &t, &s); let _ = env.events().all(); // drain - client.reveal_bids(&task_id); + client.reveal_bids(&anyone, &task_id); let events = env.events().all(); assert_eq!(events.len(), 1, "expected exactly one BidsRevealed event"); } + #[test] + fn reveal_bids_twice_fails() { + let (env, client, anyone) = setup(); + let creator = Address::generate(&env); + let bidder = Address::generate(&env); + let task_id = Symbol::new(&env, "rb_twice"); + + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); + + let s = salt(&env, 16); + let price: i128 = 3_000_000; + let t = terms(&env, "Solo"); + let c = client.commitment_of(&task_id, &bidder, &price, &t, &s); + client.submit_bid(&task_id, &bidder, &c, &BOND, &75); + + enter_reveal_window(&env, &client, &task_id); + client.reveal_bid(&task_id, &bidder, &price, &t, &s); + client.reveal_bids(&anyone, &task_id); + + let err = client.try_reveal_bids(&anyone, &task_id); + assert_eq!(err.err(), Some(Ok(Error::NotInBiddingPhase))); + } + // ── award_contract ─────────────────────────────────────────────────────── #[test] fn award_contract_creates_escrow_and_refunds() { - let (env, client) = setup(); + let (env, client, anyone) = setup(); let creator = Address::generate(&env); let task_id = Symbol::new(&env, "award_ok"); - create_test_auction(&env, &client, &creator, &task_id, 3600); + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); let bidder = Address::generate(&env); - let salt = BytesN::<32>::from_array(&env, &[16u8; 32]); + let s = salt(&env, 17); let price: i128 = 4_000_000; - let terms = String::from_str(&env, "Winner"); - let comm = test_commitment(&env, &bidder, price, &terms, &salt); - client.submit_bid(&task_id, &bidder, &comm, &500_000, &50); + let t = terms(&env, "Winner"); + let c = client.commitment_of(&task_id, &bidder, &price, &t, &s); + client.submit_bid(&task_id, &bidder, &c, &BOND, &50); - env.ledger().set_timestamp(env.ledger().timestamp() + 3601); - client.reveal_bid(&task_id, &bidder, &price, &terms, &salt); - client.reveal_bids(&task_id); + enter_reveal_window(&env, &client, &task_id); + client.reveal_bid(&task_id, &bidder, &price, &t, &s); + client.reveal_bids(&anyone, &task_id); - client.award_contract(&task_id); + client.award_contract(&creator, &task_id); let auction = client.get_auction(&task_id).unwrap(); assert_eq!(auction.phase, AuctionPhase::Awarded); assert!(auction.escrow_created); - // Escrow created. let escrow = client.get_escrow(&task_id).unwrap(); assert_eq!(escrow.agent, bidder); assert_eq!(escrow.amount, price); // winning price locked - // Bond refunded. let bid = client.get_bid(&task_id, &bidder).unwrap(); assert!(bid.refunded); + assert!(!bid.forfeited); } #[test] - fn award_contract_refunds_all_losing_bidders() { - let (env, client) = setup(); + fn award_contract_refunds_all_revealed_bidders() { + let (env, client, anyone) = setup(); let creator = Address::generate(&env); let task_id = Symbol::new(&env, "refund_all"); - create_test_auction(&env, &client, &creator, &task_id, 3600); + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); - // Winner: cheap. let winner = Address::generate(&env); - let salt_w = BytesN::<32>::from_array(&env, &[17u8; 32]); - let price_w: i128 = 1_000_000; - let terms_w = String::from_str(&env, "Win"); - let comm_w = test_commitment(&env, &winner, price_w, &terms_w, &salt_w); - client.submit_bid(&task_id, &winner, &comm_w, &500_000, &80); - - // Loser: expensive. let loser = Address::generate(&env); - let salt_l = BytesN::<32>::from_array(&env, &[18u8; 32]); + let price_w: i128 = 1_000_000; let price_l: i128 = 10_000_000; - let terms_l = String::from_str(&env, "Lose"); - let comm_l = test_commitment(&env, &loser, price_l, &terms_l, &salt_l); - client.submit_bid(&task_id, &loser, &comm_l, &500_000, &80); + let s_w = salt(&env, 18); + let s_l = salt(&env, 19); + let t_w = terms(&env, "Win"); + let t_l = terms(&env, "Lose"); - env.ledger().set_timestamp(env.ledger().timestamp() + 3601); + let c_w = client.commitment_of(&task_id, &winner, &price_w, &t_w, &s_w); + let c_l = client.commitment_of(&task_id, &loser, &price_l, &t_l, &s_l); + client.submit_bid(&task_id, &winner, &c_w, &BOND, &80); + client.submit_bid(&task_id, &loser, &c_l, &BOND, &80); - client.reveal_bid(&task_id, &winner, &price_w, &terms_w, &salt_w); - client.reveal_bid(&task_id, &loser, &price_l, &terms_l, &salt_l); - client.reveal_bids(&task_id); + enter_reveal_window(&env, &client, &task_id); + client.reveal_bid(&task_id, &winner, &price_w, &t_w, &s_w); + client.reveal_bid(&task_id, &loser, &price_l, &t_l, &s_l); + client.reveal_bids(&anyone, &task_id); - client.award_contract(&task_id); + client.award_contract(&creator, &task_id); - let winner_bid = client.get_bid(&task_id, &winner).unwrap(); - assert!(winner_bid.refunded, "winner's bond should be refunded"); + assert!( + client.get_bid(&task_id, &winner).unwrap().refunded, + "winner's bond should be refunded" + ); + assert!( + client.get_bid(&task_id, &loser).unwrap().refunded, + "revealing loser's bond should be refunded" + ); + } + + /// A bidder who commits and never reveals loses their bond. That price is + /// what stops a sealed bid from being a free option to walk away. + #[test] + fn award_contract_forfeits_bonds_of_non_revealers() { + let (env, client, anyone) = setup(); + let creator = Address::generate(&env); + let task_id = Symbol::new(&env, "forfeit"); - let loser_bid = client.get_bid(&task_id, &loser).unwrap(); - assert!(loser_bid.refunded, "loser's bond should be refunded"); + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); + + let honest = Address::generate(&env); + let ghost = Address::generate(&env); + let s_h = salt(&env, 111); + let s_g = salt(&env, 112); + let t = terms(&env, "T"); + let price_h: i128 = 3_000_000; + + let c_h = client.commitment_of(&task_id, &honest, &price_h, &t, &s_h); + let c_g = client.commitment_of(&task_id, &ghost, &1_100_000, &t, &s_g); + client.submit_bid(&task_id, &honest, &c_h, &BOND, &50); + client.submit_bid(&task_id, &ghost, &c_g, &BOND, &99); + + enter_reveal_window(&env, &client, &task_id); + client.reveal_bid(&task_id, &honest, &price_h, &t, &s_h); + + close_reveal_window(&env, &client, &task_id); + client.reveal_bids(&anyone, &task_id); + client.award_contract(&creator, &task_id); + + let honest_bid = client.get_bid(&task_id, &honest).unwrap(); + assert!(honest_bid.refunded); + assert!(!honest_bid.forfeited); + + let ghost_bid = client.get_bid(&task_id, &ghost).unwrap(); + assert!( + ghost_bid.forfeited, + "a bidder who never revealed must forfeit their bond" + ); + assert!(!ghost_bid.refunded); } #[test] fn award_contract_before_reveal_bids_fails() { - let (env, client) = setup(); + let (env, client, _) = setup(); let creator = Address::generate(&env); let task_id = Symbol::new(&env, "pre_award"); - create_test_auction(&env, &client, &creator, &task_id, 3600); + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); let bidder = Address::generate(&env); - let salt = BytesN::<32>::from_array(&env, &[19u8; 32]); + let s = salt(&env, 20); let price: i128 = 3_000_000; - let terms = String::from_str(&env, "Wait"); - let comm = test_commitment(&env, &bidder, price, &terms, &salt); - client.submit_bid(&task_id, &bidder, &comm, &500_000, &50); + let t = terms(&env, "Wait"); + let c = client.commitment_of(&task_id, &bidder, &price, &t, &s); + client.submit_bid(&task_id, &bidder, &c, &BOND, &50); - env.ledger().set_timestamp(env.ledger().timestamp() + 3601); + enter_reveal_window(&env, &client, &task_id); // Not yet revealed_bids → phase is still Bidding. - let err = client.try_award_contract(&task_id); + let err = client.try_award_contract(&creator, &task_id); assert_eq!(err.err(), Some(Ok(Error::NotInRevealPhase))); } #[test] fn award_contract_twice_fails() { - let (env, client) = setup(); + let (env, client, anyone) = setup(); let creator = Address::generate(&env); let task_id = Symbol::new(&env, "twice_award"); - create_test_auction(&env, &client, &creator, &task_id, 3600); + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); let bidder = Address::generate(&env); - let salt = BytesN::<32>::from_array(&env, &[20u8; 32]); + let s = salt(&env, 21); let price: i128 = 5_000_000; - let terms = String::from_str(&env, "Solo"); - let comm = test_commitment(&env, &bidder, price, &terms, &salt); - client.submit_bid(&task_id, &bidder, &comm, &500_000, &80); - - env.ledger().set_timestamp(env.ledger().timestamp() + 3601); - client.reveal_bid(&task_id, &bidder, &price, &terms, &salt); - client.reveal_bids(&task_id); - client.award_contract(&task_id); - - // After award, phase is Awarded — not Reveal, so NotInRevealPhase fires before - // the escrow-created check. - let err = client.try_award_contract(&task_id); - assert_eq!(err.err(), Some(Ok(Error::NotInRevealPhase))); + let t = terms(&env, "Solo"); + let c = client.commitment_of(&task_id, &bidder, &price, &t, &s); + client.submit_bid(&task_id, &bidder, &c, &BOND, &80); + + enter_reveal_window(&env, &client, &task_id); + client.reveal_bid(&task_id, &bidder, &price, &t, &s); + client.reveal_bids(&anyone, &task_id); + client.award_contract(&creator, &task_id); + + let err = client.try_award_contract(&creator, &task_id); + assert_eq!(err.err(), Some(Ok(Error::AlreadyAwarded))); + } + + #[test] + fn award_contract_rejects_unrelated_caller() { + let (env, client, anyone) = setup(); + let creator = Address::generate(&env); + let stranger = Address::generate(&env); + let task_id = Symbol::new(&env, "stranger"); + + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); + + let bidder = Address::generate(&env); + let s = salt(&env, 22); + let price: i128 = 5_000_000; + let t = terms(&env, "Solo"); + let c = client.commitment_of(&task_id, &bidder, &price, &t, &s); + client.submit_bid(&task_id, &bidder, &c, &BOND, &80); + + enter_reveal_window(&env, &client, &task_id); + client.reveal_bid(&task_id, &bidder, &price, &t, &s); + client.reveal_bids(&anyone, &task_id); + + let err = client.try_award_contract(&stranger, &task_id); + assert_eq!(err.err(), Some(Ok(Error::Unauthorized))); + + // The winner is the other party allowed to close it out. + client.award_contract(&bidder, &task_id); + assert_eq!( + client.get_auction(&task_id).unwrap().phase, + AuctionPhase::Awarded + ); + } + + // ── abort_auction ──────────────────────────────────────────────────────── + + #[test] + fn abort_auction_releases_bonds_when_nobody_reveals() { + let (env, client, anyone) = setup(); + let creator = Address::generate(&env); + let task_id = Symbol::new(&env, "dead"); + + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); + + let a = Address::generate(&env); + let b = Address::generate(&env); + let t = terms(&env, "T"); + let c_a = client.commitment_of(&task_id, &a, &2_000_000, &t, &salt(&env, 121)); + let c_b = client.commitment_of(&task_id, &b, &3_000_000, &t, &salt(&env, 122)); + client.submit_bid(&task_id, &a, &c_a, &BOND, &50); + client.submit_bid(&task_id, &b, &c_b, &BOND, &50); + + close_reveal_window(&env, &client, &task_id); + + // Without the rescue path this auction is unfinalisable. + let err = client.try_reveal_bids(&anyone, &task_id); + assert_eq!(err.err(), Some(Ok(Error::NotEnoughBids))); + + client.abort_auction(&anyone, &task_id); + + assert_eq!( + client.get_auction(&task_id).unwrap().phase, + AuctionPhase::Cancelled + ); + for bidder in [&a, &b] { + let bid = client.get_bid(&task_id, bidder).unwrap(); + assert!(bid.refunded, "abort must release every bond"); + assert!(!bid.forfeited); + } + } + + #[test] + fn abort_auction_rejected_while_reveal_window_open() { + let (env, client, anyone) = setup(); + let creator = Address::generate(&env); + let task_id = Symbol::new(&env, "too_early"); + + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); + enter_reveal_window(&env, &client, &task_id); + + let err = client.try_abort_auction(&anyone, &task_id); + assert_eq!(err.err(), Some(Ok(Error::RevealPeriodActive))); + } + + #[test] + fn abort_auction_rejected_when_a_bid_was_revealed() { + let (env, client, anyone) = setup(); + let creator = Address::generate(&env); + let bidder = Address::generate(&env); + let task_id = Symbol::new(&env, "has_rev"); + + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); + + let s = salt(&env, 123); + let price: i128 = 2_000_000; + let t = terms(&env, "T"); + let c = client.commitment_of(&task_id, &bidder, &price, &t, &s); + client.submit_bid(&task_id, &bidder, &c, &BOND, &50); + + enter_reveal_window(&env, &client, &task_id); + client.reveal_bid(&task_id, &bidder, &price, &t, &s); + close_reveal_window(&env, &client, &task_id); + + let err = client.try_abort_auction(&anyone, &task_id); + assert_eq!(err.err(), Some(Ok(Error::AuctionNotAbortable))); + } + + #[test] + fn cancelled_auction_accepts_no_further_calls() { + let (env, client, anyone) = setup(); + let creator = Address::generate(&env); + let bidder = Address::generate(&env); + let task_id = Symbol::new(&env, "closed"); + + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); + + let s = salt(&env, 124); + let price: i128 = 2_000_000; + let t = terms(&env, "T"); + let c = client.commitment_of(&task_id, &bidder, &price, &t, &s); + client.submit_bid(&task_id, &bidder, &c, &BOND, &50); + + close_reveal_window(&env, &client, &task_id); + client.abort_auction(&anyone, &task_id); + + let err = client.try_reveal_bid(&task_id, &bidder, &price, &t, &s); + assert_eq!(err.err(), Some(Ok(Error::AuctionClosed))); + + let err = client.try_reveal_bids(&anyone, &task_id); + assert_eq!(err.err(), Some(Ok(Error::AuctionClosed))); + + let err = client.try_abort_auction(&anyone, &task_id); + assert_eq!(err.err(), Some(Ok(Error::AuctionClosed))); + } + + // ── Views ──────────────────────────────────────────────────────────────── + + #[test] + fn get_bidders_pages_and_clamps_limit() { + let (env, client, _) = setup(); + let creator = Address::generate(&env); + let task_id = Symbol::new(&env, "paged"); + + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); + + let mut submitted: std::vec::Vec
= std::vec::Vec::new(); + for i in 0..5u8 { + let bidder = Address::generate(&env); + let c = client.commitment_of( + &task_id, + &bidder, + &2_000_000, + &terms(&env, "x"), + &salt(&env, 130 + i), + ); + client.submit_bid(&task_id, &bidder, &c, &BOND, &50); + submitted.push(bidder); + } + + let first = client.get_bidders(&task_id, &0, &2); + assert_eq!(first.len(), 2); + assert_eq!(first.get(0).unwrap(), submitted[0]); + assert_eq!(first.get(1).unwrap(), submitted[1]); + + let tail = client.get_bidders(&task_id, &3, &10); + assert_eq!(tail.len(), 2, "page must stop at the end of the list"); + + // An over-large limit is clamped, never honoured verbatim. + let clamped = client.get_bidders(&task_id, &0, &u32::MAX); + assert_eq!(clamped.len(), 5); + + // Out-of-range start yields an empty page rather than panicking. + assert_eq!(client.get_bidders(&task_id, &99, &10).len(), 0); + } + + #[test] + fn commitment_of_matches_what_reveal_verifies() { + let (env, client, _) = setup(); + let creator = Address::generate(&env); + let bidder = Address::generate(&env); + let task_id = Symbol::new(&env, "commit_of"); + + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); + + let s = salt(&env, 140); + let price: i128 = 2_500_000; + let t = terms(&env, "Published helper"); + + let c = client.commitment_of(&task_id, &bidder, &price, &t, &s); + client.submit_bid(&task_id, &bidder, &c, &BOND, &60); + + enter_reveal_window(&env, &client, &task_id); + client.reveal_bid(&task_id, &bidder, &price, &t, &s); + + assert!(client.get_bid(&task_id, &bidder).unwrap().revealed); } // ── Full end-to-end flow ───────────────────────────────────────────────── #[test] fn full_sealed_bid_reveal_award_flow() { - let (env, client) = setup(); + let (env, client, anyone) = setup(); let creator = Address::generate(&env); let task_id = Symbol::new(&env, "e2e"); // 1. Create auction. - client.create_auction(&creator, &task_id, &3600, &1_000_000, &500_000); + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); let auction = client.get_auction(&task_id).unwrap(); assert_eq!(auction.phase, AuctionPhase::Bidding); @@ -1242,16 +2263,20 @@ mod test { let (bidder2, price2, rep2) = (Address::generate(&env), 3_000_000i128, 90u32); let (bidder3, price3, rep3) = (Address::generate(&env), 5_000_000i128, 50u32); - let salt = |b: u8| BytesN::<32>::from_array(&env, &[b; 32]); - let terms = |s: &str| String::from_str(&env, s); + let t1 = terms(&env, "Offer 1"); + let t2 = terms(&env, "Offer 2"); + let t3 = terms(&env, "Offer 3"); + let s1 = salt(&env, 21); + let s2 = salt(&env, 22); + let s3 = salt(&env, 23); - let comm1 = test_commitment(&env, &bidder1, price1, &terms("Offer 1"), &salt(21)); - let comm2 = test_commitment(&env, &bidder2, price2, &terms("Offer 2"), &salt(22)); - let comm3 = test_commitment(&env, &bidder3, price3, &terms("Offer 3"), &salt(23)); + let comm1 = client.commitment_of(&task_id, &bidder1, &price1, &t1, &s1); + let comm2 = client.commitment_of(&task_id, &bidder2, &price2, &t2, &s2); + let comm3 = client.commitment_of(&task_id, &bidder3, &price3, &t3, &s3); - client.submit_bid(&task_id, &bidder1, &comm1, &500_000, &rep1); - client.submit_bid(&task_id, &bidder2, &comm2, &500_000, &rep2); - client.submit_bid(&task_id, &bidder3, &comm3, &500_000, &rep3); + client.submit_bid(&task_id, &bidder1, &comm1, &BOND, &rep1); + client.submit_bid(&task_id, &bidder2, &comm2, &BOND, &rep2); + client.submit_bid(&task_id, &bidder3, &comm3, &BOND, &rep3); assert_eq!(client.get_bidder_count(&task_id), 3); @@ -1260,14 +2285,13 @@ mod test { assert!(!sealed.revealed); assert_eq!(sealed.price_stroops, 0); - // 3. Advance past deadline, reveal all. - env.ledger().set_timestamp(env.ledger().timestamp() + 3601); + // 3. Advance into the reveal window, reveal all. + enter_reveal_window(&env, &client, &task_id); - client.reveal_bid(&task_id, &bidder1, &price1, &terms("Offer 1"), &salt(21)); - client.reveal_bid(&task_id, &bidder2, &price2, &terms("Offer 2"), &salt(22)); - client.reveal_bid(&task_id, &bidder3, &price3, &terms("Offer 3"), &salt(23)); + client.reveal_bid(&task_id, &bidder1, &price1, &t1, &s1); + client.reveal_bid(&task_id, &bidder2, &price2, &t2, &s2); + client.reveal_bid(&task_id, &bidder3, &price3, &t3, &s3); - // Verify revealed. assert!(client.get_bid(&task_id, &bidder1).unwrap().revealed); assert_eq!( client.get_bid(&task_id, &bidder2).unwrap().price_stroops, @@ -1275,7 +2299,7 @@ mod test { ); // 4. Finalise reveals → winner selected. - client.reveal_bids(&task_id); + client.reveal_bids(&anyone, &task_id); let winner = client.get_winner(&task_id).unwrap(); // bidder2 has highest reputation (90) at moderate price (3M). @@ -1286,11 +2310,13 @@ mod test { "bidder2 with best composite score should win" ); - let auction = client.get_auction(&task_id).unwrap(); - assert_eq!(auction.phase, AuctionPhase::Reveal); + assert_eq!( + client.get_auction(&task_id).unwrap().phase, + AuctionPhase::Reveal + ); // 5. Award contract. - client.award_contract(&task_id); + client.award_contract(&creator, &task_id); let final_auction = client.get_auction(&task_id).unwrap(); assert_eq!(final_auction.phase, AuctionPhase::Awarded); @@ -1300,70 +2326,67 @@ mod test { assert_eq!(escrow.agent, bidder2); assert_eq!(escrow.amount, price2); - // All bonds refunded. + // Everyone revealed, so every bond comes back. for b in [&bidder1, &bidder2, &bidder3] { let bid = client.get_bid(&task_id, b).unwrap(); assert!(bid.refunded, "bidder's bond should be refunded"); + assert!(!bid.forfeited); } } #[test] fn winner_selection_price_preference_on_tie() { - let (env, client) = setup(); + let (env, client, anyone) = setup(); let creator = Address::generate(&env); let task_id = Symbol::new(&env, "tie"); - create_test_auction(&env, &client, &creator, &task_id, 3600); + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); - // Two bidders with identical reputation — cheaper wins. let cheap = Address::generate(&env); let ex = Address::generate(&env); + let s1 = salt(&env, 31); + let s2 = salt(&env, 32); + let t = terms(&env, "X"); - let s1 = BytesN::<32>::from_array(&env, &[31u8; 32]); - let s2 = BytesN::<32>::from_array(&env, &[32u8; 32]); - let t = String::from_str(&env, "X"); - - let c1 = test_commitment(&env, &cheap, 2_000_000, &t, &s1); - let c2 = test_commitment(&env, &ex, 10_000_000, &t, &s2); - - client.submit_bid(&task_id, &cheap, &c1, &500_000, &80); - client.submit_bid(&task_id, &ex, &c2, &500_000, &80); - - env.ledger().set_timestamp(env.ledger().timestamp() + 3601); + let c1 = client.commitment_of(&task_id, &cheap, &2_000_000, &t, &s1); + let c2 = client.commitment_of(&task_id, &ex, &10_000_000, &t, &s2); + client.submit_bid(&task_id, &cheap, &c1, &BOND, &80); + client.submit_bid(&task_id, &ex, &c2, &BOND, &80); + enter_reveal_window(&env, &client, &task_id); client.reveal_bid(&task_id, &cheap, &2_000_000, &t, &s1); client.reveal_bid(&task_id, &ex, &10_000_000, &t, &s2); - client.reveal_bids(&task_id); + client.reveal_bids(&anyone, &task_id); assert_eq!(client.get_winner(&task_id).unwrap(), cheap); } #[test] fn non_revealed_bidder_cannot_win() { - let (env, client) = setup(); + let (env, client, anyone) = setup(); let creator = Address::generate(&env); let task_id = Symbol::new(&env, "no_show"); - create_test_auction(&env, &client, &creator, &task_id, 3600); + create_test_auction(&env, &client, &creator, &task_id, BID_SECS); let rev = Address::generate(&env); let noshow = Address::generate(&env); + let s_r = salt(&env, 41); + let s_n = salt(&env, 42); + let t = terms(&env, "Terms"); - let s_r = BytesN::<32>::from_array(&env, &[41u8; 32]); - let s_n = BytesN::<32>::from_array(&env, &[42u8; 32]); - let t = String::from_str(&env, "Terms"); - - let c_r = test_commitment(&env, &rev, 5_000_000, &t, &s_r); - let c_n = test_commitment(&env, &noshow, 1_000, &t, &s_n); + let c_r = client.commitment_of(&task_id, &rev, &5_000_000, &t, &s_r); + let c_n = client.commitment_of(&task_id, &noshow, &RESERVE, &t, &s_n); + client.submit_bid(&task_id, &rev, &c_r, &BOND, &50); + client.submit_bid(&task_id, &noshow, &c_n, &BOND, &90); - client.submit_bid(&task_id, &rev, &c_r, &500_000, &50); - client.submit_bid(&task_id, &noshow, &c_n, &500_000, &90); - - env.ledger().set_timestamp(env.ledger().timestamp() + 3601); - - // Only `rev` reveals. + enter_reveal_window(&env, &client, &task_id); client.reveal_bid(&task_id, &rev, &5_000_000, &t, &s_r); - client.reveal_bids(&task_id); + + // The no-show never reveals, so the auction can only be finalised once + // the reveal window has closed. + close_reveal_window(&env, &client, &task_id); + client.reveal_bids(&anyone, &task_id); assert_eq!( client.get_winner(&task_id).unwrap(), diff --git a/smart-contracts/contracts/agent_bidding/src/types.rs b/smart-contracts/contracts/agent_bidding/src/types.rs index 3cf0917f..a3288ae3 100644 --- a/smart-contracts/contracts/agent_bidding/src/types.rs +++ b/smart-contracts/contracts/agent_bidding/src/types.rs @@ -9,24 +9,34 @@ //! ```text //! create_auction → submit_bid (sealed) → reveal_bid (each bidder) //! ↓ ↓ -//! [Bidding] ─────────────────────────────────→ [Reveal] -//! ↓ +//! [Bidding] ──── bid deadline ────→ [Bidding, reveal window open] +//! ↓ +//! reveal deadline (or all revealed) +//! ↓ //! reveal_bids (winner computed) -//! ↓ +//! ↓ +//! [Reveal] +//! ↓ //! award_contract (escrow + refunds) -//! ↓ -//! [Awarded] +//! ↓ +//! [Awarded] //! ``` //! +//! An auction that attracts no valid reveal before the reveal deadline is a +//! dead auction: `abort_auction` moves it to [`AuctionPhase::Cancelled`] and +//! releases every bond, so bonds are never locked forever. See +//! `docs/agent-bidding-security.md` for the full threat model. +//! //! ## Event Catalogue //! //! | Function | topic[1] | Data | //! |-------------------|-----------------------|-------------------------------------| //! | `create_auction` | `created` | `AuctionCreatedEvent` | -//! | `submit_bid` | `bid_submitted` | `BidSubmittedEvent` | -//! | `reveal_bid` | `bid_revealed` | `BidRevealedEvent` | -//! | `reveal_bids` | `bids_revealed` | `BidsRevealedEvent` | -//! | `award_contract` | `contract_awarded` | `ContractAwardedEvent` | +//! | `submit_bid` | `bid_sbmtd` | `BidSubmittedEvent` | +//! | `reveal_bid` | `bid_rvld` | `BidRevealedEvent` | +//! | `reveal_bids` | `bids_rvld` | `BidsRevealedEvent` | +//! | `award_contract` | `cntrct_aw` | `ContractAwardedEvent` | +//! | `abort_auction` | `aborted` | `AuctionAbortedEvent` | use soroban_sdk::{contracttype, Address, BytesN, String, Symbol}; @@ -35,9 +45,45 @@ use soroban_sdk::{contracttype, Address, BytesN, String, Symbol}; /// Default bidding period duration in ledger-seconds (1 hour). pub const DEFAULT_BIDDING_DURATION_SECS: u64 = 3_600; +/// Default reveal window duration in ledger-seconds (1 hour). +/// +/// The reveal window opens when the bidding deadline passes and closes at +/// `deadline + reveal_duration_secs`. Bounding the window is what makes the +/// auction finalisable: without it, `reveal_bids` could be front-run the +/// instant bidding closed (see `docs/agent-bidding-security.md`, A-1). +pub const DEFAULT_REVEAL_DURATION_SECS: u64 = 3_600; + +/// Upper bound on any single auction phase, in ledger-seconds (30 days). +/// +/// Caps how far into the future a creator can push a deadline, which bounds +/// how long bonds can be locked by a single call. +pub const MAX_PHASE_DURATION_SECS: u64 = 30 * 24 * 60 * 60; + +/// Lower bound on any single auction phase, in ledger-seconds (1 minute). +/// +/// A sub-minute window is not reliably reachable by honest bidders across +/// ledger close times, so it would function as a censorship tool. +pub const MIN_PHASE_DURATION_SECS: u64 = 60; + /// Maximum allowed reputation score (percentage scale). pub const MAX_REPUTATION: u32 = 100; +/// Hard ceiling on any bid price, reserve price, or price cap, in stroops. +/// +/// 10^17 stroops = 10^10 XLM, comfortably above the total XLM supply while +/// leaving ~10 orders of magnitude of headroom under `i128::MAX` for the +/// `SCORE_SCALE * price` products computed during scoring. +pub const MAX_BID_PRICE: i128 = 100_000_000_000_000_000; + +/// Maximum number of sealed bids a single auction will accept. +/// +/// `reveal_bids` and `award_contract` iterate the full bidder list, so this +/// cap is what keeps both calls inside a bounded CPU/storage footprint. +pub const MAX_BIDDERS: u32 = 100; + +/// Maximum byte length of the free-text `terms` attached to a revealed bid. +pub const MAX_TERMS_LEN: u32 = 512; + /// Score scale factor for normalised sub-scores. /// Each sub-score (price, reputation) is normalised to `[0, SCORE_SCALE]`. pub const SCORE_SCALE: i128 = 1_000; @@ -46,6 +92,14 @@ pub const SCORE_SCALE: i128 = 1_000; pub const PRICE_WEIGHT: i128 = 60; pub const REPUTATION_WEIGHT: i128 = 40; +/// Domain-separation tag mixed into every bid commitment. +/// +/// Binding the contract id, task id, and this tag into the pre-image is what +/// stops a commitment from being replayed into a different auction or a +/// different deployment of this contract (see `docs/agent-bidding-security.md`, +/// A-3). +pub const COMMITMENT_DOMAIN: &str = "ai-net:agent_bidding:v2:bid"; + // ─── Auction Lifecycle ─────────────────────────────────────────────────────── /// Phases an auction moves through. @@ -53,12 +107,14 @@ pub const REPUTATION_WEIGHT: i128 = 40; #[derive(Clone, Debug, Eq, PartialEq)] #[repr(u32)] pub enum AuctionPhase { - /// Collecting sealed bids. The creator may cancel during this phase. + /// Collecting sealed bids, then collecting reveals. Bidding = 0, - /// Bidding period has ended; bids can be revealed and the winner computed. + /// Winner selected from the revealed bids; awaiting `award_contract`. Reveal = 1, - /// Winner selected, escrow created, bonds refunded. Terminal state. + /// Winner selected, escrow created, bonds settled. Terminal state. Awarded = 2, + /// Auction died without a valid reveal; every bond released. Terminal. + Cancelled = 3, } /// Creator-supplied configuration for an auction. @@ -67,8 +123,15 @@ pub enum AuctionPhase { pub struct AuctionConfig { /// Duration of the bidding period in ledger-seconds (default: 1 h). pub duration_secs: u64, + /// Duration of the reveal window in ledger-seconds (default: 1 h). + pub reveal_duration_secs: u64, /// Minimum accepted price in stroops (reserve price). pub reserve_price: i128, + /// Maximum accepted price in stroops (position-size cap). + /// + /// A reveal above this price is rejected, so a single bidder cannot commit + /// the creator to an unbounded position. Always `>= reserve_price`. + pub max_price: i128, /// Required bond in stroops that each bidder must lock. pub bond: i128, } @@ -85,8 +148,15 @@ pub struct Auction { pub config: AuctionConfig, /// Ledger timestamp when the auction was created. pub created_at: u64, - /// Ledger timestamp after which the bidding period ends. + /// Ledger timestamp after which the bidding period ends and reveals open. pub deadline: u64, + /// Ledger timestamp after which reveals are refused and the winner can be + /// computed. Always `> deadline`. + pub reveal_deadline: u64, + /// How many sealed bids have been submitted (bounded by [`MAX_BIDDERS`]). + pub bid_count: u32, + /// How many of those bids have been revealed. + pub revealed_count: u32, /// Current phase of the auction. pub phase: AuctionPhase, /// Whether the escrow has been created for the winner. @@ -98,11 +168,14 @@ pub struct Auction { /// A sealed bid stored on-chain during the bidding phase. /// /// The `commitment` is an opaque 32-byte hash that commits the bidder to a -/// specific `(price, terms, salt)` triple. The commitment is computed off-chain -/// as: +/// specific `(price, terms, salt)` triple *for one specific auction on one +/// specific contract*. The commitment is computed off-chain as: /// /// ```text -/// commitment = SHA-256(bidder_xdr || price_xdr || terms_xdr || salt_xdr) +/// commitment = SHA-256( +/// COMMITMENT_DOMAIN_xdr || contract_id_xdr || task_id_xdr || +/// bidder_xdr || price_xdr || terms_xdr || salt_xdr +/// ) /// ``` /// /// where each field is serialised to its Stellar XDR wire format before @@ -113,7 +186,7 @@ pub struct Auction { pub struct SealedBid { /// Who placed this bid. pub bidder: Address, - /// SHA-256 commitment of (bidder, price, terms, salt). + /// SHA-256 commitment, domain-separated by contract id and task id. pub commitment: BytesN<32>, /// Bond locked by the bidder (matches the auction's required bond). pub bond: i128, @@ -121,8 +194,14 @@ pub struct SealedBid { pub reputation: u32, /// Whether the bidder has revealed their plaintext bid. pub revealed: bool, - /// Whether the bidder's bond has been refunded (set during award). + /// Whether the bidder's bond has been released back to them. pub refunded: bool, + /// Whether the bidder's bond has been forfeited for failing to reveal. + /// + /// Mutually exclusive with `refunded`. Forfeiting the bond of a bidder who + /// commits and then stays silent is what prices the free option described + /// in `docs/agent-bidding-security.md`, A-2. + pub forfeited: bool, /// Revealed price in stroops (0 while sealed). pub price_stroops: i128, /// Revealed terms (empty string while sealed). @@ -181,8 +260,11 @@ pub struct AuctionCreatedEvent { pub task_id: Symbol, pub creator: Address, pub duration_secs: u64, + pub reveal_duration_secs: u64, pub deadline: u64, + pub reveal_deadline: u64, pub reserve_price: i128, + pub max_price: i128, pub bond: i128, } @@ -220,7 +302,7 @@ pub struct BidsRevealedEvent { pub winning_price: i128, } -/// Emitted when `award_contract` creates the escrow and refunds bonds. +/// Emitted when `award_contract` creates the escrow and settles bonds. #[contracttype] #[derive(Clone, Debug, Eq, PartialEq)] pub struct ContractAwardedEvent { @@ -228,6 +310,19 @@ pub struct ContractAwardedEvent { pub winner: Address, /// Amount locked in escrow (= winning price). pub escrow_amount: i128, - /// Total number of bidders whose bonds were refunded. + /// Number of bidders who revealed and got their bond back. + pub refunded_bidders: u32, + /// Number of bidders who never revealed and forfeited their bond. + pub forfeited_bidders: u32, +} + +/// Emitted when `abort_auction` cancels an auction that drew no valid reveal. +#[contracttype] +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct AuctionAbortedEvent { + pub task_id: Symbol, + /// Who called `abort_auction`. + pub caller: Address, + /// Number of bidders whose bond was released by the abort. pub refunded_bidders: u32, } diff --git a/smart-contracts/contracts/agent_bidding/test_snapshots/test/abort_auction_rejected_when_a_bid_was_revealed.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/abort_auction_rejected_when_a_bid_was_revealed.1.json new file mode 100644 index 00000000..05b44756 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/abort_auction_rejected_when_a_bid_was_revealed.1.json @@ -0,0 +1,687 @@ +{ + "generators": { + "address": 4, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "symbol": "has_rev" + }, + { + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "has_rev" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "bytes": "df1d755740289eba35c7da334a6369c30c7773f7eff8629b6ef4dc56343d1ad5" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bid", + "args": [ + { + "symbol": "has_rev" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "i128": { + "hi": 0, + "lo": 2000000 + } + }, + { + "string": "T" + }, + { + "bytes": "7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b" + } + ] + } + }, + "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": "has_rev" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "has_rev" + } + ] + }, + "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": 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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "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": "has_rev" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "has_rev" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "has_rev" + }, + { + "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": "df1d755740289eba35c7da334a6369c30c7773f7eff8629b6ef4dc56343d1ad5" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "price_stroops" + }, + "val": { + "i128": { + "hi": 0, + "lo": 2000000 + } + } + }, + { + "key": { + "symbol": "refunded" + }, + "val": { + "bool": false + } + }, + { + "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": "T" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "has_rev" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "has_rev" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "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": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_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/test/abort_auction_rejected_while_reveal_window_open.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/abort_auction_rejected_while_reveal_window_open.1.json new file mode 100644 index 00000000..3fc5bea6 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/abort_auction_rejected_while_reveal_window_open.1.json @@ -0,0 +1,406 @@ +{ + "generators": { + "address": 3, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "symbol": "too_early" + }, + { + "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": 0 + } + } + }, + { + "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": 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": "too_early" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "too_early" + } + ] + }, + "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": 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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "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": "too_early" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "too_early" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "too_early" + } + ] + }, + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4095 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/smart-contracts/contracts/agent_bidding/test_snapshots/test/abort_auction_releases_bonds_when_nobody_reveals.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/abort_auction_releases_bonds_when_nobody_reveals.1.json new file mode 100644 index 00000000..ecb139b1 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/abort_auction_releases_bonds_when_nobody_reveals.1.json @@ -0,0 +1,889 @@ +{ + "generators": { + "address": 5, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "symbol": "dead" + }, + { + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "dead" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "bytes": "f26860ae59c8c773907d14c5cc62bb52c0c773c8c3d23a8a81de3fdd80f8b83b" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "dead" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "508c7bf05fa21cb2d4c6d9677817be294db6c8a6218d4c7e622a3a6709bce02b" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "abort_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "dead" + } + ] + } + }, + "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": "dead" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "dead" + } + ] + }, + "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": 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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "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": "dead" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "dead" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "dead" + }, + { + "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": "f26860ae59c8c773907d14c5cc62bb52c0c773c8c3d23a8a81de3fdd80f8b83b" + } + }, + { + "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": "Bid" + }, + { + "symbol": "dead" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "dead" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "508c7bf05fa21cb2d4c6d9677817be294db6c8a6218d4c7e622a3a6709bce02b" + } + }, + { + "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": "dead" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "dead" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + } + } + }, + "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": 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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "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/agent_bidding/test_snapshots/test/award_contract_before_reveal_bids_fails.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/award_contract_before_reveal_bids_fails.1.json index 70c105c5..ddf8d8c5 100644 --- a/smart-contracts/contracts/agent_bidding/test_snapshots/test/award_contract_before_reveal_bids_fails.1.json +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/award_contract_before_reveal_bids_fails.1.json @@ -1,13 +1,13 @@ { "generators": { - "address": 3, + "address": 4, "nonce": 0 }, "auth": [ [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", { "function": { "contract_fn": { @@ -15,25 +15,63 @@ "function_name": "create_auction", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, { "symbol": "pre_award" }, { - "u64": 3600 - }, - { - "i128": { - "hi": 0, - "lo": 1000000 - } - }, - { - "i128": { - "hi": 0, - "lo": 500000 - } + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] } ] } @@ -42,9 +80,10 @@ } ] ], + [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", { "function": { "contract_fn": { @@ -55,10 +94,10 @@ "symbol": "pre_award" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { - "bytes": "9e229049ee32ee08e98779769c33cc635850ce3c4ad5e7630e505db0d68f22ce" + "bytes": "ce4527734a1ebaa997685ab310f77079b60cf0cf735a6758a756e139e527cadc" }, { "i128": { @@ -76,6 +115,7 @@ } ] ], + [], [] ], "ledger": { @@ -125,6 +165,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 1 + } + }, { "key": { "symbol": "config" @@ -150,6 +198,17 @@ "u64": 3600 } }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100000000000000000 + } + } + }, { "key": { "symbol": "reserve_price" @@ -160,6 +219,14 @@ "lo": 1000000 } } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } } ] } @@ -177,7 +244,7 @@ "symbol": "creator" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } }, { @@ -204,6 +271,22 @@ "u32": 0 } }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 0 + } + }, { "key": { "symbol": "task_id" @@ -234,7 +317,7 @@ "symbol": "pre_award" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -257,7 +340,7 @@ "symbol": "pre_award" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -269,7 +352,7 @@ "symbol": "bidder" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } }, { @@ -288,7 +371,15 @@ "symbol": "commitment" }, "val": { - "bytes": "9e229049ee32ee08e98779769c33cc635850ce3c4ad5e7630e505db0d68f22ce" + "bytes": "ce4527734a1ebaa997685ab310f77079b60cf0cf735a6758a756e139e527cadc" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false } }, { @@ -392,7 +483,7 @@ "val": { "vec": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] } @@ -438,7 +529,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 @@ -453,7 +544,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 @@ -471,7 +562,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 @@ -486,7 +577,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 diff --git a/smart-contracts/contracts/agent_bidding/test_snapshots/test/award_contract_creates_escrow_and_refunds.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/award_contract_creates_escrow_and_refunds.1.json index 937078e4..6e7228a0 100644 --- a/smart-contracts/contracts/agent_bidding/test_snapshots/test/award_contract_creates_escrow_and_refunds.1.json +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/award_contract_creates_escrow_and_refunds.1.json @@ -1,13 +1,13 @@ { "generators": { - "address": 3, + "address": 4, "nonce": 0 }, "auth": [ [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", { "function": { "contract_fn": { @@ -15,25 +15,63 @@ "function_name": "create_auction", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, { "symbol": "award_ok" }, { - "u64": 3600 - }, - { - "i128": { - "hi": 0, - "lo": 1000000 - } - }, - { - "i128": { - "hi": 0, - "lo": 500000 - } + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] } ] } @@ -42,9 +80,10 @@ } ] ], + [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", { "function": { "contract_fn": { @@ -55,10 +94,10 @@ "symbol": "award_ok" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { - "bytes": "6286aee724e43a249d58fc23e7eeaf8f66ee9905e673b085a028b75160cfe805" + "bytes": "9f0ff83c261e0c38900da8cd82d53b06a6032879c8131bae1e20cd764798aa6e" }, { "i128": { @@ -76,9 +115,10 @@ } ] ], + [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", { "function": { "contract_fn": { @@ -89,7 +129,7 @@ "symbol": "award_ok" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { "i128": { @@ -101,7 +141,51 @@ "string": "Winner" }, { - "bytes": "1010101010101010101010101010101010101010101010101010101010101010" + "bytes": "1111111111111111111111111111111111111111111111111111111111111111" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bids", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "award_ok" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "award_contract", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "symbol": "award_ok" } ] } @@ -110,8 +194,6 @@ } ] ], - [], - [], [], [], [] @@ -163,6 +245,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 1 + } + }, { "key": { "symbol": "config" @@ -188,6 +278,17 @@ "u64": 3600 } }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100000000000000000 + } + } + }, { "key": { "symbol": "reserve_price" @@ -198,6 +299,14 @@ "lo": 1000000 } } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } } ] } @@ -215,7 +324,7 @@ "symbol": "creator" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } }, { @@ -242,6 +351,22 @@ "u32": 2 } }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 1 + } + }, { "key": { "symbol": "task_id" @@ -272,7 +397,7 @@ "symbol": "award_ok" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -295,7 +420,7 @@ "symbol": "award_ok" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -307,7 +432,7 @@ "symbol": "bidder" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } }, { @@ -326,7 +451,15 @@ "symbol": "commitment" }, "val": { - "bytes": "6286aee724e43a249d58fc23e7eeaf8f66ee9905e673b085a028b75160cfe805" + "bytes": "9f0ff83c261e0c38900da8cd82d53b06a6032879c8131bae1e20cd764798aa6e" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false } }, { @@ -430,7 +563,7 @@ "val": { "vec": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] } @@ -483,7 +616,7 @@ "symbol": "agent" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } }, { @@ -502,7 +635,7 @@ "symbol": "creator" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } }, { @@ -574,7 +707,7 @@ }, "durability": "persistent", "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } } }, @@ -621,7 +754,7 @@ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", "key": { "ledger_key_nonce": { - "nonce": 801925984706572462 + "nonce": 4837995959683129791 } }, "durability": "temporary" @@ -634,6 +767,39 @@ "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": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 @@ -654,7 +820,7 @@ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { - "nonce": 1033654523790656264 + "nonce": 2032731177588607455 } }, "durability": "temporary" @@ -667,6 +833,39 @@ "contract_data": { "ext": "v0", "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 2032731177588607455 + } + }, + "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 @@ -684,7 +883,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 @@ -699,7 +898,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 diff --git a/smart-contracts/contracts/agent_bidding/test_snapshots/test/award_contract_forfeits_bonds_of_non_revealers.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/award_contract_forfeits_bonds_of_non_revealers.1.json new file mode 100644 index 00000000..0afa7273 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/award_contract_forfeits_bonds_of_non_revealers.1.json @@ -0,0 +1,1152 @@ +{ + "generators": { + "address": 5, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "symbol": "forfeit" + }, + { + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "forfeit" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "bytes": "c950f57d0691eb92e8f8c89e86416878bce3bc0de919da169b48fd6b91af80d9" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "forfeit" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "f816db8b70be187820535995026bfd131e9d24a61d06b41584dbc4e2b0333def" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 99 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bid", + "args": [ + { + "symbol": "forfeit" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "i128": { + "hi": 0, + "lo": 3000000 + } + }, + { + "string": "T" + }, + { + "bytes": "6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bids", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "forfeit" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "award_contract", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "symbol": "forfeit" + } + ] + } + }, + "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": "forfeit" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "forfeit" + } + ] + }, + "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": 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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "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": 1 + } + }, + { + "key": { + "symbol": "task_id" + }, + "val": { + "symbol": "forfeit" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "forfeit" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "forfeit" + }, + { + "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": "c950f57d0691eb92e8f8c89e86416878bce3bc0de919da169b48fd6b91af80d9" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "price_stroops" + }, + "val": { + "i128": { + "hi": 0, + "lo": 3000000 + } + } + }, + { + "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": 1000 + } + } + }, + { + "key": { + "symbol": "terms" + }, + "val": { + "string": "T" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "forfeit" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "forfeit" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "f816db8b70be187820535995026bfd131e9d24a61d06b41584dbc4e2b0333def" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "price_stroops" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "refunded" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "reputation" + }, + "val": { + "u32": 99 + } + }, + { + "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": "forfeit" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "forfeit" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "symbol": "forfeit" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "symbol": "forfeit" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "agent" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": { + "hi": 0, + "lo": 3000000 + } + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "refunded" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "released" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "task_id" + }, + "val": { + "symbol": "forfeit" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Winner" + }, + { + "symbol": "forfeit" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Winner" + }, + { + "symbol": "forfeit" + } + ] + }, + "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": 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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 4270020994084947596 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 4270020994084947596 + } + }, + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "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/agent_bidding/test_snapshots/test/award_contract_refunds_all_revealed_bidders.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/award_contract_refunds_all_revealed_bidders.1.json new file mode 100644 index 00000000..390d7071 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/award_contract_refunds_all_revealed_bidders.1.json @@ -0,0 +1,1218 @@ +{ + "generators": { + "address": 5, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "symbol": "refund_all" + }, + { + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "refund_all" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "bytes": "451cc74e7c713ee1e2ffa87edecce0cb3045227084c5dadbd85745844783b42a" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 80 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "refund_all" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "d085efd4c9f6c91f5829eab4f34c75b0a6eab7998adb194fef3d5e75b635016d" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 80 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bid", + "args": [ + { + "symbol": "refund_all" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "i128": { + "hi": 0, + "lo": 1000000 + } + }, + { + "string": "Win" + }, + { + "bytes": "1212121212121212121212121212121212121212121212121212121212121212" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bid", + "args": [ + { + "symbol": "refund_all" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "i128": { + "hi": 0, + "lo": 10000000 + } + }, + { + "string": "Lose" + }, + { + "bytes": "1313131313131313131313131313131313131313131313131313131313131313" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bids", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "refund_all" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "award_contract", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "symbol": "refund_all" + } + ] + } + }, + "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": "refund_all" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "refund_all" + } + ] + }, + "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": 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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "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": "refund_all" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "refund_all" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "refund_all" + }, + { + "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": "451cc74e7c713ee1e2ffa87edecce0cb3045227084c5dadbd85745844783b42a" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "price_stroops" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "refunded" + }, + "val": { + "bool": true + } + }, + { + "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": "Win" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "refund_all" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "refund_all" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "d085efd4c9f6c91f5829eab4f34c75b0a6eab7998adb194fef3d5e75b635016d" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "price_stroops" + }, + "val": { + "i128": { + "hi": 0, + "lo": 10000000 + } + } + }, + { + "key": { + "symbol": "refunded" + }, + "val": { + "bool": true + } + }, + { + "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": "Lose" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "refund_all" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "refund_all" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "symbol": "refund_all" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "symbol": "refund_all" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "agent" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + }, + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "refunded" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "released" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "task_id" + }, + "val": { + "symbol": "refund_all" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Winner" + }, + { + "symbol": "refund_all" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Winner" + }, + { + "symbol": "refund_all" + } + ] + }, + "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": 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": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 8370022561469687789 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 8370022561469687789 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "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_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/test/award_contract_rejects_unrelated_caller.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/award_contract_rejects_unrelated_caller.1.json new file mode 100644 index 00000000..c645226c --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/award_contract_rejects_unrelated_caller.1.json @@ -0,0 +1,939 @@ +{ + "generators": { + "address": 5, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "symbol": "stranger" + }, + { + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "stranger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "c4ca5202bd0278c46920546843d64e05cc274a5cb0a8d6bdea845e43638b5401" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 80 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bid", + "args": [ + { + "symbol": "stranger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "i128": { + "hi": 0, + "lo": 5000000 + } + }, + { + "string": "Solo" + }, + { + "bytes": "1616161616161616161616161616161616161616161616161616161616161616" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bids", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "stranger" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "award_contract", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "symbol": "stranger" + } + ] + } + }, + "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": "stranger" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "stranger" + } + ] + }, + "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": 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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "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": 1 + } + }, + { + "key": { + "symbol": "task_id" + }, + "val": { + "symbol": "stranger" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "stranger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "stranger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "c4ca5202bd0278c46920546843d64e05cc274a5cb0a8d6bdea845e43638b5401" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "price_stroops" + }, + "val": { + "i128": { + "hi": 0, + "lo": 5000000 + } + } + }, + { + "key": { + "symbol": "refunded" + }, + "val": { + "bool": true + } + }, + { + "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": "Solo" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "stranger" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "stranger" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "symbol": "stranger" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Escrow" + }, + { + "symbol": "stranger" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "agent" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + }, + { + "key": { + "symbol": "amount" + }, + "val": { + "i128": { + "hi": 0, + "lo": 5000000 + } + } + }, + { + "key": { + "symbol": "creator" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "key": { + "symbol": "refunded" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "released" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "task_id" + }, + "val": { + "symbol": "stranger" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Winner" + }, + { + "symbol": "stranger" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Winner" + }, + { + "symbol": "stranger" + } + ] + }, + "durability": "persistent", + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + } + }, + "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": 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": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": 4270020994084947596 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": 4270020994084947596 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "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/test/award_contract_twice_fails.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/award_contract_twice_fails.1.json index e760477d..01581989 100644 --- a/smart-contracts/contracts/agent_bidding/test_snapshots/test/award_contract_twice_fails.1.json +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/award_contract_twice_fails.1.json @@ -1,13 +1,13 @@ { "generators": { - "address": 3, + "address": 4, "nonce": 0 }, "auth": [ [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", { "function": { "contract_fn": { @@ -15,25 +15,63 @@ "function_name": "create_auction", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, { "symbol": "twice_award" }, { - "u64": 3600 - }, - { - "i128": { - "hi": 0, - "lo": 1000000 - } - }, - { - "i128": { - "hi": 0, - "lo": 500000 - } + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] } ] } @@ -42,9 +80,10 @@ } ] ], + [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", { "function": { "contract_fn": { @@ -55,10 +94,10 @@ "symbol": "twice_award" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { - "bytes": "8f797d7a3c138e2a173993b95e1e66d5feb5c08e727e876a118712a335261280" + "bytes": "6ad7960e121f9ab68f172f8dfa261aaffb85036ab4e9a825506fa0bfdd23a549" }, { "i128": { @@ -76,9 +115,10 @@ } ] ], + [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", { "function": { "contract_fn": { @@ -89,7 +129,7 @@ "symbol": "twice_award" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { "i128": { @@ -101,7 +141,51 @@ "string": "Solo" }, { - "bytes": "1414141414141414141414141414141414141414141414141414141414141414" + "bytes": "1515151515151515151515151515151515151515151515151515151515151515" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bids", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "twice_award" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "award_contract", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "symbol": "twice_award" } ] } @@ -110,8 +194,6 @@ } ] ], - [], - [], [] ], "ledger": { @@ -161,6 +243,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 1 + } + }, { "key": { "symbol": "config" @@ -186,6 +276,17 @@ "u64": 3600 } }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100000000000000000 + } + } + }, { "key": { "symbol": "reserve_price" @@ -196,6 +297,14 @@ "lo": 1000000 } } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } } ] } @@ -213,7 +322,7 @@ "symbol": "creator" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } }, { @@ -240,6 +349,22 @@ "u32": 2 } }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 1 + } + }, { "key": { "symbol": "task_id" @@ -270,7 +395,7 @@ "symbol": "twice_award" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -293,7 +418,7 @@ "symbol": "twice_award" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -305,7 +430,7 @@ "symbol": "bidder" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } }, { @@ -324,7 +449,15 @@ "symbol": "commitment" }, "val": { - "bytes": "8f797d7a3c138e2a173993b95e1e66d5feb5c08e727e876a118712a335261280" + "bytes": "6ad7960e121f9ab68f172f8dfa261aaffb85036ab4e9a825506fa0bfdd23a549" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false } }, { @@ -428,7 +561,7 @@ "val": { "vec": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] } @@ -481,7 +614,7 @@ "symbol": "agent" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } }, { @@ -500,7 +633,7 @@ "symbol": "creator" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } }, { @@ -572,7 +705,7 @@ }, "durability": "persistent", "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } } }, @@ -619,7 +752,7 @@ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", "key": { "ledger_key_nonce": { - "nonce": 801925984706572462 + "nonce": 4837995959683129791 } }, "durability": "temporary" @@ -632,6 +765,39 @@ "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": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 @@ -652,7 +818,7 @@ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { - "nonce": 1033654523790656264 + "nonce": 2032731177588607455 } }, "durability": "temporary" @@ -665,6 +831,39 @@ "contract_data": { "ext": "v0", "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 2032731177588607455 + } + }, + "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 @@ -682,7 +881,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 @@ -697,7 +896,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 diff --git a/smart-contracts/contracts/agent_bidding/test_snapshots/test/cancelled_auction_accepts_no_further_calls.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/cancelled_auction_accepts_no_further_calls.1.json new file mode 100644 index 00000000..21e1f993 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/cancelled_auction_accepts_no_further_calls.1.json @@ -0,0 +1,676 @@ +{ + "generators": { + "address": 4, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "symbol": "closed" + }, + { + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "closed" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "bytes": "69f43a0df588f4d071f3e81c8003e23130de86e352c6e2a67a21497e881b1f28" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "abort_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "closed" + } + ] + } + }, + "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": "closed" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "closed" + } + ] + }, + "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": 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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "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": "closed" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "closed" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "closed" + }, + { + "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": "69f43a0df588f4d071f3e81c8003e23130de86e352c6e2a67a21497e881b1f28" + } + }, + { + "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": "closed" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "closed" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "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": 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": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_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/test/commitment_cannot_be_replayed_across_auctions.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/commitment_cannot_be_replayed_across_auctions.1.json new file mode 100644 index 00000000..c96c9b1d --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/commitment_cannot_be_replayed_across_auctions.1.json @@ -0,0 +1,949 @@ +{ + "generators": { + "address": 4, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "symbol": "task_a" + }, + { + "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": 0 + } + } + }, + { + "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": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "symbol": "task_b" + }, + { + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "task_b" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "bytes": "1ee5db6ac668c700c16586795d9d798e91d7f194d08e1821dd9d099be9a6a166" + }, + { + "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_a" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "task_a" + } + ] + }, + "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": 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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "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_a" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "task_b" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "task_b" + } + ] + }, + "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": 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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "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_b" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "task_b" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "task_b" + }, + { + "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": "1ee5db6ac668c700c16586795d9d798e91d7f194d08e1821dd9d099be9a6a166" + } + }, + { + "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_a" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "task_a" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "task_b" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "task_b" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_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_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/test/commitment_cannot_be_replayed_by_another_bidder.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/commitment_cannot_be_replayed_by_another_bidder.1.json new file mode 100644 index 00000000..474532fc --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/commitment_cannot_be_replayed_by_another_bidder.1.json @@ -0,0 +1,897 @@ +{ + "generators": { + "address": 5, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "symbol": "copycat" + }, + { + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "copycat" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "bytes": "347dfdeb4d6f44e2c53b61f94e73f6f389f79ced31446c0cb2cc1968ea0f9c8b" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 70 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "copycat" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "347dfdeb4d6f44e2c53b61f94e73f6f389f79ced31446c0cb2cc1968ea0f9c8b" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 70 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bid", + "args": [ + { + "symbol": "copycat" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "i128": { + "hi": 0, + "lo": 2500000 + } + }, + { + "string": "Mine" + }, + { + "bytes": "5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c" + } + ] + } + }, + "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": "copycat" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "copycat" + } + ] + }, + "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": 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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "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": "copycat" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "copycat" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "copycat" + }, + { + "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": "347dfdeb4d6f44e2c53b61f94e73f6f389f79ced31446c0cb2cc1968ea0f9c8b" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "price_stroops" + }, + "val": { + "i128": { + "hi": 0, + "lo": 2500000 + } + } + }, + { + "key": { + "symbol": "refunded" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "reputation" + }, + "val": { + "u32": 70 + } + }, + { + "key": { + "symbol": "revealed" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "score" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "terms" + }, + "val": { + "string": "Mine" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "copycat" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "copycat" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "347dfdeb4d6f44e2c53b61f94e73f6f389f79ced31446c0cb2cc1968ea0f9c8b" + } + }, + { + "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": 70 + } + }, + { + "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": "copycat" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "copycat" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + } + } + }, + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "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/agent_bidding/test_snapshots/test/commitment_of_matches_what_reveal_verifies.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/commitment_of_matches_what_reveal_verifies.1.json new file mode 100644 index 00000000..c8121264 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/commitment_of_matches_what_reveal_verifies.1.json @@ -0,0 +1,686 @@ +{ + "generators": { + "address": 4, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "symbol": "commit_of" + }, + { + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "commit_of" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "bytes": "1a2d476c943836537d5393df01238f8d29acefb25d89cf37dd1936a4c4f1b67f" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 60 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bid", + "args": [ + { + "symbol": "commit_of" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "i128": { + "hi": 0, + "lo": 2500000 + } + }, + { + "string": "Published helper" + }, + { + "bytes": "8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c" + } + ] + } + }, + "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": "commit_of" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "commit_of" + } + ] + }, + "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": 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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "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": "commit_of" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "commit_of" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "commit_of" + }, + { + "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": "1a2d476c943836537d5393df01238f8d29acefb25d89cf37dd1936a4c4f1b67f" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "price_stroops" + }, + "val": { + "i128": { + "hi": 0, + "lo": 2500000 + } + } + }, + { + "key": { + "symbol": "refunded" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "reputation" + }, + "val": { + "u32": 60 + } + }, + { + "key": { + "symbol": "revealed" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "score" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "terms" + }, + "val": { + "string": "Published helper" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "commit_of" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "commit_of" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "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": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_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/test/create_auction_duplicate_fails.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/create_auction_duplicate_fails.1.json index 41446dd3..83cef10f 100644 --- a/smart-contracts/contracts/agent_bidding/test_snapshots/test/create_auction_duplicate_fails.1.json +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/create_auction_duplicate_fails.1.json @@ -1,13 +1,13 @@ { "generators": { - "address": 2, + "address": 3, "nonce": 0 }, "auth": [ [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", { "function": { "contract_fn": { @@ -15,25 +15,63 @@ "function_name": "create_auction", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, { "symbol": "dup" }, { - "u64": 0 - }, - { - "i128": { - "hi": 0, - "lo": 1000000 - } - }, - { - "i128": { - "hi": 0, - "lo": 500000 - } + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] } ] } @@ -91,6 +129,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 0 + } + }, { "key": { "symbol": "config" @@ -116,6 +162,17 @@ "u64": 3600 } }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100000000000000000 + } + } + }, { "key": { "symbol": "reserve_price" @@ -126,6 +183,14 @@ "lo": 1000000 } } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } } ] } @@ -143,7 +208,7 @@ "symbol": "creator" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } }, { @@ -170,6 +235,22 @@ "u32": 0 } }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 0 + } + }, { "key": { "symbol": "task_id" @@ -267,7 +348,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 @@ -282,7 +363,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 diff --git a/smart-contracts/contracts/agent_bidding/test_snapshots/test/create_auction_emits_event.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/create_auction_emits_event.1.json index 0ff80c54..0910623a 100644 --- a/smart-contracts/contracts/agent_bidding/test_snapshots/test/create_auction_emits_event.1.json +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/create_auction_emits_event.1.json @@ -1,13 +1,13 @@ { "generators": { - "address": 2, + "address": 3, "nonce": 0 }, "auth": [ [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", { "function": { "contract_fn": { @@ -15,25 +15,63 @@ "function_name": "create_auction", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, { "symbol": "events" }, { - "u64": 0 - }, - { - "i128": { - "hi": 0, - "lo": 1000000 - } - }, - { - "i128": { - "hi": 0, - "lo": 500000 - } + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] } ] } @@ -90,6 +128,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 0 + } + }, { "key": { "symbol": "config" @@ -115,6 +161,17 @@ "u64": 3600 } }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100000000000000000 + } + } + }, { "key": { "symbol": "reserve_price" @@ -125,6 +182,14 @@ "lo": 1000000 } } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } } ] } @@ -142,7 +207,7 @@ "symbol": "creator" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } }, { @@ -169,6 +234,22 @@ "u32": 0 } }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 0 + } + }, { "key": { "symbol": "task_id" @@ -266,7 +347,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 @@ -281,7 +362,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 @@ -353,7 +434,7 @@ "symbol": "creator" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } }, { @@ -372,6 +453,17 @@ "u64": 3600 } }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100000000000000000 + } + } + }, { "key": { "symbol": "reserve_price" @@ -383,6 +475,22 @@ } } }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + }, { "key": { "symbol": "task_id" diff --git a/smart-contracts/contracts/agent_bidding/test_snapshots/test/create_auction_rejects_inverted_price_range.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/create_auction_rejects_inverted_price_range.1.json new file mode 100644 index 00000000..01751e57 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/create_auction_rejects_inverted_price_range.1.json @@ -0,0 +1,76 @@ +{ + "generators": { + "address": 3, + "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/test/create_auction_rejects_out_of_range_durations.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/create_auction_rejects_out_of_range_durations.1.json new file mode 100644 index 00000000..65d378cc --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/create_auction_rejects_out_of_range_durations.1.json @@ -0,0 +1,77 @@ +{ + "generators": { + "address": 3, + "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/test/create_auction_rejects_price_above_global_ceiling.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/create_auction_rejects_price_above_global_ceiling.1.json new file mode 100644 index 00000000..01751e57 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/create_auction_rejects_price_above_global_ceiling.1.json @@ -0,0 +1,76 @@ +{ + "generators": { + "address": 3, + "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/test/create_auction_stores_record.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/create_auction_stores_record.1.json index ef3e978d..299bd4e2 100644 --- a/smart-contracts/contracts/agent_bidding/test_snapshots/test/create_auction_stores_record.1.json +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/create_auction_stores_record.1.json @@ -1,13 +1,13 @@ { "generators": { - "address": 2, + "address": 3, "nonce": 0 }, "auth": [ [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", { "function": { "contract_fn": { @@ -15,25 +15,63 @@ "function_name": "create_auction", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, { "symbol": "task_1" }, { - "u64": 0 - }, - { - "i128": { - "hi": 0, - "lo": 1000000 - } - }, - { - "i128": { - "hi": 0, - "lo": 500000 - } + "map": [ + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "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 + } + } + ] } ] } @@ -91,6 +129,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 0 + } + }, { "key": { "symbol": "config" @@ -116,6 +162,17 @@ "u64": 3600 } }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100000000000000000 + } + } + }, { "key": { "symbol": "reserve_price" @@ -126,6 +183,14 @@ "lo": 1000000 } } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } } ] } @@ -143,7 +208,7 @@ "symbol": "creator" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } }, { @@ -170,6 +235,22 @@ "u32": 0 } }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 0 + } + }, { "key": { "symbol": "task_id" @@ -267,7 +348,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 @@ -282,7 +363,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 diff --git a/smart-contracts/contracts/agent_bidding/test_snapshots/test/full_sealed_bid_reveal_award_flow.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/full_sealed_bid_reveal_award_flow.1.json index 120a9ea8..9b8033d5 100644 --- a/smart-contracts/contracts/agent_bidding/test_snapshots/test/full_sealed_bid_reveal_award_flow.1.json +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/full_sealed_bid_reveal_award_flow.1.json @@ -1,13 +1,13 @@ { "generators": { - "address": 5, + "address": 6, "nonce": 0 }, "auth": [ [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", { "function": { "contract_fn": { @@ -15,25 +15,63 @@ "function_name": "create_auction", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, { "symbol": "e2e" }, { - "u64": 3600 - }, - { - "i128": { - "hi": 0, - "lo": 1000000 - } - }, - { - "i128": { - "hi": 0, - "lo": 500000 - } + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] } ] } @@ -43,9 +81,12 @@ ] ], [], + [], + [], + [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", { "function": { "contract_fn": { @@ -56,10 +97,10 @@ "symbol": "e2e" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { - "bytes": "3d9a40924e246508f43ec8093ffb84f913bfe56cf0810510c5eb6f7da3424e9d" + "bytes": "c9584919968cd770f52f85902097be2ae0e6a81503a071a93e520ba02e5044ee" }, { "i128": { @@ -79,7 +120,7 @@ ], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", { "function": { "contract_fn": { @@ -90,10 +131,10 @@ "symbol": "e2e" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" }, { - "bytes": "b458207405952819823ebba13b9de5071e5834e2b6d7d64f37d9f23ed65cbc18" + "bytes": "63270ae3897784f1638db593b679da365b30c260c2eb5f73f3941674c5addcb9" }, { "i128": { @@ -113,7 +154,7 @@ ], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", { "function": { "contract_fn": { @@ -124,10 +165,10 @@ "symbol": "e2e" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" }, { - "bytes": "401976309b41ac1ef0a9b925cd57860e1ff4f7dee23a82c3aceac700e84df968" + "bytes": "329f804d632b0f7c472de8b9fd9f2b94019f1eeea28a62d052f18478186cf997" }, { "i128": { @@ -147,9 +188,10 @@ ], [], [], + [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", { "function": { "contract_fn": { @@ -160,7 +202,7 @@ "symbol": "e2e" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { "i128": { @@ -183,7 +225,7 @@ ], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", { "function": { "contract_fn": { @@ -194,7 +236,7 @@ "symbol": "e2e" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" }, { "i128": { @@ -217,7 +259,7 @@ ], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", { "function": { "contract_fn": { @@ -228,7 +270,7 @@ "symbol": "e2e" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" }, { "i128": { @@ -251,10 +293,52 @@ ], [], [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bids", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "e2e" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], [], [], - [], - [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "award_contract", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "symbol": "e2e" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], [], [], [], @@ -308,6 +392,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 3 + } + }, { "key": { "symbol": "config" @@ -333,6 +425,17 @@ "u64": 3600 } }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100000000000000000 + } + } + }, { "key": { "symbol": "reserve_price" @@ -343,6 +446,14 @@ "lo": 1000000 } } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } } ] } @@ -360,7 +471,7 @@ "symbol": "creator" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } }, { @@ -387,6 +498,22 @@ "u32": 2 } }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 3 + } + }, { "key": { "symbol": "task_id" @@ -417,7 +544,7 @@ "symbol": "e2e" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -440,7 +567,7 @@ "symbol": "e2e" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -452,7 +579,7 @@ "symbol": "bidder" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } }, { @@ -471,7 +598,15 @@ "symbol": "commitment" }, "val": { - "bytes": "3d9a40924e246508f43ec8093ffb84f913bfe56cf0810510c5eb6f7da3424e9d" + "bytes": "c9584919968cd770f52f85902097be2ae0e6a81503a071a93e520ba02e5044ee" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false } }, { @@ -550,7 +685,7 @@ "symbol": "e2e" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" } ] }, @@ -573,7 +708,7 @@ "symbol": "e2e" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" } ] }, @@ -585,7 +720,7 @@ "symbol": "bidder" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" } }, { @@ -604,7 +739,15 @@ "symbol": "commitment" }, "val": { - "bytes": "b458207405952819823ebba13b9de5071e5834e2b6d7d64f37d9f23ed65cbc18" + "bytes": "63270ae3897784f1638db593b679da365b30c260c2eb5f73f3941674c5addcb9" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false } }, { @@ -683,7 +826,7 @@ "symbol": "e2e" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" } ] }, @@ -706,7 +849,7 @@ "symbol": "e2e" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" } ] }, @@ -718,7 +861,7 @@ "symbol": "bidder" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" } }, { @@ -737,7 +880,15 @@ "symbol": "commitment" }, "val": { - "bytes": "401976309b41ac1ef0a9b925cd57860e1ff4f7dee23a82c3aceac700e84df968" + "bytes": "329f804d632b0f7c472de8b9fd9f2b94019f1eeea28a62d052f18478186cf997" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false } }, { @@ -840,14 +991,14 @@ "durability": "persistent", "val": { "vec": [ - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" - }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" } ] } @@ -900,7 +1051,7 @@ "symbol": "agent" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" } }, { @@ -919,7 +1070,7 @@ "symbol": "creator" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } }, { @@ -991,7 +1142,7 @@ }, "durability": "persistent", "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" } } }, @@ -1038,7 +1189,7 @@ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", "key": { "ledger_key_nonce": { - "nonce": 801925984706572462 + "nonce": 6277191135259896685 } }, "durability": "temporary" @@ -1051,6 +1202,39 @@ "contract_data": { "ext": "v0", "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": 6277191135259896685 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 @@ -1071,7 +1255,7 @@ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { - "nonce": 2032731177588607455 + "nonce": 5806905060045992000 } }, "durability": "temporary" @@ -1084,6 +1268,39 @@ "contract_data": { "ext": "v0", "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 5806905060045992000 + } + }, + "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 @@ -1101,7 +1318,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 @@ -1116,7 +1333,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 @@ -1134,7 +1351,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", "key": { "ledger_key_nonce": { "nonce": 1033654523790656264 @@ -1149,7 +1366,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", "key": { "ledger_key_nonce": { "nonce": 1033654523790656264 @@ -1167,7 +1384,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", "key": { "ledger_key_nonce": { "nonce": 4270020994084947596 @@ -1182,7 +1399,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", "key": { "ledger_key_nonce": { "nonce": 4270020994084947596 @@ -1200,7 +1417,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", "key": { "ledger_key_nonce": { "nonce": 4837995959683129791 @@ -1215,7 +1432,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", "key": { "ledger_key_nonce": { "nonce": 4837995959683129791 @@ -1233,7 +1450,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", "key": { "ledger_key_nonce": { "nonce": 8370022561469687789 @@ -1248,7 +1465,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", "key": { "ledger_key_nonce": { "nonce": 8370022561469687789 diff --git a/smart-contracts/contracts/agent_bidding/test_snapshots/test/get_bidders_pages_and_clamps_limit.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/get_bidders_pages_and_clamps_limit.1.json new file mode 100644 index 00000000..8db0f466 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/get_bidders_pages_and_clamps_limit.1.json @@ -0,0 +1,1469 @@ +{ + "generators": { + "address": 8, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "symbol": "paged" + }, + { + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "paged" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "bytes": "fdedde8a5d50882560efc9319c4cfcdd65ebc07aef3094887711344a39116bc8" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "paged" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "a68dee81aef0f4fbd8ec9edd0d60381b2589a1957f9196a6d9c67ae3e5c4db35" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "paged" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "bytes": "fb493e88b55571f8df210e9dd1697b5fda8b2d805d463363494cbec4ed05dbcc" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "paged" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + }, + { + "bytes": "72be4ba217defebefc3e6ee38f8c949c574dcffdca1ae6f7f399f29957833e11" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "paged" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + }, + { + "bytes": "636f2bd2dbcd1fbe392fcfc39f2b7b435da558f33f0b5fad7a84520458c58d03" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "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": "paged" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "paged" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 5 + } + }, + { + "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": 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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "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": "paged" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "paged" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "paged" + }, + { + "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": "fdedde8a5d50882560efc9319c4cfcdd65ebc07aef3094887711344a39116bc8" + } + }, + { + "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": "Bid" + }, + { + "symbol": "paged" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "paged" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "a68dee81aef0f4fbd8ec9edd0d60381b2589a1957f9196a6d9c67ae3e5c4db35" + } + }, + { + "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": "Bid" + }, + { + "symbol": "paged" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "paged" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "fb493e88b55571f8df210e9dd1697b5fda8b2d805d463363494cbec4ed05dbcc" + } + }, + { + "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": "Bid" + }, + { + "symbol": "paged" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "paged" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "72be4ba217defebefc3e6ee38f8c949c574dcffdca1ae6f7f399f29957833e11" + } + }, + { + "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": "Bid" + }, + { + "symbol": "paged" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "paged" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "636f2bd2dbcd1fbe392fcfc39f2b7b435da558f33f0b5fad7a84520458c58d03" + } + }, + { + "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": "paged" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "paged" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + } + ] + } + } + }, + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM", + "key": { + "ledger_key_nonce": { + "nonce": 2032731177588607455 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM", + "key": { + "ledger_key_nonce": { + "nonce": 2032731177588607455 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", + "key": { + "ledger_key_nonce": { + "nonce": 4270020994084947596 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", + "key": { + "ledger_key_nonce": { + "nonce": 4270020994084947596 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_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/test/award_contract_refunds_all_losing_bidders.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/late_reveal_cannot_displace_an_already_selected_winner.1.json similarity index 85% rename from smart-contracts/contracts/agent_bidding/test_snapshots/test/award_contract_refunds_all_losing_bidders.1.json rename to smart-contracts/contracts/agent_bidding/test_snapshots/test/late_reveal_cannot_displace_an_already_selected_winner.1.json index b0771a58..43f38006 100644 --- a/smart-contracts/contracts/agent_bidding/test_snapshots/test/award_contract_refunds_all_losing_bidders.1.json +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/late_reveal_cannot_displace_an_already_selected_winner.1.json @@ -1,13 +1,13 @@ { "generators": { - "address": 4, + "address": 5, "nonce": 0 }, "auth": [ [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", { "function": { "contract_fn": { @@ -15,25 +15,63 @@ "function_name": "create_auction", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" - }, - { - "symbol": "refund_all" - }, - { - "u64": 3600 + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, { - "i128": { - "hi": 0, - "lo": 1000000 - } + "symbol": "no_displace" }, { - "i128": { - "hi": 0, - "lo": 500000 - } + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] } ] } @@ -42,9 +80,11 @@ } ] ], + [], + [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", { "function": { "contract_fn": { @@ -52,13 +92,13 @@ "function_name": "submit_bid", "args": [ { - "symbol": "refund_all" + "symbol": "no_displace" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { - "bytes": "67667d7a6721cd5de0ada3241dbe0f1a51cf1a566e61faba4c43648eb7e9f9a7" + "bytes": "3981912b892325caa0424f636819501811427097fcb78f521ebe7832ac607521" }, { "i128": { @@ -67,7 +107,7 @@ } }, { - "u32": 80 + "u32": 40 } ] } @@ -78,7 +118,7 @@ ], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", { "function": { "contract_fn": { @@ -86,13 +126,13 @@ "function_name": "submit_bid", "args": [ { - "symbol": "refund_all" + "symbol": "no_displace" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" }, { - "bytes": "269cc2c94643df28b10973e1b0eaebce83b169550729f7017c4776e7b37f9a9d" + "bytes": "89793479a077e61e63a26f137145776b8872546fd869694b988058a83b4a658f" }, { "i128": { @@ -101,7 +141,7 @@ } }, { - "u32": 80 + "u32": 99 } ] } @@ -110,9 +150,10 @@ } ] ], + [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", { "function": { "contract_fn": { @@ -120,22 +161,22 @@ "function_name": "reveal_bid", "args": [ { - "symbol": "refund_all" + "symbol": "no_displace" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { "i128": { "hi": 0, - "lo": 1000000 + "lo": 8000000 } }, { - "string": "Win" + "string": "T" }, { - "bytes": "1111111111111111111111111111111111111111111111111111111111111111" + "bytes": "5252525252525252525252525252525252525252525252525252525252525252" } ] } @@ -144,32 +185,21 @@ } ] ], + [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", { "function": { "contract_fn": { "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "function_name": "reveal_bid", + "function_name": "reveal_bids", "args": [ { - "symbol": "refund_all" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" - }, - { - "i128": { - "hi": 0, - "lo": 10000000 - } - }, - { - "string": "Lose" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" }, { - "bytes": "1212121212121212121212121212121212121212121212121212121212121212" + "symbol": "no_displace" } ] } @@ -186,7 +216,7 @@ "ledger": { "protocol_version": 22, "sequence_number": 0, - "timestamp": 3601, + "timestamp": 7201, "network_id": "0000000000000000000000000000000000000000000000000000000000000000", "base_reserve": 0, "min_persistent_entry_ttl": 4096, @@ -203,7 +233,7 @@ "symbol": "Auction" }, { - "symbol": "refund_all" + "symbol": "no_displace" } ] }, @@ -223,13 +253,21 @@ "symbol": "Auction" }, { - "symbol": "refund_all" + "symbol": "no_displace" } ] }, "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 2 + } + }, { "key": { "symbol": "config" @@ -255,6 +293,17 @@ "u64": 3600 } }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100000000000000000 + } + } + }, { "key": { "symbol": "reserve_price" @@ -265,6 +314,14 @@ "lo": 1000000 } } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } } ] } @@ -282,7 +339,7 @@ "symbol": "creator" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } }, { @@ -298,7 +355,7 @@ "symbol": "escrow_created" }, "val": { - "bool": true + "bool": false } }, { @@ -306,7 +363,23 @@ "symbol": "phase" }, "val": { - "u32": 2 + "u32": 1 + } + }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 1 } }, { @@ -314,7 +387,7 @@ "symbol": "task_id" }, "val": { - "symbol": "refund_all" + "symbol": "no_displace" } } ] @@ -336,10 +409,10 @@ "symbol": "Bid" }, { - "symbol": "refund_all" + "symbol": "no_displace" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -359,10 +432,10 @@ "symbol": "Bid" }, { - "symbol": "refund_all" + "symbol": "no_displace" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -374,7 +447,7 @@ "symbol": "bidder" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } }, { @@ -393,7 +466,15 @@ "symbol": "commitment" }, "val": { - "bytes": "67667d7a6721cd5de0ada3241dbe0f1a51cf1a566e61faba4c43648eb7e9f9a7" + "bytes": "3981912b892325caa0424f636819501811427097fcb78f521ebe7832ac607521" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false } }, { @@ -403,7 +484,7 @@ "val": { "i128": { "hi": 0, - "lo": 1000000 + "lo": 8000000 } } }, @@ -412,7 +493,7 @@ "symbol": "refunded" }, "val": { - "bool": true + "bool": false } }, { @@ -420,7 +501,7 @@ "symbol": "reputation" }, "val": { - "u32": 80 + "u32": 40 } }, { @@ -447,7 +528,7 @@ "symbol": "terms" }, "val": { - "string": "Win" + "string": "T" } } ] @@ -469,10 +550,10 @@ "symbol": "Bid" }, { - "symbol": "refund_all" + "symbol": "no_displace" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" } ] }, @@ -492,10 +573,10 @@ "symbol": "Bid" }, { - "symbol": "refund_all" + "symbol": "no_displace" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" } ] }, @@ -507,7 +588,7 @@ "symbol": "bidder" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" } }, { @@ -526,7 +607,15 @@ "symbol": "commitment" }, "val": { - "bytes": "269cc2c94643df28b10973e1b0eaebce83b169550729f7017c4776e7b37f9a9d" + "bytes": "89793479a077e61e63a26f137145776b8872546fd869694b988058a83b4a658f" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false } }, { @@ -536,7 +625,7 @@ "val": { "i128": { "hi": 0, - "lo": 10000000 + "lo": 0 } } }, @@ -545,7 +634,7 @@ "symbol": "refunded" }, "val": { - "bool": true + "bool": false } }, { @@ -553,7 +642,7 @@ "symbol": "reputation" }, "val": { - "u32": 80 + "u32": 99 } }, { @@ -561,7 +650,7 @@ "symbol": "revealed" }, "val": { - "bool": true + "bool": false } }, { @@ -571,7 +660,7 @@ "val": { "i128": { "hi": 0, - "lo": 400 + "lo": 0 } } }, @@ -580,7 +669,7 @@ "symbol": "terms" }, "val": { - "string": "Lose" + "string": "" } } ] @@ -602,7 +691,7 @@ "symbol": "Bidders" }, { - "symbol": "refund_all" + "symbol": "no_displace" } ] }, @@ -622,115 +711,18 @@ "symbol": "Bidders" }, { - "symbol": "refund_all" + "symbol": "no_displace" } ] }, "durability": "persistent", "val": { "vec": [ - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" - }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" - } - ] - } - } - }, - "ext": "v0" - }, - 535680 - ] - ], - [ - { - "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Escrow" - }, - { - "symbol": "refund_all" - } - ] - }, - "durability": "persistent" - } - }, - [ - { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Escrow" - }, - { - "symbol": "refund_all" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "agent" - }, - "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" - } - }, - { - "key": { - "symbol": "amount" - }, - "val": { - "i128": { - "hi": 0, - "lo": 1000000 - } - } - }, - { - "key": { - "symbol": "creator" - }, - "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" - } - }, - { - "key": { - "symbol": "refunded" - }, - "val": { - "bool": false - } - }, - { - "key": { - "symbol": "released" - }, - "val": { - "bool": false - } }, { - "key": { - "symbol": "task_id" - }, - "val": { - "symbol": "refund_all" - } + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" } ] } @@ -751,7 +743,7 @@ "symbol": "Winner" }, { - "symbol": "refund_all" + "symbol": "no_displace" } ] }, @@ -771,13 +763,13 @@ "symbol": "Winner" }, { - "symbol": "refund_all" + "symbol": "no_displace" } ] }, "durability": "persistent", "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } } }, @@ -824,7 +816,7 @@ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", "key": { "ledger_key_nonce": { - "nonce": 801925984706572462 + "nonce": 2032731177588607455 } }, "durability": "temporary" @@ -839,7 +831,7 @@ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", "key": { "ledger_key_nonce": { - "nonce": 801925984706572462 + "nonce": 2032731177588607455 } }, "durability": "temporary", @@ -857,7 +849,7 @@ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { - "nonce": 4837995959683129791 + "nonce": 801925984706572462 } }, "durability": "temporary" @@ -872,7 +864,7 @@ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { - "nonce": 4837995959683129791 + "nonce": 801925984706572462 } }, "durability": "temporary", @@ -887,10 +879,10 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { - "nonce": 5541220902715666415 + "nonce": 4837995959683129791 } }, "durability": "temporary" @@ -902,10 +894,10 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { - "nonce": 5541220902715666415 + "nonce": 4837995959683129791 } }, "durability": "temporary", @@ -923,7 +915,7 @@ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { - "nonce": 1033654523790656264 + "nonce": 5541220902715666415 } }, "durability": "temporary" @@ -938,7 +930,7 @@ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { - "nonce": 1033654523790656264 + "nonce": 5541220902715666415 } }, "durability": "temporary", @@ -953,10 +945,10 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", "key": { "ledger_key_nonce": { - "nonce": 2032731177588607455 + "nonce": 1033654523790656264 } }, "durability": "temporary" @@ -968,10 +960,10 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", "key": { "ledger_key_nonce": { - "nonce": 2032731177588607455 + "nonce": 1033654523790656264 } }, "durability": "temporary", diff --git a/smart-contracts/contracts/agent_bidding/test_snapshots/test/non_revealed_bidder_cannot_win.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/non_revealed_bidder_cannot_win.1.json index 044c49df..ca0a9d46 100644 --- a/smart-contracts/contracts/agent_bidding/test_snapshots/test/non_revealed_bidder_cannot_win.1.json +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/non_revealed_bidder_cannot_win.1.json @@ -1,13 +1,13 @@ { "generators": { - "address": 4, + "address": 5, "nonce": 0 }, "auth": [ [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", { "function": { "contract_fn": { @@ -15,25 +15,63 @@ "function_name": "create_auction", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, { "symbol": "no_show" }, { - "u64": 3600 - }, - { - "i128": { - "hi": 0, - "lo": 1000000 - } - }, - { - "i128": { - "hi": 0, - "lo": 500000 - } + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] } ] } @@ -42,9 +80,11 @@ } ] ], + [], + [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", { "function": { "contract_fn": { @@ -55,10 +95,10 @@ "symbol": "no_show" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { - "bytes": "67d5e59e8da16289f9b1758952a822f7895dcc8098268fa2b9bd793a704d7117" + "bytes": "48939b6ac1c0f9242661ae4283c88a4b8be02053f5668154eb4d8d0da882898c" }, { "i128": { @@ -78,7 +118,7 @@ ], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", { "function": { "contract_fn": { @@ -89,10 +129,10 @@ "symbol": "no_show" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" }, { - "bytes": "d5150e4908db9a81a77c8fc1a381d95190306e48089a9e989b9706111e832ddd" + "bytes": "9bd4af2f35b4b75b74e15bb2457600d39ab6116c08ecd6e45020c3943bffb8a7" }, { "i128": { @@ -110,9 +150,10 @@ } ] ], + [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", { "function": { "contract_fn": { @@ -123,7 +164,7 @@ "symbol": "no_show" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { "i128": { @@ -145,12 +186,34 @@ ] ], [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bids", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "no_show" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], [] ], "ledger": { "protocol_version": 22, "sequence_number": 0, - "timestamp": 3601, + "timestamp": 7201, "network_id": "0000000000000000000000000000000000000000000000000000000000000000", "base_reserve": 0, "min_persistent_entry_ttl": 4096, @@ -194,6 +257,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 2 + } + }, { "key": { "symbol": "config" @@ -219,6 +290,17 @@ "u64": 3600 } }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100000000000000000 + } + } + }, { "key": { "symbol": "reserve_price" @@ -229,6 +311,14 @@ "lo": 1000000 } } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } } ] } @@ -246,7 +336,7 @@ "symbol": "creator" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } }, { @@ -273,6 +363,22 @@ "u32": 1 } }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 1 + } + }, { "key": { "symbol": "task_id" @@ -303,7 +409,7 @@ "symbol": "no_show" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -326,7 +432,7 @@ "symbol": "no_show" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -338,7 +444,7 @@ "symbol": "bidder" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } }, { @@ -357,7 +463,15 @@ "symbol": "commitment" }, "val": { - "bytes": "67d5e59e8da16289f9b1758952a822f7895dcc8098268fa2b9bd793a704d7117" + "bytes": "48939b6ac1c0f9242661ae4283c88a4b8be02053f5668154eb4d8d0da882898c" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false } }, { @@ -436,7 +550,7 @@ "symbol": "no_show" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" } ] }, @@ -459,7 +573,7 @@ "symbol": "no_show" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" } ] }, @@ -471,7 +585,7 @@ "symbol": "bidder" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" } }, { @@ -490,7 +604,15 @@ "symbol": "commitment" }, "val": { - "bytes": "d5150e4908db9a81a77c8fc1a381d95190306e48089a9e989b9706111e832ddd" + "bytes": "9bd4af2f35b4b75b74e15bb2457600d39ab6116c08ecd6e45020c3943bffb8a7" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false } }, { @@ -594,10 +716,10 @@ "val": { "vec": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" } ] } @@ -644,7 +766,7 @@ }, "durability": "persistent", "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } } }, @@ -691,7 +813,7 @@ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", "key": { "ledger_key_nonce": { - "nonce": 801925984706572462 + "nonce": 2032731177588607455 } }, "durability": "temporary" @@ -706,7 +828,7 @@ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", "key": { "ledger_key_nonce": { - "nonce": 801925984706572462 + "nonce": 2032731177588607455 } }, "durability": "temporary", @@ -724,7 +846,7 @@ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { - "nonce": 4837995959683129791 + "nonce": 801925984706572462 } }, "durability": "temporary" @@ -737,6 +859,39 @@ "contract_data": { "ext": "v0", "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "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 @@ -754,7 +909,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 @@ -769,7 +924,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 @@ -787,7 +942,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", "key": { "ledger_key_nonce": { "nonce": 1033654523790656264 @@ -802,7 +957,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", "key": { "ledger_key_nonce": { "nonce": 1033654523790656264 diff --git a/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bid_after_reveal_deadline_fails.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bid_after_reveal_deadline_fails.1.json new file mode 100644 index 00000000..068ed26e --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bid_after_reveal_deadline_fails.1.json @@ -0,0 +1,620 @@ +{ + "generators": { + "address": 4, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "symbol": "late_rev" + }, + { + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "late_rev" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "bytes": "8c6e267d79db7f19ba9162819c560cd2c54f8c284de94a8a354d72efc4225152" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 60 + } + ] + } + }, + "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": "late_rev" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "late_rev" + } + ] + }, + "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": 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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "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": "late_rev" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "late_rev" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "late_rev" + }, + { + "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": "8c6e267d79db7f19ba9162819c560cd2c54f8c284de94a8a354d72efc4225152" + } + }, + { + "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": 60 + } + }, + { + "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": "late_rev" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "late_rev" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_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/test/reveal_bid_before_deadline_fails.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bid_before_deadline_fails.1.json index a44bdea5..ceb53cbf 100644 --- a/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bid_before_deadline_fails.1.json +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bid_before_deadline_fails.1.json @@ -1,13 +1,13 @@ { "generators": { - "address": 3, + "address": 4, "nonce": 0 }, "auth": [ [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", { "function": { "contract_fn": { @@ -15,25 +15,63 @@ "function_name": "create_auction", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, { "symbol": "early_rev" }, { - "u64": 3600 - }, - { - "i128": { - "hi": 0, - "lo": 1000000 - } - }, - { - "i128": { - "hi": 0, - "lo": 500000 - } + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] } ] } @@ -42,9 +80,10 @@ } ] ], + [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", { "function": { "contract_fn": { @@ -55,10 +94,10 @@ "symbol": "early_rev" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { - "bytes": "2bcba4f767c15a38dcd164c4ac0e48c42dc052e1b46813e589a145c4027f669d" + "bytes": "d00c1af619eb7975fbfe0e790de34299f35d1b6ee16b645bff9bd3ce1f6066ca" }, { "i128": { @@ -125,6 +164,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 1 + } + }, { "key": { "symbol": "config" @@ -150,6 +197,17 @@ "u64": 3600 } }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100000000000000000 + } + } + }, { "key": { "symbol": "reserve_price" @@ -160,6 +218,14 @@ "lo": 1000000 } } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } } ] } @@ -177,7 +243,7 @@ "symbol": "creator" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } }, { @@ -204,6 +270,22 @@ "u32": 0 } }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 0 + } + }, { "key": { "symbol": "task_id" @@ -234,7 +316,7 @@ "symbol": "early_rev" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -257,7 +339,7 @@ "symbol": "early_rev" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -269,7 +351,7 @@ "symbol": "bidder" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } }, { @@ -288,7 +370,15 @@ "symbol": "commitment" }, "val": { - "bytes": "2bcba4f767c15a38dcd164c4ac0e48c42dc052e1b46813e589a145c4027f669d" + "bytes": "d00c1af619eb7975fbfe0e790de34299f35d1b6ee16b645bff9bd3ce1f6066ca" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false } }, { @@ -392,7 +482,7 @@ "val": { "vec": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] } @@ -438,7 +528,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 @@ -453,7 +543,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 @@ -471,7 +561,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 @@ -486,7 +576,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 diff --git a/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bid_rejects_oversized_terms.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bid_rejects_oversized_terms.1.json new file mode 100644 index 00000000..0a29ad89 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bid_rejects_oversized_terms.1.json @@ -0,0 +1,619 @@ +{ + "generators": { + "address": 4, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "symbol": "big_terms" + }, + { + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "big_terms" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "bytes": "d77f9a104d2972143ecb61c7985f61272ac719de57baa376c7917ee61d9d0d4f" + }, + { + "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": "big_terms" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "big_terms" + } + ] + }, + "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": 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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "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": "big_terms" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "big_terms" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "big_terms" + }, + { + "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": "d77f9a104d2972143ecb61c7985f61272ac719de57baa376c7917ee61d9d0d4f" + } + }, + { + "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": "big_terms" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "big_terms" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_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/test/reveal_bid_rejects_price_above_cap.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bid_rejects_price_above_cap.1.json new file mode 100644 index 00000000..6016f880 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bid_rejects_price_above_cap.1.json @@ -0,0 +1,619 @@ +{ + "generators": { + "address": 4, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "symbol": "capped" + }, + { + "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": 4000000 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "capped" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "bytes": "3b453a31ed9a8a4f692572af132794cffb634b7ec4d81153296a88827d19f061" + }, + { + "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": "capped" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "capped" + } + ] + }, + "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": 4000000 + } + } + }, + { + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "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": "capped" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "capped" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "capped" + }, + { + "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": "3b453a31ed9a8a4f692572af132794cffb634b7ec4d81153296a88827d19f061" + } + }, + { + "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": "capped" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "capped" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_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/test/reveal_bid_rejects_price_below_reserve.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bid_rejects_price_below_reserve.1.json new file mode 100644 index 00000000..c47ca5cb --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bid_rejects_price_below_reserve.1.json @@ -0,0 +1,619 @@ +{ + "generators": { + "address": 4, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "symbol": "under" + }, + { + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "under" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "bytes": "6d44af9769e878b9c39444430f5f95f704a8ea5045109df1f2b43c4d2618d3fe" + }, + { + "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": "under" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "under" + } + ] + }, + "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": 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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "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": "under" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "under" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "under" + }, + { + "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": "6d44af9769e878b9c39444430f5f95f704a8ea5045109df1f2b43c4d2618d3fe" + } + }, + { + "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": "under" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "under" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_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/test/reveal_bid_twice_fails.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bid_twice_fails.1.json index 5501bd52..2e45ea82 100644 --- a/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bid_twice_fails.1.json +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bid_twice_fails.1.json @@ -1,13 +1,13 @@ { "generators": { - "address": 3, + "address": 4, "nonce": 0 }, "auth": [ [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", { "function": { "contract_fn": { @@ -15,25 +15,63 @@ "function_name": "create_auction", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" - }, - { - "symbol": "twice_rev" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, { - "u64": 3600 + "symbol": "double_rev" }, { - "i128": { - "hi": 0, - "lo": 1000000 - } - }, - { - "i128": { - "hi": 0, - "lo": 500000 - } + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] } ] } @@ -42,9 +80,10 @@ } ] ], + [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", { "function": { "contract_fn": { @@ -52,13 +91,13 @@ "function_name": "submit_bid", "args": [ { - "symbol": "twice_rev" + "symbol": "double_rev" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { - "bytes": "f95c1ca25dd02d8ff123d83a0925673b866c40b9a7bb77482b0f8070940220cf" + "bytes": "34d734f2fc78b639fbfa4ca7c1b0f31f2ec8140b6570436914fb145412d44572" }, { "i128": { @@ -67,7 +106,7 @@ } }, { - "u32": 80 + "u32": 60 } ] } @@ -76,9 +115,10 @@ } ] ], + [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", { "function": { "contract_fn": { @@ -86,10 +126,10 @@ "function_name": "reveal_bid", "args": [ { - "symbol": "twice_rev" + "symbol": "double_rev" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { "i128": { @@ -98,7 +138,7 @@ } }, { - "string": "Twice" + "string": "Once" }, { "bytes": "0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a" @@ -110,6 +150,7 @@ } ] ], + [], [] ], "ledger": { @@ -132,7 +173,7 @@ "symbol": "Auction" }, { - "symbol": "twice_rev" + "symbol": "double_rev" } ] }, @@ -152,13 +193,21 @@ "symbol": "Auction" }, { - "symbol": "twice_rev" + "symbol": "double_rev" } ] }, "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 1 + } + }, { "key": { "symbol": "config" @@ -184,6 +233,17 @@ "u64": 3600 } }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100000000000000000 + } + } + }, { "key": { "symbol": "reserve_price" @@ -194,6 +254,14 @@ "lo": 1000000 } } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } } ] } @@ -211,7 +279,7 @@ "symbol": "creator" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } }, { @@ -238,12 +306,28 @@ "u32": 0 } }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 1 + } + }, { "key": { "symbol": "task_id" }, "val": { - "symbol": "twice_rev" + "symbol": "double_rev" } } ] @@ -265,10 +349,10 @@ "symbol": "Bid" }, { - "symbol": "twice_rev" + "symbol": "double_rev" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -288,10 +372,10 @@ "symbol": "Bid" }, { - "symbol": "twice_rev" + "symbol": "double_rev" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -303,7 +387,7 @@ "symbol": "bidder" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } }, { @@ -322,7 +406,15 @@ "symbol": "commitment" }, "val": { - "bytes": "f95c1ca25dd02d8ff123d83a0925673b866c40b9a7bb77482b0f8070940220cf" + "bytes": "34d734f2fc78b639fbfa4ca7c1b0f31f2ec8140b6570436914fb145412d44572" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false } }, { @@ -349,7 +441,7 @@ "symbol": "reputation" }, "val": { - "u32": 80 + "u32": 60 } }, { @@ -376,7 +468,7 @@ "symbol": "terms" }, "val": { - "string": "Twice" + "string": "Once" } } ] @@ -398,7 +490,7 @@ "symbol": "Bidders" }, { - "symbol": "twice_rev" + "symbol": "double_rev" } ] }, @@ -418,7 +510,7 @@ "symbol": "Bidders" }, { - "symbol": "twice_rev" + "symbol": "double_rev" } ] }, @@ -426,7 +518,7 @@ "val": { "vec": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] } @@ -472,7 +564,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 @@ -487,7 +579,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 @@ -505,7 +597,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 1033654523790656264 @@ -520,7 +612,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 1033654523790656264 @@ -538,7 +630,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 @@ -553,7 +645,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 diff --git a/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bid_verifies_commitment.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bid_verifies_commitment.1.json index 8f63a124..0dcd4474 100644 --- a/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bid_verifies_commitment.1.json +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bid_verifies_commitment.1.json @@ -1,13 +1,13 @@ { "generators": { - "address": 3, + "address": 4, "nonce": 0 }, "auth": [ [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", { "function": { "contract_fn": { @@ -15,25 +15,63 @@ "function_name": "create_auction", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, { "symbol": "reveal_ok" }, { - "u64": 3600 - }, - { - "i128": { - "hi": 0, - "lo": 1000000 - } - }, - { - "i128": { - "hi": 0, - "lo": 500000 - } + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] } ] } @@ -42,9 +80,10 @@ } ] ], + [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", { "function": { "contract_fn": { @@ -55,10 +94,10 @@ "symbol": "reveal_ok" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { - "bytes": "041cc0842c8d6946a1a8dbc2b4b840c86ca9492fee719accbf2aa4d27d10321c" + "bytes": "546bd995d6ee46df209541fdcf4bed823ab37a141770977a26a6da383a983e22" }, { "i128": { @@ -76,9 +115,10 @@ } ] ], + [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", { "function": { "contract_fn": { @@ -89,7 +129,7 @@ "symbol": "reveal_ok" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { "i128": { @@ -110,6 +150,7 @@ } ] ], + [], [] ], "ledger": { @@ -159,6 +200,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 1 + } + }, { "key": { "symbol": "config" @@ -184,6 +233,17 @@ "u64": 3600 } }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100000000000000000 + } + } + }, { "key": { "symbol": "reserve_price" @@ -194,6 +254,14 @@ "lo": 1000000 } } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } } ] } @@ -211,7 +279,7 @@ "symbol": "creator" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } }, { @@ -238,6 +306,22 @@ "u32": 0 } }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 1 + } + }, { "key": { "symbol": "task_id" @@ -268,7 +352,7 @@ "symbol": "reveal_ok" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -291,7 +375,7 @@ "symbol": "reveal_ok" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -303,7 +387,7 @@ "symbol": "bidder" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } }, { @@ -322,7 +406,15 @@ "symbol": "commitment" }, "val": { - "bytes": "041cc0842c8d6946a1a8dbc2b4b840c86ca9492fee719accbf2aa4d27d10321c" + "bytes": "546bd995d6ee46df209541fdcf4bed823ab37a141770977a26a6da383a983e22" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false } }, { @@ -426,7 +518,7 @@ "val": { "vec": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] } @@ -472,7 +564,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 @@ -487,7 +579,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 @@ -505,7 +597,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 1033654523790656264 @@ -520,7 +612,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 1033654523790656264 @@ -538,7 +630,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 @@ -553,7 +645,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 diff --git a/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bid_wrong_commitment_fails.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bid_wrong_commitment_fails.1.json index 4747972d..b6fec850 100644 --- a/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bid_wrong_commitment_fails.1.json +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bid_wrong_commitment_fails.1.json @@ -1,13 +1,13 @@ { "generators": { - "address": 3, + "address": 4, "nonce": 0 }, "auth": [ [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", { "function": { "contract_fn": { @@ -15,25 +15,63 @@ "function_name": "create_auction", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, { "symbol": "bad_rev" }, { - "u64": 3600 - }, - { - "i128": { - "hi": 0, - "lo": 1000000 - } - }, - { - "i128": { - "hi": 0, - "lo": 500000 - } + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] } ] } @@ -42,9 +80,10 @@ } ] ], + [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", { "function": { "contract_fn": { @@ -55,10 +94,10 @@ "symbol": "bad_rev" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { - "bytes": "69f899142a6620b905bff4ad9a7bb75f25e0c7424ea3d717bd4a69faefb04611" + "bytes": "63dab5412027515068fccd0ad7f1a41356ee3aa0b791dfc41d1d39760f980456" }, { "i128": { @@ -76,6 +115,7 @@ } ] ], + [], [] ], "ledger": { @@ -125,6 +165,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 1 + } + }, { "key": { "symbol": "config" @@ -150,6 +198,17 @@ "u64": 3600 } }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100000000000000000 + } + } + }, { "key": { "symbol": "reserve_price" @@ -160,6 +219,14 @@ "lo": 1000000 } } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } } ] } @@ -177,7 +244,7 @@ "symbol": "creator" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } }, { @@ -204,6 +271,22 @@ "u32": 0 } }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 0 + } + }, { "key": { "symbol": "task_id" @@ -234,7 +317,7 @@ "symbol": "bad_rev" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -257,7 +340,7 @@ "symbol": "bad_rev" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -269,7 +352,7 @@ "symbol": "bidder" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } }, { @@ -288,7 +371,15 @@ "symbol": "commitment" }, "val": { - "bytes": "69f899142a6620b905bff4ad9a7bb75f25e0c7424ea3d717bd4a69faefb04611" + "bytes": "63dab5412027515068fccd0ad7f1a41356ee3aa0b791dfc41d1d39760f980456" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false } }, { @@ -392,7 +483,7 @@ "val": { "vec": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] } @@ -438,7 +529,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 @@ -453,7 +544,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 @@ -471,7 +562,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 @@ -486,7 +577,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 diff --git a/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bids_before_deadline_fails.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bids_before_deadline_fails.1.json index 3bc5862f..2e767d66 100644 --- a/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bids_before_deadline_fails.1.json +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bids_before_deadline_fails.1.json @@ -1,13 +1,13 @@ { "generators": { - "address": 2, + "address": 3, "nonce": 0 }, "auth": [ [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", { "function": { "contract_fn": { @@ -15,25 +15,63 @@ "function_name": "create_auction", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, { "symbol": "early_rb" }, { - "u64": 3600 - }, - { - "i128": { - "hi": 0, - "lo": 1000000 - } - }, - { - "i128": { - "hi": 0, - "lo": 500000 - } + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] } ] } @@ -91,6 +129,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 0 + } + }, { "key": { "symbol": "config" @@ -116,6 +162,17 @@ "u64": 3600 } }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100000000000000000 + } + } + }, { "key": { "symbol": "reserve_price" @@ -126,6 +183,14 @@ "lo": 1000000 } } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } } ] } @@ -143,7 +208,7 @@ "symbol": "creator" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } }, { @@ -170,6 +235,22 @@ "u32": 0 } }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 0 + } + }, { "key": { "symbol": "task_id" @@ -267,7 +348,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 @@ -282,7 +363,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 diff --git a/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bids_cannot_be_front_run_while_reveals_are_outstanding.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bids_cannot_be_front_run_while_reveals_are_outstanding.1.json new file mode 100644 index 00000000..bb5e9a88 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bids_cannot_be_front_run_while_reveals_are_outstanding.1.json @@ -0,0 +1,1066 @@ +{ + "generators": { + "address": 5, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "symbol": "frontrun" + }, + { + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "frontrun" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "bytes": "fb4a3ad23b2010beeb5af0793740ac8bfa84e1e67edb9deae5ac30366a090fd4" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 10 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "frontrun" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "88b4377765a1bf944ffac2b6e51fb02621ab9d115dcf06267c12789d9f8a0153" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 95 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bid", + "args": [ + { + "symbol": "frontrun" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "i128": { + "hi": 0, + "lo": 9000000 + } + }, + { + "string": "T" + }, + { + "bytes": "6565656565656565656565656565656565656565656565656565656565656565" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bid", + "args": [ + { + "symbol": "frontrun" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "i128": { + "hi": 0, + "lo": 1200000 + } + }, + { + "string": "T" + }, + { + "bytes": "6666666666666666666666666666666666666666666666666666666666666666" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bids", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "symbol": "frontrun" + } + ] + } + }, + "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": "frontrun" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "frontrun" + } + ] + }, + "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": 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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "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": "frontrun" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "frontrun" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "frontrun" + }, + { + "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": "fb4a3ad23b2010beeb5af0793740ac8bfa84e1e67edb9deae5ac30366a090fd4" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "price_stroops" + }, + "val": { + "i128": { + "hi": 0, + "lo": 9000000 + } + } + }, + { + "key": { + "symbol": "refunded" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "reputation" + }, + "val": { + "u32": 10 + } + }, + { + "key": { + "symbol": "revealed" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "score" + }, + "val": { + "i128": { + "hi": 0, + "lo": 0 + } + } + }, + { + "key": { + "symbol": "terms" + }, + "val": { + "string": "T" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "frontrun" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "frontrun" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "88b4377765a1bf944ffac2b6e51fb02621ab9d115dcf06267c12789d9f8a0153" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "price_stroops" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1200000 + } + } + }, + { + "key": { + "symbol": "refunded" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "reputation" + }, + "val": { + "u32": 95 + } + }, + { + "key": { + "symbol": "revealed" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "score" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, + { + "key": { + "symbol": "terms" + }, + "val": { + "string": "T" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "frontrun" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "frontrun" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Winner" + }, + { + "symbol": "frontrun" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Winner" + }, + { + "symbol": "frontrun" + } + ] + }, + "durability": "persistent", + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + } + }, + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "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_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": 4270020994084947596 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": 4270020994084947596 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_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/test/reveal_bids_emits_event.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bids_emits_event.1.json index 2fd224f3..a6986d6e 100644 --- a/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bids_emits_event.1.json +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bids_emits_event.1.json @@ -1,13 +1,13 @@ { "generators": { - "address": 3, + "address": 4, "nonce": 0 }, "auth": [ [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", { "function": { "contract_fn": { @@ -15,25 +15,63 @@ "function_name": "create_auction", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, { "symbol": "rb_event" }, { - "u64": 3600 - }, - { - "i128": { - "hi": 0, - "lo": 1000000 - } - }, - { - "i128": { - "hi": 0, - "lo": 500000 - } + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] } ] } @@ -42,9 +80,10 @@ } ] ], + [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", { "function": { "contract_fn": { @@ -55,10 +94,10 @@ "symbol": "rb_event" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { - "bytes": "533cda81e5d17b5b322789b210af6d27c69d56d951a3c6e0a6ef267d18451ba1" + "bytes": "a820d94288b3dec4e320f43300ddf8956414f391f76324744c4895a63814e868" }, { "i128": { @@ -76,9 +115,10 @@ } ] ], + [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", { "function": { "contract_fn": { @@ -89,7 +129,7 @@ "symbol": "rb_event" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { "i128": { @@ -110,7 +150,28 @@ } ] ], - [] + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bids", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "rb_event" + } + ] + } + }, + "sub_invocations": [] + } + ] + ] ], "ledger": { "protocol_version": 22, @@ -159,6 +220,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 1 + } + }, { "key": { "symbol": "config" @@ -184,6 +253,17 @@ "u64": 3600 } }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100000000000000000 + } + } + }, { "key": { "symbol": "reserve_price" @@ -194,6 +274,14 @@ "lo": 1000000 } } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } } ] } @@ -211,7 +299,7 @@ "symbol": "creator" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } }, { @@ -238,6 +326,22 @@ "u32": 1 } }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 1 + } + }, { "key": { "symbol": "task_id" @@ -268,7 +372,7 @@ "symbol": "rb_event" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -291,7 +395,7 @@ "symbol": "rb_event" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -303,7 +407,7 @@ "symbol": "bidder" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } }, { @@ -322,7 +426,15 @@ "symbol": "commitment" }, "val": { - "bytes": "533cda81e5d17b5b322789b210af6d27c69d56d951a3c6e0a6ef267d18451ba1" + "bytes": "a820d94288b3dec4e320f43300ddf8956414f391f76324744c4895a63814e868" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false } }, { @@ -426,7 +538,7 @@ "val": { "vec": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] } @@ -473,7 +585,7 @@ }, "durability": "persistent", "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } } }, @@ -520,7 +632,7 @@ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", "key": { "ledger_key_nonce": { - "nonce": 801925984706572462 + "nonce": 4837995959683129791 } }, "durability": "temporary" @@ -535,7 +647,7 @@ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", "key": { "ledger_key_nonce": { - "nonce": 801925984706572462 + "nonce": 4837995959683129791 } }, "durability": "temporary", @@ -553,7 +665,7 @@ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { - "nonce": 1033654523790656264 + "nonce": 801925984706572462 } }, "durability": "temporary" @@ -566,6 +678,39 @@ "contract_data": { "ext": "v0", "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "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 @@ -583,7 +728,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 @@ -598,7 +743,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 @@ -675,7 +820,7 @@ "symbol": "winner" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } }, { diff --git a/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bids_finalises_early_when_every_bid_is_revealed.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bids_finalises_early_when_every_bid_is_revealed.1.json new file mode 100644 index 00000000..68d2e07d --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bids_finalises_early_when_every_bid_is_revealed.1.json @@ -0,0 +1,1066 @@ +{ + "generators": { + "address": 5, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "symbol": "all_in" + }, + { + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "all_in" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "bytes": "b5bd89bdccd979520cece8b0ebbbeaaacc3bab57068235113f9454f39410d2cd" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 80 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "all_in" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "c7fe46ce510a2b823a8c55bf714587130addcdbc48fc330b49307d4a4e7578bd" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 80 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bid", + "args": [ + { + "symbol": "all_in" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "i128": { + "hi": 0, + "lo": 2000000 + } + }, + { + "string": "T" + }, + { + "bytes": "6767676767676767676767676767676767676767676767676767676767676767" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bid", + "args": [ + { + "symbol": "all_in" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "i128": { + "hi": 0, + "lo": 3000000 + } + }, + { + "string": "T" + }, + { + "bytes": "6868686868686868686868686868686868686868686868686868686868686868" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bids", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "all_in" + } + ] + } + }, + "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": "all_in" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "all_in" + } + ] + }, + "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": 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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "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": "all_in" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "all_in" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "all_in" + }, + { + "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": "b5bd89bdccd979520cece8b0ebbbeaaacc3bab57068235113f9454f39410d2cd" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "price_stroops" + }, + "val": { + "i128": { + "hi": 0, + "lo": 2000000 + } + } + }, + { + "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": "T" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "all_in" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "all_in" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "c7fe46ce510a2b823a8c55bf714587130addcdbc48fc330b49307d4a4e7578bd" + } + }, + { + "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": 400 + } + } + }, + { + "key": { + "symbol": "terms" + }, + "val": { + "string": "T" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "all_in" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "all_in" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Winner" + }, + { + "symbol": "all_in" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Winner" + }, + { + "symbol": "all_in" + } + ] + }, + "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": 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": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "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_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/test/reveal_bids_no_revealed_fails.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bids_no_revealed_fails.1.json index 973faf2c..e52fc071 100644 --- a/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bids_no_revealed_fails.1.json +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bids_no_revealed_fails.1.json @@ -1,13 +1,13 @@ { "generators": { - "address": 2, + "address": 3, "nonce": 0 }, "auth": [ [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", { "function": { "contract_fn": { @@ -15,25 +15,63 @@ "function_name": "create_auction", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, { "symbol": "no_rev" }, { - "u64": 3600 - }, - { - "i128": { - "hi": 0, - "lo": 1000000 - } - }, - { - "i128": { - "hi": 0, - "lo": 500000 - } + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] } ] } @@ -42,12 +80,13 @@ } ] ], + [], [] ], "ledger": { "protocol_version": 22, "sequence_number": 0, - "timestamp": 3601, + "timestamp": 7201, "network_id": "0000000000000000000000000000000000000000000000000000000000000000", "base_reserve": 0, "min_persistent_entry_ttl": 4096, @@ -91,6 +130,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 0 + } + }, { "key": { "symbol": "config" @@ -116,6 +163,17 @@ "u64": 3600 } }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100000000000000000 + } + } + }, { "key": { "symbol": "reserve_price" @@ -126,6 +184,14 @@ "lo": 1000000 } } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } } ] } @@ -143,7 +209,7 @@ "symbol": "creator" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } }, { @@ -170,6 +236,22 @@ "u32": 0 } }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 0 + } + }, { "key": { "symbol": "task_id" @@ -267,7 +349,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 @@ -282,7 +364,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 diff --git a/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bids_selects_cheapest_when_reputation_equal.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bids_selects_cheapest_when_reputation_equal.1.json index d4d760a0..a04312e2 100644 --- a/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bids_selects_cheapest_when_reputation_equal.1.json +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bids_selects_cheapest_when_reputation_equal.1.json @@ -1,13 +1,13 @@ { "generators": { - "address": 4, + "address": 5, "nonce": 0 }, "auth": [ [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", { "function": { "contract_fn": { @@ -15,25 +15,63 @@ "function_name": "create_auction", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, { "symbol": "score_test" }, { - "u64": 3600 - }, - { - "i128": { - "hi": 0, - "lo": 1000000 - } - }, - { - "i128": { - "hi": 0, - "lo": 500000 - } + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] } ] } @@ -42,9 +80,11 @@ } ] ], + [], + [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", { "function": { "contract_fn": { @@ -55,10 +95,10 @@ "symbol": "score_test" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { - "bytes": "e261279b7bdd119f194fb6ff19cfd882ca660762861593c72b565cee7efc61ef" + "bytes": "0df5330054d3a313a81730b8ccf750e55207a3a23ff63613dddd95a952613c4f" }, { "i128": { @@ -78,7 +118,7 @@ ], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", { "function": { "contract_fn": { @@ -89,10 +129,10 @@ "symbol": "score_test" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" }, { - "bytes": "3fe19a7079f1a885ef207fd5493a6de5c154d2dee533492427e289180e3deb85" + "bytes": "dec86967082b36b1cab5193396b1c34d9a2761b388630fcbbb94e286d01d6f5b" }, { "i128": { @@ -110,9 +150,10 @@ } ] ], + [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", { "function": { "contract_fn": { @@ -123,7 +164,7 @@ "symbol": "score_test" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { "i128": { @@ -146,7 +187,7 @@ ], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", { "function": { "contract_fn": { @@ -157,7 +198,7 @@ "symbol": "score_test" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" }, { "i128": { @@ -178,7 +219,28 @@ } ] ], - [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bids", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "score_test" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], [], [], [] @@ -230,6 +292,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 2 + } + }, { "key": { "symbol": "config" @@ -255,6 +325,17 @@ "u64": 3600 } }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100000000000000000 + } + } + }, { "key": { "symbol": "reserve_price" @@ -265,6 +346,14 @@ "lo": 1000000 } } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } } ] } @@ -282,7 +371,7 @@ "symbol": "creator" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } }, { @@ -309,6 +398,22 @@ "u32": 1 } }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 2 + } + }, { "key": { "symbol": "task_id" @@ -339,7 +444,7 @@ "symbol": "score_test" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -362,7 +467,7 @@ "symbol": "score_test" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -374,7 +479,7 @@ "symbol": "bidder" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } }, { @@ -393,7 +498,15 @@ "symbol": "commitment" }, "val": { - "bytes": "e261279b7bdd119f194fb6ff19cfd882ca660762861593c72b565cee7efc61ef" + "bytes": "0df5330054d3a313a81730b8ccf750e55207a3a23ff63613dddd95a952613c4f" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false } }, { @@ -472,7 +585,7 @@ "symbol": "score_test" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" } ] }, @@ -495,7 +608,7 @@ "symbol": "score_test" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" } ] }, @@ -507,7 +620,7 @@ "symbol": "bidder" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" } }, { @@ -526,7 +639,15 @@ "symbol": "commitment" }, "val": { - "bytes": "3fe19a7079f1a885ef207fd5493a6de5c154d2dee533492427e289180e3deb85" + "bytes": "dec86967082b36b1cab5193396b1c34d9a2761b388630fcbbb94e286d01d6f5b" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false } }, { @@ -630,10 +751,10 @@ "val": { "vec": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" } ] } @@ -680,7 +801,7 @@ }, "durability": "persistent", "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } } }, @@ -727,7 +848,7 @@ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", "key": { "ledger_key_nonce": { - "nonce": 801925984706572462 + "nonce": 4270020994084947596 } }, "durability": "temporary" @@ -742,7 +863,7 @@ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", "key": { "ledger_key_nonce": { - "nonce": 801925984706572462 + "nonce": 4270020994084947596 } }, "durability": "temporary", @@ -760,7 +881,7 @@ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { - "nonce": 4837995959683129791 + "nonce": 801925984706572462 } }, "durability": "temporary" @@ -773,6 +894,39 @@ "contract_data": { "ext": "v0", "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "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 @@ -790,7 +944,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 @@ -805,7 +959,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 @@ -823,7 +977,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", "key": { "ledger_key_nonce": { "nonce": 1033654523790656264 @@ -838,7 +992,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", "key": { "ledger_key_nonce": { "nonce": 1033654523790656264 @@ -856,7 +1010,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", "key": { "ledger_key_nonce": { "nonce": 2032731177588607455 @@ -871,7 +1025,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", "key": { "ledger_key_nonce": { "nonce": 2032731177588607455 diff --git a/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bids_selects_high_reputation_on_price_tie.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bids_selects_high_reputation_on_price_tie.1.json index 2bfab101..c2195880 100644 --- a/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bids_selects_high_reputation_on_price_tie.1.json +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bids_selects_high_reputation_on_price_tie.1.json @@ -1,13 +1,13 @@ { "generators": { - "address": 4, + "address": 5, "nonce": 0 }, "auth": [ [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", { "function": { "contract_fn": { @@ -15,25 +15,63 @@ "function_name": "create_auction", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, { "symbol": "score_best" }, { - "u64": 3600 - }, - { - "i128": { - "hi": 0, - "lo": 1000000 - } - }, - { - "i128": { - "hi": 0, - "lo": 500000 - } + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] } ] } @@ -42,9 +80,11 @@ } ] ], + [], + [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", { "function": { "contract_fn": { @@ -55,10 +95,10 @@ "symbol": "score_best" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { - "bytes": "c1dcd9b688ba3740102f43a04d91e1bf066c11f48a5caf183e6e0037b6079663" + "bytes": "006c879de7fe55c6066a2d68456b52e8c1a5b245054d9e10000fa2ed182d7b7e" }, { "i128": { @@ -78,7 +118,7 @@ ], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", { "function": { "contract_fn": { @@ -89,10 +129,10 @@ "symbol": "score_best" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" }, { - "bytes": "8d39148caf6a6f7f800e082f65105baafaddee7a568dab900037001fbcda9f83" + "bytes": "209296c37f08d6c40b2a2d8d8a1ab1cbf4159b23cf6fd93bc2ebf0fcc22ef50c" }, { "i128": { @@ -110,9 +150,10 @@ } ] ], + [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", { "function": { "contract_fn": { @@ -123,7 +164,7 @@ "symbol": "score_best" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { "i128": { @@ -146,7 +187,7 @@ ], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", { "function": { "contract_fn": { @@ -157,7 +198,7 @@ "symbol": "score_best" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" }, { "i128": { @@ -178,7 +219,28 @@ } ] ], - [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bids", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "score_best" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], [] ], "ledger": { @@ -228,6 +290,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 2 + } + }, { "key": { "symbol": "config" @@ -253,6 +323,17 @@ "u64": 3600 } }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100000000000000000 + } + } + }, { "key": { "symbol": "reserve_price" @@ -263,6 +344,14 @@ "lo": 1000000 } } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } } ] } @@ -280,7 +369,7 @@ "symbol": "creator" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } }, { @@ -307,6 +396,22 @@ "u32": 1 } }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 2 + } + }, { "key": { "symbol": "task_id" @@ -337,7 +442,7 @@ "symbol": "score_best" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -360,7 +465,7 @@ "symbol": "score_best" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -372,7 +477,7 @@ "symbol": "bidder" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } }, { @@ -391,7 +496,15 @@ "symbol": "commitment" }, "val": { - "bytes": "c1dcd9b688ba3740102f43a04d91e1bf066c11f48a5caf183e6e0037b6079663" + "bytes": "006c879de7fe55c6066a2d68456b52e8c1a5b245054d9e10000fa2ed182d7b7e" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false } }, { @@ -470,7 +583,7 @@ "symbol": "score_best" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" } ] }, @@ -493,7 +606,7 @@ "symbol": "score_best" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" } ] }, @@ -505,7 +618,7 @@ "symbol": "bidder" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" } }, { @@ -524,7 +637,15 @@ "symbol": "commitment" }, "val": { - "bytes": "8d39148caf6a6f7f800e082f65105baafaddee7a568dab900037001fbcda9f83" + "bytes": "209296c37f08d6c40b2a2d8d8a1ab1cbf4159b23cf6fd93bc2ebf0fcc22ef50c" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false } }, { @@ -628,10 +749,10 @@ "val": { "vec": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" } ] } @@ -678,7 +799,7 @@ }, "durability": "persistent", "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } } }, @@ -725,7 +846,7 @@ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", "key": { "ledger_key_nonce": { - "nonce": 801925984706572462 + "nonce": 4270020994084947596 } }, "durability": "temporary" @@ -740,7 +861,7 @@ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", "key": { "ledger_key_nonce": { - "nonce": 801925984706572462 + "nonce": 4270020994084947596 } }, "durability": "temporary", @@ -758,7 +879,7 @@ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { - "nonce": 4837995959683129791 + "nonce": 801925984706572462 } }, "durability": "temporary" @@ -771,6 +892,39 @@ "contract_data": { "ext": "v0", "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "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 @@ -788,7 +942,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 @@ -803,7 +957,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 @@ -821,7 +975,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", "key": { "ledger_key_nonce": { "nonce": 1033654523790656264 @@ -836,7 +990,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", "key": { "ledger_key_nonce": { "nonce": 1033654523790656264 @@ -854,7 +1008,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", "key": { "ledger_key_nonce": { "nonce": 2032731177588607455 @@ -869,7 +1023,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", "key": { "ledger_key_nonce": { "nonce": 2032731177588607455 diff --git a/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bids_twice_fails.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bids_twice_fails.1.json new file mode 100644 index 00000000..285a8777 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/reveal_bids_twice_fails.1.json @@ -0,0 +1,786 @@ +{ + "generators": { + "address": 4, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "symbol": "rb_twice" + }, + { + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "rb_twice" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "bytes": "fccff2591e7f205eff66641ee2af39f956d8b3e9079b2ba8fc17ffd9851594e2" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 75 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bid", + "args": [ + { + "symbol": "rb_twice" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "i128": { + "hi": 0, + "lo": 3000000 + } + }, + { + "string": "Solo" + }, + { + "bytes": "1010101010101010101010101010101010101010101010101010101010101010" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bids", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "rb_twice" + } + ] + } + }, + "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": "rb_twice" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "rb_twice" + } + ] + }, + "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": 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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "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": 1 + } + }, + { + "key": { + "symbol": "task_id" + }, + "val": { + "symbol": "rb_twice" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "rb_twice" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "rb_twice" + }, + { + "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": "fccff2591e7f205eff66641ee2af39f956d8b3e9079b2ba8fc17ffd9851594e2" + } + }, + { + "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": 75 + } + }, + { + "key": { + "symbol": "revealed" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "score" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, + { + "key": { + "symbol": "terms" + }, + "val": { + "string": "Solo" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "rb_twice" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "rb_twice" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Winner" + }, + { + "symbol": "rb_twice" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Winner" + }, + { + "symbol": "rb_twice" + } + ] + }, + "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": 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": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "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": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_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/test/revealed_bid_cannot_be_reopened_at_a_new_price.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/revealed_bid_cannot_be_reopened_at_a_new_price.1.json new file mode 100644 index 00000000..9fe3dd52 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/revealed_bid_cannot_be_reopened_at_a_new_price.1.json @@ -0,0 +1,787 @@ +{ + "generators": { + "address": 4, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "symbol": "reopen" + }, + { + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "reopen" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "bytes": "da805e0a2a7e76df4881337eb44ce26e0e6272a0dee8450ab12aed9937a1dddc" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bid", + "args": [ + { + "symbol": "reopen" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "i128": { + "hi": 0, + "lo": 4000000 + } + }, + { + "string": "Fixed" + }, + { + "bytes": "5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bids", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "reopen" + } + ] + } + }, + "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": "reopen" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "reopen" + } + ] + }, + "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": 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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "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": 1 + } + }, + { + "key": { + "symbol": "task_id" + }, + "val": { + "symbol": "reopen" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "reopen" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "reopen" + }, + { + "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": "da805e0a2a7e76df4881337eb44ce26e0e6272a0dee8450ab12aed9937a1dddc" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "price_stroops" + }, + "val": { + "i128": { + "hi": 0, + "lo": 4000000 + } + } + }, + { + "key": { + "symbol": "refunded" + }, + "val": { + "bool": false + } + }, + { + "key": { + "symbol": "reputation" + }, + "val": { + "u32": 50 + } + }, + { + "key": { + "symbol": "revealed" + }, + "val": { + "bool": true + } + }, + { + "key": { + "symbol": "score" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, + { + "key": { + "symbol": "terms" + }, + "val": { + "string": "Fixed" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "reopen" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "reopen" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Winner" + }, + { + "symbol": "reopen" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Winner" + }, + { + "symbol": "reopen" + } + ] + }, + "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": 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": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "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": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_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/test/submit_bid_after_deadline_fails.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_after_deadline_fails.1.json index 6e46adc5..d5d69c3f 100644 --- a/smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_after_deadline_fails.1.json +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_after_deadline_fails.1.json @@ -1,13 +1,13 @@ { "generators": { - "address": 3, + "address": 4, "nonce": 0 }, "auth": [ [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", { "function": { "contract_fn": { @@ -15,25 +15,63 @@ "function_name": "create_auction", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, { "symbol": "late" }, { - "u64": 3600 - }, - { - "i128": { - "hi": 0, - "lo": 1000000 - } - }, - { - "i128": { - "hi": 0, - "lo": 500000 - } + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] } ] } @@ -43,6 +81,7 @@ ] ], [], + [], [] ], "ledger": { @@ -92,6 +131,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 0 + } + }, { "key": { "symbol": "config" @@ -117,6 +164,17 @@ "u64": 3600 } }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100000000000000000 + } + } + }, { "key": { "symbol": "reserve_price" @@ -127,6 +185,14 @@ "lo": 1000000 } } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } } ] } @@ -144,7 +210,7 @@ "symbol": "creator" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } }, { @@ -171,6 +237,22 @@ "u32": 0 } }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 0 + } + }, { "key": { "symbol": "task_id" @@ -268,7 +350,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 @@ -283,7 +365,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 diff --git a/smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_duplicate_fails.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_duplicate_fails.1.json index b7a15280..c6f3c2d1 100644 --- a/smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_duplicate_fails.1.json +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_duplicate_fails.1.json @@ -1,13 +1,13 @@ { "generators": { - "address": 3, + "address": 4, "nonce": 0 }, "auth": [ [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", { "function": { "contract_fn": { @@ -15,25 +15,63 @@ "function_name": "create_auction", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, { "symbol": "dup_bid" }, { - "u64": 3600 - }, - { - "i128": { - "hi": 0, - "lo": 1000000 - } - }, - { - "i128": { - "hi": 0, - "lo": 500000 - } + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] } ] } @@ -42,9 +80,10 @@ } ] ], + [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", { "function": { "contract_fn": { @@ -55,10 +94,10 @@ "symbol": "dup_bid" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { - "bytes": "3bf69a256d42750f2a1ac18be14d1031094debb72b238a5ebd6ceb482b143519" + "bytes": "b913f758bf548ee241076d765b8db222bf45996b9bf59f7c6b5675b3f02d794e" }, { "i128": { @@ -125,6 +164,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 1 + } + }, { "key": { "symbol": "config" @@ -150,6 +197,17 @@ "u64": 3600 } }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100000000000000000 + } + } + }, { "key": { "symbol": "reserve_price" @@ -160,6 +218,14 @@ "lo": 1000000 } } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } } ] } @@ -177,7 +243,7 @@ "symbol": "creator" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } }, { @@ -204,6 +270,22 @@ "u32": 0 } }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 0 + } + }, { "key": { "symbol": "task_id" @@ -234,7 +316,7 @@ "symbol": "dup_bid" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -257,7 +339,7 @@ "symbol": "dup_bid" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -269,7 +351,7 @@ "symbol": "bidder" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } }, { @@ -288,7 +370,15 @@ "symbol": "commitment" }, "val": { - "bytes": "3bf69a256d42750f2a1ac18be14d1031094debb72b238a5ebd6ceb482b143519" + "bytes": "b913f758bf548ee241076d765b8db222bf45996b9bf59f7c6b5675b3f02d794e" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false } }, { @@ -392,7 +482,7 @@ "val": { "vec": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] } @@ -438,7 +528,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 @@ -453,7 +543,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 @@ -471,7 +561,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 @@ -486,7 +576,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 diff --git a/smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_emits_event.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_emits_event.1.json index 27b12ef4..194e9806 100644 --- a/smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_emits_event.1.json +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_emits_event.1.json @@ -1,13 +1,13 @@ { "generators": { - "address": 3, + "address": 4, "nonce": 0 }, "auth": [ [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", { "function": { "contract_fn": { @@ -15,25 +15,63 @@ "function_name": "create_auction", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, { "symbol": "bid_event" }, { - "u64": 3600 - }, - { - "i128": { - "hi": 0, - "lo": 1000000 - } - }, - { - "i128": { - "hi": 0, - "lo": 500000 - } + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] } ] } @@ -42,9 +80,10 @@ } ] ], + [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", { "function": { "contract_fn": { @@ -55,10 +94,10 @@ "symbol": "bid_event" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { - "bytes": "634fc826dd1a6c7952b67686cbe7b596aa7518b5a9e17703afc8c8ea125cb9b1" + "bytes": "bf94f0cd1dbf1d6bab4631c5e419d035b92f9df69e375f0f1c5391b79345a97f" }, { "i128": { @@ -124,6 +163,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 1 + } + }, { "key": { "symbol": "config" @@ -149,6 +196,17 @@ "u64": 3600 } }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100000000000000000 + } + } + }, { "key": { "symbol": "reserve_price" @@ -159,6 +217,14 @@ "lo": 1000000 } } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } } ] } @@ -176,7 +242,7 @@ "symbol": "creator" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } }, { @@ -203,6 +269,22 @@ "u32": 0 } }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 0 + } + }, { "key": { "symbol": "task_id" @@ -233,7 +315,7 @@ "symbol": "bid_event" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -256,7 +338,7 @@ "symbol": "bid_event" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -268,7 +350,7 @@ "symbol": "bidder" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } }, { @@ -287,7 +369,15 @@ "symbol": "commitment" }, "val": { - "bytes": "634fc826dd1a6c7952b67686cbe7b596aa7518b5a9e17703afc8c8ea125cb9b1" + "bytes": "bf94f0cd1dbf1d6bab4631c5e419d035b92f9df69e375f0f1c5391b79345a97f" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false } }, { @@ -391,7 +481,7 @@ "val": { "vec": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] } @@ -437,7 +527,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 @@ -452,7 +542,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 @@ -470,7 +560,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 @@ -485,7 +575,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 @@ -546,7 +636,7 @@ "symbol": "bidder" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } }, { diff --git a/smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_invalid_reputation_fails.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_invalid_reputation_fails.1.json index 6e86a5a7..19254318 100644 --- a/smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_invalid_reputation_fails.1.json +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_invalid_reputation_fails.1.json @@ -1,13 +1,13 @@ { "generators": { - "address": 3, + "address": 4, "nonce": 0 }, "auth": [ [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", { "function": { "contract_fn": { @@ -15,25 +15,63 @@ "function_name": "create_auction", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, { "symbol": "bad_rep" }, { - "u64": 3600 - }, - { - "i128": { - "hi": 0, - "lo": 1000000 - } - }, - { - "i128": { - "hi": 0, - "lo": 500000 - } + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] } ] } @@ -42,6 +80,7 @@ } ] ], + [], [] ], "ledger": { @@ -91,6 +130,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 0 + } + }, { "key": { "symbol": "config" @@ -116,6 +163,17 @@ "u64": 3600 } }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100000000000000000 + } + } + }, { "key": { "symbol": "reserve_price" @@ -126,6 +184,14 @@ "lo": 1000000 } } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } } ] } @@ -143,7 +209,7 @@ "symbol": "creator" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } }, { @@ -170,6 +236,22 @@ "u32": 0 } }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 0 + } + }, { "key": { "symbol": "task_id" @@ -267,7 +349,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 @@ -282,7 +364,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 diff --git a/smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_rejects_beyond_max_bidders.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_rejects_beyond_max_bidders.1.json new file mode 100644 index 00000000..0289cb76 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_rejects_beyond_max_bidders.1.json @@ -0,0 +1,21608 @@ +{ + "generators": { + "address": 104, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "symbol": "full" + }, + { + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "bytes": "6c1c762a4ade264c018713c4f331ab6038ba935465d29508d24ee477dc0efb95" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "bytes": "fec83d8c6c52a774eee44eb053fc0843acab42b3ca8c557de658419a56fa9fe6" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "bytes": "cb94ea667de7a855a86be089b8e584bdf7d45b4fbe10f072f164f188b94b8ae1" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + }, + { + "bytes": "256ea7daf3bbc94163747f3bb50931307a25cc687572ab72a2beb45fba24b3a7" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + }, + { + "bytes": "112d6a9c5de6fc13b8f54a260545a815e0da6229ce506551bd932e2d1c55b211" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON" + }, + { + "bytes": "8446ed83f416cda9e46ce49493daf9b025f0cd9851cca852dfa7f8a6f2ea3f94" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAX5", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAX5" + }, + { + "bytes": "bd9a680c6ac088078f6524d96773b93d3494e35e397580280e65d1fb4601192e" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXI7N", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXI7N" + }, + { + "bytes": "840a9ed78742c522621be4264b660cc49cec7defe61becf0f3199c6e2b6640b4" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYRE5", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYRE5" + }, + { + "bytes": "3c47fe0d651432becbb7dfa11eab53b3ab5f9306286f469ccc3ee7c65ce15bb4" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN" + }, + { + "bytes": "048198a009484e1b5b031c03a934ddf4f062e0f6b114f06aa68981e2db96e190" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BV5", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BV5" + }, + { + "bytes": "05e7af83a2ff90520f2f46b6b30770e32f8bb878562cba5bbb5ecf563065de19" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6J5N", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6J5N" + }, + { + "bytes": "2c50609a32e88f37a5d6b2f8e4bf63590ba5a53f41c6417ce16bccafd9f1eeb6" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB6KO", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB6KO" + }, + { + "bytes": "ab713a8d9961f1862ab402a4ed761eb5d26c550145fe16ef7641f99d83815965" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDWC6", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDWC6" + }, + { + "bytes": "e8a7f108a3f5c3643db9a04a9897ce2a406732e42458b89b382ac066fff6c595" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFO3O", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFO3O" + }, + { + "bytes": "a4b31941b80082f1941c90826ff2670f051327a8bc34c378aa51405de44494ef" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHGT6", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHGT6" + }, + { + "bytes": "688d8bbae3961278d04c9d74916e0dd65beebd4f4457154bb2064637611cf67a" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABI7IO", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABI7IO" + }, + { + "bytes": "2f91aee6cab6a1fe788c37b417d206e1cd8349721aed63f692fd57c0aaf08820" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKXA6", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKXA6" + }, + { + "bytes": "4f2c8ac75fa30588344d539fb9a74f8812e46e19bc0439b201b5e1abb7bc3f91" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMPZO", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMPZO" + }, + { + "bytes": "906abc397a5fae590f518aec4770d35e549519053700a6a22417e379e844e800" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOHR6", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOHR6" + }, + { + "bytes": "a532677385b084808d7408c04ed1f6bdb73cffe98d344c4a992d36bdc3768b67" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR4OP", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR4OP" + }, + { + "bytes": "8464a919743fa5e2e890474475b8c0b2ce1e6cf002e581a05bfe10b42cf820a8" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTUG7", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTUG7" + }, + { + "bytes": "dcb2caafc7d774174220879b3d59ec07ca6ab21604478feb5758117a86eaee73" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVM7P", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVM7P" + }, + { + "bytes": "3fcc368bddbe517fa6d27a209b107c65fa66bf97546111de0a69e78b295120e4" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXEX7", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXEX7" + }, + { + "bytes": "94e3abc0e4fa4cb962378af9c90e98dcda670a28f9dd9a34cdf295a73b90a98f" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABY5MP", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABY5MP" + }, + { + "bytes": "e8687efd6b3eccdb932d9541f11e7b95b49d5edaf512327c31bd08c29134b3af" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2VE7", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2VE7" + }, + { + "bytes": "cdb11daae281bcfea53f4c75a099e2ad9b54c1e44d8d1b09f482124301797b01" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4N5P", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4N5P" + }, + { + "bytes": "073c04950490e8c8775a279cf0f0f5686eed5e10289e8629c56525a57b7831a0" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6FV7", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6FV7" + }, + { + "bytes": "733eaf2d959b24778e87451d264c4a623cad323613a8a5ee806b2b750f135f92" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBKTY", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBKTY" + }, + { + "bytes": "e10b29522d304ce45261acded2f1161de55b2e8580295ed47660539da44f2f40" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDC3I", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDC3I" + }, + { + "bytes": "e4d5386b35eb96ec9aab3f4049d03541266b46314825b54d7d146b6e88f86dd8" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACF2CY", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACF2CY" + }, + { + "bytes": "e320e2e9bf8c4d2fc25906506b2f931bdef9f75d3951f1a18ff41df143785c6b" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHSKI", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHSKI" + }, + { + "bytes": "b67548f79defcbc84bc69bd1b0d8e19fe200bcd855254d0370a0c5acf3bdff88" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACILRY", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACILRY" + }, + { + "bytes": "d9807a30d8a18b41f4b8cbd40532f0447fbe53b1638e8baf78d326bb1549861f" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKDZI", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKDZI" + }, + { + "bytes": "8587fbb57ace6e1baa62b8b8156e1d819bd891dc80b2fadef9f76670630c4db1" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACM3AY", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACM3AY" + }, + { + "bytes": "fdc6cb3686ca1d291148b07f1d66b3f5ff453566615af4bf4b59bdeaa16de54d" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOTII", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOTII" + }, + { + "bytes": "e6fda7f6e0210bf207b008ca3b9af62455b6f674670358362165f7a6b82bba3a" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRIXZ", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRIXZ" + }, + { + "bytes": "658a7ec5ba5109297314d982549f1d6aaa0fc56515894130c7799e2948486f25" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTA7J", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTA7J" + }, + { + "bytes": "69a8c4558375d53ebc90093b55a36a82069204e94b5dc1bed13a2c5817e03ab4" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVYGZ", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVYGZ" + }, + { + "bytes": "f982ee8e4c96d89ec94dce87a20fd3efe5209f1f10688cccdc1189f737889ba7" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXQOJ", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXQOJ" + }, + { + "bytes": "1cf6f6bd1d7dbe08e76521317cb189f3066e4573f3875bbe215a4e5b7918c253" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYJVZ", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYJVZ" + }, + { + "bytes": "c43bb2c1a703c4de1dc8238a83ab1a786270ebdd19d9417be8a52f1d171017cd" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2B5J", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2B5J" + }, + { + "bytes": "a583a389e3de2a6dde5654df58bc8984a966e041bfedac81e4d63d0e2e259ac3" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4ZEZ", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4ZEZ" + }, + { + "bytes": "f98fd5a99b686f36a5feeca330198cfb1c2981d3ee7df161e47a5cbd19628d6d" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6RMJ", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6RMJ" + }, + { + "bytes": "32473ceec75f67fd6afc3ef5467d07c3a0f3edb2fc5aff46407c9c8b79fe1a3b" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBG3K", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBG3K" + }, + { + "bytes": "86cb0496190786ade2f2d7917d341b5e6a1e8f11e024eeb2b446432d6acec2e0" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDOT2", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDOT2" + }, + { + "bytes": "1c7a1a02b87f44e7a150d601019ed4694fdc792fb4a5e17755b2d0aa1e751551" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFWKK", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFWKK" + }, + { + "bytes": "be2efd1b3deb3ba5799eead5a813f5d48da66db5974274ac6bbd0e19914fa29b" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADH6C2", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADH6C2" + }, + { + "bytes": "a75b65678fa9904f75198a0864066a43eaa59aa5c64a158665cf488237e56891" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIHZK", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIHZK" + }, + { + "bytes": "3ac067ffbb6465b7834a9e7091f0cd507b5a208ceb82e35af9071a275a2c51bb" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKPR2", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKPR2" + }, + { + "bytes": "b4426800cfaa8216c33c3da966f61c6ab736eb3bf758374556f68395e22a653e" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMXIK", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMXIK" + }, + { + "bytes": "13f36a23f982f1088a83b9258774292e0bfec9f96c000718170bce437b93c870" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADO7A2", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADO7A2" + }, + { + "bytes": "95cd465b8e3ab0f7f7c2a99d53d8da6a9aba6a3a62c691f4ccf8a3a953037b14" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRE7L", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRE7L" + }, + { + "bytes": "515215a5ac896c6dedca90b47ce186cc252d91b0fbd86f6169b2de4306f474de" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTMX3", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTMX3" + }, + { + "bytes": "013d17a407a4b069b5dd98cb012f35de9517998c2e447427db17138d11373285" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVUOL", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVUOL" + }, + { + "bytes": "bcb66ca6d638558ec49be3a9db0b59936cd1b30d4a88cfa782ca27a123fab9bd" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADX4G3", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADX4G3" + }, + { + "bytes": "920380d9b78a46d1e9235a32815dfd1020822474cd52a726ca6065da091fa415" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYF5L", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYF5L" + }, + { + "bytes": "ed112bde9063cf0702f5d6c1be966626d977ee52e3635dc5653e00f641464dba" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2NV3", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2NV3" + }, + { + "bytes": "9c613f1ab878d4e9c6bd96703c258223137253f56fefa52a66a1ac223293a2b9" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4VML", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4VML" + }, + { + "bytes": "4cad1b6df974efbf8693b22bf9afad3708e27ffb2fc3e6acb76df57aede0880d" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD65E3", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD65E3" + }, + { + "bytes": "b7fb8a66aab9fd1385c8523d0987dc7b9df717ee05cd35a429d60b258a3d2b99" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEADAU", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEADAU" + }, + { + "bytes": "0a8805bb17349eda27fc97dfac2d13b8ee14ec57e9252f8a54163ec390faf6c2" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECLIE", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECLIE" + }, + { + "bytes": "5b97580a27908f13082347fc7a80fc2d835f8ef5674c5356df0761c6444e0a5a" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEETRU", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEETRU" + }, + { + "bytes": "0c43c901ef8f3d283dba101d5e39a9d490e672933ad18eff04bf4c3ad6dd1c71" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEG3ZE", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEG3ZE" + }, + { + "bytes": "ae05b9bc3c89d6704de8cc7d4654bfe7cae08770c5e1fe1a3f570d4b5c204007" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEJCCU", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEJCCU" + }, + { + "bytes": "aea181a5578715c532d1c31d49a21482d1bb5f4224332980dccee8d9156db2fe" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAELKKE", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAELKKE" + }, + { + "bytes": "60edbc0083cfb12d259aac1aa46dbbb859724dc709bb9ce82dbdce7962057b46" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAENSTU", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAENSTU" + }, + { + "bytes": "0dd067a50b621ee8bcb5bba8496f1c6855aa46227053825a8188ce11cea9cdcf" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEP23E", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEP23E" + }, + { + "bytes": "8f4b78e9228cf07ed635ce16817ebc31c26ff1df53e86fc19464d40291121299" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQBEV", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQBEV" + }, + { + "bytes": "aebe7bad0c96b15e55bd6b1448915941a1743f16c4b2153af443bdf9e720b16f" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAESJMF", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAESJMF" + }, + { + "bytes": "095494eb76a5c3849e13a3c51a3cbfb5b89e55869e3fc4e116e1625632da6484" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEURVV", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEURVV" + }, + { + "bytes": "e849332674cde358f7c00ad30e9556dbdb6c26c328ed1eb58ef71e9ac6f1719e" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWZ5F", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWZ5F" + }, + { + "bytes": "0a3ed03a46b0294158265897631ad386596b0e8db161f0e1e712219ff83b74c3" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZAGV", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZAGV" + }, + { + "bytes": "8f55cc6922f752b08e304f20cada5c5419424e1857f2a84ef10496c25f4e8fc9" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE3IOF", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE3IOF" + }, + { + "bytes": "647e199bd43e288fde7d89e208fae7ccf0d53d108928be33c9a7516570dd685c" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5QXV", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5QXV" + }, + { + "bytes": "62a2fca69f633e7b34807b1d8dea01fb7acfe736e82d2d82dbb1d6b78ea88878" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE7Y7F", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE7Y7F" + }, + { + "bytes": "c137952c86cb3c940a51b7acd6a87da489f6d53c2d2e650455a0ddca0675845b" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAPIG", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAPIG" + }, + { + "bytes": "ef3cf27108bb02f1b30c7266c2a541f2d12f59098dae079d5a048e5b542742f1" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCHAW", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCHAW" + }, + { + "bytes": "f1c02c375df764b0f5f508edf15879deccf231ef0b6005e8acfcf3ced96f72b6" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFE7ZG", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFE7ZG" + }, + { + "bytes": "3c2f44f12fdb9a0fa13ceda3c4d2172b90f8b0ff3b0eab2b4f048dc8a5851ff9" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFGXRW", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFGXRW" + }, + { + "bytes": "882c4645d51e29f9052c6c56ac9d91ef9354d894d0e2fae55b0a5dc0f58e1bda" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJOKG", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJOKG" + }, + { + "bytes": "af9b2b6b291a4cae504a7382e7df7504303a154b8ffe80d16cfbeb9e6ffc7152" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFLGCW", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFLGCW" + }, + { + "bytes": "90fa1e1746d780e45e0fe3db33909c7e1b6fd24cd215c69a78b23fdb96f855cf" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFN63G", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFN63G" + }, + { + "bytes": "5f0f2c7af372196ead71aa8c9c1a30a1b30bfeefd8d86d957e480c495dfe1056" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFPWTW", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFPWTW" + }, + { + "bytes": "2df051d949c99f90a61a1c44f88ba1d64c3c3f4910cd341cdf05e946b958663c" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQNMH", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQNMH" + }, + { + "bytes": "72ccc97eaee24d19bd14028cd7b91aa2b703a3d78ae056625814b1318bda6931" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFSFEX", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFSFEX" + }, + { + "bytes": "ac8c84a00343c63a406e05d52deeb8c221f080dc0c6a5bfea8794c4ca286b34e" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFU55H", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFU55H" + }, + { + "bytes": "1e8a19f3557ab9afb0680f58bb396e11a3027456b06b89ebc89461db7bbe3872" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFWVVX", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFWVVX" + }, + { + "bytes": "0845fcd40b05cec38a285e9bafe442fe390fa16fb4fc77edc6b4374baa7a29fb" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFZMOH", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFZMOH" + }, + { + "bytes": "d0def13ed45ef9171fa4ec2276ca3c2edf6d61128cc6164960da7b5fb529135d" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF3EGX", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF3EGX" + }, + { + "bytes": "0db3773ce8076b48946fc65d7cd2c73698034527d1f8f28f38f8206986adc962" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF547H", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF547H" + }, + { + "bytes": "49a7dc62c03a0519851e4dc60502b8c17ef44831bc7cc9207eaa971a6283bf02" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF7UXX", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF7UXX" + }, + { + "bytes": "f2406c08d5f4639e001003d437a163a69937908f3e0a48381c5de5dbe9ee9be5" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGA3RQ", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGA3RQ" + }, + { + "bytes": "c444fa94df7f0138eb3713a45d13b5c7b61db73a26cc1a699c88af74cd539f3c" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGCTZA", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGCTZA" + }, + { + "bytes": "095fe8a9cbdb9cf6908aba203507504f1f80981bff47838c9cbd8d8f665d1c84" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGELAQ", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGELAQ" + }, + { + "bytes": "91bac5fc024847934ca9744929779721a768a0e7531d6c84fbc743b022e4ff94" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGGDIA", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGGDIA" + }, + { + "bytes": "b6f7e1759c1f4ec8d65d42c7b08ddb2b4f48d3042a99795cf40ae46a817029d9" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJ2TQ", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJ2TQ" + }, + { + "bytes": "fc3348ced4207d351c9b247796108a30ad55d63d7c05d3b13bfcf662ef917ef0" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGLS3A", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGLS3A" + }, + { + "bytes": "de815ddd0c7437bd3c704645af77daa0452ca74cc2995b5a6fe957d7463cddfa" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGNKCQ", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGNKCQ" + }, + { + "bytes": "5d069bc16a19051b5c0e595e6219628b6dffa329f5a993a318b798cdf928a019" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGPCKA", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGPCKA" + }, + { + "bytes": "f0bf2a9210e5f611682a2680e16e093b77edae0b7c1fdaa48b1267bb2da3b9b8" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 50 + } + ] + } + }, + "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": "full" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "full" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 100 + } + }, + { + "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": 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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "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": "full" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "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": "6c1c762a4ade264c018713c4f331ab6038ba935465d29508d24ee477dc0efb95" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "fec83d8c6c52a774eee44eb053fc0843acab42b3ca8c557de658419a56fa9fe6" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "cb94ea667de7a855a86be089b8e584bdf7d45b4fbe10f072f164f188b94b8ae1" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "256ea7daf3bbc94163747f3bb50931307a25cc687572ab72a2beb45fba24b3a7" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "112d6a9c5de6fc13b8f54a260545a815e0da6229ce506551bd932e2d1c55b211" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "8446ed83f416cda9e46ce49493daf9b025f0cd9851cca852dfa7f8a6f2ea3f94" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAX5" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAX5" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAX5" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "bd9a680c6ac088078f6524d96773b93d3494e35e397580280e65d1fb4601192e" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXI7N" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXI7N" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXI7N" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "840a9ed78742c522621be4264b660cc49cec7defe61becf0f3199c6e2b6640b4" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYRE5" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYRE5" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYRE5" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "3c47fe0d651432becbb7dfa11eab53b3ab5f9306286f469ccc3ee7c65ce15bb4" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "048198a009484e1b5b031c03a934ddf4f062e0f6b114f06aa68981e2db96e190" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BV5" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BV5" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BV5" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "05e7af83a2ff90520f2f46b6b30770e32f8bb878562cba5bbb5ecf563065de19" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6J5N" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6J5N" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6J5N" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "2c50609a32e88f37a5d6b2f8e4bf63590ba5a53f41c6417ce16bccafd9f1eeb6" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB6KO" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB6KO" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB6KO" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "ab713a8d9961f1862ab402a4ed761eb5d26c550145fe16ef7641f99d83815965" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDWC6" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDWC6" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDWC6" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "e8a7f108a3f5c3643db9a04a9897ce2a406732e42458b89b382ac066fff6c595" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFO3O" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFO3O" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFO3O" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "a4b31941b80082f1941c90826ff2670f051327a8bc34c378aa51405de44494ef" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHGT6" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHGT6" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHGT6" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "688d8bbae3961278d04c9d74916e0dd65beebd4f4457154bb2064637611cf67a" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABI7IO" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABI7IO" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABI7IO" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "2f91aee6cab6a1fe788c37b417d206e1cd8349721aed63f692fd57c0aaf08820" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKXA6" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKXA6" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKXA6" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "4f2c8ac75fa30588344d539fb9a74f8812e46e19bc0439b201b5e1abb7bc3f91" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMPZO" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMPZO" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMPZO" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "906abc397a5fae590f518aec4770d35e549519053700a6a22417e379e844e800" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOHR6" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOHR6" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOHR6" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "a532677385b084808d7408c04ed1f6bdb73cffe98d344c4a992d36bdc3768b67" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR4OP" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR4OP" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR4OP" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "8464a919743fa5e2e890474475b8c0b2ce1e6cf002e581a05bfe10b42cf820a8" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTUG7" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTUG7" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTUG7" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "dcb2caafc7d774174220879b3d59ec07ca6ab21604478feb5758117a86eaee73" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVM7P" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVM7P" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVM7P" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "3fcc368bddbe517fa6d27a209b107c65fa66bf97546111de0a69e78b295120e4" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXEX7" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXEX7" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXEX7" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "94e3abc0e4fa4cb962378af9c90e98dcda670a28f9dd9a34cdf295a73b90a98f" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABY5MP" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABY5MP" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABY5MP" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "e8687efd6b3eccdb932d9541f11e7b95b49d5edaf512327c31bd08c29134b3af" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2VE7" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2VE7" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2VE7" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "cdb11daae281bcfea53f4c75a099e2ad9b54c1e44d8d1b09f482124301797b01" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4N5P" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4N5P" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4N5P" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "073c04950490e8c8775a279cf0f0f5686eed5e10289e8629c56525a57b7831a0" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6FV7" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6FV7" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6FV7" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "733eaf2d959b24778e87451d264c4a623cad323613a8a5ee806b2b750f135f92" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBKTY" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBKTY" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBKTY" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "e10b29522d304ce45261acded2f1161de55b2e8580295ed47660539da44f2f40" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDC3I" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDC3I" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDC3I" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "e4d5386b35eb96ec9aab3f4049d03541266b46314825b54d7d146b6e88f86dd8" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACF2CY" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACF2CY" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACF2CY" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "e320e2e9bf8c4d2fc25906506b2f931bdef9f75d3951f1a18ff41df143785c6b" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHSKI" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHSKI" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHSKI" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "b67548f79defcbc84bc69bd1b0d8e19fe200bcd855254d0370a0c5acf3bdff88" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACILRY" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACILRY" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACILRY" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "d9807a30d8a18b41f4b8cbd40532f0447fbe53b1638e8baf78d326bb1549861f" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKDZI" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKDZI" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKDZI" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "8587fbb57ace6e1baa62b8b8156e1d819bd891dc80b2fadef9f76670630c4db1" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACM3AY" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACM3AY" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACM3AY" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "fdc6cb3686ca1d291148b07f1d66b3f5ff453566615af4bf4b59bdeaa16de54d" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOTII" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOTII" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOTII" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "e6fda7f6e0210bf207b008ca3b9af62455b6f674670358362165f7a6b82bba3a" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRIXZ" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRIXZ" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRIXZ" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "658a7ec5ba5109297314d982549f1d6aaa0fc56515894130c7799e2948486f25" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTA7J" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTA7J" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTA7J" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "69a8c4558375d53ebc90093b55a36a82069204e94b5dc1bed13a2c5817e03ab4" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVYGZ" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVYGZ" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVYGZ" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "f982ee8e4c96d89ec94dce87a20fd3efe5209f1f10688cccdc1189f737889ba7" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXQOJ" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXQOJ" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXQOJ" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "1cf6f6bd1d7dbe08e76521317cb189f3066e4573f3875bbe215a4e5b7918c253" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYJVZ" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYJVZ" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYJVZ" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "c43bb2c1a703c4de1dc8238a83ab1a786270ebdd19d9417be8a52f1d171017cd" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2B5J" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2B5J" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2B5J" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "a583a389e3de2a6dde5654df58bc8984a966e041bfedac81e4d63d0e2e259ac3" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4ZEZ" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4ZEZ" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4ZEZ" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "f98fd5a99b686f36a5feeca330198cfb1c2981d3ee7df161e47a5cbd19628d6d" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6RMJ" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6RMJ" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6RMJ" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "32473ceec75f67fd6afc3ef5467d07c3a0f3edb2fc5aff46407c9c8b79fe1a3b" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBG3K" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBG3K" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBG3K" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "86cb0496190786ade2f2d7917d341b5e6a1e8f11e024eeb2b446432d6acec2e0" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDOT2" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDOT2" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDOT2" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "1c7a1a02b87f44e7a150d601019ed4694fdc792fb4a5e17755b2d0aa1e751551" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFWKK" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFWKK" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFWKK" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "be2efd1b3deb3ba5799eead5a813f5d48da66db5974274ac6bbd0e19914fa29b" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADH6C2" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADH6C2" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADH6C2" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "a75b65678fa9904f75198a0864066a43eaa59aa5c64a158665cf488237e56891" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIHZK" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIHZK" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIHZK" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "3ac067ffbb6465b7834a9e7091f0cd507b5a208ceb82e35af9071a275a2c51bb" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKPR2" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKPR2" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKPR2" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "b4426800cfaa8216c33c3da966f61c6ab736eb3bf758374556f68395e22a653e" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMXIK" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMXIK" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMXIK" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "13f36a23f982f1088a83b9258774292e0bfec9f96c000718170bce437b93c870" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADO7A2" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADO7A2" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADO7A2" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "95cd465b8e3ab0f7f7c2a99d53d8da6a9aba6a3a62c691f4ccf8a3a953037b14" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRE7L" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRE7L" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRE7L" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "515215a5ac896c6dedca90b47ce186cc252d91b0fbd86f6169b2de4306f474de" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTMX3" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTMX3" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTMX3" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "013d17a407a4b069b5dd98cb012f35de9517998c2e447427db17138d11373285" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVUOL" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVUOL" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVUOL" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "bcb66ca6d638558ec49be3a9db0b59936cd1b30d4a88cfa782ca27a123fab9bd" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADX4G3" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADX4G3" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADX4G3" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "920380d9b78a46d1e9235a32815dfd1020822474cd52a726ca6065da091fa415" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYF5L" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYF5L" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYF5L" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "ed112bde9063cf0702f5d6c1be966626d977ee52e3635dc5653e00f641464dba" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2NV3" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2NV3" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2NV3" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "9c613f1ab878d4e9c6bd96703c258223137253f56fefa52a66a1ac223293a2b9" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4VML" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4VML" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4VML" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "4cad1b6df974efbf8693b22bf9afad3708e27ffb2fc3e6acb76df57aede0880d" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD65E3" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD65E3" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD65E3" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "b7fb8a66aab9fd1385c8523d0987dc7b9df717ee05cd35a429d60b258a3d2b99" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEADAU" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEADAU" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEADAU" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "0a8805bb17349eda27fc97dfac2d13b8ee14ec57e9252f8a54163ec390faf6c2" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECLIE" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECLIE" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECLIE" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "5b97580a27908f13082347fc7a80fc2d835f8ef5674c5356df0761c6444e0a5a" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEETRU" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEETRU" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEETRU" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "0c43c901ef8f3d283dba101d5e39a9d490e672933ad18eff04bf4c3ad6dd1c71" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEG3ZE" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEG3ZE" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEG3ZE" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "ae05b9bc3c89d6704de8cc7d4654bfe7cae08770c5e1fe1a3f570d4b5c204007" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEJCCU" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEJCCU" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEJCCU" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "aea181a5578715c532d1c31d49a21482d1bb5f4224332980dccee8d9156db2fe" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAELKKE" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAELKKE" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAELKKE" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "60edbc0083cfb12d259aac1aa46dbbb859724dc709bb9ce82dbdce7962057b46" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAENSTU" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAENSTU" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAENSTU" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "0dd067a50b621ee8bcb5bba8496f1c6855aa46227053825a8188ce11cea9cdcf" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEP23E" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEP23E" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEP23E" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "8f4b78e9228cf07ed635ce16817ebc31c26ff1df53e86fc19464d40291121299" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQBEV" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQBEV" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQBEV" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "aebe7bad0c96b15e55bd6b1448915941a1743f16c4b2153af443bdf9e720b16f" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAESJMF" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAESJMF" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAESJMF" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "095494eb76a5c3849e13a3c51a3cbfb5b89e55869e3fc4e116e1625632da6484" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEURVV" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEURVV" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEURVV" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "e849332674cde358f7c00ad30e9556dbdb6c26c328ed1eb58ef71e9ac6f1719e" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWZ5F" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWZ5F" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWZ5F" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "0a3ed03a46b0294158265897631ad386596b0e8db161f0e1e712219ff83b74c3" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZAGV" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZAGV" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZAGV" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "8f55cc6922f752b08e304f20cada5c5419424e1857f2a84ef10496c25f4e8fc9" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE3IOF" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE3IOF" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE3IOF" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "647e199bd43e288fde7d89e208fae7ccf0d53d108928be33c9a7516570dd685c" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5QXV" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5QXV" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5QXV" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "62a2fca69f633e7b34807b1d8dea01fb7acfe736e82d2d82dbb1d6b78ea88878" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE7Y7F" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE7Y7F" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE7Y7F" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "c137952c86cb3c940a51b7acd6a87da489f6d53c2d2e650455a0ddca0675845b" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAPIG" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAPIG" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAPIG" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "ef3cf27108bb02f1b30c7266c2a541f2d12f59098dae079d5a048e5b542742f1" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCHAW" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCHAW" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCHAW" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "f1c02c375df764b0f5f508edf15879deccf231ef0b6005e8acfcf3ced96f72b6" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFE7ZG" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFE7ZG" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFE7ZG" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "3c2f44f12fdb9a0fa13ceda3c4d2172b90f8b0ff3b0eab2b4f048dc8a5851ff9" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFGXRW" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFGXRW" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFGXRW" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "882c4645d51e29f9052c6c56ac9d91ef9354d894d0e2fae55b0a5dc0f58e1bda" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJOKG" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJOKG" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJOKG" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "af9b2b6b291a4cae504a7382e7df7504303a154b8ffe80d16cfbeb9e6ffc7152" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFLGCW" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFLGCW" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFLGCW" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "90fa1e1746d780e45e0fe3db33909c7e1b6fd24cd215c69a78b23fdb96f855cf" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFN63G" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFN63G" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFN63G" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "5f0f2c7af372196ead71aa8c9c1a30a1b30bfeefd8d86d957e480c495dfe1056" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFPWTW" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFPWTW" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFPWTW" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "2df051d949c99f90a61a1c44f88ba1d64c3c3f4910cd341cdf05e946b958663c" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQNMH" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQNMH" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQNMH" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "72ccc97eaee24d19bd14028cd7b91aa2b703a3d78ae056625814b1318bda6931" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFSFEX" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFSFEX" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFSFEX" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "ac8c84a00343c63a406e05d52deeb8c221f080dc0c6a5bfea8794c4ca286b34e" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFU55H" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFU55H" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFU55H" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "1e8a19f3557ab9afb0680f58bb396e11a3027456b06b89ebc89461db7bbe3872" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFWVVX" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFWVVX" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFWVVX" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "0845fcd40b05cec38a285e9bafe442fe390fa16fb4fc77edc6b4374baa7a29fb" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFZMOH" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFZMOH" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFZMOH" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "d0def13ed45ef9171fa4ec2276ca3c2edf6d61128cc6164960da7b5fb529135d" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF3EGX" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF3EGX" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF3EGX" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "0db3773ce8076b48946fc65d7cd2c73698034527d1f8f28f38f8206986adc962" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF547H" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF547H" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF547H" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "49a7dc62c03a0519851e4dc60502b8c17ef44831bc7cc9207eaa971a6283bf02" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF7UXX" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF7UXX" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF7UXX" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "f2406c08d5f4639e001003d437a163a69937908f3e0a48381c5de5dbe9ee9be5" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGA3RQ" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGA3RQ" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGA3RQ" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "c444fa94df7f0138eb3713a45d13b5c7b61db73a26cc1a699c88af74cd539f3c" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGCTZA" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGCTZA" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGCTZA" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "095fe8a9cbdb9cf6908aba203507504f1f80981bff47838c9cbd8d8f665d1c84" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGELAQ" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGELAQ" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGELAQ" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "91bac5fc024847934ca9744929779721a768a0e7531d6c84fbc743b022e4ff94" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGGDIA" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGGDIA" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGGDIA" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "b6f7e1759c1f4ec8d65d42c7b08ddb2b4f48d3042a99795cf40ae46a817029d9" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJ2TQ" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJ2TQ" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJ2TQ" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "fc3348ced4207d351c9b247796108a30ad55d63d7c05d3b13bfcf662ef917ef0" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGLS3A" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGLS3A" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGLS3A" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "de815ddd0c7437bd3c704645af77daa0452ca74cc2995b5a6fe957d7463cddfa" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGNKCQ" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGNKCQ" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGNKCQ" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "5d069bc16a19051b5c0e595e6219628b6dffa329f5a993a318b798cdf928a019" + } + }, + { + "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": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGPCKA" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "full" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGPCKA" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "bidder" + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGPCKA" + } + }, + { + "key": { + "symbol": "bond" + }, + "val": { + "i128": { + "hi": 0, + "lo": 500000 + } + } + }, + { + "key": { + "symbol": "commitment" + }, + "val": { + "bytes": "f0bf2a9210e5f611682a2680e16e093b77edae0b7c1fdaa48b1267bb2da3b9b8" + } + }, + { + "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": "full" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "full" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAX5" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXI7N" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYRE5" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BV5" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6J5N" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB6KO" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDWC6" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFO3O" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHGT6" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABI7IO" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKXA6" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMPZO" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOHR6" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR4OP" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTUG7" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVM7P" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXEX7" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABY5MP" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2VE7" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4N5P" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6FV7" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBKTY" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDC3I" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACF2CY" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHSKI" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACILRY" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKDZI" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACM3AY" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOTII" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRIXZ" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTA7J" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVYGZ" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXQOJ" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYJVZ" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2B5J" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4ZEZ" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6RMJ" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBG3K" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDOT2" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFWKK" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADH6C2" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIHZK" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKPR2" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMXIK" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADO7A2" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRE7L" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTMX3" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVUOL" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADX4G3" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYF5L" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2NV3" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4VML" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD65E3" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEADAU" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECLIE" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEETRU" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEG3ZE" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEJCCU" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAELKKE" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAENSTU" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEP23E" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQBEV" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAESJMF" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEURVV" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWZ5F" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZAGV" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE3IOF" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5QXV" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE7Y7F" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAPIG" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCHAW" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFE7ZG" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFGXRW" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJOKG" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFLGCW" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFN63G" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFPWTW" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQNMH" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFSFEX" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFU55H" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFWVVX" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFZMOH" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF3EGX" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF547H" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF7UXX" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGA3RQ" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGCTZA" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGELAQ" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGGDIA" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJ2TQ" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGLS3A" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGNKCQ" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGPCKA" + } + ] + } + } + }, + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", + "key": { + "ledger_key_nonce": { + "nonce": 1033654523790656264 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4", + "key": { + "ledger_key_nonce": { + "nonce": 4837995959683129791 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM", + "key": { + "ledger_key_nonce": { + "nonce": 2032731177588607455 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM", + "key": { + "ledger_key_nonce": { + "nonce": 2032731177588607455 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", + "key": { + "ledger_key_nonce": { + "nonce": 4270020994084947596 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5", + "key": { + "ledger_key_nonce": { + "nonce": 4270020994084947596 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON", + "key": { + "ledger_key_nonce": { + "nonce": 8370022561469687789 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON", + "key": { + "ledger_key_nonce": { + "nonce": 8370022561469687789 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAX5", + "key": { + "ledger_key_nonce": { + "nonce": 6277191135259896685 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAX5", + "key": { + "ledger_key_nonce": { + "nonce": 6277191135259896685 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXI7N", + "key": { + "ledger_key_nonce": { + "nonce": 5806905060045992000 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXI7N", + "key": { + "ledger_key_nonce": { + "nonce": 5806905060045992000 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYRE5", + "key": { + "ledger_key_nonce": { + "nonce": 1194852393571756375 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYRE5", + "key": { + "ledger_key_nonce": { + "nonce": 1194852393571756375 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN", + "key": { + "ledger_key_nonce": { + "nonce": 115220454072064130 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN", + "key": { + "ledger_key_nonce": { + "nonce": 115220454072064130 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BV5", + "key": { + "ledger_key_nonce": { + "nonce": 3126073502131104533 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BV5", + "key": { + "ledger_key_nonce": { + "nonce": 3126073502131104533 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6J5N", + "key": { + "ledger_key_nonce": { + "nonce": 1301173170172112462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6J5N", + "key": { + "ledger_key_nonce": { + "nonce": 1301173170172112462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB6KO", + "key": { + "ledger_key_nonce": { + "nonce": 6517132746326325848 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB6KO", + "key": { + "ledger_key_nonce": { + "nonce": 6517132746326325848 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDWC6", + "key": { + "ledger_key_nonce": { + "nonce": 7270604957039011794 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDWC6", + "key": { + "ledger_key_nonce": { + "nonce": 7270604957039011794 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFO3O", + "key": { + "ledger_key_nonce": { + "nonce": 2781962168096793370 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFO3O", + "key": { + "ledger_key_nonce": { + "nonce": 2781962168096793370 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHGT6", + "key": { + "ledger_key_nonce": { + "nonce": 2307661404550649928 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHGT6", + "key": { + "ledger_key_nonce": { + "nonce": 2307661404550649928 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABI7IO", + "key": { + "ledger_key_nonce": { + "nonce": 6391496069076573377 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABI7IO", + "key": { + "ledger_key_nonce": { + "nonce": 6391496069076573377 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKXA6", + "key": { + "ledger_key_nonce": { + "nonce": 4571470874178140630 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKXA6", + "key": { + "ledger_key_nonce": { + "nonce": 4571470874178140630 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMPZO", + "key": { + "ledger_key_nonce": { + "nonce": 2578412842719982537 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMPZO", + "key": { + "ledger_key_nonce": { + "nonce": 2578412842719982537 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOHR6", + "key": { + "ledger_key_nonce": { + "nonce": 2140788761963629343 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOHR6", + "key": { + "ledger_key_nonce": { + "nonce": 2140788761963629343 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR4OP", + "key": { + "ledger_key_nonce": { + "nonce": 1345255804540566779 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR4OP", + "key": { + "ledger_key_nonce": { + "nonce": 1345255804540566779 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTUG7", + "key": { + "ledger_key_nonce": { + "nonce": 5012940724606903311 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTUG7", + "key": { + "ledger_key_nonce": { + "nonce": 5012940724606903311 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVM7P", + "key": { + "ledger_key_nonce": { + "nonce": 8077058277077262192 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVM7P", + "key": { + "ledger_key_nonce": { + "nonce": 8077058277077262192 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXEX7", + "key": { + "ledger_key_nonce": { + "nonce": 3736142932239307322 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXEX7", + "key": { + "ledger_key_nonce": { + "nonce": 3736142932239307322 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABY5MP", + "key": { + "ledger_key_nonce": { + "nonce": 8375915698557174338 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABY5MP", + "key": { + "ledger_key_nonce": { + "nonce": 8375915698557174338 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2VE7", + "key": { + "ledger_key_nonce": { + "nonce": 2891388370666955040 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2VE7", + "key": { + "ledger_key_nonce": { + "nonce": 2891388370666955040 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4N5P", + "key": { + "ledger_key_nonce": { + "nonce": 1690253666352074432 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4N5P", + "key": { + "ledger_key_nonce": { + "nonce": 1690253666352074432 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6FV7", + "key": { + "ledger_key_nonce": { + "nonce": 544730322382084885 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6FV7", + "key": { + "ledger_key_nonce": { + "nonce": 544730322382084885 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBKTY", + "key": { + "ledger_key_nonce": { + "nonce": 5994256439390011320 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBKTY", + "key": { + "ledger_key_nonce": { + "nonce": 5994256439390011320 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDC3I", + "key": { + "ledger_key_nonce": { + "nonce": 4914054227674050081 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDC3I", + "key": { + "ledger_key_nonce": { + "nonce": 4914054227674050081 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACF2CY", + "key": { + "ledger_key_nonce": { + "nonce": 1506441561184340186 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACF2CY", + "key": { + "ledger_key_nonce": { + "nonce": 1506441561184340186 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHSKI", + "key": { + "ledger_key_nonce": { + "nonce": 2254425974100219774 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHSKI", + "key": { + "ledger_key_nonce": { + "nonce": 2254425974100219774 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACILRY", + "key": { + "ledger_key_nonce": { + "nonce": 6369051681840606601 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACILRY", + "key": { + "ledger_key_nonce": { + "nonce": 6369051681840606601 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKDZI", + "key": { + "ledger_key_nonce": { + "nonce": 2623024502929126324 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKDZI", + "key": { + "ledger_key_nonce": { + "nonce": 2623024502929126324 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACM3AY", + "key": { + "ledger_key_nonce": { + "nonce": 1501277168746644712 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACM3AY", + "key": { + "ledger_key_nonce": { + "nonce": 1501277168746644712 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOTII", + "key": { + "ledger_key_nonce": { + "nonce": 649072984189975589 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOTII", + "key": { + "ledger_key_nonce": { + "nonce": 649072984189975589 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRIXZ", + "key": { + "ledger_key_nonce": { + "nonce": 3507645618223554847 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRIXZ", + "key": { + "ledger_key_nonce": { + "nonce": 3507645618223554847 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTA7J", + "key": { + "ledger_key_nonce": { + "nonce": 1967922937664261543 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTA7J", + "key": { + "ledger_key_nonce": { + "nonce": 1967922937664261543 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVYGZ", + "key": { + "ledger_key_nonce": { + "nonce": 9219847003023114248 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVYGZ", + "key": { + "ledger_key_nonce": { + "nonce": 9219847003023114248 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXQOJ", + "key": { + "ledger_key_nonce": { + "nonce": 8840537117088365198 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXQOJ", + "key": { + "ledger_key_nonce": { + "nonce": 8840537117088365198 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYJVZ", + "key": { + "ledger_key_nonce": { + "nonce": 8799288422285703394 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYJVZ", + "key": { + "ledger_key_nonce": { + "nonce": 8799288422285703394 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2B5J", + "key": { + "ledger_key_nonce": { + "nonce": 7564072809757355283 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2B5J", + "key": { + "ledger_key_nonce": { + "nonce": 7564072809757355283 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4ZEZ", + "key": { + "ledger_key_nonce": { + "nonce": 3791811173315715839 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4ZEZ", + "key": { + "ledger_key_nonce": { + "nonce": 3791811173315715839 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6RMJ", + "key": { + "ledger_key_nonce": { + "nonce": 1768924605727919950 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6RMJ", + "key": { + "ledger_key_nonce": { + "nonce": 1768924605727919950 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBG3K", + "key": { + "ledger_key_nonce": { + "nonce": 4822409645871993625 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBG3K", + "key": { + "ledger_key_nonce": { + "nonce": 4822409645871993625 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDOT2", + "key": { + "ledger_key_nonce": { + "nonce": 6054449652355741849 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDOT2", + "key": { + "ledger_key_nonce": { + "nonce": 6054449652355741849 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFWKK", + "key": { + "ledger_key_nonce": { + "nonce": 7935298921545310989 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFWKK", + "key": { + "ledger_key_nonce": { + "nonce": 7935298921545310989 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADH6C2", + "key": { + "ledger_key_nonce": { + "nonce": 395965415359800683 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADH6C2", + "key": { + "ledger_key_nonce": { + "nonce": 395965415359800683 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIHZK", + "key": { + "ledger_key_nonce": { + "nonce": 5219976416919672547 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIHZK", + "key": { + "ledger_key_nonce": { + "nonce": 5219976416919672547 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKPR2", + "key": { + "ledger_key_nonce": { + "nonce": 2260266285686479847 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKPR2", + "key": { + "ledger_key_nonce": { + "nonce": 2260266285686479847 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMXIK", + "key": { + "ledger_key_nonce": { + "nonce": 2917827370713594154 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMXIK", + "key": { + "ledger_key_nonce": { + "nonce": 2917827370713594154 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADO7A2", + "key": { + "ledger_key_nonce": { + "nonce": 8067048471933141837 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADO7A2", + "key": { + "ledger_key_nonce": { + "nonce": 8067048471933141837 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRE7L", + "key": { + "ledger_key_nonce": { + "nonce": 8582780626144801259 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRE7L", + "key": { + "ledger_key_nonce": { + "nonce": 8582780626144801259 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTMX3", + "key": { + "ledger_key_nonce": { + "nonce": 3972104438082304464 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTMX3", + "key": { + "ledger_key_nonce": { + "nonce": 3972104438082304464 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVUOL", + "key": { + "ledger_key_nonce": { + "nonce": 875319255151014454 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVUOL", + "key": { + "ledger_key_nonce": { + "nonce": 875319255151014454 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADX4G3", + "key": { + "ledger_key_nonce": { + "nonce": 4211405827341991149 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADX4G3", + "key": { + "ledger_key_nonce": { + "nonce": 4211405827341991149 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYF5L", + "key": { + "ledger_key_nonce": { + "nonce": 4900321175033996277 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYF5L", + "key": { + "ledger_key_nonce": { + "nonce": 4900321175033996277 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2NV3", + "key": { + "ledger_key_nonce": { + "nonce": 1161004259517476189 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2NV3", + "key": { + "ledger_key_nonce": { + "nonce": 1161004259517476189 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4VML", + "key": { + "ledger_key_nonce": { + "nonce": 5043854608229809201 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4VML", + "key": { + "ledger_key_nonce": { + "nonce": 5043854608229809201 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD65E3", + "key": { + "ledger_key_nonce": { + "nonce": 3195544978474815821 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD65E3", + "key": { + "ledger_key_nonce": { + "nonce": 3195544978474815821 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEADAU", + "key": { + "ledger_key_nonce": { + "nonce": 1614739035918781831 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEADAU", + "key": { + "ledger_key_nonce": { + "nonce": 1614739035918781831 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECLIE", + "key": { + "ledger_key_nonce": { + "nonce": 4271701834903804982 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECLIE", + "key": { + "ledger_key_nonce": { + "nonce": 4271701834903804982 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEETRU", + "key": { + "ledger_key_nonce": { + "nonce": 8157382300544000078 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEETRU", + "key": { + "ledger_key_nonce": { + "nonce": 8157382300544000078 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEG3ZE", + "key": { + "ledger_key_nonce": { + "nonce": 670404547506884812 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEG3ZE", + "key": { + "ledger_key_nonce": { + "nonce": 670404547506884812 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEJCCU", + "key": { + "ledger_key_nonce": { + "nonce": 7687354978218273323 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEJCCU", + "key": { + "ledger_key_nonce": { + "nonce": 7687354978218273323 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAELKKE", + "key": { + "ledger_key_nonce": { + "nonce": 6306546209684867670 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAELKKE", + "key": { + "ledger_key_nonce": { + "nonce": 6306546209684867670 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAENSTU", + "key": { + "ledger_key_nonce": { + "nonce": 3945433670868351223 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAENSTU", + "key": { + "ledger_key_nonce": { + "nonce": 3945433670868351223 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEP23E", + "key": { + "ledger_key_nonce": { + "nonce": 6875503646996515520 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEP23E", + "key": { + "ledger_key_nonce": { + "nonce": 6875503646996515520 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQBEV", + "key": { + "ledger_key_nonce": { + "nonce": 6233550795020492710 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQBEV", + "key": { + "ledger_key_nonce": { + "nonce": 6233550795020492710 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAESJMF", + "key": { + "ledger_key_nonce": { + "nonce": 1273663306374918439 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAESJMF", + "key": { + "ledger_key_nonce": { + "nonce": 1273663306374918439 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEURVV", + "key": { + "ledger_key_nonce": { + "nonce": 300033532921919907 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEURVV", + "key": { + "ledger_key_nonce": { + "nonce": 300033532921919907 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWZ5F", + "key": { + "ledger_key_nonce": { + "nonce": 9203650180228785090 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWZ5F", + "key": { + "ledger_key_nonce": { + "nonce": 9203650180228785090 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZAGV", + "key": { + "ledger_key_nonce": { + "nonce": 4601299207353310938 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZAGV", + "key": { + "ledger_key_nonce": { + "nonce": 4601299207353310938 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE3IOF", + "key": { + "ledger_key_nonce": { + "nonce": 4677765900193036446 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE3IOF", + "key": { + "ledger_key_nonce": { + "nonce": 4677765900193036446 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5QXV", + "key": { + "ledger_key_nonce": { + "nonce": 3888397324562915271 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5QXV", + "key": { + "ledger_key_nonce": { + "nonce": 3888397324562915271 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE7Y7F", + "key": { + "ledger_key_nonce": { + "nonce": 5536345977105687142 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE7Y7F", + "key": { + "ledger_key_nonce": { + "nonce": 5536345977105687142 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAPIG", + "key": { + "ledger_key_nonce": { + "nonce": 5670621023751100817 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAPIG", + "key": { + "ledger_key_nonce": { + "nonce": 5670621023751100817 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCHAW", + "key": { + "ledger_key_nonce": { + "nonce": 7542511690552384870 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCHAW", + "key": { + "ledger_key_nonce": { + "nonce": 7542511690552384870 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFE7ZG", + "key": { + "ledger_key_nonce": { + "nonce": 6006104520346379553 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFE7ZG", + "key": { + "ledger_key_nonce": { + "nonce": 6006104520346379553 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFGXRW", + "key": { + "ledger_key_nonce": { + "nonce": 6208800374416201873 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFGXRW", + "key": { + "ledger_key_nonce": { + "nonce": 6208800374416201873 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJOKG", + "key": { + "ledger_key_nonce": { + "nonce": 1060519300191340491 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJOKG", + "key": { + "ledger_key_nonce": { + "nonce": 1060519300191340491 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFLGCW", + "key": { + "ledger_key_nonce": { + "nonce": 8941506213304483187 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFLGCW", + "key": { + "ledger_key_nonce": { + "nonce": 8941506213304483187 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFN63G", + "key": { + "ledger_key_nonce": { + "nonce": 124590656928745377 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFN63G", + "key": { + "ledger_key_nonce": { + "nonce": 124590656928745377 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFPWTW", + "key": { + "ledger_key_nonce": { + "nonce": 8079234564129527112 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFPWTW", + "key": { + "ledger_key_nonce": { + "nonce": 8079234564129527112 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQNMH", + "key": { + "ledger_key_nonce": { + "nonce": 8754220119846337199 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQNMH", + "key": { + "ledger_key_nonce": { + "nonce": 8754220119846337199 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFSFEX", + "key": { + "ledger_key_nonce": { + "nonce": 3312139281147456071 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFSFEX", + "key": { + "ledger_key_nonce": { + "nonce": 3312139281147456071 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFU55H", + "key": { + "ledger_key_nonce": { + "nonce": 2526474023416127439 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFU55H", + "key": { + "ledger_key_nonce": { + "nonce": 2526474023416127439 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFWVVX", + "key": { + "ledger_key_nonce": { + "nonce": 2841415490237507697 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFWVVX", + "key": { + "ledger_key_nonce": { + "nonce": 2841415490237507697 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFZMOH", + "key": { + "ledger_key_nonce": { + "nonce": 5148037999226383026 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFZMOH", + "key": { + "ledger_key_nonce": { + "nonce": 5148037999226383026 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF3EGX", + "key": { + "ledger_key_nonce": { + "nonce": 2733761617737370087 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF3EGX", + "key": { + "ledger_key_nonce": { + "nonce": 2733761617737370087 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF547H", + "key": { + "ledger_key_nonce": { + "nonce": 4553542552662768400 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF547H", + "key": { + "ledger_key_nonce": { + "nonce": 4553542552662768400 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF7UXX", + "key": { + "ledger_key_nonce": { + "nonce": 1242168959743744263 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF7UXX", + "key": { + "ledger_key_nonce": { + "nonce": 1242168959743744263 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGA3RQ", + "key": { + "ledger_key_nonce": { + "nonce": 481950710878307615 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGA3RQ", + "key": { + "ledger_key_nonce": { + "nonce": 481950710878307615 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGCTZA", + "key": { + "ledger_key_nonce": { + "nonce": 767083961780241525 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGCTZA", + "key": { + "ledger_key_nonce": { + "nonce": 767083961780241525 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGELAQ", + "key": { + "ledger_key_nonce": { + "nonce": 6310153727739411520 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGELAQ", + "key": { + "ledger_key_nonce": { + "nonce": 6310153727739411520 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGGDIA", + "key": { + "ledger_key_nonce": { + "nonce": 76060705166808367 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGGDIA", + "key": { + "ledger_key_nonce": { + "nonce": 76060705166808367 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJ2TQ", + "key": { + "ledger_key_nonce": { + "nonce": 394263859078419540 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJ2TQ", + "key": { + "ledger_key_nonce": { + "nonce": 394263859078419540 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGLS3A", + "key": { + "ledger_key_nonce": { + "nonce": 1166692687884080826 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGLS3A", + "key": { + "ledger_key_nonce": { + "nonce": 1166692687884080826 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGNKCQ", + "key": { + "ledger_key_nonce": { + "nonce": 5322562311059672449 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGNKCQ", + "key": { + "ledger_key_nonce": { + "nonce": 5322562311059672449 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGPCKA", + "key": { + "ledger_key_nonce": { + "nonce": 9085653633391546739 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGPCKA", + "key": { + "ledger_key_nonce": { + "nonce": 9085653633391546739 + } + }, + "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/test/submit_bid_rejects_zero_commitment.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_rejects_zero_commitment.1.json new file mode 100644 index 00000000..49de854c --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_rejects_zero_commitment.1.json @@ -0,0 +1,405 @@ +{ + "generators": { + "address": 4, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "symbol": "zero_c" + }, + { + "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": 0 + } + } + }, + { + "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": "zero_c" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "zero_c" + } + ] + }, + "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": 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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "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": "zero_c" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "zero_c" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "zero_c" + } + ] + }, + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_code": { + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "code": "" + } + }, + "ext": "v0" + }, + 4095 + ] + ] + ] + }, + "events": [] +} \ No newline at end of file diff --git a/smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_second_different_commitment_fails.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_second_different_commitment_fails.1.json new file mode 100644 index 00000000..b0b77173 --- /dev/null +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_second_different_commitment_fails.1.json @@ -0,0 +1,620 @@ +{ + "generators": { + "address": 4, + "nonce": 0 + }, + "auth": [ + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "create_auction", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "symbol": "recommit" + }, + { + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "submit_bid", + "args": [ + { + "symbol": "recommit" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "bytes": "c81d1206bec785b4b37fcdd21a7f9f19b39cce7289ee23c2148c63d25591f07e" + }, + { + "i128": { + "hi": 0, + "lo": 500000 + } + }, + { + "u32": 80 + } + ] + } + }, + "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": "recommit" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Auction" + }, + { + "symbol": "recommit" + } + ] + }, + "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": 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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + }, + { + "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": "recommit" + } + } + ] + } + } + }, + "ext": "v0" + }, + 535680 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "recommit" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bid" + }, + { + "symbol": "recommit" + }, + { + "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": "c81d1206bec785b4b37fcdd21a7f9f19b39cce7289ee23c2148c63d25591f07e" + } + }, + { + "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": 80 + } + }, + { + "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": "recommit" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Bidders" + }, + { + "symbol": "recommit" + } + ] + }, + "durability": "persistent", + "val": { + "vec": [ + { + "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": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "key": { + "ledger_key_nonce": { + "nonce": 5541220902715666415 + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + 6311999 + ] + ], + [ + { + "contract_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/test/submit_bid_succeeds.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_succeeds.1.json index 46be7e32..c457abc7 100644 --- a/smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_succeeds.1.json +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_succeeds.1.json @@ -1,13 +1,13 @@ { "generators": { - "address": 3, + "address": 4, "nonce": 0 }, "auth": [ [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", { "function": { "contract_fn": { @@ -15,25 +15,63 @@ "function_name": "create_auction", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, { "symbol": "bid_test" }, { - "u64": 3600 - }, - { - "i128": { - "hi": 0, - "lo": 1000000 - } - }, - { - "i128": { - "hi": 0, - "lo": 500000 - } + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] } ] } @@ -42,9 +80,10 @@ } ] ], + [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", { "function": { "contract_fn": { @@ -55,10 +94,10 @@ "symbol": "bid_test" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { - "bytes": "aa8b10b8096e80d0ba8a53bb6568826dca9fd6393b0ceda38d2184dc4afee99a" + "bytes": "b0b20cc9c2f20fbe96dcbe4e6d715f225845a9a8bd1897436d7d975ca2b13417" }, { "i128": { @@ -77,6 +116,7 @@ ] ], [], + [], [] ], "ledger": { @@ -126,6 +166,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 1 + } + }, { "key": { "symbol": "config" @@ -151,6 +199,17 @@ "u64": 3600 } }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100000000000000000 + } + } + }, { "key": { "symbol": "reserve_price" @@ -161,6 +220,14 @@ "lo": 1000000 } } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } } ] } @@ -178,7 +245,7 @@ "symbol": "creator" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } }, { @@ -205,6 +272,22 @@ "u32": 0 } }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 0 + } + }, { "key": { "symbol": "task_id" @@ -235,7 +318,7 @@ "symbol": "bid_test" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -258,7 +341,7 @@ "symbol": "bid_test" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -270,7 +353,7 @@ "symbol": "bidder" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } }, { @@ -289,7 +372,15 @@ "symbol": "commitment" }, "val": { - "bytes": "aa8b10b8096e80d0ba8a53bb6568826dca9fd6393b0ceda38d2184dc4afee99a" + "bytes": "b0b20cc9c2f20fbe96dcbe4e6d715f225845a9a8bd1897436d7d975ca2b13417" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false } }, { @@ -393,7 +484,7 @@ "val": { "vec": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] } @@ -439,7 +530,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 @@ -454,7 +545,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 @@ -472,7 +563,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 @@ -487,7 +578,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 diff --git a/smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_wrong_bond_fails.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_wrong_bond_fails.1.json index aa2252eb..0c673e17 100644 --- a/smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_wrong_bond_fails.1.json +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/submit_bid_wrong_bond_fails.1.json @@ -1,13 +1,13 @@ { "generators": { - "address": 3, + "address": 4, "nonce": 0 }, "auth": [ [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", { "function": { "contract_fn": { @@ -15,25 +15,63 @@ "function_name": "create_auction", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, { "symbol": "bad_bond" }, { - "u64": 3600 - }, - { - "i128": { - "hi": 0, - "lo": 1000000 - } - }, - { - "i128": { - "hi": 0, - "lo": 500000 - } + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] } ] } @@ -42,6 +80,7 @@ } ] ], + [], [] ], "ledger": { @@ -91,6 +130,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 0 + } + }, { "key": { "symbol": "config" @@ -116,6 +163,17 @@ "u64": 3600 } }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100000000000000000 + } + } + }, { "key": { "symbol": "reserve_price" @@ -126,6 +184,14 @@ "lo": 1000000 } } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } } ] } @@ -143,7 +209,7 @@ "symbol": "creator" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } }, { @@ -170,6 +236,22 @@ "u32": 0 } }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 0 + } + }, { "key": { "symbol": "task_id" @@ -267,7 +349,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 @@ -282,7 +364,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { "nonce": 801925984706572462 diff --git a/smart-contracts/contracts/agent_bidding/test_snapshots/test/winner_selection_price_preference_on_tie.1.json b/smart-contracts/contracts/agent_bidding/test_snapshots/test/winner_selection_price_preference_on_tie.1.json index 76519112..035a96bd 100644 --- a/smart-contracts/contracts/agent_bidding/test_snapshots/test/winner_selection_price_preference_on_tie.1.json +++ b/smart-contracts/contracts/agent_bidding/test_snapshots/test/winner_selection_price_preference_on_tie.1.json @@ -1,13 +1,13 @@ { "generators": { - "address": 4, + "address": 5, "nonce": 0 }, "auth": [ [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", { "function": { "contract_fn": { @@ -15,25 +15,63 @@ "function_name": "create_auction", "args": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, { "symbol": "tie" }, { - "u64": 3600 - }, - { - "i128": { - "hi": 0, - "lo": 1000000 - } - }, - { - "i128": { - "hi": 0, - "lo": 500000 - } + "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": 0 + } + } + }, + { + "key": { + "symbol": "reserve_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000000 + } + } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } + } + ] } ] } @@ -42,9 +80,11 @@ } ] ], + [], + [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", { "function": { "contract_fn": { @@ -55,10 +95,10 @@ "symbol": "tie" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { - "bytes": "ab0b093a460e16f59edee2d2b5672fd7482dd2eec251e4c21c58b688a7248120" + "bytes": "248cef091434191b69bbd0ae0b0eeb76b9090086bdf1d3a610ad3dc6f7541962" }, { "i128": { @@ -78,7 +118,7 @@ ], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", { "function": { "contract_fn": { @@ -89,10 +129,10 @@ "symbol": "tie" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" }, { - "bytes": "728e87f6540e95e485c72d0557edf9e6fae5109636e9084d5f1eecd93e6408ba" + "bytes": "9a8ce8667c011d6c079d94803e78d29bf36e184f83354f4c6c10536c0a9eafee" }, { "i128": { @@ -110,9 +150,10 @@ } ] ], + [], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", { "function": { "contract_fn": { @@ -123,7 +164,7 @@ "symbol": "tie" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { "i128": { @@ -146,7 +187,7 @@ ], [ [ - "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", { "function": { "contract_fn": { @@ -157,7 +198,7 @@ "symbol": "tie" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" }, { "i128": { @@ -178,7 +219,28 @@ } ] ], - [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "reveal_bids", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + }, + { + "symbol": "tie" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], [] ], "ledger": { @@ -228,6 +290,14 @@ "durability": "persistent", "val": { "map": [ + { + "key": { + "symbol": "bid_count" + }, + "val": { + "u32": 2 + } + }, { "key": { "symbol": "config" @@ -253,6 +323,17 @@ "u64": 3600 } }, + { + "key": { + "symbol": "max_price" + }, + "val": { + "i128": { + "hi": 0, + "lo": 100000000000000000 + } + } + }, { "key": { "symbol": "reserve_price" @@ -263,6 +344,14 @@ "lo": 1000000 } } + }, + { + "key": { + "symbol": "reveal_duration_secs" + }, + "val": { + "u64": 3600 + } } ] } @@ -280,7 +369,7 @@ "symbol": "creator" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" } }, { @@ -307,6 +396,22 @@ "u32": 1 } }, + { + "key": { + "symbol": "reveal_deadline" + }, + "val": { + "u64": 7200 + } + }, + { + "key": { + "symbol": "revealed_count" + }, + "val": { + "u32": 2 + } + }, { "key": { "symbol": "task_id" @@ -337,7 +442,7 @@ "symbol": "tie" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -360,7 +465,7 @@ "symbol": "tie" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -372,7 +477,7 @@ "symbol": "bidder" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } }, { @@ -391,7 +496,15 @@ "symbol": "commitment" }, "val": { - "bytes": "ab0b093a460e16f59edee2d2b5672fd7482dd2eec251e4c21c58b688a7248120" + "bytes": "248cef091434191b69bbd0ae0b0eeb76b9090086bdf1d3a610ad3dc6f7541962" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false } }, { @@ -470,7 +583,7 @@ "symbol": "tie" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" } ] }, @@ -493,7 +606,7 @@ "symbol": "tie" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" } ] }, @@ -505,7 +618,7 @@ "symbol": "bidder" }, "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" } }, { @@ -524,7 +637,15 @@ "symbol": "commitment" }, "val": { - "bytes": "728e87f6540e95e485c72d0557edf9e6fae5109636e9084d5f1eecd93e6408ba" + "bytes": "9a8ce8667c011d6c079d94803e78d29bf36e184f83354f4c6c10536c0a9eafee" + } + }, + { + "key": { + "symbol": "forfeited" + }, + "val": { + "bool": false } }, { @@ -628,10 +749,10 @@ "val": { "vec": [ { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" } ] } @@ -678,7 +799,7 @@ }, "durability": "persistent", "val": { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } } }, @@ -725,7 +846,7 @@ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", "key": { "ledger_key_nonce": { - "nonce": 801925984706572462 + "nonce": 4270020994084947596 } }, "durability": "temporary" @@ -740,7 +861,7 @@ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", "key": { "ledger_key_nonce": { - "nonce": 801925984706572462 + "nonce": 4270020994084947596 } }, "durability": "temporary", @@ -758,7 +879,7 @@ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", "key": { "ledger_key_nonce": { - "nonce": 4837995959683129791 + "nonce": 801925984706572462 } }, "durability": "temporary" @@ -771,6 +892,39 @@ "contract_data": { "ext": "v0", "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": 801925984706572462 + } + }, + "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 @@ -788,7 +942,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 @@ -803,7 +957,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", "key": { "ledger_key_nonce": { "nonce": 5541220902715666415 @@ -821,7 +975,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", "key": { "ledger_key_nonce": { "nonce": 1033654523790656264 @@ -836,7 +990,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", "key": { "ledger_key_nonce": { "nonce": 1033654523790656264 @@ -854,7 +1008,7 @@ [ { "contract_data": { - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", "key": { "ledger_key_nonce": { "nonce": 2032731177588607455 @@ -869,7 +1023,7 @@ "data": { "contract_data": { "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM", "key": { "ledger_key_nonce": { "nonce": 2032731177588607455 diff --git a/smart-contracts/contracts/agent_registry/src/events.rs b/smart-contracts/contracts/agent_registry/src/events.rs index 3954088c..1bde2a11 100644 --- a/smart-contracts/contracts/agent_registry/src/events.rs +++ b/smart-contracts/contracts/agent_registry/src/events.rs @@ -32,7 +32,7 @@ //! | `unfreeze_agent` | `unfreeze` | `agent_id` | //! | `update_pricing` | `price_upd` | `(agent_id, new_price)` | -use soroban_sdk::{contracttype, Address, BytesN, Symbol, String}; +use soroban_sdk::{contracttype, Address, BytesN, String, Symbol}; // ─── Legacy structs (kept for ABI compatibility) ────────────────────────────── diff --git a/smart-contracts/contracts/agent_registry/src/lib.rs b/smart-contracts/contracts/agent_registry/src/lib.rs index 31e80a52..cbca3bb3 100644 --- a/smart-contracts/contracts/agent_registry/src/lib.rs +++ b/smart-contracts/contracts/agent_registry/src/lib.rs @@ -42,10 +42,10 @@ mod upgrade_tests; pub use upgrade::*; use events::{ - AdminChangedEvent, AgentDeregisteredEvent, AgentRegisteredEvent, ErrorReportedEvent, - ErrorResolvedEvent, OperationApproved, OperationCancelled, OperationExecuted, - OperationProposed, RegistryInitializedEvent, AnalyticsRecordedEvent, - LeaderboardUpdatedEvent, SlaSetEvent, SlaViolationDetectedEvent, SlaBonusAwardedEvent, + AdminChangedEvent, AgentDeregisteredEvent, AgentRegisteredEvent, AnalyticsRecordedEvent, + ErrorReportedEvent, ErrorResolvedEvent, LeaderboardUpdatedEvent, OperationApproved, + OperationCancelled, OperationExecuted, OperationProposed, RegistryInitializedEvent, + SlaBonusAwardedEvent, SlaSetEvent, SlaViolationDetectedEvent, }; use soroban_sdk::{ contract, contractimpl, contracttype, symbol_short, Address, BytesN, Env, Map, String, Symbol, @@ -1916,19 +1916,19 @@ impl AgentRegistryContract { earnings: i128, ) -> Result<(), Error> { let key = DataKey::AgentAnalytics(agent_id.clone()); - let mut analytics: AgentAnalytics = env - .storage() - .persistent() - .get(&key) - .unwrap_or(AgentAnalytics { - agent_id: agent_id.clone(), - total_tasks: 0, - successful_tasks: 0, - failed_tasks: 0, - total_earnings: 0, - avg_response_time: 0, - last_updated: env.ledger().sequence() as u64, - }); + let mut analytics: AgentAnalytics = + env.storage() + .persistent() + .get(&key) + .unwrap_or(AgentAnalytics { + agent_id: agent_id.clone(), + total_tasks: 0, + successful_tasks: 0, + failed_tasks: 0, + total_earnings: 0, + avg_response_time: 0, + last_updated: env.ledger().sequence() as u64, + }); let old_total = analytics.total_tasks; analytics.total_tasks += 1; @@ -1979,15 +1979,18 @@ impl AgentRegistryContract { /// Get aggregated analytics for an agent. pub fn get_analytics(env: Env, agent_id: Symbol) -> AgentAnalytics { let key = DataKey::AgentAnalytics(agent_id.clone()); - env.storage().persistent().get(&key).unwrap_or(AgentAnalytics { - agent_id, - total_tasks: 0, - successful_tasks: 0, - failed_tasks: 0, - total_earnings: 0, - avg_response_time: 0, - last_updated: 0, - }) + env.storage() + .persistent() + .get(&key) + .unwrap_or(AgentAnalytics { + agent_id, + total_tasks: 0, + successful_tasks: 0, + failed_tasks: 0, + total_earnings: 0, + avg_response_time: 0, + last_updated: 0, + }) } /// Get top N agents by a configurable metric. @@ -2035,8 +2038,7 @@ impl AgentRegistryContract { let mut j = i + 1; let mut max_idx = i; while j < entries.len() { - if entries.get(j).unwrap().metric_value - > entries.get(max_idx).unwrap().metric_value + if entries.get(j).unwrap().metric_value > entries.get(max_idx).unwrap().metric_value { max_idx = j; } diff --git a/smart-contracts/contracts/agent_registry/src/test.rs b/smart-contracts/contracts/agent_registry/src/test.rs index f40465b6..9d3189b1 100644 --- a/smart-contracts/contracts/agent_registry/src/test.rs +++ b/smart-contracts/contracts/agent_registry/src/test.rs @@ -1722,9 +1722,15 @@ fn get_leaderboard_by_total_tasks() { let leaderboard = client.get_leaderboard(&metric, &3); assert_eq!(leaderboard.len(), 3); - assert_eq!(leaderboard.get(0).unwrap().agent_id, Symbol::new(&env, "a3")); + assert_eq!( + leaderboard.get(0).unwrap().agent_id, + Symbol::new(&env, "a3") + ); assert_eq!(leaderboard.get(0).unwrap().metric_value, 3); - assert_eq!(leaderboard.get(1).unwrap().agent_id, Symbol::new(&env, "a1")); + assert_eq!( + leaderboard.get(1).unwrap().agent_id, + Symbol::new(&env, "a1") + ); assert_eq!(leaderboard.get(1).unwrap().metric_value, 2); } @@ -1752,12 +1758,7 @@ fn set_sla_success() { let owner = Address::generate(&env); client.register_agent(&make_record(&env, "sla_agent", "research", owner)); - client.set_sla( - &Symbol::new(&env, "sla_agent"), - &200, - &95, - &80, - ); + client.set_sla(&Symbol::new(&env, "sla_agent"), &200, &95, &80); let sla = client.get_sla_status(&Symbol::new(&env, "sla_agent")); assert!(sla.is_some()); @@ -1832,7 +1833,9 @@ fn check_sla_compliance_pass() { ); assert!(compliant); - let sla = client.get_sla_status(&Symbol::new(&env, "sla_agent")).unwrap(); + let sla = client + .get_sla_status(&Symbol::new(&env, "sla_agent")) + .unwrap(); assert_eq!(sla.0.total_checks, 1); assert_eq!(sla.0.violations, 0); assert_eq!(sla.1, 100); @@ -1854,7 +1857,9 @@ fn check_sla_compliance_violation() { ); assert!(!compliant); - let sla = client.get_sla_status(&Symbol::new(&env, "sla_agent")).unwrap(); + let sla = client + .get_sla_status(&Symbol::new(&env, "sla_agent")) + .unwrap(); assert_eq!(sla.0.violations, 1); assert_eq!(sla.1, 0); // 0% compliance with 1 check and 1 violation } @@ -1869,8 +1874,8 @@ fn check_sla_compliance_uptime_violation() { let compliant = client.check_sla_compliance( &Symbol::new(&env, "sla_agent"), - &100, // ok - &80, // uptime < 95 - violation! + &100, // ok + &80, // uptime < 95 - violation! &90, ); assert!(!compliant); @@ -1923,15 +1928,12 @@ fn sla_bonus_awarded_after_consistent_compliance() { // Record 10 compliant checks for _ in 0..10 { - client.check_sla_compliance( - &Symbol::new(&env, "sla_agent"), - &100, - &99, - &95, - ); + client.check_sla_compliance(&Symbol::new(&env, "sla_agent"), &100, &99, &95); } - let sla = client.get_sla_status(&Symbol::new(&env, "sla_agent")).unwrap(); + let sla = client + .get_sla_status(&Symbol::new(&env, "sla_agent")) + .unwrap(); assert_eq!(sla.0.total_checks, 10); assert_eq!(sla.0.violations, 0); assert_eq!(sla.1, 100); // 100% compliance @@ -2018,25 +2020,46 @@ fn test_get_agents_cursor_pagination() { assert_eq!(page1.agents.len(), 3); assert_eq!(page1.total_count, 7); assert_eq!(page1.next_cursor, Some(3)); - assert_eq!(page1.agents.get(0).unwrap().id, Symbol::new(&env, "agent_1")); - assert_eq!(page1.agents.get(1).unwrap().id, Symbol::new(&env, "agent_2")); - assert_eq!(page1.agents.get(2).unwrap().id, Symbol::new(&env, "agent_3")); + assert_eq!( + page1.agents.get(0).unwrap().id, + Symbol::new(&env, "agent_1") + ); + assert_eq!( + page1.agents.get(1).unwrap().id, + Symbol::new(&env, "agent_2") + ); + assert_eq!( + page1.agents.get(2).unwrap().id, + Symbol::new(&env, "agent_3") + ); // Page 2: cursor 3, limit 3 let page2 = client.get_agents(&page1.next_cursor, &Some(3)); assert_eq!(page2.agents.len(), 3); assert_eq!(page2.total_count, 7); assert_eq!(page2.next_cursor, Some(6)); - assert_eq!(page2.agents.get(0).unwrap().id, Symbol::new(&env, "agent_4")); - assert_eq!(page2.agents.get(1).unwrap().id, Symbol::new(&env, "agent_5")); - assert_eq!(page2.agents.get(2).unwrap().id, Symbol::new(&env, "agent_6")); + assert_eq!( + page2.agents.get(0).unwrap().id, + Symbol::new(&env, "agent_4") + ); + assert_eq!( + page2.agents.get(1).unwrap().id, + Symbol::new(&env, "agent_5") + ); + assert_eq!( + page2.agents.get(2).unwrap().id, + Symbol::new(&env, "agent_6") + ); // Page 3: cursor 6, limit 3 -> last remaining agent let page3 = client.get_agents(&page2.next_cursor, &Some(3)); assert_eq!(page3.agents.len(), 1); assert_eq!(page3.total_count, 7); assert_eq!(page3.next_cursor, None); - assert_eq!(page3.agents.get(0).unwrap().id, Symbol::new(&env, "agent_7")); + assert_eq!( + page3.agents.get(0).unwrap().id, + Symbol::new(&env, "agent_7") + ); } #[test] @@ -2085,4 +2108,3 @@ fn test_get_agents_batch_registered_pagination() { assert_eq!(page2.next_cursor, None); assert_eq!(page2.total_count, 4); } - diff --git a/smart-contracts/contracts/agent_registry/src/upgrade.rs b/smart-contracts/contracts/agent_registry/src/upgrade.rs index a92a5e4f..1e2d0e84 100644 --- a/smart-contracts/contracts/agent_registry/src/upgrade.rs +++ b/smart-contracts/contracts/agent_registry/src/upgrade.rs @@ -5,16 +5,14 @@ //! Extends the agent_registry contract with upgrade functionality using the upgrade manager. //! This module provides the implementation of the Upgradeable trait for the agent registry. -use soroban_sdk::{ - contractimpl, symbol_short, Address, BytesN, Env, String, Vec, -}; +use soroban_sdk::{contractimpl, symbol_short, Address, BytesN, Env, String, Vec}; use upgrade_manager::{ - Upgradeable, UpgradeableError, MigrationMetadata, VersionCompatibility, UpgradeStatus, - version_utils, events::*, + events::*, version_utils, MigrationMetadata, UpgradeStatus, Upgradeable, UpgradeableError, + VersionCompatibility, }; -use crate::{AgentRegistryContract, DataKey, Error, require_admin, events}; +use crate::{events, require_admin, AgentRegistryContract, DataKey, Error}; /// Current version of the agent registry contract const CURRENT_VERSION: &str = "1.0.0"; @@ -53,16 +51,20 @@ impl Upgradeable for AgentRegistryContract { fn get_upgrade_manager(env: Env) -> Option
{ env.storage() .instance() - .get(&DataKey::Agent(soroban_sdk::Symbol::new(&env, "upgrade_mgr"))) + .get(&DataKey::Agent(soroban_sdk::Symbol::new( + &env, + "upgrade_mgr", + ))) } fn set_upgrade_manager(env: Env, upgrade_manager: Address) -> Result<(), UpgradeableError> { // Only admin can set upgrade manager require_admin(&env).map_err(|_| UpgradeableError::Unauthorized)?; - - env.storage() - .instance() - .set(&DataKey::Agent(soroban_sdk::Symbol::new(&env, "upgrade_mgr")), &upgrade_manager); + + env.storage().instance().set( + &DataKey::Agent(soroban_sdk::Symbol::new(&env, "upgrade_mgr")), + &upgrade_manager, + ); env.events().publish( (symbol_short!("upgrade"), symbol_short!("mgr_set")), @@ -86,7 +88,7 @@ impl Upgradeable for AgentRegistryContract { // Check version compatibility let current = Self::get_version(env.clone()); let compatibility = version_utils::check_compatibility(&env, current, new_version.clone())?; - + if !compatibility.is_compatible { results.push_back(String::from_str(&env, "Version incompatible")); return Err(UpgradeableError::IncompatibleVersion); @@ -106,7 +108,10 @@ impl Upgradeable for AgentRegistryContract { // Check contract not paused if crate::AgentRegistryContract::is_paused(env.clone()) { - results.push_back(String::from_str(&env, "Contract must be unpaused for upgrade")); + results.push_back(String::from_str( + &env, + "Contract must be unpaused for upgrade", + )); return Err(UpgradeableError::PreUpgradeHookFailed); } @@ -149,17 +154,16 @@ impl Upgradeable for AgentRegistryContract { migration_results.push_back(validation_result); // Update contract version - env.storage() - .instance() - .set(&DataKey::Agent(soroban_sdk::Symbol::new(&env, "version")), &new_version); + env.storage().instance().set( + &DataKey::Agent(soroban_sdk::Symbol::new(&env, "version")), + &new_version, + ); // Record upgrade timestamp - env.storage() - .instance() - .set( - &DataKey::Agent(soroban_sdk::Symbol::new(&env, "last_upgrade")), - &env.ledger().sequence(), - ); + env.storage().instance().set( + &DataKey::Agent(soroban_sdk::Symbol::new(&env, "last_upgrade")), + &env.ledger().sequence(), + ); env.events().publish( (symbol_short!("upgrade"), symbol_short!("post_hook")), @@ -180,7 +184,7 @@ impl Upgradeable for AgentRegistryContract { target_version: String, ) -> Result { let current_version = Self::get_version(env.clone()); - + // Check compatibility first let compatibility = version_utils::check_compatibility( &env, @@ -228,8 +232,8 @@ impl Upgradeable for AgentRegistryContract { // Only admin can initiate upgrade require_admin(&env).map_err(|_| UpgradeableError::Unauthorized)?; - let upgrade_manager = Self::get_upgrade_manager(env.clone()) - .ok_or(UpgradeableError::NoUpgradeManager)?; + let upgrade_manager = + Self::get_upgrade_manager(env.clone()).ok_or(UpgradeableError::NoUpgradeManager)?; // Get migration plan let migration_plan = Self::get_migration_plan(env.clone(), new_version.clone())?; @@ -267,11 +271,14 @@ impl AgentRegistryContract { /// Get current upgrade status pub fn get_upgrade_status(env: Env) -> UpgradeStatus { let current_version = ::get_version(env.clone()); - + let last_upgrade_ledger = env .storage() .instance() - .get(&DataKey::Agent(soroban_sdk::Symbol::new(&env, "last_upgrade"))) + .get(&DataKey::Agent(soroban_sdk::Symbol::new( + &env, + "last_upgrade", + ))) .unwrap_or(0u32); // Check if rollback is available (within 48h window) @@ -310,8 +317,12 @@ impl AgentRegistryContract { // Execute post-upgrade hook let old_version = String::from_str(&env, CURRENT_VERSION); - ::post_upgrade_hook(env.clone(), old_version.clone(), new_version.clone()) - .map_err(|_| Error::NotAdmin)?; + ::post_upgrade_hook( + env.clone(), + old_version.clone(), + new_version.clone(), + ) + .map_err(|_| Error::NotAdmin)?; // Emit upgrade event env.events().publish( @@ -334,7 +345,7 @@ impl AgentRegistryContract { target_version: String, ) -> Result { let current_version = ::get_version(env.clone()); - + version_utils::check_compatibility(&env, current_version, target_version) .map_err(|_| Error::InvalidRecord) } @@ -353,17 +364,22 @@ impl AgentRegistryContract { } // Perform the rollback - env.deployer().update_current_contract_wasm(rollback_wasm_hash); + env.deployer() + .update_current_contract_wasm(rollback_wasm_hash); // Update version info - env.storage() - .instance() - .set(&DataKey::Agent(soroban_sdk::Symbol::new(&env, "version")), &rollback_version); + env.storage().instance().set( + &DataKey::Agent(soroban_sdk::Symbol::new(&env, "version")), + &rollback_version, + ); // Clear rollback availability env.storage() .instance() - .remove(&DataKey::Agent(soroban_sdk::Symbol::new(&env, "last_upgrade"))); + .remove(&DataKey::Agent(soroban_sdk::Symbol::new( + &env, + "last_upgrade", + ))); env.events().publish( (symbol_short!("registry"), symbol_short!("rollback")), @@ -387,10 +403,13 @@ fn validate_data_integrity(env: &Env) -> Result { Ok(String::from_str(env, "Data integrity validated")) } -fn validate_storage_compatibility(env: &Env, new_version: &String) -> Result { +fn validate_storage_compatibility( + env: &Env, + new_version: &String, +) -> Result { // Check if new version can read existing storage format let version_str = new_version.to_string(); - + // Simple compatibility check based on version if version_str.starts_with("1.") { Ok(String::from_str(env, "Storage format compatible")) @@ -408,15 +427,13 @@ fn validate_admin_access(env: &Env) -> Result { fn execute_migration_step(env: &Env, step: &String) -> Result { let step_str = step.to_string(); - + match step_str.as_str() { "backup_existing_data" => { // In practice, this would create a backup Ok(String::from_str(env, "Data backup completed")) } - "validate_data_integrity" => { - validate_data_integrity(env) - } + "validate_data_integrity" => validate_data_integrity(env), "migrate_storage_format" => { // Migrate storage keys and data format Ok(String::from_str(env, "Storage format migrated")) @@ -445,9 +462,10 @@ fn execute_migration_step(env: &Env, step: &String) -> Result { - Ok(String::from_str(env, &format!("Unknown migration step: {}", step_str))) - } + _ => Ok(String::from_str( + env, + &format!("Unknown migration step: {}", step_str), + )), } } @@ -460,7 +478,7 @@ fn validate_post_migration_state(env: &Env) -> Result fn estimate_data_items(env: &Env) -> u32 { // Estimate the number of data items that need to be migrated // This is a simplified estimation - in practice would count actual records - + // Placeholder estimation based on contract usage 100 // Assuming ~100 agent records on average -} \ No newline at end of file +} diff --git a/smart-contracts/contracts/agent_registry/src/upgrade_tests.rs b/smart-contracts/contracts/agent_registry/src/upgrade_tests.rs index d4a56300..955a51ca 100644 --- a/smart-contracts/contracts/agent_registry/src/upgrade_tests.rs +++ b/smart-contracts/contracts/agent_registry/src/upgrade_tests.rs @@ -6,7 +6,7 @@ mod upgrade_tests { Address, BytesN, Env, String, }; use upgrade_manager::{ - Upgradeable, UpgradeableError, MigrationMetadata, VersionCompatibility, UpgradeStatus, + MigrationMetadata, UpgradeStatus, Upgradeable, UpgradeableError, VersionCompatibility, }; fn setup_upgrade_test() -> (Env, AgentRegistryContractClient<'static>, Address) { @@ -42,12 +42,12 @@ mod upgrade_tests { fn test_set_upgrade_manager() { let (env, client, _admin) = setup_upgrade_test(); let upgrade_manager = Address::generate(&env); - + let result = client.set_upgrade_manager(&upgrade_manager); assert!(result.is_ok()); - + assert_eq!(client.get_upgrade_manager(), Some(upgrade_manager)); - + // Check event was emitted let events = env.events().all(); assert!(events.len() > 0); @@ -60,16 +60,16 @@ mod upgrade_tests { let contract_id = env.register(AgentRegistryContract, ()); let client = AgentRegistryContractClient::new(&env, &contract_id); let admin = Address::generate(&env); - + env.mock_all_auths(); client.initialize(&admin); - + // Remove authorization env.mock_auths(&[]); - + let upgrade_manager = Address::generate(&env); let result = client.try_set_upgrade_manager(&upgrade_manager); - + assert!(result.is_err()); } @@ -78,28 +78,30 @@ mod upgrade_tests { let (env, client, _admin) = setup_upgrade_test(); let new_version = String::from_str(&env, "1.1.0"); let new_hash = test_wasm_hash(&env, 2); - + let result = client.pre_upgrade_hook(&new_version, &new_hash); assert!(result.is_ok()); - + let validation_results = result.unwrap(); assert!(validation_results.len() > 0); - + // Check that validation passed - let last_result = validation_results.get(validation_results.len() - 1).unwrap(); + let last_result = validation_results + .get(validation_results.len() - 1) + .unwrap(); assert!(last_result.to_string().contains("successful")); } #[test] fn test_pre_upgrade_hook_paused_contract() { let (env, client, _admin) = setup_upgrade_test(); - + // Pause the contract client.pause(); - + let new_version = String::from_str(&env, "1.1.0"); let new_hash = test_wasm_hash(&env, 2); - + let result = client.try_pre_upgrade_hook(&new_version, &new_hash); assert_eq!(result, Err(Ok(UpgradeableError::PreUpgradeHookFailed))); } @@ -107,11 +109,11 @@ mod upgrade_tests { #[test] fn test_pre_upgrade_hook_incompatible_version() { let (env, client, _admin) = setup_upgrade_test(); - + // Try to downgrade to older version let old_version = String::from_str(&env, "0.9.0"); let new_hash = test_wasm_hash(&env, 0); - + let result = client.try_pre_upgrade_hook(&old_version, &new_hash); assert_eq!(result, Err(Ok(UpgradeableError::IncompatibleVersion))); } @@ -121,13 +123,13 @@ mod upgrade_tests { let (env, client, _admin) = setup_upgrade_test(); let old_version = String::from_str(&env, "1.0.0"); let new_version = String::from_str(&env, "1.1.0"); - + let result = client.post_upgrade_hook(&old_version, &new_version); assert!(result.is_ok()); - + // Check that version was updated in storage // In a real test, we'd verify the storage was actually updated - + // Check event was emitted let events = env.events().all(); assert!(events.len() > 0); @@ -137,10 +139,10 @@ mod upgrade_tests { fn test_get_migration_plan() { let (env, client, _admin) = setup_upgrade_test(); let target_version = String::from_str(&env, "2.0.0"); - + let result = client.get_migration_plan(&target_version); assert!(result.is_ok()); - + let migration_plan = result.unwrap(); assert_eq!(migration_plan.from_version, String::from_str(&env, "1.0.0")); assert_eq!(migration_plan.to_version, target_version); @@ -152,10 +154,10 @@ mod upgrade_tests { fn test_get_migration_plan_breaking_change() { let (env, client, _admin) = setup_upgrade_test(); let target_version = String::from_str(&env, "3.0.0"); // Major version change - + let result = client.get_migration_plan(&target_version); assert!(result.is_ok()); - + let migration_plan = result.unwrap(); // Major version changes should be marked as breaking // In a more sophisticated implementation, this would be true @@ -166,11 +168,11 @@ mod upgrade_tests { #[test] fn test_initiate_upgrade_no_manager() { let (env, client, _admin) = setup_upgrade_test(); - + let new_version = String::from_str(&env, "1.1.0"); let new_hash = test_wasm_hash(&env, 2); let description = String::from_str(&env, "Minor upgrade"); - + let result = client.try_initiate_upgrade(&new_version, &new_hash, &description); assert_eq!(result, Err(Ok(UpgradeableError::NoUpgradeManager))); } @@ -178,18 +180,18 @@ mod upgrade_tests { #[test] fn test_initiate_upgrade_with_manager() { let (env, client, _admin) = setup_upgrade_test(); - + // Set upgrade manager let upgrade_manager = Address::generate(&env); client.set_upgrade_manager(&upgrade_manager); - + let new_version = String::from_str(&env, "1.1.0"); let new_hash = test_wasm_hash(&env, 2); let description = String::from_str(&env, "Minor upgrade"); - + let result = client.initiate_upgrade(&new_version, &new_hash, &description); assert!(result.is_ok()); - + // Check event was emitted let events = env.events().all(); assert!(events.len() > 0); @@ -198,18 +200,18 @@ mod upgrade_tests { #[test] fn test_upgrade_contract_success() { let (env, client, _admin) = setup_upgrade_test(); - + let new_hash = test_wasm_hash(&env, 2); let new_version = String::from_str(&env, "1.1.0"); let description = String::from_str(&env, "Test upgrade"); - + let result = client.upgrade_contract(&new_hash, &new_version, &description); assert!(result.is_ok()); - + // Check upgrade event was emitted let events = env.events().all(); assert!(events.len() > 0); - + // Verify upgrade status let status = client.get_upgrade_status(); assert!(status.last_upgrade_ledger > 0); @@ -222,17 +224,17 @@ mod upgrade_tests { let contract_id = env.register(AgentRegistryContract, ()); let client = AgentRegistryContractClient::new(&env, &contract_id); let admin = Address::generate(&env); - + env.mock_all_auths(); client.initialize(&admin); - + // Remove authorization env.mock_auths(&[]); - + let new_hash = test_wasm_hash(&env, 2); let new_version = String::from_str(&env, "1.1.0"); let description = String::from_str(&env, "Unauthorized upgrade"); - + let result = client.try_upgrade_contract(&new_hash, &new_version, &description); assert!(result.is_err()); } @@ -240,22 +242,25 @@ mod upgrade_tests { #[test] fn test_check_upgrade_compatibility() { let (env, client, _admin) = setup_upgrade_test(); - + // Test compatible upgrade let compatible_version = String::from_str(&env, "1.1.0"); let result = client.check_upgrade_compatibility(&compatible_version); assert!(result.is_ok()); - + let compatibility = result.unwrap(); - assert_eq!(compatibility.current_version, String::from_str(&env, "1.0.0")); + assert_eq!( + compatibility.current_version, + String::from_str(&env, "1.0.0") + ); assert_eq!(compatibility.target_version, compatible_version); assert!(compatibility.is_compatible); - + // Test incompatible downgrade let incompatible_version = String::from_str(&env, "0.9.0"); let result = client.check_upgrade_compatibility(&incompatible_version); assert!(result.is_ok()); - + let compatibility = result.unwrap(); assert!(!compatibility.is_compatible); assert!(compatibility.compatibility_issues.len() > 0); @@ -264,7 +269,7 @@ mod upgrade_tests { #[test] fn test_get_upgrade_status() { let (env, client, _admin) = setup_upgrade_test(); - + let status = client.get_upgrade_status(); assert_eq!(status.current_version, String::from_str(&env, "1.0.0")); assert_eq!(status.last_upgrade_ledger, 0); @@ -275,29 +280,29 @@ mod upgrade_tests { #[test] fn test_emergency_rollback_success() { let (env, client, _admin) = setup_upgrade_test(); - + // First perform an upgrade let new_hash = test_wasm_hash(&env, 2); let new_version = String::from_str(&env, "1.1.0"); let description = String::from_str(&env, "Test upgrade for rollback"); - + client.upgrade_contract(&new_hash, &new_version, &description); - + // Verify rollback is available let status = client.get_upgrade_status(); assert!(status.rollback_available); - + // Perform rollback let original_hash = test_wasm_hash(&env, 1); let original_version = String::from_str(&env, "1.0.0"); - + let result = client.emergency_rollback(&original_hash, &original_version); assert!(result.is_ok()); - + // Check rollback event was emitted let events = env.events().all(); assert!(events.len() > 0); - + // Verify rollback is no longer available let status = client.get_upgrade_status(); assert!(!status.rollback_available); @@ -306,11 +311,11 @@ mod upgrade_tests { #[test] fn test_emergency_rollback_no_rollback_available() { let (env, client, _admin) = setup_upgrade_test(); - + // Try to rollback without any previous upgrade let hash = test_wasm_hash(&env, 1); let version = String::from_str(&env, "1.0.0"); - + let result = client.try_emergency_rollback(&hash, &version); assert!(result.is_err()); } @@ -318,22 +323,23 @@ mod upgrade_tests { #[test] fn test_emergency_rollback_after_deadline() { let (env, client, _admin) = setup_upgrade_test(); - + // Perform upgrade let new_hash = test_wasm_hash(&env, 2); let new_version = String::from_str(&env, "1.1.0"); let description = String::from_str(&env, "Test upgrade"); - + client.upgrade_contract(&new_hash, &new_version, &description); - + // Advance ledger beyond rollback window let current_seq = env.ledger().sequence(); - env.ledger().set_sequence_number(current_seq + upgrade_manager::ROLLBACK_WINDOW_LEDGERS + 1); - + env.ledger() + .set_sequence_number(current_seq + upgrade_manager::ROLLBACK_WINDOW_LEDGERS + 1); + // Try to rollback - should fail let original_hash = test_wasm_hash(&env, 1); let original_version = String::from_str(&env, "1.0.0"); - + let result = client.try_emergency_rollback(&original_hash, &original_version); assert!(result.is_err()); } @@ -341,29 +347,29 @@ mod upgrade_tests { #[test] fn test_rollback_window_calculation() { let (env, client, _admin) = setup_upgrade_test(); - + // Perform upgrade let new_hash = test_wasm_hash(&env, 2); let new_version = String::from_str(&env, "1.1.0"); let description = String::from_str(&env, "Test upgrade"); - + let upgrade_ledger = env.ledger().sequence(); client.upgrade_contract(&new_hash, &new_version, &description); - + let status = client.get_upgrade_status(); let expected_deadline = upgrade_ledger + upgrade_manager::ROLLBACK_WINDOW_LEDGERS; assert_eq!(status.rollback_deadline, expected_deadline); - + // Test rollback availability within window let mid_window = upgrade_ledger + (upgrade_manager::ROLLBACK_WINDOW_LEDGERS / 2); env.ledger().set_sequence_number(mid_window); - + let status = client.get_upgrade_status(); assert!(status.rollback_available); - + // Test rollback unavailability after window env.ledger().set_sequence_number(expected_deadline + 1); - + let status = client.get_upgrade_status(); assert!(!status.rollback_available); } @@ -371,25 +377,34 @@ mod upgrade_tests { #[test] fn test_multiple_upgrades() { let (env, client, _admin) = setup_upgrade_test(); - + // First upgrade: 1.0.0 -> 1.1.0 let hash_v1_1 = test_wasm_hash(&env, 2); let version_v1_1 = String::from_str(&env, "1.1.0"); - client.upgrade_contract(&hash_v1_1, &version_v1_1, &String::from_str(&env, "First upgrade")); - + client.upgrade_contract( + &hash_v1_1, + &version_v1_1, + &String::from_str(&env, "First upgrade"), + ); + let status = client.get_upgrade_status(); assert_eq!(status.current_version, version_v1_1); assert!(status.rollback_available); - + // Advance time to expire first rollback window let current_seq = env.ledger().sequence(); - env.ledger().set_sequence_number(current_seq + upgrade_manager::ROLLBACK_WINDOW_LEDGERS + 1); - + env.ledger() + .set_sequence_number(current_seq + upgrade_manager::ROLLBACK_WINDOW_LEDGERS + 1); + // Second upgrade: 1.1.0 -> 1.2.0 let hash_v1_2 = test_wasm_hash(&env, 3); let version_v1_2 = String::from_str(&env, "1.2.0"); - client.upgrade_contract(&hash_v1_2, &version_v1_2, &String::from_str(&env, "Second upgrade")); - + client.upgrade_contract( + &hash_v1_2, + &version_v1_2, + &String::from_str(&env, "Second upgrade"), + ); + let status = client.get_upgrade_status(); assert_eq!(status.current_version, version_v1_2); assert!(status.rollback_available); // New rollback window should be available @@ -398,46 +413,45 @@ mod upgrade_tests { #[test] fn test_upgrade_events() { let (env, client, admin) = setup_upgrade_test(); - + let new_hash = test_wasm_hash(&env, 2); let new_version = String::from_str(&env, "1.1.0"); let description = String::from_str(&env, "Event test upgrade"); - + client.upgrade_contract(&new_hash, &new_version, &description); - + let events = env.events().all(); - + // Should have at least the upgrade event assert!(events.len() > 0); - + // In a real implementation, we would check for specific event types: // - ContractUpgradedEvent with correct data // - PreUpgradeHookEvent // - PostUpgradeHookEvent - + // For now, just verify events were emitted - let upgrade_events: Vec<_> = events.iter() + let upgrade_events: Vec<_> = events + .iter() .filter(|(_, topics, _)| { - topics.len() >= 2 && - topics.get(0).is_some() && - topics.get(1).is_some() + topics.len() >= 2 && topics.get(0).is_some() && topics.get(1).is_some() }) .collect(); - + assert!(upgrade_events.len() > 0); } #[test] fn test_gas_estimation_integration() { let (env, client, _admin) = setup_upgrade_test(); - + // Create a migration plan let target_version = String::from_str(&env, "2.0.0"); let migration_plan = client.get_migration_plan(&target_version).unwrap(); - + // Verify gas estimation is reasonable assert!(migration_plan.estimated_data_items > 0); - + // In a real implementation, we could test: // - Gas estimation accuracy // - Gas budget validation @@ -447,18 +461,18 @@ mod upgrade_tests { #[test] fn test_version_compatibility_edge_cases() { let (env, client, _admin) = setup_upgrade_test(); - + // Test same version let same_version = String::from_str(&env, "1.0.0"); let result = client.check_upgrade_compatibility(&same_version); // Should handle same version gracefully - + // Test malformed version let bad_version = String::from_str(&env, "not.a.version"); let result = client.try_check_upgrade_compatibility(&bad_version); // Should return error for malformed version assert!(result.is_err()); - + // Test very large version jump let future_version = String::from_str(&env, "99.0.0"); let result = client.check_upgrade_compatibility(&future_version); @@ -474,11 +488,11 @@ mod upgrade_tests { #[cfg(test)] mod upgrade_integration_tests { use super::*; - use upgrade_manager::{UpgradeManager, UpgradeManagerClient, MigrationPlan}; use soroban_sdk::{ testutils::{Address as _, Ledger as _}, Address, BytesN, Env, String, Vec, }; + use upgrade_manager::{MigrationPlan, UpgradeManager, UpgradeManagerClient}; fn setup_integration_test() -> ( Env, @@ -488,40 +502,36 @@ mod upgrade_integration_tests { ) { let env = Env::default(); env.mock_all_auths(); - + // Deploy both contracts let registry_id = env.register(AgentRegistryContract, ()); let registry_client = AgentRegistryContractClient::new(&env, ®istry_id); - + let upgrade_mgr_id = env.register(UpgradeManager, ()); let upgrade_client = UpgradeManagerClient::new(&env, &upgrade_mgr_id); - + let admin = Address::generate(&env); - + // Initialize both contracts registry_client.initialize(&admin); - + let initial_hash = BytesN::from_array(&env, &[1u8; 32]); - upgrade_client.initialize( - &admin, - &String::from_str(&env, "1.0.0"), - &initial_hash, - ); - + upgrade_client.initialize(&admin, &String::from_str(&env, "1.0.0"), &initial_hash); + // Connect registry to upgrade manager registry_client.set_upgrade_manager(&upgrade_mgr_id); - + (env, registry_client, upgrade_client, admin) } #[test] fn test_full_upgrade_flow_integration() { let (env, registry, upgrade_mgr, _admin) = setup_integration_test(); - + let new_version = String::from_str(&env, "1.1.0"); let new_hash = BytesN::from_array(&env, &[2u8; 32]); let description = String::from_str(&env, "Integration test upgrade"); - + // Create migration plan let migration_plan = MigrationPlan { pre_migration_checks: { @@ -541,46 +551,45 @@ mod upgrade_integration_tests { }, estimated_items: 50, }; - + // Test the full upgrade flow through upgrade manager - let result = upgrade_mgr.propose_upgrade( - &new_version, - &new_hash, - &description, - &migration_plan, - ); + let result = + upgrade_mgr.propose_upgrade(&new_version, &new_hash, &description, &migration_plan); assert!(result.is_ok()); - + // Validate proposal let gas_estimate = upgrade_mgr.validate_proposal(); assert!(gas_estimate.is_ok()); assert!(gas_estimate.unwrap() > 0); - + // Execute upgrade let result = upgrade_mgr.execute_upgrade(); assert!(result.is_ok()); - + // Verify upgrade was applied let current_version = upgrade_mgr.get_current_version(); assert!(current_version.is_some()); assert_eq!(current_version.unwrap().version, new_version); - + // Test rollback capability assert!(upgrade_mgr.can_rollback()); - + let result = upgrade_mgr.rollback_upgrade(); assert!(result.is_ok()); - + // Verify rollback worked let restored_version = upgrade_mgr.get_current_version(); assert!(restored_version.is_some()); - assert_eq!(restored_version.unwrap().version, String::from_str(&env, "1.0.0")); + assert_eq!( + restored_version.unwrap().version, + String::from_str(&env, "1.0.0") + ); } #[test] fn test_upgrade_manager_gas_estimation() { let (env, _registry, upgrade_mgr, _admin) = setup_integration_test(); - + let migration_plan = MigrationPlan { pre_migration_checks: Vec::new(&env), data_transformations: { @@ -592,34 +601,34 @@ mod upgrade_integration_tests { post_migration_validations: Vec::new(&env), estimated_items: 100, }; - + let gas_estimate = upgrade_mgr.estimate_migration_gas(&migration_plan); - + // Should include base cost + per-item cost + step overhead - let expected_minimum = upgrade_manager::GAS_UPGRADE_BASE + - (upgrade_manager::GAS_MIGRATION_PER_ITEM * 100) + - (2 * 5000); // 2 transformation steps - + let expected_minimum = upgrade_manager::GAS_UPGRADE_BASE + + (upgrade_manager::GAS_MIGRATION_PER_ITEM * 100) + + (2 * 5000); // 2 transformation steps + assert!(gas_estimate >= expected_minimum); } #[test] fn test_cross_contract_upgrade_coordination() { let (env, registry, upgrade_mgr, _admin) = setup_integration_test(); - + // Test that registry can initiate upgrades through the upgrade manager let new_version = String::from_str(&env, "1.2.0"); let new_hash = BytesN::from_array(&env, &[3u8; 32]); let description = String::from_str(&env, "Cross-contract upgrade test"); - + let result = registry.initiate_upgrade(&new_version, &new_hash, &description); assert!(result.is_ok()); - + // Verify that the upgrade manager has the proposal // In a real implementation, we would check the upgrade manager's state // For now, just verify the call succeeded and events were emitted - + let events = env.events().all(); assert!(events.len() > 0); } -} \ No newline at end of file +} diff --git a/smart-contracts/contracts/upgrade-manager/src/events.rs b/smart-contracts/contracts/upgrade-manager/src/events.rs index 2cf627e3..8962023c 100644 --- a/smart-contracts/contracts/upgrade-manager/src/events.rs +++ b/smart-contracts/contracts/upgrade-manager/src/events.rs @@ -73,4 +73,4 @@ pub struct MigrationCompleteEvent { pub items_migrated: u32, pub total_gas_used: u64, pub success: bool, -} \ No newline at end of file +} diff --git a/smart-contracts/contracts/upgrade-manager/src/lib.rs b/smart-contracts/contracts/upgrade-manager/src/lib.rs index b2cbb3ac..da6777ce 100644 --- a/smart-contracts/contracts/upgrade-manager/src/lib.rs +++ b/smart-contracts/contracts/upgrade-manager/src/lib.rs @@ -33,12 +33,12 @@ mod events; mod migration; pub mod upgradeable; -pub use upgradeable::*; use events::*; use migration::*; use soroban_sdk::{ contract, contractimpl, contracttype, symbol_short, Address, BytesN, Env, String, Vec, }; +pub use upgradeable::*; // ─── Constants ─────────────────────────────────────────────────────────────── @@ -247,7 +247,10 @@ impl UpgradeManager { env.events().publish( (symbol_short!("upgrade"), symbol_short!("adm_chng")), - AdminChangedEvent { old_admin, new_admin }, + AdminChangedEvent { + old_admin, + new_admin, + }, ); Ok(()) @@ -265,9 +268,7 @@ impl UpgradeManager { /// Get version history for a specific version pub fn get_version(env: Env, version: String) -> Option { - env.storage() - .persistent() - .get(&DataKey::Version(version)) + env.storage().persistent().get(&DataKey::Version(version)) } /// Propose a new upgrade with validation @@ -279,7 +280,7 @@ impl UpgradeManager { migration_plan: MigrationPlan, ) -> Result<(), UpgradeError> { let admin = require_admin(&env)?; - + // Check if version is valid and newer if let Some(current) = get_current_version(&env) { if !is_version_newer(¤t.version.to_string(), &new_version.to_string()) { @@ -299,7 +300,9 @@ impl UpgradeManager { migration_plan, }; - env.storage().persistent().set(&DataKey::Proposal, &proposal); + env.storage() + .persistent() + .set(&DataKey::Proposal, &proposal); extend_ttl_for_key(&env, &DataKey::Proposal); env.events().publish( @@ -327,14 +330,16 @@ impl UpgradeManager { // Execute pre-upgrade validation let validation_result = execute_pre_upgrade_validation(&env, &proposal)?; - + // Estimate gas costs let estimated_gas = estimate_migration_gas(&env, &proposal.migration_plan); - + proposal.validated = true; proposal.estimated_gas = estimated_gas; - - env.storage().persistent().set(&DataKey::Proposal, &proposal); + + env.storage() + .persistent() + .set(&DataKey::Proposal, &proposal); extend_ttl_for_key(&env, &DataKey::Proposal); env.events().publish( @@ -368,7 +373,8 @@ impl UpgradeManager { let rollback_deadline = env.ledger().sequence() + ROLLBACK_WINDOW_LEDGERS; // Execute the upgrade - env.deployer().update_current_contract_wasm(proposal.new_wasm_hash); + env.deployer() + .update_current_contract_wasm(proposal.new_wasm_hash); // Create new version record let new_version = ContractVersion { @@ -384,9 +390,10 @@ impl UpgradeManager { env.storage() .persistent() .set(&DataKey::CurrentVersion, &new_version); - env.storage() - .persistent() - .set(&DataKey::Version(proposal.new_version.clone()), &new_version); + env.storage().persistent().set( + &DataKey::Version(proposal.new_version.clone()), + &new_version, + ); // Store rollback info if we had a previous version if let Some(prev_version) = current_version { @@ -413,7 +420,9 @@ impl UpgradeManager { env.events().publish( (symbol_short!("upgrade"), symbol_short!("applied")), UpgradeAppliedEvent { - old_version: current_version.map(|v| v.version).unwrap_or(String::from_str(&env, "none")), + old_version: current_version + .map(|v| v.version) + .unwrap_or(String::from_str(&env, "none")), new_version: proposal.new_version, wasm_hash: proposal.new_wasm_hash, admin: new_version.admin, @@ -476,8 +485,13 @@ impl UpgradeManager { /// Check if rollback is still available pub fn can_rollback(env: Env) -> bool { - if let Some(rollback_record) = env.storage().persistent().get::(&DataKey::Rollback) { - rollback_record.can_rollback && env.ledger().sequence() <= rollback_record.rollback_deadline + if let Some(rollback_record) = env + .storage() + .persistent() + .get::(&DataKey::Rollback) + { + rollback_record.can_rollback + && env.ledger().sequence() <= rollback_record.rollback_deadline } else { false } @@ -505,19 +519,20 @@ impl UpgradeManager { fn estimate_migration_gas(env: &Env, migration_plan: &MigrationPlan) -> u64 { let base_cost = GAS_UPGRADE_BASE; let item_cost = GAS_MIGRATION_PER_ITEM * migration_plan.estimated_items as u64; - + // Add overhead for each migration step - let step_overhead = (migration_plan.pre_migration_checks.len() + - migration_plan.data_transformations.len() + - migration_plan.post_migration_validations.len()) as u64 * 5000; - + let step_overhead = (migration_plan.pre_migration_checks.len() + + migration_plan.data_transformations.len() + + migration_plan.post_migration_validations.len()) as u64 + * 5000; + base_cost + item_cost + step_overhead } #[cfg(test)] mod tests { use super::*; - use soroban_sdk::{testutils::Address as _, Env, BytesN}; + use soroban_sdk::{testutils::Address as _, BytesN, Env}; fn create_test_env() -> (Env, UpgradeManagerClient<'static>, Address) { let env = Env::default(); @@ -538,16 +553,12 @@ mod tests { fn test_initialize_upgrade_manager() { let (env, client, admin) = create_test_env(); let initial_hash = test_wasm_hash(&env, 1); - - let result = client.initialize( - &admin, - &String::from_str(&env, "1.0.0"), - &initial_hash, - ); - + + let result = client.initialize(&admin, &String::from_str(&env, "1.0.0"), &initial_hash); + assert!(result.is_ok()); assert_eq!(client.get_admin(), Some(admin)); - + let version = client.get_current_version().unwrap(); assert_eq!(version.version, String::from_str(&env, "1.0.0")); assert_eq!(version.wasm_hash, initial_hash); @@ -558,16 +569,16 @@ mod tests { let (env, client, admin) = create_test_env(); let initial_hash = test_wasm_hash(&env, 1); let new_hash = test_wasm_hash(&env, 2); - + client.initialize(&admin, &String::from_str(&env, "1.0.0"), &initial_hash); - + let migration_plan = MigrationPlan { pre_migration_checks: Vec::new(&env), data_transformations: Vec::new(&env), post_migration_validations: Vec::new(&env), estimated_items: 10, }; - + // Propose upgrade let result = client.propose_upgrade( &String::from_str(&env, "2.0.0"), @@ -576,16 +587,16 @@ mod tests { &migration_plan, ); assert!(result.is_ok()); - + // Validate proposal let gas_estimate = client.validate_proposal(); assert!(gas_estimate.is_ok()); assert!(gas_estimate.unwrap() > 0); - + // Execute upgrade let result = client.execute_upgrade(); assert!(result.is_ok()); - + let new_version = client.get_current_version().unwrap(); assert_eq!(new_version.version, String::from_str(&env, "2.0.0")); assert_eq!(new_version.wasm_hash, new_hash); @@ -596,16 +607,16 @@ mod tests { let (env, client, admin) = create_test_env(); let initial_hash = test_wasm_hash(&env, 1); let new_hash = test_wasm_hash(&env, 2); - + client.initialize(&admin, &String::from_str(&env, "1.0.0"), &initial_hash); - + let migration_plan = MigrationPlan { pre_migration_checks: Vec::new(&env), data_transformations: Vec::new(&env), post_migration_validations: Vec::new(&env), estimated_items: 5, }; - + // Perform upgrade client.propose_upgrade( &String::from_str(&env, "2.0.0"), @@ -615,19 +626,19 @@ mod tests { ); client.validate_proposal(); client.execute_upgrade(); - + // Check rollback is available assert!(client.can_rollback()); - + // Perform rollback let result = client.rollback_upgrade(); assert!(result.is_ok()); - + // Verify we're back to original version let current = client.get_current_version().unwrap(); assert_eq!(current.version, String::from_str(&env, "1.0.0")); assert_eq!(current.wasm_hash, initial_hash); - + // Verify rollback is no longer available assert!(!client.can_rollback()); } @@ -637,16 +648,16 @@ mod tests { let (env, client, admin) = create_test_env(); let initial_hash = test_wasm_hash(&env, 1); let new_hash = test_wasm_hash(&env, 2); - + client.initialize(&admin, &String::from_str(&env, "1.0.0"), &initial_hash); - + let migration_plan = MigrationPlan { pre_migration_checks: Vec::new(&env), data_transformations: Vec::new(&env), post_migration_validations: Vec::new(&env), estimated_items: 5, }; - + // Perform upgrade client.propose_upgrade( &String::from_str(&env, "2.0.0"), @@ -656,11 +667,12 @@ mod tests { ); client.validate_proposal(); client.execute_upgrade(); - + // Advance ledger past rollback deadline let current_seq = env.ledger().sequence(); - env.ledger().set_sequence_number(current_seq + ROLLBACK_WINDOW_LEDGERS + 1); - + env.ledger() + .set_sequence_number(current_seq + ROLLBACK_WINDOW_LEDGERS + 1); + // Rollback should fail let result = client.try_rollback_upgrade(); assert_eq!(result, Err(Ok(UpgradeError::RollbackDeadlineExpired))); @@ -669,21 +681,27 @@ mod tests { #[test] fn test_gas_estimation() { let (env, client, admin) = create_test_env(); - + let mut migration_plan = MigrationPlan { pre_migration_checks: Vec::new(&env), data_transformations: Vec::new(&env), post_migration_validations: Vec::new(&env), estimated_items: 100, }; - - migration_plan.pre_migration_checks.push_back(String::from_str(&env, "check1")); - migration_plan.data_transformations.push_back(String::from_str(&env, "transform1")); - migration_plan.post_migration_validations.push_back(String::from_str(&env, "validate1")); - + + migration_plan + .pre_migration_checks + .push_back(String::from_str(&env, "check1")); + migration_plan + .data_transformations + .push_back(String::from_str(&env, "transform1")); + migration_plan + .post_migration_validations + .push_back(String::from_str(&env, "validate1")); + let gas_estimate = client.estimate_migration_gas(&migration_plan); - + let expected = GAS_UPGRADE_BASE + (GAS_MIGRATION_PER_ITEM * 100) + (3 * 5000); assert_eq!(gas_estimate, expected); } -} \ No newline at end of file +} diff --git a/smart-contracts/contracts/upgrade-manager/src/migration.rs b/smart-contracts/contracts/upgrade-manager/src/migration.rs index f71b363c..377bd709 100644 --- a/smart-contracts/contracts/upgrade-manager/src/migration.rs +++ b/smart-contracts/contracts/upgrade-manager/src/migration.rs @@ -1,5 +1,5 @@ +use crate::{events::*, MigrationPlan, UpgradeError, UpgradeProposal}; use soroban_sdk::{Env, String, Vec}; -use crate::{events::*, UpgradeError, UpgradeProposal, MigrationPlan}; /// Execute pre-upgrade validation checks pub fn execute_pre_upgrade_validation( @@ -7,24 +7,24 @@ pub fn execute_pre_upgrade_validation( proposal: &UpgradeProposal, ) -> Result, UpgradeError> { let mut results = Vec::new(env); - + // Validate WASM hash format if proposal.new_wasm_hash.len() != 32 { results.push_back(String::from_str(env, "Invalid WASM hash length")); return Err(UpgradeError::PreUpgradeValidationFailed); } - + // Check migration plan completeness if proposal.migration_plan.estimated_items == 0 { results.push_back(String::from_str(env, "Warning: No items to migrate")); } - + // Execute each pre-migration check for check in proposal.migration_plan.pre_migration_checks.iter() { let result = execute_validation_check(env, &check)?; results.push_back(result); } - + results.push_back(String::from_str(env, "Pre-upgrade validation passed")); Ok(results) } @@ -37,20 +37,23 @@ pub fn execute_post_upgrade_migration( let total_items = migration_plan.estimated_items; let mut processed_items = 0u32; let mut total_gas_used = 0u64; - + // Execute data transformations for transformation in migration_plan.data_transformations.iter() { let gas_before = env.ledger().protocol_version() as u64; // Placeholder for gas tracking - + let items_in_batch = execute_data_transformation(env, &transformation)?; processed_items += items_in_batch; - + let gas_used = env.ledger().protocol_version() as u64 - gas_before; // Placeholder total_gas_used += gas_used; - + // Emit progress event env.events().publish( - (soroban_sdk::symbol_short!("upgrade"), soroban_sdk::symbol_short!("progress")), + ( + soroban_sdk::symbol_short!("upgrade"), + soroban_sdk::symbol_short!("progress"), + ), MigrationProgressEvent { phase: transformation, items_processed: processed_items, @@ -59,15 +62,18 @@ pub fn execute_post_upgrade_migration( }, ); } - + // Execute post-migration validations for validation in migration_plan.post_migration_validations.iter() { execute_post_migration_validation(env, &validation)?; } - + // Emit completion event env.events().publish( - (soroban_sdk::symbol_short!("upgrade"), soroban_sdk::symbol_short!("complete")), + ( + soroban_sdk::symbol_short!("upgrade"), + soroban_sdk::symbol_short!("complete"), + ), MigrationCompleteEvent { version: String::from_str(env, "migrated"), // Would be actual version items_migrated: processed_items, @@ -75,7 +81,7 @@ pub fn execute_post_upgrade_migration( success: true, }, ); - + Ok(()) } @@ -83,29 +89,32 @@ pub fn execute_post_upgrade_migration( fn execute_validation_check(env: &Env, check_name: &String) -> Result { // In a real implementation, this would dispatch to specific validation functions // based on the check name. For now, we simulate validation logic. - + let check_str = check_name.to_string(); - + match check_str.as_str() { "storage_format_compatibility" => { // Check if new contract can read existing storage format Ok(String::from_str(env, "Storage format compatible")) - }, + } "data_integrity_check" => { // Verify existing data integrity before migration Ok(String::from_str(env, "Data integrity verified")) - }, + } "gas_budget_validation" => { // Ensure sufficient gas budget for migration Ok(String::from_str(env, "Gas budget sufficient")) - }, + } "dependency_compatibility" => { // Check if new version is compatible with dependent contracts Ok(String::from_str(env, "Dependencies compatible")) - }, + } _ => { // Unknown validation check - Ok(String::from_str(env, &format!("Unknown check: {}", check_str))) + Ok(String::from_str( + env, + &format!("Unknown check: {}", check_str), + )) } } } @@ -114,26 +123,26 @@ fn execute_validation_check(env: &Env, check_name: &String) -> Result Result { // In a real implementation, this would perform actual data transformations // For now, we simulate different transformation types - + let transform_str = transformation.to_string(); - + match transform_str.as_str() { "migrate_agent_records" => { // Simulate migrating agent records to new format migrate_agent_records(env) - }, + } "update_storage_keys" => { // Simulate updating storage key formats update_storage_keys(env) - }, + } "convert_metadata_format" => { // Simulate converting metadata to new format convert_metadata_format(env) - }, + } "rebuild_indexes" => { // Simulate rebuilding capability indexes rebuild_indexes(env) - }, + } _ => { // Unknown transformation Ok(0) @@ -144,24 +153,24 @@ fn execute_data_transformation(env: &Env, transformation: &String) -> Result Result<(), UpgradeError> { let validation_str = validation.to_string(); - + match validation_str.as_str() { "verify_data_integrity" => { // Verify all data was migrated correctly Ok(()) - }, + } "test_contract_functionality" => { // Test that upgraded contract functions work correctly Ok(()) - }, + } "validate_storage_consistency" => { // Ensure storage is in a consistent state Ok(()) - }, + } "check_index_completeness" => { // Verify all indexes were rebuilt correctly Ok(()) - }, + } _ => { // Unknown validation - pass by default Ok(()) @@ -178,7 +187,7 @@ fn migrate_agent_records(env: &Env) -> Result { // 2. Transform them to new format // 3. Write them back to storage // 4. Clean up old format data if needed - + // For simulation, assume we processed 10 agent records Ok(10) } @@ -189,7 +198,7 @@ fn update_storage_keys(env: &Env) -> Result { // 1. Reading data from old key format // 2. Writing data to new key format // 3. Removing old keys - + // For simulation, assume we updated 25 storage keys Ok(25) } @@ -201,7 +210,7 @@ fn convert_metadata_format(env: &Env) -> Result { // 2. Converting to new schema // 3. Validating converted data // 4. Storing in new format - + // For simulation, assume we converted 15 metadata entries Ok(15) } @@ -213,7 +222,7 @@ fn rebuild_indexes(env: &Env) -> Result { // 2. Reading all agent records // 3. Rebuilding indexes from current data // 4. Verifying index completeness - + // For simulation, assume we rebuilt 5 indexes Ok(5) } @@ -223,7 +232,7 @@ pub fn is_migration_reversible(migration_plan: &MigrationPlan) -> bool { // Check if all transformations in the plan are reversible for transformation in migration_plan.data_transformations.iter() { let transform_str = transformation.to_string(); - + // These transformations are considered irreversible match transform_str.as_str() { "delete_deprecated_data" => return false, @@ -232,21 +241,21 @@ pub fn is_migration_reversible(migration_plan: &MigrationPlan) -> bool { _ => {} // Most transformations are reversible } } - + true } /// Helper function to estimate migration complexity pub fn estimate_migration_complexity(migration_plan: &MigrationPlan) -> u32 { let mut complexity = 0u32; - + // Base complexity from number of items complexity += migration_plan.estimated_items; - + // Add complexity for each transformation type for transformation in migration_plan.data_transformations.iter() { let transform_str = transformation.to_string(); - + let transform_complexity = match transform_str.as_str() { "migrate_agent_records" => 2, "update_storage_keys" => 3, @@ -256,9 +265,9 @@ pub fn estimate_migration_complexity(migration_plan: &MigrationPlan) -> u32 { "merge_duplicate_records" => 4, _ => 1, }; - + complexity += transform_complexity; } - + complexity -} \ No newline at end of file +} diff --git a/smart-contracts/contracts/upgrade-manager/src/upgradeable.rs b/smart-contracts/contracts/upgrade-manager/src/upgradeable.rs index 29dc09c2..bb1f8cef 100644 --- a/smart-contracts/contracts/upgrade-manager/src/upgradeable.rs +++ b/smart-contracts/contracts/upgrade-manager/src/upgradeable.rs @@ -12,28 +12,39 @@ use soroban_sdk::{contracttype, Address, BytesN, Env, String, Vec}; pub trait Upgradeable { /// Get the current contract version fn get_version(env: Env) -> String; - + /// Get the current WASM hash fn get_wasm_hash(env: Env) -> BytesN<32>; - + /// Check if the contract supports upgrades fn is_upgradeable(env: Env) -> bool; - + /// Get the upgrade manager contract address (if configured) fn get_upgrade_manager(env: Env) -> Option
; - + /// Set the upgrade manager contract address (admin only) fn set_upgrade_manager(env: Env, upgrade_manager: Address) -> Result<(), UpgradeableError>; - + /// Execute pre-upgrade validation - fn pre_upgrade_hook(env: Env, new_version: String, new_wasm_hash: BytesN<32>) -> Result, UpgradeableError>; - + fn pre_upgrade_hook( + env: Env, + new_version: String, + new_wasm_hash: BytesN<32>, + ) -> Result, UpgradeableError>; + /// Execute post-upgrade migration - fn post_upgrade_hook(env: Env, old_version: String, new_version: String) -> Result<(), UpgradeableError>; - + fn post_upgrade_hook( + env: Env, + old_version: String, + new_version: String, + ) -> Result<(), UpgradeableError>; + /// Get migration plan for upgrading to a new version - fn get_migration_plan(env: Env, target_version: String) -> Result; - + fn get_migration_plan( + env: Env, + target_version: String, + ) -> Result; + /// Initiate upgrade through upgrade manager fn initiate_upgrade( env: Env, @@ -110,8 +121,8 @@ impl From for soroban_sdk::Error { /// Utility functions for version comparison and compatibility checking pub mod version_utils { + use crate::{UpgradeableError, VersionCompatibility}; use soroban_sdk::{Env, String, Vec}; - use crate::{VersionCompatibility, UpgradeableError}; /// Simple version comparison for strings (semantic versioning approximation) /// In production, you would use proper semver parsing @@ -127,11 +138,11 @@ pub mod version_utils { ) -> Result { let current_str = current.to_string(); let target_str = target.to_string(); - + let mut issues = Vec::new(env); let mut is_compatible = true; let mut migration_required = false; - + // Simple version comparison - in practice would use proper semver match current_str.cmp(&target_str) { std::cmp::Ordering::Less => { @@ -148,7 +159,7 @@ pub mod version_utils { issues.push_back(String::from_str(env, "Downgrade not allowed")); } } - + Ok(VersionCompatibility { current_version: current, target_version: target, @@ -165,7 +176,7 @@ pub mod version_utils { to_version: &str, ) -> Result, UpgradeableError> { let mut steps = Vec::new(env); - + // Simple version-based migration planning match from_version.cmp(to_version) { std::cmp::Ordering::Less => { @@ -194,7 +205,7 @@ pub mod version_utils { return Err(UpgradeableError::IncompatibleVersion); } } - + Ok(steps) } } @@ -249,16 +260,16 @@ macro_rules! impl_upgradeable_basics { fn get_version(env: Env) -> String { String::from_str(&env, $version) } - + fn is_upgradeable(_env: Env) -> bool { true } - + fn get_wasm_hash(env: Env) -> BytesN<32> { env.current_contract_address().into() // Placeholder } - + // Other methods need custom implementation } }; -} \ No newline at end of file +} diff --git a/smart-contracts/docs/agent-bidding-security.md b/smart-contracts/docs/agent-bidding-security.md new file mode 100644 index 00000000..01214cf8 --- /dev/null +++ b/smart-contracts/docs/agent-bidding-security.md @@ -0,0 +1,378 @@ +# Security review — `agent_bidding` commit-reveal auction + +**Contract**: `smart-contracts/contracts/agent_bidding` +**Scope**: the sealed-bid commit-reveal flow — `create_auction`, `submit_bid`, +`reveal_bid`, `reveal_bids`, `award_contract`, `abort_auction`. +**Tracking issue**: [#350](https://github.com/Epta-Node/ai-net/issues/350) + +This document is the deliverable half of #350: it states the attack surface of +the auction, the mitigation now in the contract for each attack, and — just as +importantly — the guarantees the contract does **not** make, so integrators do +not assume protection that is not there. + +Every mitigation below is covered by a named test in `src/lib.rs`; the test name +is given so a reviewer can go straight from a claim to the code that proves it. + +--- + +## 1. Threat model + +**Assets.** Bidder bonds (locked at `submit_bid`), the escrowed task price +(locked at `award_contract`), and the *integrity of the award* — that the +task goes to the bid that actually scored best. + +**Adversary.** Any account that can submit transactions. It can: + +- read all ledger state, including every sealed commitment and every reveal, + the instant it lands; +- observe pending transactions before they are included, and submit its own + transaction in the same or an earlier ledger (front-running); +- create unlimited Stellar accounts (Sybil), bounded only by the XLM each one + must post as a bond; +- choose to stay silent at any point in the flow. + +It cannot forge signatures, break SHA-256, or rewrite history. + +**Trust assumptions.** The task creator is trusted to fund the escrow +off-chain; bidder-reported `reputation` is *self-declared* and not verified by +this contract (see §4.1). Ledger timestamps are trusted to within the usual +validator drift, which is why every window is minutes-to-hours, never seconds. + +--- + +## 2. Auction timeline + +```text +create_auction deadline reveal_deadline + │ │ │ + ├────── bidding window ────┤ │ + │ submit_bid accepted │ │ + │ ├───── reveal window ──────┤ + │ │ reveal_bid accepted │ + │ │ ├──► reveal_bids + │ │ │ award_contract + │ │ │ (or abort_auction) + │ │ │ + │ └── reveal_bids also allowed early, + │ but only once revealed_count == bid_count +``` + +Both windows are bounded by `MIN_PHASE_DURATION_SECS` (60 s) and +`MAX_PHASE_DURATION_SECS` (30 days). A window shorter than a minute is not +reliably reachable across ledger close times, so allowing it would hand the +creator a censorship tool; a window longer than a month would let one call lock +bonds effectively forever. + +--- + +## 3. Attack surface and mitigations + +### A-1 — Front-running the finalisation (critical) + +**Attack.** `reveal_bids` is permissionless and computes the winner from +whatever has been revealed *so far*. In the original design it became callable +the instant the bidding deadline passed. An attacker could therefore, in a +single ledger: reveal their own (deliberately poor) bid, then call +`reveal_bids`. Selection would run over a field of exactly one — theirs — and +every honest bidder who had not yet gotten a reveal transaction included would +be scored out of the auction entirely. The attacker wins at their own asking +price, having beaten no one. + +This is the sharpest form of the problem: it needs no capital beyond one bond, +no Sybils, and no cryptographic work, only transaction ordering. + +**Mitigation.** A bounded reveal window, plus a finalisation gate: + +```rust +if now < auction.reveal_deadline && auction.revealed_count < auction.bid_count { + return Err(Error::RevealPeriodActive); +} +``` + +`reveal_bids` is refused while the window is still open *and* any sealed bid +remains unrevealed. The attacker cannot compress the reveal window; every +bidder gets the full window to reveal. Once `revealed_count == bid_count` there +is nothing left to race, so the auction may be finalised early — this is a +liveness optimisation that cannot be abused, because an attacker cannot make +`revealed_count` reach `bid_count` while an honest bid is still sealed. + +*Tests*: `reveal_bids_cannot_be_front_run_while_reveals_are_outstanding`, +`reveal_bids_finalises_early_when_every_bid_is_revealed`, +`reveal_bids_before_deadline_fails`. + +### A-2 — The free "last look" option (high) + +**Attack.** Reveals are public as they land. A bidder who has not yet revealed +can read every price already disclosed and only then decide whether to open +their own bid. If non-reveal costs nothing, a sealed bid is a free option: bid +aggressively, and if the revealed field shows the bid was a mistake, simply +never reveal and walk away whole. Systematically exercised, this destroys the +information content of the sealed-bid mechanism. + +**Mitigation.** Non-reveal is priced. `award_contract` now settles bonds +asymmetrically: bidders who revealed are marked `refunded`, bidders who did not +are marked `forfeited`. The `forfeited` flag is a distinct field from +`refunded`, so an indexer can never confuse "got their bond back" with "lost +it". + +The option is not eliminated — it cannot be, since no contract can compel a +signature — it is *priced at the bond*. Creators should therefore set `bond` +at or above the value they estimate the last-look option to be worth for their +task size. A bond of dust re-opens this attack, and no code change can fix +that; it is a configuration duty, called out again in §5. + +*Tests*: `award_contract_forfeits_bonds_of_non_revealers`, +`award_contract_refunds_all_revealed_bidders`. + +### A-3 — Commitment replay (high) + +**Attack.** The original pre-image was `SHA-256(bidder ‖ price ‖ terms ‖ salt)` +— bound to the bidder, but to nothing else. Two consequences: + +1. *Cross-auction replay.* The same bidder's commitment for price P is byte- + identical on every auction. Once they reveal on auction A, the plaintext of + their still-sealed bid on auction B is public knowledge to anyone who + compares the two commitments. The seal on B is gone. +2. *Cross-deployment replay.* The same commitment is valid against any + deployment of this contract, so a testnet reveal unseals a mainnet bid. + +**Mitigation.** Domain separation. The pre-image is now: + +```text +SHA-256( domain ‖ contract_id ‖ task_id ‖ bidder ‖ price ‖ terms ‖ salt ) +``` + +with `domain = COMMITMENT_DOMAIN = "ai-net:agent_bidding:v2:bid"`. Identical +plaintext produces a different digest on every `(deployment, auction, bidder)` +triple, so a commitment is only ever meaningful in the one place it was built +for. + +Copying a *rival's* commitment verbatim was already useless — their address is +in the pre-image — and now costs the copier their bond, since they can never +produce a reveal that verifies and are settled as a non-revealer under A-2. + +Off-chain tooling should not re-implement this layout. The contract exposes +`commitment_of(...)`, which is literally the function `reveal_bid` verifies +against, so the two cannot drift. **Compute it locally** — calling it against a +public RPC endpoint hands the plaintext price to whoever operates that node, +which defeats the seal just as thoroughly as publishing it. + +*Tests*: `commitment_cannot_be_replayed_across_auctions`, +`commitment_cannot_be_replayed_by_another_bidder`, +`commitment_of_matches_what_reveal_verifies`. + +### A-4 — Late reveal / re-reveal (medium) + +**Attack.** Two variants: revealing after the winner has been computed in order +to displace them, and re-revealing an already-open bid at a different price. + +**Mitigation.** `reveal_bid` enforces `deadline <= now < reveal_deadline` +(`BiddingPeriodActive` / `RevealPeriodEnded`), and refuses a second reveal +(`BidAlreadyRevealed`). After `reveal_bids` the auction leaves the `Bidding` +phase, so every further reveal fails on the phase check. Selection therefore +runs exactly once over a set that is frozen before it runs. + +The re-reveal guard also protects the A-1 gate: `revealed_count` must not be +inflatable by replaying a reveal, or an attacker could drive it to `bid_count` +artificially and unlock early finalisation. + +*Tests*: `reveal_bid_after_reveal_deadline_fails`, `reveal_bid_twice_fails`, +`late_reveal_cannot_displace_an_already_selected_winner`, +`revealed_bid_cannot_be_reopened_at_a_new_price`, `reveal_bids_twice_fails`. + +### A-5 — Double commit / commitment overwrite (medium) + +**Attack.** If a bidder could submit a second commitment, the first would not +be binding: they could re-commit late in the bidding window, or hold two +commitments and open whichever the revealed field favoured. + +**Mitigation.** One bid per `(task_id, bidder)`. A second `submit_bid` is +`BidAlreadyExists`, whether or not the commitment differs from the first. The +originally stored commitment is the one that stands. + +*Tests*: `submit_bid_duplicate_fails`, +`submit_bid_second_different_commitment_fails`. + +### A-6 — Unbounded position size (medium) + +**Attack.** Nothing bounded the revealed price, so a winning bid could commit +the creator to an arbitrarily large escrow. Nothing bounded `terms`, so a +bidder could park unbounded bytes in contract storage. Nothing bounded the +bidder list, so `reveal_bids` and `award_contract` — both of which iterate it — +could be pushed past the transaction resource limit, permanently wedging the +auction and stranding every bond. + +**Mitigation.** Three caps: + +| Cap | Constant | Enforced at | +|---|---|---| +| Price ceiling per auction | `AuctionConfig.max_price` (`0` → `MAX_BID_PRICE`) | `reveal_bid` → `InvalidPrice` | +| Global price ceiling | `MAX_BID_PRICE` = 10¹⁷ stroops | `create_auction` → `InvalidPrice` / `InvalidPriceRange` | +| Bidders per auction | `MAX_BIDDERS` = 100 | `submit_bid` → `AuctionFull` | +| `terms` length | `MAX_TERMS_LEN` = 512 bytes | `reveal_bid` → `TermsTooLong` | + +The price cap is enforced at *reveal*, not at commit — the contract cannot see +a sealed price, which is the entire point of the mechanism. An over-cap bidder +therefore burns their bond discovering their bid was inadmissible, which is the +correct incentive. + +`MAX_BID_PRICE` also keeps the scoring arithmetic away from `i128` overflow: +the largest intermediate is `SCORE_SCALE * price ≈ 10²⁰`, some 18 orders of +magnitude below `i128::MAX`. The arithmetic is nonetheless written with +`checked_*` throughout, returning `ArithmeticOverflow` rather than panicking, so +a future edit that loosens the cap degrades to a clean error instead of a +wedged auction. + +`get_bidders` is paginated and clamps `limit` to 50, so no view can be asked to +materialise an unbounded vector either. + +*Tests*: `submit_bid_rejects_beyond_max_bidders`, +`reveal_bid_rejects_price_above_cap`, `reveal_bid_rejects_price_below_reserve`, +`reveal_bid_rejects_oversized_terms`, +`create_auction_rejects_inverted_price_range`, +`create_auction_rejects_price_above_global_ceiling`, +`get_bidders_pages_and_clamps_limit`. + +### A-7 — Stranded bonds on a dead auction (medium) + +**Attack.** Not an attack so much as a liveness hole that an attacker can +trigger: if nobody reveals, `reveal_bids` returns `NotEnoughBids` forever, the +auction never leaves `Bidding`, and every bond is locked permanently. A griefer +who bids on many auctions and never reveals imposes exactly this on every +counterparty. + +**Mitigation.** `abort_auction` — callable by anyone (authenticated) once +`now >= reveal_deadline` and `revealed_count == 0`. It moves the auction to +`Cancelled` and releases every bond. + +Bonds are *refunded* here, not forfeited: with no winner there is no +counterparty the forfeiture would compensate, so burning them would destroy +value without deterring anything. Forfeiture in A-2 is meaningful precisely +because there *is* a winner who was harmed by the withdrawal. + +The path is deliberately permissionless — restricting it to the creator would +let a vanished creator strand other people's bonds. It is also strictly gated: +if even one bid was revealed, `abort_auction` returns `AuctionNotAbortable` and +the auction must be finalised through `reveal_bids`, so it can never be used to +discard an auction someone legitimately won. + +*Tests*: `abort_auction_releases_bonds_when_nobody_reveals`, +`abort_auction_rejected_while_reveal_window_open`, +`abort_auction_rejected_when_a_bid_was_revealed`, +`cancelled_auction_accepts_no_further_calls`. + +### A-8 — Unauthenticated state mutation (medium) + +**Attack.** `reveal_bids` and `award_contract` originally took no caller and +performed no `require_auth()`, contrary to the repository invariant that every +on-chain mutation authenticates. `award_contract` in particular could be +triggered by a complete stranger, fixing the escrow terms between two parties +neither of whom asked for it at that moment. + +**Mitigation.** Both now take a `caller: Address` and call +`caller.require_auth()`. + +- `reveal_bids` stays *permissionless but attributable*: any authenticated + caller may finalise, because the outcome is a pure function of frozen on-chain + state, so who calls it cannot change what it decides. +- `award_contract` additionally requires `caller == creator || caller == winner` + — the two parties the escrow actually binds. Anyone else gets `Unauthorized`. + +*Tests*: `award_contract_rejects_unrelated_caller`, `award_contract_twice_fails`. + +### A-9 — Terminal-phase re-entry (low) + +**Attack.** Calling into an auction that has already settled, hoping a stale +code path re-runs a refund or re-creates an escrow. + +**Mitigation.** `require_live` rejects any mutating call on an `Awarded` or +`Cancelled` auction with `AuctionClosed`; `award_contract` guards `Awarded` +explicitly with `AlreadyAwarded` and re-checks `escrow_created`. Bond settlement +skips any bid already marked `refunded` or `forfeited`, so even a hypothetical +double-settlement cannot double-count. + +*Tests*: `cancelled_auction_accepts_no_further_calls`, +`award_contract_twice_fails`. + +--- + +## 4. Residual risk — what this contract does *not* defend against + +These are real limitations. They are listed so integrators plan around them +rather than discover them. + +### 4.1 Reputation is self-declared + +`submit_bid` takes `reputation` as a caller-supplied `u32` and validates only +that it is in `[0, 100]`. Nothing stops every bidder from claiming 100. Since +reputation carries 40 % of the composite score, a marketplace that cares about +the score being meaningful must source reputation from an attested oracle or the +`agent_registry` contract rather than from the bidder. **Until then, treat the +score as price-driven with an advisory reputation tiebreak.** + +### 4.2 Reveals are public as they land + +Bids revealed earlier in the window are visible to bidders who have not revealed +yet. Their commitments are already fixed, so they cannot *change* a bid — but +they retain the walk-away option that A-2 prices rather than removes. Only a +scheme with encrypted reveals or threshold decryption removes it outright; that +is out of scope here. + +### 4.3 Sybil bidding + +Bond cost is the only Sybil resistance. An adversary willing to post `N × bond` +can occupy N of the `MAX_BIDDERS` slots and crowd out honest bidders. Bond +sizing is again the lever. + +### 4.4 Bonds and escrow are state, not custody + +`SealedBid.bond` and `Escrow.amount` model the *accounting* of locked value. +This contract does not itself move XLM or invoke a token contract; an escrow +contract or off-chain relayer must honour the flags. **A `refunded` / +`forfeited` / `released` flag is an instruction to that component, not proof +that value moved.** Any integration must settle real funds against these flags, +or the incentives described above do not exist economically. + +### 4.5 Timestamp granularity + +All windows use `env.ledger().timestamp()`, which validators can nudge within a +small drift. `MIN_PHASE_DURATION_SECS` of 60 s keeps that drift immaterial +relative to window length. Do not build a workflow that depends on second-level +precision at a window boundary. + +--- + +## 5. Guidance for creators + +1. **Size the bond against the last-look option (§A-2), not against spam.** The + bond is the entire price of walking away after seeing the field. A token bond + restores the free option that A-2 exists to remove. +2. **Set `max_price` deliberately.** Leaving it `0` normalises to `MAX_BID_PRICE` + (10¹⁰ XLM) — technically safe for the arithmetic, but no real cap. Set it to + the largest position you are prepared to escrow. +3. **Give the reveal window room.** It must comfortably exceed the time an agent + needs to notice the bidding deadline and land a transaction. An hour is the + default for a reason. +4. **Compute commitments locally** with `commitment_of` semantics — never by + invoking the view against a third-party RPC endpoint (§A-3). +5. **Wire `forfeited` into settlement.** If the settlement component treats + `forfeited` as `refunded`, A-2's mitigation silently disappears (§4.4). + +--- + +## 6. Error-code reference for the hardening + +| Code | Variant | Raised when | +|---|---|---| +| 18 | `RevealPeriodEnded` | `reveal_bid` after `reveal_deadline` | +| 19 | `RevealPeriodActive` | `reveal_bids`/`abort_auction` while reveals are still possible | +| 20 | `AuctionFull` | `submit_bid` beyond `MAX_BIDDERS` | +| 21 | `InvalidDuration` | phase duration outside `[MIN, MAX]_PHASE_DURATION_SECS` | +| 22 | `TermsTooLong` | revealed `terms` exceeds `MAX_TERMS_LEN` | +| 23 | `InvalidPriceRange` | `max_price < reserve_price`, or above `MAX_BID_PRICE` | +| 24 | `AuctionClosed` | any mutation on an `Awarded`/`Cancelled` auction | +| 25 | `AuctionNotAbortable` | `abort_auction` when a bid was revealed | +| 26 | `ArithmeticOverflow` | checked arithmetic failed during scoring | + +Codes `1..=17` are unchanged and keep their original meaning. Per the contract's +own rule, no existing variant was renumbered. From 14b504b0927ccbe72cf17bf5e9b8e2653ddfa795 Mon Sep 17 00:00:00 2001 From: mananuf Date: Sun, 30 Aug 2026 17:50:10 +0100 Subject: [PATCH 2/4] fix(frontend): repair merge debris that broke the build MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `main` does not type-check or build. Several files carry two concatenated copies of themselves from bad merges — duplicate imports, duplicate state declarations, orphaned JSX closing tags, and a stray `@keyframes` tail. The syntax errors also masked the type errors behind them, so fixing the parse failures surfaced a second layer. Where a file held two versions, the one kept is the one the rest of the codebase already depends on: - `ToastContext.tsx` — kept the version exporting `ToastContext` (which `hooks/useToast.ts` imports) and delegating to the shared `ToastContainer`. - `SendXLMForm.tsx` — kept react-hook-form + zod, which the file's own imports (`@hookform/resolvers`, `walletTransferSchema`, `FormField`) point at. The balance check the schema cannot express moved into a resolver wrapper so the error still lands on the `amount` field. - `Hero.tsx` — dropped the half-removed framer-motion wrappers; the opening tags were already plain elements with CSS `slide-up` animations, only the closing tags still said `motion.*`. - `TaskSubmissionForm.tsx` — kept the i18n-aware `makeTaskSchema` factory over the static import, restored the missing `z`/`AlertCircle` imports, and dropped the duplicated hook calls. - `AgentDetailModal.tsx` — restored the `useAgentReputation` call whose results the JSX still read. - `Toast.css` — removed an orphaned `@keyframes` body (a `}` with no opening rule, which failed postcss) and the container properties that had leaked into the `.toast__dismiss` button rule. Two behaviour fixes fell out of the repair: - The submit button was gated on `!isValid`, so an untouched form could never be submitted and the user got a dead button with no explanation. Validation now runs on click and reports what is wrong. - `AgentReputationRadar.test.tsx` stubbed `ResponsiveContainer` without passing dimensions down, so recharts drew nothing and the assertion never passed — it failed on `main` too. Toast dismissal picks up an i18n label rather than hardcoded English, matching the rest of the component. Frontend is now green: `tsc --noEmit` clean, `vite build` succeeds, and the vitest suite passes. The backend is broken by the same class of bad merge but across ~12 files, which is a separate repair and is deliberately untouched here. Co-Authored-By: Claude Opus 5 (1M context) --- .../components/agents/AgentDetailModal.tsx | 3 + .../agents/AgentReputationRadar.test.tsx | 11 +- .../components/agents/TaskSubmissionForm.tsx | 14 +- .../src/components/common/FormField.test.tsx | 2 +- frontend/src/components/common/Toast.css | 94 ++--------- frontend/src/components/common/Toast.tsx | 5 +- .../components/dashboard/RecentTasksTable.tsx | 1 - frontend/src/components/landing/Hero.tsx | 11 +- .../src/components/wallet/SendXLMForm.tsx | 148 ++++++++---------- frontend/src/context/ToastContext.tsx | 55 ++----- frontend/src/i18n/locales/en.json | 4 +- frontend/src/i18n/locales/zh.json | 4 +- frontend/src/pages/dashboard.tsx | 1 - 13 files changed, 127 insertions(+), 226 deletions(-) diff --git a/frontend/src/components/agents/AgentDetailModal.tsx b/frontend/src/components/agents/AgentDetailModal.tsx index 952679c6..b95a795c 100644 --- a/frontend/src/components/agents/AgentDetailModal.tsx +++ b/frontend/src/components/agents/AgentDetailModal.tsx @@ -17,6 +17,9 @@ interface AgentDetailModalProps { export function AgentDetailModal({ agent, onClose }: AgentDetailModalProps) { const { t } = useTranslation() + // Called unconditionally (hook rules) — it no-ops on an empty id, which is + // what the closed-modal case passes. + const { data: reputationData, loading: reputationLoading } = useAgentReputation(agent?.id ?? '') useEffect(() => { if (!agent) return diff --git a/frontend/src/components/agents/AgentReputationRadar.test.tsx b/frontend/src/components/agents/AgentReputationRadar.test.tsx index f2696827..972eee36 100644 --- a/frontend/src/components/agents/AgentReputationRadar.test.tsx +++ b/frontend/src/components/agents/AgentReputationRadar.test.tsx @@ -1,14 +1,21 @@ +import React from 'react'; import { render } from '@testing-library/react'; import { AgentReputationRadar } from './AgentReputationRadar'; import { vi, describe, it, expect } from 'vitest'; -// Mock recharts because ResponsiveContainer doesn't work well in JSDOM +// ResponsiveContainer measures its parent, and jsdom reports 0x0 for +// everything — so the real one renders a chart of zero size, which recharts +// skips entirely. The stand-in hands the chart concrete pixel dimensions; +// passing them down is the part that actually makes the chart render, since a +// RadarChart with no width/height draws nothing. vi.mock('recharts', async () => { const OriginalRecharts = await vi.importActual('recharts'); return { ...OriginalRecharts, ResponsiveContainer: ({ children }: any) => ( -
{children}
+
+ {React.cloneElement(React.Children.only(children), { width: 400, height: 250 })} +
), }; }); diff --git a/frontend/src/components/agents/TaskSubmissionForm.tsx b/frontend/src/components/agents/TaskSubmissionForm.tsx index bb9b52d5..6ef5d7ce 100644 --- a/frontend/src/components/agents/TaskSubmissionForm.tsx +++ b/frontend/src/components/agents/TaskSubmissionForm.tsx @@ -3,13 +3,12 @@ import { useForm, Controller } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; import { useNavigate } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; +import { z } from 'zod'; +import { AlertCircle } from 'lucide-react'; import type { TFunction } from 'i18next'; import { DAGPreview } from './DAGPreview'; import { useTaskSubmit } from '../../hooks/useTaskSubmit'; -import { useToast } from '../../hooks/useToast'; import { useToast } from '../../context/ToastContext'; -import { FormField } from '../common/FormField'; -import { taskSchema, type TaskFormValues } from '../../schemas/task'; import type { AgentPreference, TaskSubmitResponse } from '../../services/taskService'; // Only the label is translated: `value` is the wire format the API and the zod @@ -43,10 +42,7 @@ export function TaskSubmissionForm() { const navigate = useNavigate(); const { showToast } = useToast(); const [preview, setPreview] = useState(null); - const { submitTask, status, data } = useTaskSubmit(); - const [preview, setPreview] = useState(null); const { submitTask, status, error, data } = useTaskSubmit(); - const { showToast } = useToast(); const agentPreferences = useMemo( () => @@ -222,14 +218,14 @@ export function TaskSubmissionForm() { diff --git a/frontend/src/components/dashboard/RecentTasksTable.tsx b/frontend/src/components/dashboard/RecentTasksTable.tsx index c76cb9b4..58e1ec57 100644 --- a/frontend/src/components/dashboard/RecentTasksTable.tsx +++ b/frontend/src/components/dashboard/RecentTasksTable.tsx @@ -4,7 +4,6 @@ import { useTranslation } from 'react-i18next'; import { Skeleton } from '../common/Skeleton'; import styles from './RecentTasksTable.module.css'; import { getRecentTasks } from '@services/api'; -import { useToast } from '../../hooks/useToast'; import { useToast } from '../../context/ToastContext'; import type { TaskResponse } from '../../types/api'; import { formatDateTime } from '../../utils/format'; diff --git a/frontend/src/components/landing/Hero.tsx b/frontend/src/components/landing/Hero.tsx index a1b9e2e3..e29a1b15 100644 --- a/frontend/src/components/landing/Hero.tsx +++ b/frontend/src/components/landing/Hero.tsx @@ -13,11 +13,8 @@ const Hero: React.FC = () => { const { canvasRef, prefersReducedMotion } = useParticles() return ( - {!prefersReducedMotion ? ( @@ -48,7 +45,7 @@ const Hero: React.FC = () => { >
{t('landing.hero.badge')} - +
{/* Headline */}

{ , ]} /> - +

{/* Subtext */}

{ style={{ animationDelay: '400ms' }} > {t('landing.hero.subtitle')} - +

{/* CTAs */}
(null) const [submitting, setSubmitting] = useState(false) - const validateField = useCallback( - (field: 'destination' | 'amount'): string | undefined => { - if (field === 'destination') { - if (!destination.trim()) return t('validation.destinationRequired') - if (!isValidStellarAddress(destination.trim())) - return t('validation.invalidStellarAddress') - return undefined - } - if (field === 'amount') { - if (!amount.trim()) return t('validation.amountRequired') - const parsed = parseFloat(amount) - if (isNaN(parsed) || parsed <= 0) return t('validation.amountPositive') - const availableBalance = parseFloat(balance) - if (parsed > availableBalance) return t('validation.insufficientBalance') - return undefined + /** + * The zod schema validates shape; the available balance is runtime state it + * cannot see, so the insufficient-funds check is layered on after it. Doing + * it here rather than inside the schema keeps the schema reusable and the + * error attached to the `amount` field where the user is looking. + */ + const resolver = useCallback>( + async (values, context, options) => { + const result = await zodResolver(walletTransferSchema)(values, context, options) + + const amount = Number(values.amount) + const available = parseFloat(balance) + const hasSchemaAmountError = 'amount' in result.errors + if (!hasSchemaAmountError && Number.isFinite(amount) && amount > available) { + return { + values: {}, + errors: { + ...result.errors, + amount: { type: 'insufficientBalance', message: t('validation.insufficientBalance') }, + }, + } } - return undefined + + return result }, - // `t` belongs here: these messages are re-validated and re-rendered, so a - // stale closure would keep showing them in the previous language. - [destination, amount, balance, t] + [balance, t], ) - const handleDestinationBlur = () => { - const err = validateField('destination') - setErrors((prev) => ({ ...prev, destination: err })) - } - - const handleAmountBlur = () => { - const err = validateField('amount') - setErrors((prev) => ({ ...prev, amount: err })) - } - - const handleSendClick = () => { - const destErr = validateField('destination') - const amtErr = validateField('amount') - const newErrors = { destination: destErr, amount: amtErr } - setErrors(newErrors) + const { + register, + handleSubmit, + reset, + formState: { errors, touchedFields }, + } = useForm({ + resolver, + mode: 'onBlur', + defaultValues: { destination: '', amount: 0, memo: '' }, + }) const handleSendClick = (data: WalletTransferValues) => { setConfirmation({ @@ -67,6 +70,10 @@ export function SendXLMForm() { }) } + const handleCancelConfirm = () => { + setConfirmation(null) + } + const buildTransaction = async (): Promise => { const server = new Horizon.Server(HORIZON_URL) const account = await server.loadAccount(publicKey!) @@ -84,11 +91,7 @@ export function SendXLMForm() { if (confirmation!.memo) { const memoText = confirmation!.memo - if (memoText.length <= 28) { - txBuilder = txBuilder.addMemo(Memo.text(memoText)) - } else { - txBuilder = txBuilder.addMemo(Memo.text(memoText.substring(0, 28))) - } + txBuilder = txBuilder.addMemo(Memo.text(memoText.substring(0, 28))) } return txBuilder.setTimeout(30).build() @@ -111,11 +114,10 @@ export function SendXLMForm() { let signedXdr: string if (connectionMethod === 'freighter') { - const signedResult = await signTransactionWithFreighter( + signedXdr = await signTransactionWithFreighter( transaction.toEnvelope().toXDR('base64'), publicKey! ) - signedXdr = signedResult } else { transaction.sign(keypair!) signedXdr = transaction.toEnvelope().toXDR('base64') @@ -133,8 +135,7 @@ export function SendXLMForm() { throw new Error(submitData.extras?.result_codes?.transaction || t('wallet.send.submitFailed')) } - const txHash = submitData.hash - setSuccessTx(txHash) + setSuccessTx(submitData.hash) reset() setConfirmation(null) } catch (err) { @@ -145,10 +146,6 @@ export function SendXLMForm() { } } - const handleCancelConfirm = () => { - setConfirmation(null) - } - if (!connected) { return (
@@ -161,12 +158,10 @@ export function SendXLMForm() {

{t('wallet.send.heading')}

-
- - + -
- - -

- {t('wallet.send.availableBalance', { balance: parseFloat(balance).toFixed(7) })} -

- {errors.amount && ( - - )} -
-
- - - + + {submitError && (

diff --git a/frontend/src/context/ToastContext.tsx b/frontend/src/context/ToastContext.tsx index 3e0dc597..ce870fc1 100644 --- a/frontend/src/context/ToastContext.tsx +++ b/frontend/src/context/ToastContext.tsx @@ -1,8 +1,6 @@ -import { createContext, useCallback, useEffect, useMemo, useState } from 'react'; +import { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react'; import type { ReactNode } from 'react'; import { ToastContainer } from '../components/common/Toast'; -import { createContext, useContext, useState, useCallback, type ReactNode } from 'react'; -import { useTranslation } from 'react-i18next'; export type ToastType = 'success' | 'error' | 'warning' | 'info'; @@ -11,7 +9,6 @@ export interface Toast { message: string; type: ToastType; duration: number; - duration?: number; } interface ToastContextValue { @@ -28,7 +25,6 @@ const defaultDurations: Record = { }; export const ToastContext = createContext(undefined); -const ToastContext = createContext(null); export function ToastProvider({ children }: { children: ReactNode }) { const [toasts, setToasts] = useState([]); @@ -39,7 +35,10 @@ export function ToastProvider({ children }: { children: ReactNode }) { const showToast = useCallback( (message: string, type: ToastType = 'info', duration = defaultDurations[type]) => { - const id = typeof crypto !== 'undefined' && 'randomUUID' in crypto ? crypto.randomUUID() : Math.random().toString(36).slice(2); + const id = + typeof crypto !== 'undefined' && 'randomUUID' in crypto + ? crypto.randomUUID() + : Math.random().toString(36).slice(2); setToasts((prev) => [...prev, { id, message, type, duration }]); @@ -52,35 +51,29 @@ export function ToastProvider({ children }: { children: ReactNode }) { useEffect(() => { const handleExternalToast = (event: Event) => { - const customEvent = event as CustomEvent<{ message?: string; type?: ToastType; duration?: number }>; + const customEvent = event as CustomEvent<{ + message?: string; + type?: ToastType; + duration?: number; + }>; const message = customEvent.detail?.message; if (!message) return; - showToast(message, customEvent.detail?.type ?? 'info', customEvent.detail?.duration ?? defaultDurations[customEvent.detail?.type ?? 'info']); + const type = customEvent.detail?.type ?? 'info'; + showToast(message, type, customEvent.detail?.duration ?? defaultDurations[type]); }; window.addEventListener('app-toast', handleExternalToast as EventListener); return () => window.removeEventListener('app-toast', handleExternalToast as EventListener); }, [showToast]); - const value = useMemo(() => ({ toasts, showToast, dismissToast }), [toasts, showToast, dismissToast]); + const value = useMemo( + () => ({ toasts, showToast, dismissToast }), + [toasts, showToast, dismissToast], + ); return ( - setToasts(prev => prev.filter(t => t.id !== id)); - }, []); - - const showToast = useCallback((message: string, type: ToastType = 'info', duration = 5000) => { - const id = Math.random().toString(36).slice(2); - setToasts(prev => [...prev, { id, message, type, duration }]); - - if (duration > 0) { - setTimeout(() => dismissToast(id), duration); - } - }, [dismissToast]); - - return ( - {children} @@ -92,19 +85,3 @@ export function useToast() { if (!context) throw new Error('useToast must be used within ToastProvider'); return context; } - -function ToastContainer({ toasts, onDismiss }: { toasts: Toast[]; onDismiss: (id: string) => void }) { - const { t } = useTranslation(); - - if (toasts.length === 0) return null; - return ( -

- {toasts.map(toast => ( -
- {toast.message} - -
- ))} -
- ); -} diff --git a/frontend/src/i18n/locales/en.json b/frontend/src/i18n/locales/en.json index d7b1d858..f661a987 100644 --- a/frontend/src/i18n/locales/en.json +++ b/frontend/src/i18n/locales/en.json @@ -302,5 +302,7 @@ "a11y.previousImage": "Previous Image (Left Arrow)", "a11y.nextImage": "Next Image (Right Arrow)", "a11y.dismiss": "Dismiss", - "a11y.viewOnStellarExplorer": "View on Stellar Explorer" + "a11y.viewOnStellarExplorer": "View on Stellar Explorer", + + "a11y.dismissNotification": "Dismiss notification" } diff --git a/frontend/src/i18n/locales/zh.json b/frontend/src/i18n/locales/zh.json index a54c0ce0..460c9875 100644 --- a/frontend/src/i18n/locales/zh.json +++ b/frontend/src/i18n/locales/zh.json @@ -302,5 +302,7 @@ "a11y.previousImage": "上一张图片(左方向键)", "a11y.nextImage": "下一张图片(右方向键)", "a11y.dismiss": "关闭", - "a11y.viewOnStellarExplorer": "在 Stellar Explorer 中查看" + "a11y.viewOnStellarExplorer": "在 Stellar Explorer 中查看", + + "a11y.dismissNotification": "关闭通知" } diff --git a/frontend/src/pages/dashboard.tsx b/frontend/src/pages/dashboard.tsx index 0642046c..8306374f 100644 --- a/frontend/src/pages/dashboard.tsx +++ b/frontend/src/pages/dashboard.tsx @@ -9,7 +9,6 @@ import { DashboardLayout } from '../components/dashboard/DashboardLayout'; import { KpiCard } from '../components/dashboard/KpiCard'; import { NetworkHealthBadge } from '../components/dashboard/NetworkHealthBadge'; import { RecentTasksTable } from '../components/dashboard/RecentTasksTable'; -import { useToast } from '../hooks/useToast'; import { Skeleton, SkeletonAvatar, SkeletonCard, SkeletonTable } from '../components/common/Skeleton'; import styles from './dashboard.module.css'; import type { TimePoint } from '../types/api'; From 9d8068001cd823f4977d800d42f84411bd471946 Mon Sep 17 00:00:00 2001 From: mananuf Date: Sun, 30 Aug 2026 17:50:44 +0100 Subject: [PATCH 3/4] feat(frontend): unify the application shell (#352) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The sidebar, top nav, and mobile drawer each carried their own copy of the navigation list, which is how they drifted apart: the drawer's labels were hardcoded English while the sidebar's were translated, and the sidebar's "Dashboard" pointed at `/` — the public landing page — rather than `/dashboard`. `layout/navigation.ts` is now the single source of truth. The sidebar, the drawer, the breadcrumb labels, and the TopNav page title all read from it, so a rename moves every surface at once. - **Grouped, collapsible sidebar.** Items are grouped (Overview / Work / Account). Collapsing hides labels and group headings visually but keeps them in the accessibility tree via `.visually-hidden`, where before they were removed from the DOM entirely and the buttons lost their names. - **Animated active state.** A single shared `layoutId` pill slides between items instead of blinking out and back in. Disabled under `prefers-reduced-motion`. - **Active matching** is exact-or-descendant, so `/tasks/new/step-2` highlights "New Task" while `/tasks/abc-123` — a detail page with no nav entry — correctly highlights nothing. - **Slide-over drawer.** The drawer now enters from the left, the side the sidebar occupies on desktop, rather than sliding up as a bottom sheet from an edge nothing else in the app uses. - **Breadcrumbs** derive labels from the nav config, render structural segments like `/tasks` as plain text instead of links that 404, and wrap rather than pushing the page sideways. - **Per-user sidebar state.** The collapsed flag is keyed by wallet (`sidebar_collapsed:`), so two people sharing a browser profile keep separate preferences. Signed-out users keep the old unscoped key, so no existing preference is dropped. Reads and writes are guarded: private-mode browsers throw on storage access, and the shell falls back to an expanded sidebar rather than failing to render. - **Breakpoint moved 768px → 1024px**, per the acceptance criteria. The threshold lives in `MOBILE_BREAKPOINT_QUERY` and in the `@media` blocks; both are commented as needing to stay in step. The skip-to-content link had no styles at all and was permanently visible; it is now off-screen until focused. Tests cover grouping, collapsed-state accessibility, descendant active matching, per-wallet persistence, storage failure, and breadcrumb construction. Resolves #352 Co-Authored-By: Claude Opus 5 (1M context) --- frontend/LAYOUT_IMPLEMENTATION.md | 305 +++++------------- frontend/src/components/layout/AppShell.css | 54 +++- .../src/components/layout/AppShell.test.tsx | 135 +++++++- frontend/src/components/layout/AppShell.tsx | 110 +++++-- frontend/src/components/layout/Breadcrumb.css | 4 + .../src/components/layout/Breadcrumb.test.tsx | 62 ++++ frontend/src/components/layout/Breadcrumb.tsx | 72 +++-- .../src/components/layout/MobileDrawer.css | 73 +++-- .../components/layout/MobileDrawer.test.tsx | 11 +- .../src/components/layout/MobileDrawer.tsx | 88 ++--- frontend/src/components/layout/Sidebar.css | 81 ++++- frontend/src/components/layout/Sidebar.tsx | 90 ++++-- frontend/src/components/layout/TopNav.tsx | 21 +- frontend/src/components/layout/navigation.ts | 63 ++++ frontend/src/i18n/locales/en.json | 7 +- frontend/src/i18n/locales/zh.json | 7 +- 16 files changed, 774 insertions(+), 409 deletions(-) create mode 100644 frontend/src/components/layout/Breadcrumb.test.tsx create mode 100644 frontend/src/components/layout/navigation.ts diff --git a/frontend/LAYOUT_IMPLEMENTATION.md b/frontend/LAYOUT_IMPLEMENTATION.md index 2e6d8884..81e80b6c 100644 --- a/frontend/LAYOUT_IMPLEMENTATION.md +++ b/frontend/LAYOUT_IMPLEMENTATION.md @@ -1,241 +1,112 @@ -# Frontend Issue #19 - Responsive Layout System Implementation +# Application shell -## ✅ **COMPLETED** - All Requirements Fulfilled +The single layout every in-app page renders inside. Introduced for the +responsive layout system (frontend issue #19) and unified for +[#352](https://github.com/Epta-Node/ai-net/issues/352), which consolidated the +per-route variations into one shell. -This implementation successfully addresses all requirements from Frontend Issue #19: "Responsive Layout System with Navigation, Sidebar, and Mobile Drawer". +## Files -## 📁 **Files Created** - -### Core Layout Components -- `src/components/layout/AppShell.tsx` - Main shell component wrapping authenticated routes -- `src/components/layout/TopNav.tsx` - Top navigation with logo, title, and wallet connection -- `src/components/layout/Sidebar.tsx` - Collapsible sidebar navigation for desktop -- `src/components/layout/MobileDrawer.tsx` - Bottom sheet drawer for mobile navigation -- `src/components/layout/Breadcrumb.tsx` - Navigation breadcrumb component -- `src/components/layout/index.ts` - Export index for layout components +### Components +- `src/components/layout/AppShell.tsx` — the shell; owns sidebar/drawer state +- `src/components/layout/TopNav.tsx` — header: page title, notifications, theme, language, wallet +- `src/components/layout/Sidebar.tsx` — collapsible grouped sidebar (desktop) +- `src/components/layout/MobileDrawer.tsx` — slide-over navigation (below 1024px) +- `src/components/layout/Breadcrumb.tsx` — breadcrumb trail +- `src/components/layout/navigation.ts` — **single source of truth for nav items and groups** +- `src/components/layout/index.ts` — barrel export ### Styling -- `src/components/layout/AppShell.css` - Main layout styling with responsive grid -- `src/components/layout/TopNav.css` - Header navigation styling -- `src/components/layout/Sidebar.css` - Desktop sidebar with collapsed states -- `src/components/layout/MobileDrawer.css` - Mobile drawer with animations -- `src/components/layout/Breadcrumb.css` - Breadcrumb navigation styling - -### Integration -- Updated `src/App.tsx` to use new AppShell layout system -- Created `src/pages/WalletPage.tsx` for wallet navigation route -- Enhanced `src/styles/global.css` with responsive design variables - -## ✅ **Acceptance Criteria Verified** - -### 1. **AppShell Component** -- ✅ Wraps all authenticated routes -- ✅ Renders sidebar + top nav consistently -- ✅ Responsive behavior for desktop and mobile - -### 2. **Sidebar State Persistence** -- ✅ Collapsed state persists across page refreshes -- ✅ Uses `localStorage` key: `sidebar_collapsed` -- ✅ Toggle functionality maintains state - -### 3. **Mobile Drawer Implementation** -- ✅ Opens on hamburger click (< 768px breakpoint) -- ✅ Closes on Escape key press -- ✅ Closes on backdrop click -- ✅ Smooth framer-motion animations - -### 4. **ARIA Compliance** -- ✅ `aria-current="page"` applied to active nav links -- ✅ `role="navigation"` on sidebar and mobile drawer -- ✅ `role="banner"` on top navigation -- ✅ `aria-expanded` on sidebar toggle button -- ✅ `aria-label` attributes for screen readers - -### 5. **TopNav Features** -- ✅ Truncates public key to `GABC...XYZ` format -- ✅ Handles keys of any length correctly -- ✅ Shows connection status with visual indicators - -### 6. **Responsive Design** -- ✅ No horizontal scroll from 320px to 1920px+ viewports -- ✅ Mobile-first responsive breakpoints -- ✅ Proper viewport handling and layout adaptation - -### 7. **Keyboard Navigation** -- ✅ Tab navigation through all nav items -- ✅ Enter/Space key activation for nav buttons -- ✅ Escape key closes mobile drawer -- ✅ Focus management for accessibility - -## 🛠 **Technical Implementation** - -### Dependencies Added -```json -{ - "framer-motion": "^10.x.x" // For smooth mobile drawer animations -} -``` - -### Key Features Implemented +Each component has a sibling `.css` file. `AppShell.css` defines the layout +custom properties (`--sidebar-width`, `--sidebar-width-collapsed`, +`--topnav-height`) that the others consume. -#### **Responsive Breakpoint System** -- Desktop: `≥ 768px` - Shows sidebar navigation -- Mobile: `< 768px` - Shows hamburger menu with bottom drawer +## Structure -#### **LocalStorage Integration** -```typescript -// Sidebar state persistence -const [sidebarCollapsed, setSidebarCollapsed] = useState( - localStorage.getItem('sidebar_collapsed') === 'true' -) - -useEffect(() => { - localStorage.setItem('sidebar_collapsed', sidebarCollapsed.toString()) -}, [sidebarCollapsed]) ``` - -#### **ARIA Accessibility Implementation** -```tsx -// Navigation roles and states - +App +└── / ......................... LandingPage (public, renders bare) +└── /* ........................ AppShell + ├── TopNav (fixed header) + ├── Sidebar (≥1024px) + ├── MobileDrawer (<1024px, when open) + └── main + ├── Breadcrumb + └── page content ``` -#### **Mobile Drawer with Framer Motion** -```tsx - -``` +`/` is the public marketing page and is deliberately outside the shell. Every +other route — including the 404 — renders inside `AppShell`, so the navigation +is assembled once rather than per route. The command palette is mounted once +beside the route tree so Ctrl/Cmd+K works everywhere without remounting on +navigation. -## 🎨 **CSS Architecture** - -### CSS Custom Properties System -```css -:root { - /* Layout Colors */ - --bg-primary: #ffffff; - --bg-secondary: #f1f5f9; - --border-color: #e2e8f0; - - /* Responsive breakpoints */ - --mobile-breakpoint: 767px; - - /* Z-index layers */ - --z-topnav: 1000; - --z-drawer: 1200; -} -``` +## Navigation config -### Responsive Grid Layout -```css -.main-content { - margin-left: 280px; /* Desktop sidebar width */ - transition: margin-left 0.3s ease; -} - -.main-content.sidebar-collapsed { - margin-left: 80px; /* Collapsed sidebar width */ -} - -@media (max-width: 767px) { - .main-content { - margin-left: 0; /* Mobile: no sidebar */ - } -} -``` +`navigation.ts` is the only place nav items are declared. The sidebar, the +mobile drawer, the breadcrumb labels, and the command palette's page results all +read from it. -## 🧪 **Testing & Validation** - -### Automated Validation Script -Created `validate-layout.cjs` which verifies: -- ✅ All required component files exist -- ✅ framer-motion dependency installed -- ✅ localStorage implementation present -- ✅ ARIA attributes in components -- ✅ Responsive CSS breakpoints defined - -**Validation Results: 10/10 (100%)** ✅ - -### Manual Testing Checklist -- ✅ Sidebar collapses/expands and state persists -- ✅ Mobile drawer opens/closes smoothly -- ✅ Navigation works at all viewport sizes -- ✅ Keyboard navigation functional -- ✅ Screen reader accessibility -- ✅ Public key truncation works correctly -- ✅ No layout overflow or horizontal scroll - -## 🚀 **Usage** - -### Integration in App.tsx -```tsx -import AppShell from './components/layout/AppShell' - -const App = () => ( - - - - - } /> - } /> - } /> - } /> - - - - -) +```ts +NAV_GROUPS // grouped, in sidebar order: Overview / Work / Account +NAV_ITEMS // flat list of every item +isNavItemActive(currentPath, itemPath) ``` -### Component Structure -``` -AppShell -├── TopNav (fixed header) -├── Sidebar (desktop navigation) -├── MobileDrawer (mobile navigation) -├── Breadcrumb (page hierarchy) -└── main[children] (page content) -``` +Before #352 each surface carried its own copy, which is how the drawer ended up +with hardcoded English labels while the sidebar was translated, and how the +sidebar's "Dashboard" ended up pointing at `/` (the public landing page) rather +than `/dashboard`. -## 📱 **Responsive Behavior** +**Active state** is an exact match or a descendant of it, so `/tasks/new/step-2` +highlights "New Task" while `/tasks/abc-123` — a detail page with no nav entry — +correctly highlights nothing. -| Viewport | Layout | Navigation | Sidebar | -|----------|---------|------------|---------| -| ≥ 768px | Desktop | Top nav + Sidebar | Collapsible | -| < 768px | Mobile | Top nav + Hamburger | Bottom drawer | +## Responsive behaviour -## ♿ **Accessibility Features** +| Viewport | Navigation | Content | +|---|---|---| +| ≥ 1024px | Top nav + collapsible sidebar | Offset by the sidebar rail | +| < 1024px | Top nav + hamburger → slide-over drawer | Full width | -- **Screen Reader Support**: Full ARIA labeling and roles -- **Keyboard Navigation**: Tab order and focus management -- **Visual Indicators**: Clear active states and hover effects -- **Responsive Touch Targets**: Minimum 44px touch areas on mobile -- **Color Contrast**: WCAG AA compliant color schemes +The breakpoint lives in two places that must agree: `MOBILE_BREAKPOINT_QUERY` in +`AppShell.tsx` decides which navigation renders, and the `@media (max-width: +1023px)` blocks decide the layout. Change one, change the other. ---- +The drawer enters from the **left**, the same side the sidebar occupies on +desktop, so navigation appears in one place at every width. Drag it left or +flick to dismiss. -## 🎯 **Issue #19 Status: COMPLETED** +## Sidebar state persistence -All acceptance criteria have been successfully implemented and validated. The responsive layout system is production-ready with: +Collapsed state is stored per user: -- ✅ Complete component architecture -- ✅ Full responsive design (320px - 1920px+) -- ✅ ARIA accessibility compliance -- ✅ Persistent sidebar state -- ✅ Smooth mobile drawer animations -- ✅ Keyboard navigation support -- ✅ Zero horizontal scroll issues -- ✅ Public key truncation -- ✅ Comprehensive testing +``` +sidebar_collapsed: // connected wallet +sidebar_collapsed // signed out +``` -The layout system provides a solid foundation for the ai-net frontend application with modern UX patterns and full accessibility support. +The unscoped key is also the key the app used before scoping existed, so no +existing preference is dropped. Reads and writes are wrapped in `try/catch`: +private-mode browsers throw on storage access, and the shell falls back to an +expanded sidebar rather than failing to render. + +## Accessibility + +- `role="banner"` on the top nav, `role="navigation"` on the sidebar and drawer +- `aria-current="page"` on the active nav item +- `aria-expanded` on the sidebar toggle and the hamburger +- Skip-to-content link, visible on focus +- Collapsing the sidebar hides labels and group headings **visually only** — + they stay in the accessibility tree via `.visually-hidden` +- Drawer: focus trap, restores focus on close, Escape and backdrop-click dismiss +- `prefers-reduced-motion` disables the sidebar and nav transitions + +## Tests + +- `AppShell.test.tsx` — shell structure, ARIA, grouping, per-wallet persistence, + active-state matching, drawer Escape +- `MobileDrawer.test.tsx` — rendering, close paths, focus trap, nav config +- `Breadcrumb.test.tsx` — trail construction, labelling, non-navigable segments +- `TopNav.test.tsx` / `TopNav.i18n.test.tsx` — title derivation, key truncation, + language switching diff --git a/frontend/src/components/layout/AppShell.css b/frontend/src/components/layout/AppShell.css index a58b1422..3d045a2b 100644 --- a/frontend/src/components/layout/AppShell.css +++ b/frontend/src/components/layout/AppShell.css @@ -1,3 +1,10 @@ +/* Desktop sidebar rail width; the collapsed rail keeps icons only. */ +:root { + --sidebar-width: 280px; + --sidebar-width-collapsed: 80px; + --topnav-height: 64px; +} + .app-shell { display: flex; flex-direction: column; @@ -5,26 +12,53 @@ overflow: hidden; } +/* + * Keyboard users land here first; it stays off-screen until focused so it does + * not disturb the visual layout. + */ +.skip-to-content { + position: absolute; + top: -100px; + left: 12px; + z-index: 2000; + padding: 10px 16px; + border-radius: 0 0 8px 8px; + background: var(--primary, #3b82f6); + color: #ffffff; + font-size: 14px; + font-weight: 600; + text-decoration: none; + transition: top 0.2s ease; +} + +.skip-to-content:focus { + top: 0; +} + .main-content { - margin-left: 280px; - margin-top: 64px; + margin-left: var(--sidebar-width); + margin-top: var(--topnav-height); padding: 24px; overflow-y: auto; transition: margin-left 0.3s ease; - min-height: calc(100vh - 64px); + min-height: calc(100vh - var(--topnav-height)); } .main-content.sidebar-collapsed { - margin-left: 80px; + margin-left: var(--sidebar-width-collapsed); } -@media (max-width: 767px) { - .main-content { - margin-left: 0; - padding: 16px; - } - +/* + * Below 1024px the sidebar rail plus a readable content column stop fitting, so + * the shell hands navigation to the slide-over drawer and the content takes the + * full width. This threshold must stay in step with MOBILE_BREAKPOINT_QUERY in + * AppShell.tsx — the JS decides which nav renders, the CSS decides the layout, + * and they have to agree. + */ +@media (max-width: 1023px) { + .main-content, .main-content.sidebar-collapsed { margin-left: 0; + padding: 16px; } } diff --git a/frontend/src/components/layout/AppShell.test.tsx b/frontend/src/components/layout/AppShell.test.tsx index f14c7587..eb3c3348 100644 --- a/frontend/src/components/layout/AppShell.test.tsx +++ b/frontend/src/components/layout/AppShell.test.tsx @@ -3,11 +3,22 @@ import { render, screen, fireEvent, act } from '@testing-library/react' import { MemoryRouter } from 'react-router-dom' import { describe, test, expect, beforeEach, vi } from 'vitest' import AppShell from './AppShell' +import i18n from 'i18next' import Sidebar from './Sidebar' import TopNav from './TopNav' +import { NAV_GROUPS, NAV_ITEMS } from './navigation' import { WalletProvider } from '../../context/WalletContext' -// Suppress framer-motion warnings in jsdom +// jsdom has no layout engine, so framer-motion's animation props are stripped +// rather than forwarded onto the DOM (React would warn about every one). +const MOTION_ONLY_PROPS = [ + 'drag', 'dragConstraints', 'dragElastic', 'onDragEnd', + 'initial', 'animate', 'exit', 'transition', 'layoutId', 'layout', +] + +const stripMotionProps = (props: Record) => + Object.fromEntries(Object.entries(props).filter(([key]) => !MOTION_ONLY_PROPS.includes(key))) + vi.mock('framer-motion', async () => { const actual = await vi.importActual('framer-motion') return { @@ -15,7 +26,14 @@ vi.mock('framer-motion', async () => { AnimatePresence: ({ children }: { children: React.ReactNode }) => <>{children}, motion: { div: React.forwardRef>( - ({ children, ...props }, ref) =>
{children}
+ ({ children, ...props }, ref) => ( +
)}>{children}
+ ) + ), + span: React.forwardRef>( + ({ children, ...props }, ref) => ( + )}>{children} + ) ), }, } @@ -79,7 +97,7 @@ describe('Sidebar aria-current', () => { test('active link changes when currentPath changes', () => { const { rerender } = render( - + ) expect(screen.getByRole('button', { name: /dashboard/i })).toHaveAttribute('aria-current', 'page') @@ -156,6 +174,117 @@ describe('Sidebar collapsed state persistence', () => { }) }) +// ─── Grouped sidebar (#352) ─────────────────────────────────────────────── + +describe('Sidebar grouping', () => { + const navigate = vi.fn() + + test('renders every nav item under a labelled group', () => { + render( + + + + ) + + NAV_GROUPS.forEach((group) => { + const heading = screen.getByRole('heading', { name: i18n.t(group.labelKey) }) + expect(heading).toBeInTheDocument() + + group.items.forEach((item) => { + expect(screen.getByRole('button', { name: i18n.t(item.labelKey) })).toBeInTheDocument() + }) + }) + }) + + test('keeps item labels in the accessibility tree while collapsed', () => { + render( + + + + ) + // Collapsing is a visual affordance; it must not remove names from AT. + NAV_ITEMS.forEach((item) => { + expect(screen.getByRole('button', { name: i18n.t(item.labelKey) })).toBeInTheDocument() + }) + }) + + test('highlights a nav item for a descendant route', () => { + render( + + + + ) + expect(screen.getByRole('button', { name: 'New Task' })).toHaveAttribute('aria-current', 'page') + }) + + test('highlights nothing for a task detail route, which has no nav entry', () => { + render( + + + + ) + expect(screen.getByRole('button', { name: 'New Task' })).not.toHaveAttribute('aria-current') + expect(screen.getByRole('button', { name: 'Task History' })).not.toHaveAttribute('aria-current') + }) + + test('navigates to the dashboard route, not the public landing page', () => { + const onNavigate = vi.fn() + render( + + + + ) + fireEvent.click(screen.getByRole('button', { name: 'Dashboard' })) + expect(onNavigate).toHaveBeenCalledWith('/dashboard') + }) +}) + +// ─── Per-user sidebar persistence (#352) ────────────────────────────────── + +describe('Sidebar state is scoped to the connected wallet', () => { + const WALLET = 'GABCDEFGHIJKLMNOPQRSTUVWXYZ012345678901234567890123456789' + + beforeEach(() => localStorage.clear()) + + test('a connected wallet writes to its own key, leaving the anonymous one alone', async () => { + localStorage.setItem('wallet_pubkey', WALLET) + renderInShell() + + const toggleBtn = screen.getByRole('button', { name: /collapse sidebar/i }) + await act(async () => { fireEvent.click(toggleBtn) }) + + expect(localStorage.getItem(`sidebar_collapsed:${WALLET}`)).toBe('true') + expect(localStorage.getItem('sidebar_collapsed')).toBeNull() + }) + + test('a wallet reads back its own preference, not another wallet\'s', () => { + localStorage.setItem('sidebar_collapsed', 'false') + localStorage.setItem(`sidebar_collapsed:${WALLET}`, 'true') + localStorage.setItem('wallet_pubkey', WALLET) + + renderInShell() + expect(document.querySelector('.sidebar')).toHaveClass('collapsed') + }) + + test('survives a localStorage that throws for the sidebar key', () => { + // Private-mode browsers throw on storage access. Only the sidebar key is + // made to throw here, so the assertion is about the shell's own guard and + // not about how any other provider handles storage. + const getItem = Storage.prototype.getItem + Storage.prototype.getItem = function (key: string) { + if (key.startsWith('sidebar_collapsed')) throw new Error('storage disabled') + return getItem.call(this, key) + } + try { + expect(() => renderInShell()).not.toThrow() + // Falls back to the expanded sidebar rather than rendering nothing. + expect(document.querySelector('.sidebar')).not.toHaveClass('collapsed') + } finally { + Storage.prototype.getItem = getItem + } + }) +}) + // ─── Mobile drawer Escape key ───────────────────────────────────────────── describe('Mobile drawer keyboard', () => { diff --git a/frontend/src/components/layout/AppShell.tsx b/frontend/src/components/layout/AppShell.tsx index 4e14c694..b3173686 100644 --- a/frontend/src/components/layout/AppShell.tsx +++ b/frontend/src/components/layout/AppShell.tsx @@ -1,7 +1,9 @@ -import React, { useState, useEffect, useRef } from 'react' +import React, { useState, useEffect, useRef, useCallback } from 'react' import { useLocation, useNavigate } from 'react-router-dom' +import { useTranslation } from 'react-i18next' import { AnimatePresence } from 'framer-motion' import { useMediaQuery } from '../../hooks/useMediaQuery' +import { useWallet } from '../../context/WalletContext' import Sidebar from './Sidebar' import TopNav from './TopNav' import MobileDrawer from './MobileDrawer' @@ -12,31 +14,80 @@ interface AppShellProps { children: React.ReactNode } +/** + * Below this width the sidebar gives way to the slide-over drawer. 1024px is + * where the sidebar rail plus a readable content column stops fitting. + */ +export const MOBILE_BREAKPOINT_QUERY = '(max-width: 1023px)' + +const SIDEBAR_STATE_KEY = 'sidebar_collapsed' + +/** + * Storage key for the sidebar's collapsed state, scoped to the connected + * wallet. + * + * Two people sharing a browser profile each keep their own preference, and a + * signed-out visitor gets the unscoped key — which is also the key the app used + * before scoping existed, so nobody's existing preference is silently dropped. + */ +function sidebarStateKey(publicKey: string | null): string { + return publicKey ? `${SIDEBAR_STATE_KEY}:${publicKey}` : SIDEBAR_STATE_KEY +} + +function readSidebarState(publicKey: string | null): boolean { + try { + return localStorage.getItem(sidebarStateKey(publicKey)) === 'true' + } catch { + // Private-mode browsers can throw on access; an expanded sidebar is the + // safe default. + return false + } +} + +/** + * The single application shell. + * + * Every in-app route renders inside this component, so the top nav, sidebar, + * drawer, and breadcrumb behave identically on every page rather than being + * assembled differently per route. + */ const AppShell: React.FC = ({ children }) => { - const isMobile = useMediaQuery('(max-width: 767px)') + const { t } = useTranslation() + const isMobile = useMediaQuery(MOBILE_BREAKPOINT_QUERY) + const { publicKey } = useWallet() const [isDrawerOpen, setIsDrawerOpen] = useState(false) - const [sidebarCollapsed, setSidebarCollapsed] = useState( - localStorage.getItem('sidebar_collapsed') === 'true' - ) + const [sidebarCollapsed, setSidebarCollapsed] = useState(() => readSidebarState(publicKey)) const location = useLocation() const navigate = useNavigate() const drawerRef = useRef(null) + // Re-read when the identity changes, so connecting a wallet adopts that + // wallet's saved preference instead of carrying over the anonymous one. + useEffect(() => { + setSidebarCollapsed(readSidebarState(publicKey)) + }, [publicKey]) + useEffect(() => { - if (isMobile === false) { + if (!isMobile) { setIsDrawerOpen(false) } }, [isMobile]) useEffect(() => { - localStorage.setItem('sidebar_collapsed', sidebarCollapsed.toString()) - }, [sidebarCollapsed]) + try { + localStorage.setItem(sidebarStateKey(publicKey), String(sidebarCollapsed)) + } catch { + // Persistence is a convenience; losing it must not break the shell. + } + }, [sidebarCollapsed, publicKey]) useEffect(() => { setIsDrawerOpen(false) }, [location.pathname]) useEffect(() => { + if (!isDrawerOpen) return + const handleEscape = (e: KeyboardEvent) => { if (e.key === 'Escape') { setIsDrawerOpen(false) @@ -49,10 +100,8 @@ const AppShell: React.FC = ({ children }) => { } } - if (isDrawerOpen) { - document.addEventListener('keydown', handleEscape) - document.addEventListener('mousedown', handleClickOutside) - } + document.addEventListener('keydown', handleEscape) + document.addEventListener('mousedown', handleClickOutside) return () => { document.removeEventListener('keydown', handleEscape) @@ -60,33 +109,41 @@ const AppShell: React.FC = ({ children }) => { } }, [isDrawerOpen]) - const toggleSidebar = () => { - setSidebarCollapsed(!sidebarCollapsed) - } + const toggleSidebar = useCallback(() => { + setSidebarCollapsed((prev) => !prev) + }, []) - const toggleDrawer = () => { - setIsDrawerOpen(!isDrawerOpen) - } + const toggleDrawer = useCallback(() => { + setIsDrawerOpen((prev) => !prev) + }, []) + + const handleNavigate = useCallback( + (path: string) => { + navigate(path) + setIsDrawerOpen(false) + }, + [navigate], + ) return ( -
+
- Skip to content + {t('a11y.skipToContent')} - - + {!isMobile && ( - )} @@ -96,10 +153,7 @@ const AppShell: React.FC = ({ children }) => { ref={drawerRef} onClose={() => setIsDrawerOpen(false)} currentPath={location.pathname} - onNavigate={(path) => { - navigate(path) - setIsDrawerOpen(false) - }} + onNavigate={handleNavigate} /> )} diff --git a/frontend/src/components/layout/Breadcrumb.css b/frontend/src/components/layout/Breadcrumb.css index e3aa185c..85d03925 100644 --- a/frontend/src/components/layout/Breadcrumb.css +++ b/frontend/src/components/layout/Breadcrumb.css @@ -5,6 +5,10 @@ .breadcrumb ol { display: flex; align-items: center; + /* Wrap instead of overflowing: a deep trail must never make the page scroll + sideways on a narrow viewport. */ + flex-wrap: wrap; + row-gap: 4px; list-style: none; margin: 0; padding: 0; diff --git a/frontend/src/components/layout/Breadcrumb.test.tsx b/frontend/src/components/layout/Breadcrumb.test.tsx new file mode 100644 index 00000000..a1a2ad9d --- /dev/null +++ b/frontend/src/components/layout/Breadcrumb.test.tsx @@ -0,0 +1,62 @@ +import { render, screen } from '@testing-library/react' +import { MemoryRouter } from 'react-router-dom' +import { describe, test, expect } from 'vitest' +import Breadcrumb from './Breadcrumb' + +const renderAt = (path: string) => + render( + + + , + ) + +describe('Breadcrumb', () => { + test('renders nothing on the landing page', () => { + const { container } = renderAt('/') + expect(container).toBeEmptyDOMElement() + }) + + test('renders nothing at the in-app root — the trail would be one link to itself', () => { + const { container } = renderAt('/dashboard') + expect(container).toBeEmptyDOMElement() + }) + + test('is exposed as a labelled navigation landmark', () => { + renderAt('/agents') + expect(screen.getByRole('navigation', { name: 'Breadcrumb' })).toBeInTheDocument() + }) + + test('links back to the dashboard from a nested page', () => { + renderAt('/agents') + expect(screen.getByRole('link', { name: 'Dashboard' })).toHaveAttribute('href', '/dashboard') + }) + + test('marks the current page with aria-current and does not link it', () => { + renderAt('/agents') + const current = screen.getByText('Agents') + expect(current).toHaveAttribute('aria-current', 'page') + expect(screen.queryByRole('link', { name: 'Agents' })).not.toBeInTheDocument() + }) + + test('labels a segment from the shared nav config', () => { + renderAt('/tasks/new') + expect(screen.getByText('New Task')).toBeInTheDocument() + }) + + test('renders the "/tasks" segment as plain text — there is no page at that path', () => { + renderAt('/tasks/history') + const tasks = screen.getByText('Tasks') + expect(tasks).toBeInTheDocument() + expect(screen.queryByRole('link', { name: 'Tasks' })).not.toBeInTheDocument() + }) + + test('names a task detail page by its id', () => { + renderAt('/tasks/abc-123') + expect(screen.getByText('Task abc-123')).toBeInTheDocument() + }) + + test('falls back to a capitalised segment for an unknown route', () => { + renderAt('/settings') + expect(screen.getByText('Settings')).toBeInTheDocument() + }) +}) diff --git a/frontend/src/components/layout/Breadcrumb.tsx b/frontend/src/components/layout/Breadcrumb.tsx index 148624d8..a5e0d543 100644 --- a/frontend/src/components/layout/Breadcrumb.tsx +++ b/frontend/src/components/layout/Breadcrumb.tsx @@ -1,52 +1,68 @@ import React from 'react' import { useTranslation } from 'react-i18next' import { useLocation, Link } from 'react-router-dom' +import { NAV_ITEMS } from './navigation' import './Breadcrumb.css' +/** Root of the in-app hierarchy. `/` is the public landing page, not this. */ +const HOME_PATH = '/dashboard' + +/** + * Segments that exist only as URL structure and have no page of their own. + * They render as plain text rather than a link that would 404. + */ +const NON_NAVIGABLE_PREFIXES = new Set(['/tasks']) + +/** + * Breadcrumb trail derived from the current pathname. + * + * Labels come from the shared nav config where a segment corresponds to a real + * nav destination, so a rename in one place moves the sidebar and the trail + * together. + */ const Breadcrumb: React.FC = () => { const { t } = useTranslation() const location = useLocation() - const pathnames = location.pathname.split('/').filter(Boolean) - - const getBreadcrumbLabel = (path: string, index: number) => { - const fullPath = '/' + pathnames.slice(0, index + 1).join('/') - - switch (fullPath) { - case '/': return t('nav.dashboard') - case '/tasks': return t('nav.tasks') - case '/tasks/new': return t('nav.newTask') - case '/agents': return t('nav.agents') - case '/wallet': return t('nav.wallet') - default: - if (fullPath.startsWith('/tasks/') && pathnames.length > 1) { - return t('nav.taskWithId', { id: pathnames[1] }) - } - return path.charAt(0).toUpperCase() + path.slice(1) + const segments = location.pathname.split('/').filter(Boolean) + + const labelFor = (fullPath: string, segment: string, index: number): string => { + const navItem = NAV_ITEMS.find((item) => item.path === fullPath) + if (navItem) return t(navItem.labelKey) + + if (fullPath === '/tasks') return t('nav.tasks') + // `/tasks/` — a detail page, named by the id it is showing. + if (index === 1 && segments[0] === 'tasks') { + return t('nav.taskWithId', { id: segment }) } + return segment.charAt(0).toUpperCase() + segment.slice(1) } - if (pathnames.length === 0) { - return null - } + // Nothing above the root to show a trail for. + if (segments.length === 0) return null + const isAtHome = location.pathname === HOME_PATH + if (isAtHome) return null return (