diff --git a/creator-keys/src/events.rs b/creator-keys/src/events.rs index 77ce0a92..ad1b22bf 100644 --- a/creator-keys/src/events.rs +++ b/creator-keys/src/events.rs @@ -386,7 +386,10 @@ pub struct CoCreatorSetEvent { pub split_bps: u32, } -pub fn co_creator_set_topics(creator_id: &Address, co_creator: &Address) -> (Symbol, Address, Address) { +pub fn co_creator_set_topics( + creator_id: &Address, + co_creator: &Address, +) -> (Symbol, Address, Address) { ( CO_CREATOR_SET_EVENT_NAME, creator_id.clone(), @@ -1269,64 +1272,6 @@ pub fn royalty_updated_topics(creator: &Address) -> (Symbol, Address) { (ROYALTY_UPDATED_EVENT_NAME, creator.clone()) } -/// Event name for the protocol trade fee collected on a buy or sell. -pub const FEE_COLLECTED_EVENT_NAME: Symbol = symbol_short!("fee_coll"); - -/// Event name for a sell rejected by the anti-flash-trade lockup window. -pub const LOCKUP_BLOCKED_EVENT_NAME: Symbol = symbol_short!("lck_blk"); - -/// Stable fee collection event payload for downstream indexers. -/// -/// Event shape: -/// - topics: `(FEE_COLLECTED_EVENT_NAME, treasury)` -/// - data: `FeeCollectedEvent` -/// -/// Emitted on every buy and sell once the protocol trade fee is configured, -/// carrying the deducted amount and the treasury address that received it. -#[derive(Clone, Debug, Eq, PartialEq)] -#[contracttype] -pub struct FeeCollectedEvent { - /// Treasury address that received the fee. - pub treasury: Address, - /// Fee amount deducted from the trade. - pub amount: i128, - /// Ledger sequence number at the time of the trade. - pub ledger: u32, -} - -/// Shared fee collected event topics tuple. -pub fn fee_collected_topics(treasury: &Address) -> (Symbol, Address) { - (FEE_COLLECTED_EVENT_NAME, treasury.clone()) -} - -/// Stable lockup-blocked event payload for downstream indexers. -/// -/// Event shape: -/// - topics: `(LOCKUP_BLOCKED_EVENT_NAME, creator_id, seller)` -/// - data: `LockupBlockedEvent` -/// -/// Emitted when a sell is rejected because the seller's most recent buy for -/// this creator falls inside the configured lockup window. -#[derive(Clone, Debug, Eq, PartialEq)] -#[contracttype] -pub struct LockupBlockedEvent { - /// Creator whose keys the seller attempted to sell. - pub creator_id: Address, - /// Seller whose sale was rejected. - pub seller: Address, - /// Ledger timestamp of the seller's most recent buy. - pub last_buy_timestamp: u64, - /// Timestamp at which the lockup expires (exclusive). - pub unlock_at: u64, - /// Ledger timestamp at rejection. - pub current_timestamp: u64, -} - -/// Shared lockup blocked event topics tuple. -pub fn lockup_blocked_topics(creator: &Address, seller: &Address) -> (Symbol, Address, Address) { - (LOCKUP_BLOCKED_EVENT_NAME, creator.clone(), seller.clone()) -} - /// Event name for a new staking position created via `stake_keys_locked`. pub const STAKE_EVENT_NAME: Symbol = symbol_short!("stake"); @@ -1360,7 +1305,11 @@ pub struct StakeEvent { } /// Shared stake event topics tuple. -pub fn stake_topics(creator: &Address, holder: &Address, stake_id: u32) -> (Symbol, Address, Address, u32) { +pub fn stake_topics( + creator: &Address, + holder: &Address, + stake_id: u32, +) -> (Symbol, Address, Address, u32) { (STAKE_EVENT_NAME, creator.clone(), holder.clone(), stake_id) } @@ -1390,7 +1339,12 @@ pub fn stake_extended_topics( holder: &Address, stake_id: u32, ) -> (Symbol, Address, Address, u32) { - (STAKE_EXTENDED_EVENT_NAME, creator.clone(), holder.clone(), stake_id) + ( + STAKE_EXTENDED_EVENT_NAME, + creator.clone(), + holder.clone(), + stake_id, + ) } /// Stable early-unstake event payload for downstream indexers. @@ -1423,7 +1377,12 @@ pub fn early_unstake_topics( holder: &Address, stake_id: u32, ) -> (Symbol, Address, Address, u32) { - (EARLY_UNSTAKE_EVENT_NAME, creator.clone(), holder.clone(), stake_id) + ( + EARLY_UNSTAKE_EVENT_NAME, + creator.clone(), + holder.clone(), + stake_id, + ) } /// Stable stake-reward-claim event payload for downstream indexers. @@ -1456,10 +1415,14 @@ pub fn stake_reward_claimed_topics( holder: &Address, stake_id: u32, ) -> (Symbol, Address, Address, u32) { - (STAKE_REWARD_CLAIMED_EVENT_NAME, creator.clone(), holder.clone(), stake_id) + ( + STAKE_REWARD_CLAIMED_EVENT_NAME, + creator.clone(), + holder.clone(), + stake_id, + ) } - // ============================================================================ // Launch Penalty (#798) // ============================================================================ @@ -1488,7 +1451,11 @@ pub fn launch_penalty_applied_topics( creator: &Address, seller: &Address, ) -> (Symbol, Address, Address) { - (LAUNCH_PENALTY_APPLIED_EVENT_NAME, creator.clone(), seller.clone()) + ( + LAUNCH_PENALTY_APPLIED_EVENT_NAME, + creator.clone(), + seller.clone(), + ) } /// Event name for set_launch_penalty. @@ -1510,3 +1477,69 @@ pub struct LaunchPenaltySetEvent { pub fn launch_penalty_set_topics(creator: &Address) -> (Symbol, Address) { (LAUNCH_PENALTY_SET_EVENT_NAME, creator.clone()) } + +// --- Co-creator removal, auction, and staking reward events --- + +/// Event name for co-creator removal. +pub const CO_CREATOR_REMOVED_EVENT_NAME: Symbol = symbol_short!("co_rem"); + +/// Event name for auction configuration. +pub const AUCTION_CONFIGURED_EVENT_NAME: Symbol = symbol_short!("auc_cfg"); + +/// Event name for auction cancellation. +pub const AUCTION_CANCELLED_EVENT_NAME: Symbol = symbol_short!("auc_can"); + +/// Event name for a purchase made during a creator's auction phase. +pub const AUCTION_PURCHASE_EVENT_NAME: Symbol = symbol_short!("auc_buy"); + +#[derive(Clone, Debug, Eq, PartialEq)] +#[contracttype] +pub struct CoCreatorRemovedEvent { + pub creator_id: Address, + pub co_creator: Address, + pub ledger: u32, +} + +pub fn co_creator_removed_topics(creator: &Address) -> (Symbol, Address) { + (CO_CREATOR_REMOVED_EVENT_NAME, creator.clone()) +} + +#[derive(Clone, Debug, Eq, PartialEq)] +#[contracttype] +pub struct AuctionConfiguredEvent { + pub creator_id: Address, + pub auction_price: i128, + pub auction_supply: u32, +} + +pub fn auction_configured_topics(creator: &Address) -> (Symbol, Address) { + (AUCTION_CONFIGURED_EVENT_NAME, creator.clone()) +} + +#[derive(Clone, Debug, Eq, PartialEq)] +#[contracttype] +pub struct AuctionCancelledEvent { + pub creator_id: Address, + pub auction_price: i128, + pub auction_supply: u32, +} + +pub fn auction_cancelled_topics(creator: &Address) -> (Symbol, Address) { + (AUCTION_CANCELLED_EVENT_NAME, creator.clone()) +} + +#[derive(Clone, Debug, Eq, PartialEq)] +#[contracttype] +pub struct AuctionPurchaseEvent { + pub buyer: Address, + pub creator_id: Address, + pub quantity: u32, + pub price_paid: i128, + pub new_supply: u32, + pub auction_sold: u32, + pub ledger: u32, +} + +pub fn auction_purchase_topics(creator: &Address, buyer: &Address) -> (Symbol, Address, Address) { + (AUCTION_PURCHASE_EVENT_NAME, creator.clone(), buyer.clone()) +} diff --git a/creator-keys/src/lib.rs b/creator-keys/src/lib.rs index 8d4b9d9e..486a8be7 100644 --- a/creator-keys/src/lib.rs +++ b/creator-keys/src/lib.rs @@ -79,6 +79,16 @@ pub enum ContractError { MaxHoldingExceeded = 51, LockupPeriodActive = 52, InvalidHolderCap = 53, + GlobalTradingHalted = 54, + FrozenBalanceExceeded = 55, + FreezeQuantityExceedsBalance = 56, + SnapshotHolderLimitExceeded = 57, + FlashLoanDetected = 58, + SnapshotAlreadyExists = 59, + KeyAlreadyInitialised = 60, + NameTooLong = 61, + BioTooLong = 62, + SplitTooHigh = 63, } /// Errors raised by the staking lifecycle entrypoints @@ -107,21 +117,31 @@ pub enum StakingError { NotRegistered = 7, /// The contract is paused. ProtocolPaused = 8, - GlobalTradingHalted = 51, - /// `set_co_creator`'s `split_bps` exceeded the 9000 (90%) cap (issue #782). - SplitTooHigh = 52, - /// `take_snapshot` called with a `snapshot_id` already used for the creator (issue #778). - SnapshotAlreadyExists = 53, - /// `take_snapshot`'s `holders` list exceeded [`MAX_SNAPSHOT_HOLDERS`] (issue #778). - SnapshotHolderLimitExceeded = 54, - /// `initialise_key` called for a `creator` that already has metadata (issue #779). - KeyAlreadyInitialised = 55, - /// `initialise_key`'s `name` exceeded 64 bytes (issue #779). - NameTooLong = 56, - /// `initialise_key`'s `bio` exceeded 256 bytes (issue #779). - BioTooLong = 57, - /// `sell_key` attempted in the same ledger as the holder's last buy (issue #781). - FlashLoanDetected = 58, +} + +#[contracterror] +#[derive(Copy, Clone, Debug, Eq, PartialEq, PartialOrd, Ord)] +#[repr(u32)] +/// Error variants for the co-creator removal, pre-launch auction, and +/// staking reward claim entrypoints. +/// +/// These live in a separate error type from [`ContractError`] rather than as +/// additional variants there: the Soroban contract spec format caps a single +/// `#[contracterror]` enum at 50 cases (`SCSpecUDTErrorEnumV0.cases<50>`), +/// and `ContractError` is already at that limit. +pub enum FeatureError { + Unauthorized = 1, + NotRegistered = 2, + Overflow = 3, + ProtocolPaused = 4, + NotPositiveAmount = 5, + NoCoCreatorSet = 6, + AuctionAlreadyStarted = 7, + NoAuctionConfigured = 8, + InvalidAuctionConfig = 9, + StakeLockActive = 10, + NoStakeFound = 11, + CreatorNotFound = 12, } pub mod fee { @@ -446,6 +466,14 @@ pub mod constants { DataKey::StakingRewardsPool(creator.clone()) } + pub fn total_staked(creator: &Address) -> DataKey { + DataKey::TotalStaked(creator.clone()) + } + + pub fn stake_unlock_ledger(creator: &Address, holder: &Address) -> DataKey { + DataKey::StakeUnlockLedger(creator.clone(), holder.clone()) + } + pub fn created_at_ledger(creator: &Address) -> DataKey { DataKey::CreatedAtLedger(creator.clone()) } @@ -454,6 +482,10 @@ pub mod constants { DataKey::LaunchPenaltyBps(creator.clone()) } + pub fn auction_config(creator: &Address) -> DataKey { + DataKey::AuctionConfig(creator.clone()) + } + pub fn next_stake_id(creator: &Address, holder: &Address) -> StakingKey { StakingKey::NextStakeId(creator.clone(), holder.clone()) } @@ -494,10 +526,6 @@ pub mod constants { DataKey::HolderCapBps(creator.clone()) } - pub fn last_buy_timestamp(creator: &Address, holder: &Address) -> DataKey { - DataKey::LastBuyTimestamp(creator.clone(), holder.clone()) - } - pub fn royalty_config(creator: &Address) -> DataKey { DataKey::RoyaltyConfig(creator.clone()) } @@ -546,14 +574,6 @@ pub mod constants { DataKey::VestingClaimed(creator.clone(), beneficiary.clone()) } - pub fn holder_cap_bps(creator: &Address) -> DataKey { - DataKey::HolderCapBps(creator.clone()) - } - - pub fn last_buy_timestamp(creator: &Address, holder: &Address) -> DataKey { - DataKey::LastBuyTimestamp(creator.clone(), holder.clone()) - } - pub fn quorum_bps(creator: &Address) -> DataKey { DataKey::QuorumBps(creator.clone()) } @@ -697,6 +717,9 @@ pub const KEY_DECIMALS: u32 = 7; /// buy or sell operation to prevent active creator state from expiring. pub const CREATOR_TTL_LEDGERS: u32 = 6311520; // ~2 years at 5s per ledger +/// Maximum staking lock extension from the current ledger (~180 days at 5 seconds per ledger). +pub const MAX_STAKE_LOCK_LEDGERS: u32 = 3_110_400; + /// Minimum remaining TTL (in ledgers) that triggers a TTL extension event. /// /// When the creator key's remaining TTL drops strictly below this threshold, @@ -810,10 +833,6 @@ pub const MAX_BATCH_BUY_SIZE: usize = 5; /// Maximum royalty fee basis points (5%). pub const MAX_ROYALTY_BPS: u32 = 500; -/// Maximum number of keys a pre-launch auction can allocate at the fixed -/// auction price before the bonding curve takes over. -pub const MAX_AUCTION_SUPPLY: u32 = 10_000; - /// Lock duration for staked keys before a reward claim is permitted (30 days /// at 5s per ledger). pub const STAKE_LOCK_LEDGERS: u32 = 518_400; @@ -831,6 +850,10 @@ pub const DEFAULT_LAUNCH_PENALTY_BPS: u32 = 500; /// Maximum launch penalty basis points (20%). pub const MAX_LAUNCH_PENALTY_BPS: u32 = 2_000; +/// Maximum number of keys a pre-launch auction can allocate at the fixed +/// auction price before the bonding curve takes over. +pub const MAX_AUCTION_SUPPLY: u32 = 10_000; + #[derive(Clone, Copy, Debug, Eq, PartialEq)] #[contracttype] pub enum CurvePreset { @@ -932,6 +955,25 @@ pub enum DataKey { /// (creator, holder) -> timestamp of the holder's most recent buy, used by /// the anti-flash-trade sell lockup window (#784). LastBuyTimestamp(Address, Address), + ProtocolFeeBps, + HolderCapBps(Address), + LockupDurationSecs, + /// Per-creator staking position. Keyed `(creator, holder, stake_id)`. + StakePosition(Address, Address, u32), + /// Per-creator staking rewards pool and cross-holder staked-key total, + /// funded by a share of protocol trade fees. + StakingRewardsPool(Address), + /// Total keys staked across all holders for a creator. + TotalStaked(Address), + /// Ledger sequence when a holder's stake unlocks. + StakeUnlockLedger(Address, Address), + /// Ledger sequence when the first key was bought for a creator (launch date). + CreatedAtLedger(Address), + /// Custom launch penalty basis points for a creator (0 = use default). + LaunchPenaltyBps(Address), + /// Configuration for a creator's fixed-price pre-launch auction phase. + AuctionConfig(Address), + QuorumBps(Address), /// Protocol-wide emergency trading halt flag (#784). When `true`, every /// buy and sell is rejected regardless of per-key pause state. GlobalTradingPaused, @@ -941,6 +983,26 @@ pub enum DataKey { SelfFrozenBalance(Address, Address), } +/// Internal staking account keys that are not part of the public data-key ABI. +/// +/// Used to keep [`DataKey`] within Soroban's 50-variant `#[contracttype]` cap; +/// `NextStakeId` is keyed per `(creator, holder)` pair. +#[derive(Clone, Debug, PartialEq)] +#[contracttype] +pub enum StakingKey { + /// Next sequential stake id for a `(creator, holder)` pair -> `u32`. + NextStakeId(Address, Address), +} + +/// Configuration for a creator's fixed-price pre-launch auction phase. +#[derive(Clone, Debug, PartialEq)] +#[contracttype] +pub struct AuctionConfig { + pub auction_price: i128, + pub auction_supply: u32, + pub auction_sold: u32, +} + /// Time-locked key allocation for creator self-vesting. /// /// When a creator registers, they may optionally lock a portion of keys @@ -953,6 +1015,54 @@ pub struct LockedAllocation { pub claimed: bool, } +/// Active position in the creator's staking rewards pool. +#[derive(Clone, Debug, PartialEq)] +#[contracttype] +pub struct StakePosition { + /// Sequential id scoped to the `(creator, holder)` pair. + pub stake_id: u32, + /// Number of keys locked in this position. + pub amount: u32, + /// Ledger sequence at which the position matures and can be claimed. + pub unlock_ledger: u32, +} + +/// Per-creator staking rewards accounting. +#[derive(Clone, Debug, PartialEq)] +#[contracttype] +pub struct StakingRewardsState { + /// Accumulated reward pool, funded from a share of protocol trade fees. + pub pool: i128, + /// Total keys currently staked for the creator across all holders. + pub total_staked: u32, +} + +/// Result of [`CreatorKeysContract::early_unstake`]. +#[derive(Clone, Debug, PartialEq)] +#[contracttype] +pub struct StakeExit { + /// Id of the closed position. + pub stake_id: u32, + /// Keys released back to the holder's liquid balance. + pub amount: u32, + /// Pro-rata reward entitlement removed from the pool. + pub forgone_reward: i128, + /// Penalty retained in the pool (added back after the forgone reward is removed). + pub penalty: i128, +} + +/// Result of [`CreatorKeysContract::claim_stake_reward`]. +#[derive(Clone, Debug, PartialEq)] +#[contracttype] +pub struct StakeRewardClaim { + /// Id of the closed position. + pub stake_id: u32, + /// Keys released back to the holder's liquid balance. + pub amount: u32, + /// Reward paid out to the staker from the pool. + pub reward: i128, +} + /// Optional immutable collaborator split configured at creator registration. /// /// `share_bps` is the co-creator's share of the creator fee, not of the full @@ -1257,7 +1367,9 @@ fn available_holder_balance(env: &Env, key_id: &Address, wallet: &Address) -> u3 .persistent() .get(&constants::storage::staked_balance(key_id, wallet)) .unwrap_or(0u32); - total.saturating_sub(staked).saturating_sub(read_self_frozen_balance(env, key_id, wallet)) + total + .saturating_sub(staked) + .saturating_sub(read_self_frozen_balance(env, key_id, wallet)) } /// Reads a creator's current key supply from persistent storage. @@ -1360,6 +1472,15 @@ fn credit_creator_fee_recipient_balance( Ok(()) } +/// Credits `amount` to the creator fee balance for `creator`. +fn credit_creator_fee_balance( + env: &Env, + creator: &Address, + amount: i128, +) -> Result<(), ContractError> { + credit_creator_fee_recipient_balance(env, creator, amount) +} + fn read_co_creator_config(env: &Env, creator: &Address) -> Option { let key = constants::storage::co_creator(creator); env.storage() @@ -1766,14 +1887,14 @@ fn credit_staking_rewards_pool( return Ok(()); } let pool_key = constants::storage::staking_rewards_pool(creator); - let mut state: StakingRewardsState = env - .storage() - .persistent() - .get(&pool_key) - .unwrap_or(StakingRewardsState { - pool: 0, - total_staked: 0, - }); + let mut state: StakingRewardsState = + env.storage() + .persistent() + .get(&pool_key) + .unwrap_or(StakingRewardsState { + pool: 0, + total_staked: 0, + }); state.pool = state .pool .checked_add(share) @@ -1809,7 +1930,9 @@ fn sub_staked_balance(env: &Env, creator: &Address, holder: &Address, amount: u3 if new_staked == 0 { env.storage().persistent().remove(&staked_balance_key); } else { - env.storage().persistent().set(&staked_balance_key, &new_staked); + env.storage() + .persistent() + .set(&staked_balance_key, &new_staked); extend_key_ttl_to_full_window(env, &staked_balance_key); } } @@ -1825,14 +1948,6 @@ fn read_lockup_duration_secs(env: &Env) -> Option { .get(&constants::storage::LOCKUP_DURATION_SECS) } -/// Reads the accumulated staking rewards pool balance for a creator, returning `0` when none is stored. -pub fn read_staking_rewards_pool(env: &Env, creator: &Address) -> i128 { - env.storage() - .persistent() - .get(&constants::storage::staking_rewards_pool(creator)) - .unwrap_or(0) -} - /// Reads the total keys currently staked across all holders for a creator. pub fn read_total_staked(env: &Env, creator: &Address) -> u32 { env.storage() @@ -1841,33 +1956,6 @@ pub fn read_total_staked(env: &Env, creator: &Address) -> u32 { .unwrap_or(0) } -/// Routes a share of a protocol fee collection into the creator's staking rewards pool. -/// -/// This is additive bookkeeping on top of the existing treasury/protocol-fee-recipient -/// split — it does not reduce what those balances receive, so existing fee-accounting -/// invariants are unaffected. [`CreatorKeysContract::claim_stake_reward`] pays stakers -/// out of this dedicated pool. -fn credit_staking_rewards_pool( - env: &Env, - creator: &Address, - protocol_fee: i128, -) -> Result<(), ContractError> { - if protocol_fee <= 0 { - return Ok(()); - } - let share = fee::apply_percentage_fee(protocol_fee, STAKING_REWARD_SHARE_BPS) - .ok_or(ContractError::Overflow)?; - if share <= 0 { - return Ok(()); - } - let key = constants::storage::staking_rewards_pool(creator); - let updated = read_staking_rewards_pool(env, creator) - .checked_add(share) - .ok_or(ContractError::Overflow)?; - env.storage().persistent().set(&key, &updated); - Ok(()) -} - /// Archive retention configuration module with canonical defaults. pub mod retention { use super::PartitionStrategy; @@ -2643,25 +2731,32 @@ impl CreatorKeysContract { .ok_or(ContractError::Overflow)?; let post_price = compute_bonding_curve_price(&env, &creator, base_price, post_supply)?; - if pre_price > 0 && post_price > pre_price { - let price_change = (post_price - pre_price) as u128; - let pre_price_u128 = pre_price as u128; - let threshold_pct_u128 = threshold_pct as u128; - if price_change - .checked_mul(100) - .ok_or(ContractError::Overflow)? - >= pre_price_u128 - .checked_mul(threshold_pct_u128) + let threshold_pct: u32 = env + .storage() + .persistent() + .get(&constants::storage::CIRCUIT_BREAKER_THRESHOLD) + .unwrap_or(30); + + if pre_price > 0 && post_price > pre_price { + let price_change = (post_price - pre_price) as u128; + let pre_price_u128 = pre_price as u128; + let threshold_pct_u128 = threshold_pct as u128; + if price_change + .checked_mul(100) .ok_or(ContractError::Overflow)? - { - env.events().publish( - (events::circuit_breaker_triggered_topics(),), - events::CircuitBreakerTriggeredEvent { - pre_price, - post_price, - }, - ); - return Err(ContractError::CircuitBreakerTriggered); + >= pre_price_u128 + .checked_mul(threshold_pct_u128) + .ok_or(ContractError::Overflow)? + { + env.events().publish( + (events::circuit_breaker_triggered_topics(),), + events::CircuitBreakerTriggeredEvent { + pre_price, + post_price, + }, + ); + return Err(ContractError::CircuitBreakerTriggered); + } } pre_price @@ -2945,9 +3040,7 @@ impl CreatorKeysContract { .unwrap_or(0); let liquid_balance = current_balance .saturating_sub(staked_balance) - .saturating_sub(read_self_frozen_balance( - &env, &creator, &seller, - )); + .saturating_sub(read_self_frozen_balance(&env, &creator, &seller)); if liquid_balance == 0 { return Err(ContractError::InsufficientBalance); @@ -3037,9 +3130,8 @@ impl CreatorKeysContract { // Launch penalty: if the sell occurs within the launch window // (7 days / 120,960 ledgers of the key's creation), deduct a // configurable penalty from the proceeds and credit it to the - // staking rewards pool. + // creator fee balance. let proceeds = compute_sell_proceeds(&env, price).unwrap_or(0); - let mut final_proceeds = proceeds; if let Some(created_at) = env .storage() @@ -3047,9 +3139,7 @@ impl CreatorKeysContract { .get::(&constants::storage::created_at_ledger(&creator)) { let current_ledger = env.ledger().sequence(); - if current_ledger - .checked_sub(created_at) - .unwrap_or(u32::MAX) + if current_ledger.checked_sub(created_at).unwrap_or(u32::MAX) < crate::LAUNCH_PENALTY_WINDOW_LEDGERS { let penalty_bps: u32 = env @@ -3060,13 +3150,9 @@ impl CreatorKeysContract { let capped_bps = penalty_bps.min(crate::MAX_LAUNCH_PENALTY_BPS); if capped_bps > 0 { let penalty_amount = - crate::fee::apply_percentage_fee(proceeds, capped_bps) - .unwrap_or(0); + crate::fee::apply_percentage_fee(proceeds, capped_bps).unwrap_or(0); if penalty_amount > 0 { - final_proceeds = final_proceeds - .checked_sub(penalty_amount) - .ok_or(ContractError::Overflow)?; - credit_staking_rewards_pool(&env, &creator, penalty_amount)?; + credit_creator_fee_balance(&env, &creator, penalty_amount)?; env.events().publish( events::launch_penalty_applied_topics(&creator, &seller), events::LaunchPenaltyAppliedEvent { @@ -3493,11 +3579,24 @@ impl CreatorKeysContract { } let key = constants::storage::self_frozen_balance(&key_id, &wallet); let frozen = read_self_frozen_balance(&env, &key_id, &wallet); - env.storage().persistent().set(&key, &frozen.checked_add(quantity).ok_or(ContractError::Overflow)?); + env.storage().persistent().set( + &key, + &frozen + .checked_add(quantity) + .ok_or(ContractError::Overflow)?, + ); extend_key_ttl_to_full_window(&env, &key); env.events().publish( - (events::SELF_FREEZE_APPLIED_EVENT_NAME, key_id.clone(), wallet.clone()), - events::SelfFreezeEvent { key_id, wallet, quantity }, + ( + events::SELF_FREEZE_APPLIED_EVENT_NAME, + key_id.clone(), + wallet.clone(), + ), + events::SelfFreezeEvent { + key_id, + wallet, + quantity, + }, ); Ok(()) } @@ -3526,8 +3625,16 @@ impl CreatorKeysContract { extend_key_ttl_to_full_window(&env, &key); } env.events().publish( - (events::SELF_FREEZE_LIFTED_EVENT_NAME, key_id.clone(), wallet.clone()), - events::SelfFreezeEvent { key_id, wallet, quantity }, + ( + events::SELF_FREEZE_LIFTED_EVENT_NAME, + key_id.clone(), + wallet.clone(), + ), + events::SelfFreezeEvent { + key_id, + wallet, + quantity, + }, ); Ok(()) } @@ -3851,6 +3958,48 @@ impl CreatorKeysContract { env.storage().persistent().get(&key) } + /// Removes the configured co-creator for `creator`. + /// + /// Only the key creator can call this (`caller` must match `creator`). + /// Once removed, future key purchases will direct 100% of the creator fee + /// to the creator, leaving previously accrued co-creator balances intact. + /// + /// # Errors + /// + /// - [`FeatureError::Unauthorized`] if `caller` is not `creator` + /// - [`FeatureError::NoCoCreatorSet`] if no co-creator is currently configured + pub fn remove_co_creator( + env: Env, + creator: Address, + caller: Address, + ) -> Result<(), FeatureError> { + caller.require_auth(); + + if caller != creator { + return Err(FeatureError::Unauthorized); + } + + let co_creator_key = constants::storage::co_creator(&creator); + let config: CoCreatorConfig = env + .storage() + .persistent() + .get(&co_creator_key) + .ok_or(FeatureError::NoCoCreatorSet)?; + + env.storage().persistent().remove(&co_creator_key); + + env.events().publish( + events::co_creator_removed_topics(&creator), + events::CoCreatorRemovedEvent { + creator_id: creator, + co_creator: config.address, + ledger: env.ledger().sequence(), + }, + ); + + Ok(()) + } + /// Read-only view: returns the optional immutable co-creator config. /// /// Returns `None` when the creator was registered without a co-creator split. @@ -3858,6 +4007,113 @@ impl CreatorKeysContract { read_co_creator_config(&env, &creator) } + /// Configures a fixed-price pre-launch auction phase for `creator`'s keys. + /// + /// Callable only by the creator before any keys have been sold (`supply == 0`). + /// While active, the first `auction_supply` keys are sold at `auction_price` + /// regardless of the bonding curve formula. Once `auction_supply` keys have + /// been purchased, subsequent buys transition smoothly to the bonding curve. + /// + /// # Errors + /// + /// - [`FeatureError::Unauthorized`] if `caller` is not `creator` + /// - [`FeatureError::NotRegistered`] if `creator` is not a registered creator + /// - [`FeatureError::AuctionAlreadyStarted`] if the creator's supply is already nonzero + /// - [`FeatureError::NotPositiveAmount`] if `auction_price` is not positive + /// - [`FeatureError::InvalidAuctionConfig`] if `auction_supply` is zero or exceeds + /// [`MAX_AUCTION_SUPPLY`] + pub fn configure_auction( + env: Env, + creator: Address, + caller: Address, + auction_price: i128, + auction_supply: u32, + ) -> Result<(), FeatureError> { + caller.require_auth(); + if caller != creator { + return Err(FeatureError::Unauthorized); + } + + let profile = read_registered_creator_profile(&env, &creator) + .map_err(|_| FeatureError::NotRegistered)?; + if profile.supply > 0 { + return Err(FeatureError::AuctionAlreadyStarted); + } + if auction_price <= 0 { + return Err(FeatureError::NotPositiveAmount); + } + if auction_supply == 0 || auction_supply > MAX_AUCTION_SUPPLY { + return Err(FeatureError::InvalidAuctionConfig); + } + + let config = AuctionConfig { + auction_price, + auction_supply, + auction_sold: 0, + }; + let key = constants::storage::auction_config(&creator); + env.storage().persistent().set(&key, &config); + extend_key_ttl_to_full_window(&env, &key); + + env.events().publish( + events::auction_configured_topics(&creator), + events::AuctionConfiguredEvent { + creator_id: creator, + auction_price, + auction_supply, + }, + ); + + Ok(()) + } + + /// Cancels a creator's configured auction before any auction keys have sold. + /// + /// Only callable by the creator. + /// + /// # Errors + /// + /// - [`FeatureError::Unauthorized`] if `caller` is not `creator` + /// - [`FeatureError::NoAuctionConfigured`] if no auction config exists for `creator` + /// - [`FeatureError::AuctionAlreadyStarted`] if `auction_sold` is greater than zero + pub fn cancel_auction(env: Env, creator: Address, caller: Address) -> Result<(), FeatureError> { + caller.require_auth(); + if caller != creator { + return Err(FeatureError::Unauthorized); + } + + let key = constants::storage::auction_config(&creator); + let config: AuctionConfig = env + .storage() + .persistent() + .get(&key) + .ok_or(FeatureError::NoAuctionConfigured)?; + + if config.auction_sold > 0 { + return Err(FeatureError::AuctionAlreadyStarted); + } + + env.storage().persistent().remove(&key); + + env.events().publish( + events::auction_cancelled_topics(&creator), + events::AuctionCancelledEvent { + creator_id: creator, + auction_price: config.auction_price, + auction_supply: config.auction_supply, + }, + ); + + Ok(()) + } + + /// Read-only view: returns the configured auction state for a creator, if any. + pub fn get_auction_config(env: Env, creator: Address) -> Option { + env.storage() + .persistent() + .get(&constants::storage::auction_config(&creator)) + } + /// Designates (or updates) the creator's co-creator revenue split (issue #782). /// /// Unlike the immutable split optionally set at [`Self::register_creator`], this @@ -5343,11 +5599,7 @@ impl CreatorKeysContract { /// Returns the next sequential stake id for a `(creator, holder)` pair. fn next_stake_id(env: &Env, creator: &Address, holder: &Address) -> Result { let id_key = constants::storage::next_stake_id(creator, holder); - let next: u32 = env - .storage() - .persistent() - .get(&id_key) - .unwrap_or(0); + let next: u32 = env.storage().persistent().get(&id_key).unwrap_or(0); let new_next = next.checked_add(1).ok_or(StakingError::Overflow)?; env.storage().persistent().set(&id_key, &new_next); env.storage() @@ -5388,7 +5640,8 @@ impl CreatorKeysContract { let balance_key = constants::storage::key_balance(&creator, &holder); let current_balance: u32 = env.storage().persistent().get(&balance_key).unwrap_or(0); - let current_staked: u32 = Self::get_staked_balance(env.clone(), creator.clone(), holder.clone()); + let current_staked: u32 = + Self::get_staked_balance(env.clone(), creator.clone(), holder.clone()); let liquid_balance = current_balance.saturating_sub(current_staked); if liquid_balance < amount { return Err(StakingError::InsufficientBalance); @@ -5423,14 +5676,14 @@ impl CreatorKeysContract { // Track the cross-holder staked total for reward distribution. let pool_key = constants::storage::staking_rewards_pool(&creator); - let mut state: StakingRewardsState = env - .storage() - .persistent() - .get(&pool_key) - .unwrap_or(StakingRewardsState { - pool: 0, - total_staked: 0, - }); + let mut state: StakingRewardsState = + env.storage() + .persistent() + .get(&pool_key) + .unwrap_or(StakingRewardsState { + pool: 0, + total_staked: 0, + }); state.total_staked = state .total_staked .checked_add(amount) @@ -5528,14 +5781,14 @@ impl CreatorKeysContract { } let pool_key = constants::storage::staking_rewards_pool(&creator); - let mut state: StakingRewardsState = env - .storage() - .persistent() - .get(&pool_key) - .unwrap_or(StakingRewardsState { - pool: 0, - total_staked: 0, - }); + let mut state: StakingRewardsState = + env.storage() + .persistent() + .get(&pool_key) + .unwrap_or(StakingRewardsState { + pool: 0, + total_staked: 0, + }); // Pro-rata share of the current pool this position would have earned at // maturity. Guard division by zero. @@ -5544,11 +5797,9 @@ impl CreatorKeysContract { } else { 0 }; - let penalty = fee::apply_percentage_fee( - reward_share, - crate::staking::EARLY_UNSTAKE_PENALTY_BPS, - ) - .ok_or(StakingError::Overflow)?; + let penalty = + fee::apply_percentage_fee(reward_share, crate::staking::EARLY_UNSTAKE_PENALTY_BPS) + .ok_or(StakingError::Overflow)?; // Remove the entitlement, then retain the penalty on behalf of the // remaining stakers: pool' = pool - entitlement + penalty. @@ -5621,14 +5872,14 @@ impl CreatorKeysContract { } let pool_key = constants::storage::staking_rewards_pool(&creator); - let mut state: StakingRewardsState = env - .storage() - .persistent() - .get(&pool_key) - .unwrap_or(StakingRewardsState { - pool: 0, - total_staked: 0, - }); + let mut state: StakingRewardsState = + env.storage() + .persistent() + .get(&pool_key) + .unwrap_or(StakingRewardsState { + pool: 0, + total_staked: 0, + }); let reward = if state.total_staked > 0 { (i128::from(position.amount) * state.pool) / i128::from(state.total_staked) @@ -5685,7 +5936,9 @@ impl CreatorKeysContract { ) -> Option { env.storage() .persistent() - .get(&constants::storage::staking_position(&creator, &holder, stake_id)) + .get(&constants::storage::staking_position( + &creator, &holder, stake_id, + )) } /// Read-only view: returns the current staking rewards pool for `creator`. @@ -8048,3 +8301,6 @@ mod test_issues; #[cfg(test)] mod test_issues_778_779_781_782; + +#[cfg(test)] +mod test_staking_lifecycle; diff --git a/creator-keys/src/test_issues.rs b/creator-keys/src/test_issues.rs index f852f16a..71bd20d2 100644 --- a/creator-keys/src/test_issues.rs +++ b/creator-keys/src/test_issues.rs @@ -4,7 +4,10 @@ #[cfg(test)] mod issue_tests { - use soroban_sdk::{testutils::Address as _, Address, Env, String, Vec}; + use soroban_sdk::{ + testutils::{Address as _, Ledger}, + Address, Env, String, Vec, + }; use crate::{ compute_bonding_curve_price, constants, ContractError, CreatorKeysContract, @@ -289,6 +292,7 @@ mod issue_tests { soroban_sdk::vec![&env, buyer.clone()], ); + env.ledger().with_mut(|l| l.sequence_number += 1); for _ in 0..4 { client.sell_key(&creator, &buyer, &None); } diff --git a/creator-keys/src/test_issues_778_779_781_782.rs b/creator-keys/src/test_issues_778_779_781_782.rs index 5da617ab..34d3c539 100644 --- a/creator-keys/src/test_issues_778_779_781_782.rs +++ b/creator-keys/src/test_issues_778_779_781_782.rs @@ -4,7 +4,10 @@ //! (flash-loan guard), and #782 (settable co-creator revenue split). use crate::{ContractError, CreatorKeysContract, CreatorKeysContractClient, RegisterCreatorParams}; -use soroban_sdk::{testutils::Address as _, Address, Bytes, Env, String, Vec}; +use soroban_sdk::{ + testutils::{Address as _, Ledger}, + Address, Bytes, Env, String, Vec, +}; fn setup_test() -> (Env, CreatorKeysContractClient<'static>, Address, Address) { let env = Env::default(); @@ -15,8 +18,10 @@ fn setup_test() -> (Env, CreatorKeysContractClient<'static>, Address, Address) { let admin = Address::generate(&env); let treasury = Address::generate(&env); - client.initialize(&admin, &treasury, &100i128); + client.set_protocol_admin(&admin, &admin); + client.set_key_price(&admin, &100i128); client.set_fee_config(&admin, &9000u32, &1000u32); + client.set_protocol_fee_recipient(&admin, &treasury); (env, client, admin, treasury) } @@ -253,11 +258,8 @@ fn test_set_co_creator_splits_fee_on_buy() { client.buy_key(&creator, &buyer, &1000i128, &None); // price=100, creator_bps=9000 -> creator_fee=90. 20% of 90 = 18 to co-creator. - assert_eq!( - client.get_co_creator_fee_balance(&creator, &co_creator).unwrap(), - 18 - ); - assert_eq!(client.get_creator_fee_balance(&creator).unwrap(), 72); + assert_eq!(client.get_co_creator_fee_balance(&creator, &co_creator), 18); + assert_eq!(client.get_creator_fee_balance(&creator), 72); } #[test] @@ -272,9 +274,9 @@ fn test_set_co_creator_splits_fee_on_sell() { client.set_co_creator(&creator, &co_creator, &2000u32); // 20% env.ledger().with_mut(|l| l.sequence_number += 1); - let balance_before = client.get_co_creator_fee_balance(&creator, &co_creator).unwrap(); + let balance_before = client.get_co_creator_fee_balance(&creator, &co_creator); client.sell_key(&creator, &trader, &None); - let balance_after = client.get_co_creator_fee_balance(&creator, &co_creator).unwrap(); + let balance_after = client.get_co_creator_fee_balance(&creator, &co_creator); assert!(balance_after > balance_before); } diff --git a/creator-keys/src/test_staking_lifecycle.rs b/creator-keys/src/test_staking_lifecycle.rs index 5f526f1c..1ab4da1a 100644 --- a/creator-keys/src/test_staking_lifecycle.rs +++ b/creator-keys/src/test_staking_lifecycle.rs @@ -36,7 +36,13 @@ mod staking_lifecycle_tests { /// reward-pool accumulation start from an empty pool; tests that need fee /// accrual call `set_protocol_fee` explicitly. /// Returns `(env, client, admin, creator, treasury)`. - fn setup() -> (Env, CreatorKeysContractClient<'static>, Address, Address, Address) { + fn setup() -> ( + Env, + CreatorKeysContractClient<'static>, + Address, + Address, + Address, + ) { let env = Env::default(); env.mock_all_auths(); @@ -71,11 +77,7 @@ mod staking_lifecycle_tests { /// Enables the 10% protocol trade fee so every buy accrues the staking /// rewards pool (`REWARD_SHARE_PER_BUY` per buy). - fn enable_fee_accrual( - client: &CreatorKeysContractClient, - admin: &Address, - treasury: &Address, - ) { + fn enable_fee_accrual(client: &CreatorKeysContractClient, admin: &Address, treasury: &Address) { client.set_protocol_fee(admin, &Some(PROTOCOL_FEE_BPS), treasury); } @@ -121,7 +123,9 @@ mod staking_lifecycle_tests { assert_eq!(client.get_staked_balance(&creator, &holder), 10); // Verify the stored staking position. - let position = client.get_staking_position(&creator, &holder, &stake_id).unwrap(); + let position = client + .get_staking_position(&creator, &holder, &stake_id) + .unwrap(); assert_eq!(position.stake_id, 0); assert_eq!(position.amount, 10); assert_eq!(position.unlock_ledger, start_seq + lock_ledgers); @@ -187,8 +191,12 @@ mod staking_lifecycle_tests { assert_eq!(client.get_staking_rewards_pool(&creator), 12); // Sanity: both positions share the same maturity (same start ledger). - let p0 = client.get_staking_position(&creator, &holder, &pos0).unwrap(); - let p1 = client.get_staking_position(&creator, &holder, &pos1).unwrap(); + let p0 = client + .get_staking_position(&creator, &holder, &pos0) + .unwrap(); + let p1 = client + .get_staking_position(&creator, &holder, &pos1) + .unwrap(); let base_unlock = start_seq + lock_ledgers; assert_eq!(p0.unlock_ledger, base_unlock); assert_eq!(p1.unlock_ledger, base_unlock); @@ -211,11 +219,15 @@ mod staking_lifecycle_tests { let additional = 50u32; let extended_unlock = client.stake_extend(&creator, &holder, &pos1, &additional); assert_eq!(extended_unlock, base_unlock + additional); - let p1_ext = client.get_staking_position(&creator, &holder, &pos1).unwrap(); + let p1_ext = client + .get_staking_position(&creator, &holder, &pos1) + .unwrap(); assert_eq!(p1_ext.unlock_ledger, base_unlock + additional); // Position 0 still matures at the original ledger. - let p0_after = client.get_staking_position(&creator, &holder, &pos0).unwrap(); + let p0_after = client + .get_staking_position(&creator, &holder, &pos0) + .unwrap(); assert_eq!(p0_after.unlock_ledger, base_unlock); // ----------------------------------------------------------------- @@ -238,7 +250,9 @@ mod staking_lifecycle_tests { assert_eq!(client.get_staking_rewards_pool(&creator), 62); assert_eq!(client.get_total_staked(&creator), 10); // Position is closed and keys return to the liquid balance. - assert!(client.get_staking_position(&creator, &holder, &pos0).is_none()); + assert!(client + .get_staking_position(&creator, &holder, &pos0) + .is_none()); assert_eq!(client.get_staked_balance(&creator, &holder), 10); assert_eq!(client.get_liquid_balance(&creator, &holder), 2); @@ -271,7 +285,9 @@ mod staking_lifecycle_tests { // Pool is fully drained and no positions remain. assert_eq!(client.get_staking_rewards_pool(&creator), 0); assert_eq!(client.get_total_staked(&creator), 0); - assert!(client.get_staking_position(&creator, &holder, &pos1).is_none()); + assert!(client + .get_staking_position(&creator, &holder, &pos1) + .is_none()); // All 12 of the holder's keys are back in liquid balance. assert_eq!(client.get_staked_balance(&creator, &holder), 0); assert_eq!(client.get_liquid_balance(&creator, &holder), 12); @@ -298,7 +314,9 @@ mod staking_lifecycle_tests { ); // A positive extension succeeds. let new_unlock = client.stake_extend(&creator, &holder, &pos, &25u32); - let stored = client.get_staking_position(&creator, &holder, &pos).unwrap(); + let stored = client + .get_staking_position(&creator, &holder, &pos) + .unwrap(); assert_eq!(stored.unlock_ledger, new_unlock); } @@ -310,7 +328,10 @@ mod staking_lifecycle_tests { let lock_ledgers = 100u32; let pos = client.stake_keys_locked(&creator, &holder, &1u32, &lock_ledgers); - let unlock = client.get_staking_position(&creator, &holder, &pos).unwrap().unlock_ledger; + let unlock = client + .get_staking_position(&creator, &holder, &pos) + .unwrap() + .unlock_ledger; // Claim while still locked reverts. assert!(env.ledger().sequence() < unlock); @@ -328,7 +349,10 @@ mod staking_lifecycle_tests { let lock_ledgers = 100u32; let pos = client.stake_keys_locked(&creator, &holder, &4u32, &lock_ledgers); - let unlock = client.get_staking_position(&creator, &holder, &pos).unwrap().unlock_ledger; + let unlock = client + .get_staking_position(&creator, &holder, &pos) + .unwrap() + .unlock_ledger; // Advance past maturity without any fees accruing: reward is 0 since the // pool never accrued, but keys are still returned. diff --git a/creator-keys/test_snapshots/test_balance_after_buys_then_sells.1.json b/creator-keys/test_snapshots/test_balance_after_buys_then_sells.1.json index 5d54adc8..b7a1bc63 100644 --- a/creator-keys/test_snapshots/test_balance_after_buys_then_sells.1.json +++ b/creator-keys/test_snapshots/test_balance_after_buys_then_sells.1.json @@ -267,7 +267,7 @@ ], "ledger": { "protocol_version": 22, - "sequence_number": 0, + "sequence_number": 1, "timestamp": 0, "network_id": "0000000000000000000000000000000000000000000000000000000000000000", "base_reserve": 0, @@ -275,6 +275,51 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -405,13 +450,13 @@ }, "durability": "persistent", "val": { - "u32": 6311520 + "u32": 6311521 } } }, "ext": "v0" }, - 6311520 + 6311521 ] ], [ @@ -510,7 +555,7 @@ }, "ext": "v0" }, - 6311520 + 6311521 ] ], [ @@ -564,7 +609,7 @@ }, "ext": "v0" }, - 6311520 + 6311521 ] ], [ @@ -615,7 +660,7 @@ }, "ext": "v0" }, - 6311520 + 6311521 ] ], [ @@ -660,6 +705,57 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -971,7 +1067,7 @@ }, "ext": "v0" }, - 6311999 + 6312000 ] ], [ @@ -1004,7 +1100,7 @@ }, "ext": "v0" }, - 6311999 + 6312000 ] ], [ diff --git a/creator-keys/test_snapshots/test_balance_after_sequence_of_buys_and_sells.1.json b/creator-keys/test_snapshots/test_balance_after_sequence_of_buys_and_sells.1.json index 1f14e24d..3c0f6e90 100644 --- a/creator-keys/test_snapshots/test_balance_after_sequence_of_buys_and_sells.1.json +++ b/creator-keys/test_snapshots/test_balance_after_sequence_of_buys_and_sells.1.json @@ -232,7 +232,7 @@ ], "ledger": { "protocol_version": 22, - "sequence_number": 0, + "sequence_number": 2, "timestamp": 0, "network_id": "0000000000000000000000000000000000000000000000000000000000000000", "base_reserve": 0, @@ -240,6 +240,51 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -370,13 +415,13 @@ }, "durability": "persistent", "val": { - "u32": 6311520 + "u32": 6311522 } } }, "ext": "v0" }, - 6311520 + 6311522 ] ], [ @@ -475,7 +520,7 @@ }, "ext": "v0" }, - 6311520 + 6311522 ] ], [ @@ -529,7 +574,7 @@ }, "ext": "v0" }, - 6311520 + 6311522 ] ], [ @@ -574,6 +619,57 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 1 + } + } + }, + "ext": "v0" + }, + 6311521 + ] + ], [ { "contract_data": { @@ -735,7 +831,7 @@ }, "ext": "v0" }, - 6311999 + 6312000 ] ], [ @@ -768,7 +864,7 @@ }, "ext": "v0" }, - 6311999 + 6312000 ] ], [ @@ -834,7 +930,7 @@ }, "ext": "v0" }, - 6311999 + 6312001 ] ], [ @@ -867,7 +963,7 @@ }, "ext": "v0" }, - 6311999 + 6312001 ] ], [ diff --git a/creator-keys/test_snapshots/test_balance_with_non_zero_initial.1.json b/creator-keys/test_snapshots/test_balance_with_non_zero_initial.1.json index 6246977d..78ef2b8c 100644 --- a/creator-keys/test_snapshots/test_balance_with_non_zero_initial.1.json +++ b/creator-keys/test_snapshots/test_balance_with_non_zero_initial.1.json @@ -325,7 +325,7 @@ ], "ledger": { "protocol_version": 22, - "sequence_number": 0, + "sequence_number": 1, "timestamp": 0, "network_id": "0000000000000000000000000000000000000000000000000000000000000000", "base_reserve": 0, @@ -333,6 +333,51 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -463,13 +508,13 @@ }, "durability": "persistent", "val": { - "u32": 6311520 + "u32": 6311521 } } }, "ext": "v0" }, - 6311520 + 6311521 ] ], [ @@ -568,7 +613,7 @@ }, "ext": "v0" }, - 6311520 + 6311521 ] ], [ @@ -622,7 +667,7 @@ }, "ext": "v0" }, - 6311520 + 6311521 ] ], [ @@ -673,7 +718,7 @@ }, "ext": "v0" }, - 6311520 + 6311521 ] ], [ @@ -718,6 +763,57 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 1 + } + } + }, + "ext": "v0" + }, + 6311521 + ] + ], [ { "contract_data": { @@ -766,7 +862,7 @@ }, "ext": "v0" }, - 6311520 + 6311521 ] ], [ @@ -897,7 +993,7 @@ }, "ext": "v0" }, - 6311999 + 6312000 ] ], [ @@ -963,7 +1059,7 @@ }, "ext": "v0" }, - 6311999 + 6312000 ] ], [ @@ -1095,7 +1191,7 @@ }, "ext": "v0" }, - 6311999 + 6312000 ] ], [ @@ -1128,7 +1224,7 @@ }, "ext": "v0" }, - 6311999 + 6312000 ] ], [ diff --git a/creator-keys/test_snapshots/test_buy_credits_creator_fee_recipient_balance_by_bps_amount.1.json b/creator-keys/test_snapshots/test_buy_credits_creator_fee_recipient_balance_by_bps_amount.1.json index 241aa448..9a5dbb5d 100644 --- a/creator-keys/test_snapshots/test_buy_credits_creator_fee_recipient_balance_by_bps_amount.1.json +++ b/creator-keys/test_snapshots/test_buy_credits_creator_fee_recipient_balance_by_bps_amount.1.json @@ -202,6 +202,51 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -691,6 +736,57 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -823,6 +919,71 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "StakingRewardsPool" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "StakingRewardsPool" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "pool" + }, + "val": { + "i128": { + "hi": 0, + "lo": 10 + } + } + }, + { + "key": { + "symbol": "total_staked" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { diff --git a/creator-keys/test_snapshots/test_buy_event_buyer_address_field_is_non_zero.1.json b/creator-keys/test_snapshots/test_buy_event_buyer_address_field_is_non_zero.1.json index 900b1712..f7e4c50c 100644 --- a/creator-keys/test_snapshots/test_buy_event_buyer_address_field_is_non_zero.1.json +++ b/creator-keys/test_snapshots/test_buy_event_buyer_address_field_is_non_zero.1.json @@ -112,6 +112,51 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -497,6 +542,57 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { diff --git a/creator-keys/test_snapshots/test_buy_event_buyer_address_matches_caller.1.json b/creator-keys/test_snapshots/test_buy_event_buyer_address_matches_caller.1.json index 900b1712..f7e4c50c 100644 --- a/creator-keys/test_snapshots/test_buy_event_buyer_address_matches_caller.1.json +++ b/creator-keys/test_snapshots/test_buy_event_buyer_address_matches_caller.1.json @@ -112,6 +112,51 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -497,6 +542,57 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { diff --git a/creator-keys/test_snapshots/test_buy_key_event_includes_payment_amount.1.json b/creator-keys/test_snapshots/test_buy_key_event_includes_payment_amount.1.json index 697025f4..0273e9d3 100644 --- a/creator-keys/test_snapshots/test_buy_key_event_includes_payment_amount.1.json +++ b/creator-keys/test_snapshots/test_buy_key_event_includes_payment_amount.1.json @@ -112,6 +112,51 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -497,6 +542,57 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { diff --git a/creator-keys/test_snapshots/test_buy_key_event_topics_include_creator_and_buyer.1.json b/creator-keys/test_snapshots/test_buy_key_event_topics_include_creator_and_buyer.1.json index 214143ea..791a4bc9 100644 --- a/creator-keys/test_snapshots/test_buy_key_event_topics_include_creator_and_buyer.1.json +++ b/creator-keys/test_snapshots/test_buy_key_event_topics_include_creator_and_buyer.1.json @@ -112,6 +112,51 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -497,6 +542,57 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { diff --git a/creator-keys/test_snapshots/test_buy_key_sufficient_payment_succeeds.1.json b/creator-keys/test_snapshots/test_buy_key_sufficient_payment_succeeds.1.json index 4e15bbb1..480f44c3 100644 --- a/creator-keys/test_snapshots/test_buy_key_sufficient_payment_succeeds.1.json +++ b/creator-keys/test_snapshots/test_buy_key_sufficient_payment_succeeds.1.json @@ -113,6 +113,51 @@ "min_temp_entry_ttl": 16, "max_entry_ttl": 6312000, "ledger_entries": [ + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -498,6 +543,57 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { diff --git a/creator-keys/test_snapshots/test_buy_quote_fees_sum_to_total_minus_price.1.json b/creator-keys/test_snapshots/test_buy_quote_fees_sum_to_total_minus_price.1.json index 88f9db17..6f53175f 100644 --- a/creator-keys/test_snapshots/test_buy_quote_fees_sum_to_total_minus_price.1.json +++ b/creator-keys/test_snapshots/test_buy_quote_fees_sum_to_total_minus_price.1.json @@ -231,6 +231,51 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -720,6 +765,57 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -852,6 +948,71 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "StakingRewardsPool" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "StakingRewardsPool" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "pool" + }, + "val": { + "i128": { + "hi": 0, + "lo": 20 + } + } + }, + { + "key": { + "symbol": "total_staked" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { diff --git a/creator-keys/test_snapshots/test_buy_quote_monotonic_with_zero_creator_fee.1.json b/creator-keys/test_snapshots/test_buy_quote_monotonic_with_zero_creator_fee.1.json index 534c6cc0..6c5132dd 100644 --- a/creator-keys/test_snapshots/test_buy_quote_monotonic_with_zero_creator_fee.1.json +++ b/creator-keys/test_snapshots/test_buy_quote_monotonic_with_zero_creator_fee.1.json @@ -200,6 +200,51 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -689,6 +734,57 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -821,6 +917,71 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "StakingRewardsPool" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "StakingRewardsPool" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "pool" + }, + "val": { + "i128": { + "hi": 0, + "lo": 50 + } + } + }, + { + "key": { + "symbol": "total_staked" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { diff --git a/creator-keys/test_snapshots/test_buy_quote_monotonic_with_zero_protocol_fee.1.json b/creator-keys/test_snapshots/test_buy_quote_monotonic_with_zero_protocol_fee.1.json index d27da282..00f8012c 100644 --- a/creator-keys/test_snapshots/test_buy_quote_monotonic_with_zero_protocol_fee.1.json +++ b/creator-keys/test_snapshots/test_buy_quote_monotonic_with_zero_protocol_fee.1.json @@ -200,6 +200,51 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -689,6 +734,57 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { diff --git a/creator-keys/test_snapshots/test_buy_quote_multiple_creators_independent_monotonicity.1.json b/creator-keys/test_snapshots/test_buy_quote_multiple_creators_independent_monotonicity.1.json index 164aab5a..59be2b2a 100644 --- a/creator-keys/test_snapshots/test_buy_quote_multiple_creators_independent_monotonicity.1.json +++ b/creator-keys/test_snapshots/test_buy_quote_multiple_creators_independent_monotonicity.1.json @@ -275,6 +275,96 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -1155,6 +1245,108 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -1338,6 +1530,136 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "StakingRewardsPool" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "StakingRewardsPool" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "pool" + }, + "val": { + "i128": { + "hi": 0, + "lo": 20 + } + } + }, + { + "key": { + "symbol": "total_staked" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "StakingRewardsPool" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "StakingRewardsPool" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "pool" + }, + "val": { + "i128": { + "hi": 0, + "lo": 20 + } + } + }, + { + "key": { + "symbol": "total_staked" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { diff --git a/creator-keys/test_snapshots/test_buy_quote_price_point_1_is_stable.1.json b/creator-keys/test_snapshots/test_buy_quote_price_point_1_is_stable.1.json index e447c105..d80ebe18 100644 --- a/creator-keys/test_snapshots/test_buy_quote_price_point_1_is_stable.1.json +++ b/creator-keys/test_snapshots/test_buy_quote_price_point_1_is_stable.1.json @@ -200,6 +200,51 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -689,6 +734,57 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { diff --git a/creator-keys/test_snapshots/test_buy_quote_price_point_large_is_stable.1.json b/creator-keys/test_snapshots/test_buy_quote_price_point_large_is_stable.1.json index c6c6677a..dec96def 100644 --- a/creator-keys/test_snapshots/test_buy_quote_price_point_large_is_stable.1.json +++ b/creator-keys/test_snapshots/test_buy_quote_price_point_large_is_stable.1.json @@ -200,6 +200,51 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -689,6 +734,57 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -821,6 +917,71 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "StakingRewardsPool" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "StakingRewardsPool" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "pool" + }, + "val": { + "i128": { + "hi": 0, + "lo": 10000 + } + } + }, + { + "key": { + "symbol": "total_staked" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { diff --git a/creator-keys/test_snapshots/test_buy_quote_price_unchanged_across_multiple_buyers_small_range.1.json b/creator-keys/test_snapshots/test_buy_quote_price_unchanged_across_multiple_buyers_small_range.1.json index 8f7852d8..10e7ead3 100644 --- a/creator-keys/test_snapshots/test_buy_quote_price_unchanged_across_multiple_buyers_small_range.1.json +++ b/creator-keys/test_snapshots/test_buy_quote_price_unchanged_across_multiple_buyers_small_range.1.json @@ -470,6 +470,51 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -2397,7 +2442,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -2420,7 +2465,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -2432,7 +2477,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -2448,7 +2493,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -2471,7 +2516,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -2483,7 +2528,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -2499,7 +2544,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -2522,7 +2567,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -2534,7 +2579,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -2550,7 +2595,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -2573,7 +2618,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -2585,7 +2630,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -2601,7 +2646,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -2624,7 +2669,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -2636,7 +2681,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -2652,7 +2697,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -2675,7 +2720,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -2687,7 +2732,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -2703,7 +2748,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -2726,7 +2771,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -2738,7 +2783,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -2754,7 +2799,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -2777,7 +2822,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -2789,7 +2834,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -2805,7 +2850,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -2828,7 +2873,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -2839,6 +2884,108 @@ ] }, "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", "val": { "u64": 0 } @@ -2862,7 +3009,7 @@ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" } ] }, @@ -2885,7 +3032,7 @@ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" } ] }, @@ -2907,7 +3054,13 @@ "key": { "vec": [ { - "symbol": "ProtocolFeeRecipientBalance" + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" } ] }, @@ -2924,16 +3077,19 @@ "key": { "vec": [ { - "symbol": "ProtocolFeeRecipientBalance" + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" } ] }, "durability": "persistent", "val": { - "i128": { - "hi": 0, - "lo": 200 - } + "u64": 0 } } }, @@ -2949,7 +3105,13 @@ "key": { "vec": [ { - "symbol": "ProtocolStateVersion" + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" } ] }, @@ -2966,19 +3128,477 @@ "key": { "vec": [ { - "symbol": "ProtocolStateVersion" + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" } ] }, "durability": "persistent", "val": { - "u32": 2 + "u64": 0 } } }, "ext": "v0" }, - 4095 + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAX5" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAX5" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXI7N" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXI7N" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYRE5" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYRE5" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ProtocolFeeRecipientBalance" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ProtocolFeeRecipientBalance" + } + ] + }, + "durability": "persistent", + "val": { + "i128": { + "hi": 0, + "lo": 200 + } + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ProtocolStateVersion" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ProtocolStateVersion" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 2 + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "StakingRewardsPool" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "StakingRewardsPool" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "pool" + }, + "val": { + "i128": { + "hi": 0, + "lo": 20 + } + } + }, + { + "key": { + "symbol": "total_staked" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + 6311520 ] ], [ diff --git a/creator-keys/test_snapshots/test_buy_quote_price_unchanged_after_five_buys.1.json b/creator-keys/test_snapshots/test_buy_quote_price_unchanged_after_five_buys.1.json index c3f4241f..5e8d251b 100644 --- a/creator-keys/test_snapshots/test_buy_quote_price_unchanged_after_five_buys.1.json +++ b/creator-keys/test_snapshots/test_buy_quote_price_unchanged_after_five_buys.1.json @@ -319,6 +319,51 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -808,6 +853,57 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -940,6 +1036,71 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "StakingRewardsPool" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "StakingRewardsPool" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "pool" + }, + "val": { + "i128": { + "hi": 0, + "lo": 25 + } + } + }, + { + "key": { + "symbol": "total_staked" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { diff --git a/creator-keys/test_snapshots/test_buy_quote_price_unchanged_after_one_buy.1.json b/creator-keys/test_snapshots/test_buy_quote_price_unchanged_after_one_buy.1.json index 6c046969..4fb36ee6 100644 --- a/creator-keys/test_snapshots/test_buy_quote_price_unchanged_after_one_buy.1.json +++ b/creator-keys/test_snapshots/test_buy_quote_price_unchanged_after_one_buy.1.json @@ -200,6 +200,51 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -689,6 +734,57 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -821,6 +917,71 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "StakingRewardsPool" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "StakingRewardsPool" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "pool" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1 + } + } + }, + { + "key": { + "symbol": "total_staked" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { diff --git a/creator-keys/test_snapshots/test_buy_quote_stable_across_50_sequential_purchases.1.json b/creator-keys/test_snapshots/test_buy_quote_stable_across_50_sequential_purchases.1.json index 4e0a9328..015cba35 100644 --- a/creator-keys/test_snapshots/test_buy_quote_stable_across_50_sequential_purchases.1.json +++ b/creator-keys/test_snapshots/test_buy_quote_stable_across_50_sequential_purchases.1.json @@ -1670,6 +1670,51 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -9957,7 +10002,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -9980,7 +10025,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -9992,7 +10037,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -10008,7 +10053,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10031,7 +10076,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10043,7 +10088,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -10059,7 +10104,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10082,7 +10127,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10094,7 +10139,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -10110,7 +10155,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10133,7 +10178,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10145,7 +10190,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -10161,7 +10206,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10184,7 +10229,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10196,7 +10241,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -10212,7 +10257,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10235,7 +10280,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10247,7 +10292,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -10263,7 +10308,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10286,7 +10331,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10298,7 +10343,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -10314,7 +10359,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10337,7 +10382,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10349,7 +10394,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -10365,7 +10410,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10388,7 +10433,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10400,7 +10445,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -10416,7 +10461,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10439,7 +10484,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10451,7 +10496,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -10467,7 +10512,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10490,7 +10535,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10502,7 +10547,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -10518,7 +10563,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10541,7 +10586,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10553,7 +10598,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -10569,7 +10614,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10592,7 +10637,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10604,7 +10649,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -10620,7 +10665,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10643,7 +10688,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10655,7 +10700,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -10671,7 +10716,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10694,7 +10739,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10706,7 +10751,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -10722,7 +10767,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10745,7 +10790,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10757,7 +10802,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -10773,7 +10818,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10796,7 +10841,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10808,7 +10853,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -10824,7 +10869,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10847,7 +10892,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10859,7 +10904,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -10875,7 +10920,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10898,7 +10943,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10910,7 +10955,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -10926,7 +10971,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10949,7 +10994,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -10961,7 +11006,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -10977,7 +11022,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11000,7 +11045,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11012,7 +11057,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -11028,7 +11073,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11051,7 +11096,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11063,7 +11108,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -11079,7 +11124,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11102,7 +11147,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11114,7 +11159,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -11130,7 +11175,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11153,7 +11198,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11165,7 +11210,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -11181,7 +11226,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11204,7 +11249,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11216,7 +11261,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -11232,7 +11277,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11255,7 +11300,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11267,7 +11312,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -11283,7 +11328,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11306,7 +11351,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11318,7 +11363,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -11334,7 +11379,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11357,7 +11402,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11369,7 +11414,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -11385,7 +11430,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11408,7 +11453,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11420,7 +11465,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -11436,7 +11481,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11459,7 +11504,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11471,7 +11516,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -11487,7 +11532,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11510,7 +11555,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11522,7 +11567,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -11538,7 +11583,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11561,7 +11606,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11573,7 +11618,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -11589,7 +11634,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11612,7 +11657,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11624,7 +11669,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -11640,7 +11685,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11663,7 +11708,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11675,7 +11720,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -11691,7 +11736,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11714,7 +11759,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11726,7 +11771,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -11742,7 +11787,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11765,7 +11810,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11777,7 +11822,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -11793,7 +11838,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11816,7 +11861,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11828,7 +11873,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -11844,7 +11889,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11867,7 +11912,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11879,7 +11924,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -11895,7 +11940,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11918,7 +11963,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11930,7 +11975,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -11946,7 +11991,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11969,7 +12014,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -11981,7 +12026,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -11997,7 +12042,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -12020,7 +12065,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -12032,7 +12077,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -12048,7 +12093,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -12071,7 +12116,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -12083,7 +12128,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -12099,7 +12144,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -12122,7 +12167,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -12134,7 +12179,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -12150,7 +12195,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -12173,7 +12218,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -12185,7 +12230,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -12201,7 +12246,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -12224,7 +12269,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -12236,7 +12281,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -12252,7 +12297,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -12275,7 +12320,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -12287,7 +12332,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -12303,7 +12348,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -12326,7 +12371,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -12338,7 +12383,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -12354,7 +12399,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -12377,7 +12422,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -12389,7 +12434,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -12405,7 +12450,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -12428,7 +12473,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -12440,7 +12485,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -12456,7 +12501,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -12479,7 +12524,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -12491,7 +12536,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -12507,7 +12552,13 @@ "key": { "vec": [ { - "symbol": "ProtocolFeeRecipientBalance" + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" } ] }, @@ -12524,11 +12575,2555 @@ "key": { "vec": [ { - "symbol": "ProtocolFeeRecipientBalance" - } - ] - }, - "durability": "persistent", + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAX5" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAX5" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXI7N" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXI7N" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYRE5" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYRE5" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BV5" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BV5" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6J5N" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6J5N" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB6KO" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB6KO" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDWC6" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDWC6" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFO3O" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFO3O" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHGT6" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHGT6" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABI7IO" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABI7IO" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKXA6" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKXA6" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMPZO" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMPZO" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOHR6" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOHR6" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR4OP" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR4OP" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTUG7" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTUG7" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVM7P" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVM7P" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXEX7" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXEX7" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABY5MP" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABY5MP" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2VE7" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2VE7" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4N5P" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4N5P" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6FV7" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6FV7" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBKTY" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBKTY" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDC3I" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDC3I" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACF2CY" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACF2CY" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHSKI" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHSKI" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACILRY" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACILRY" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKDZI" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKDZI" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACM3AY" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACM3AY" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOTII" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOTII" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRIXZ" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRIXZ" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTA7J" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTA7J" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVYGZ" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVYGZ" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXQOJ" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXQOJ" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYJVZ" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYJVZ" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2B5J" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2B5J" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4ZEZ" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4ZEZ" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6RMJ" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6RMJ" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBG3K" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBG3K" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDOT2" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDOT2" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFWKK" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFWKK" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADH6C2" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADH6C2" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIHZK" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIHZK" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKPR2" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKPR2" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ProtocolFeeRecipientBalance" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ProtocolFeeRecipientBalance" + } + ] + }, + "durability": "persistent", "val": { "i128": { "hi": 0, @@ -12581,6 +15176,71 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "StakingRewardsPool" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "StakingRewardsPool" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "pool" + }, + "val": { + "i128": { + "hi": 0, + "lo": 350 + } + } + }, + { + "key": { + "symbol": "total_staked" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { diff --git a/creator-keys/test_snapshots/test_buy_quote_stable_over_medium_volume_20_buys.1.json b/creator-keys/test_snapshots/test_buy_quote_stable_over_medium_volume_20_buys.1.json index b7a6df0e..6cfee700 100644 --- a/creator-keys/test_snapshots/test_buy_quote_stable_over_medium_volume_20_buys.1.json +++ b/creator-keys/test_snapshots/test_buy_quote_stable_over_medium_volume_20_buys.1.json @@ -770,6 +770,51 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -4287,7 +4332,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -4310,7 +4355,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -4322,7 +4367,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -4338,7 +4383,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -4361,7 +4406,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -4373,7 +4418,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -4389,7 +4434,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -4412,7 +4457,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -4424,7 +4469,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -4440,7 +4485,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -4463,7 +4508,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -4475,7 +4520,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -4491,7 +4536,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -4514,7 +4559,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -4526,7 +4571,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -4542,7 +4587,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -4565,7 +4610,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -4577,7 +4622,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -4593,7 +4638,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -4616,7 +4661,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -4628,7 +4673,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -4644,7 +4689,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -4667,7 +4712,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -4679,7 +4724,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -4695,7 +4740,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -4718,7 +4763,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -4730,7 +4775,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -4746,7 +4791,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -4769,7 +4814,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -4781,7 +4826,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -4797,7 +4842,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -4820,7 +4865,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -4832,7 +4877,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -4848,7 +4893,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -4871,7 +4916,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -4883,7 +4928,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -4899,7 +4944,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -4922,7 +4967,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -4934,7 +4979,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -4950,7 +4995,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -4973,7 +5018,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -4985,7 +5030,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -5001,7 +5046,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -5024,7 +5069,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -5036,7 +5081,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -5052,7 +5097,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -5075,7 +5120,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -5087,7 +5132,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -5103,7 +5148,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -5126,7 +5171,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -5138,7 +5183,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -5154,7 +5199,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -5177,7 +5222,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -5189,7 +5234,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -5205,7 +5250,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -5228,7 +5273,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -5240,7 +5285,7 @@ }, "durability": "persistent", "val": { - "u64": 0 + "u32": 0 } } }, @@ -5256,7 +5301,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -5279,7 +5324,7 @@ "key": { "vec": [ { - "symbol": "LastBuyTimestamp" + "symbol": "LastBuyLedger" }, { "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" @@ -5290,6 +5335,57 @@ ] }, "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", "val": { "u64": 0 } @@ -5307,7 +5403,13 @@ "key": { "vec": [ { - "symbol": "ProtocolFeeRecipientBalance" + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" } ] }, @@ -5324,16 +5426,19 @@ "key": { "vec": [ { - "symbol": "ProtocolFeeRecipientBalance" + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" } ] }, "durability": "persistent", "val": { - "i128": { - "hi": 0, - "lo": 10000 - } + "u64": 0 } } }, @@ -5349,7 +5454,13 @@ "key": { "vec": [ { - "symbol": "ProtocolStateVersion" + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" } ] }, @@ -5366,19 +5477,1038 @@ "key": { "vec": [ { - "symbol": "ProtocolStateVersion" + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" } ] }, "durability": "persistent", "val": { - "u32": 2 + "u64": 0 } } }, "ext": "v0" }, - 4095 + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAX5" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAX5" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXI7N" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXI7N" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYRE5" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYRE5" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BV5" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BV5" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6J5N" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6J5N" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB6KO" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB6KO" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDWC6" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDWC6" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFO3O" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFO3O" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHGT6" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHGT6" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABI7IO" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABI7IO" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKXA6" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKXA6" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMPZO" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMPZO" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOHR6" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyTimestamp" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOHR6" + } + ] + }, + "durability": "persistent", + "val": { + "u64": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ProtocolFeeRecipientBalance" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ProtocolFeeRecipientBalance" + } + ] + }, + "durability": "persistent", + "val": { + "i128": { + "hi": 0, + "lo": 10000 + } + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ProtocolStateVersion" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "ProtocolStateVersion" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 2 + } + } + }, + "ext": "v0" + }, + 4095 + ] + ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "StakingRewardsPool" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "StakingRewardsPool" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "pool" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, + { + "key": { + "symbol": "total_staked" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + 6311520 ] ], [ diff --git a/creator-keys/test_snapshots/test_buy_quote_total_amount_never_below_price.1.json b/creator-keys/test_snapshots/test_buy_quote_total_amount_never_below_price.1.json index 2b225ee6..e9e0593c 100644 --- a/creator-keys/test_snapshots/test_buy_quote_total_amount_never_below_price.1.json +++ b/creator-keys/test_snapshots/test_buy_quote_total_amount_never_below_price.1.json @@ -463,6 +463,51 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -952,6 +997,57 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -1084,6 +1180,71 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "StakingRewardsPool" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "StakingRewardsPool" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "pool" + }, + "val": { + "i128": { + "hi": 0, + "lo": 1000 + } + } + }, + { + "key": { + "symbol": "total_staked" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { diff --git a/creator-keys/test_snapshots/test_buy_quote_total_amount_ordering_is_deterministic_small_range.1.json b/creator-keys/test_snapshots/test_buy_quote_total_amount_ordering_is_deterministic_small_range.1.json index 014bbfc9..31517426 100644 --- a/creator-keys/test_snapshots/test_buy_quote_total_amount_ordering_is_deterministic_small_range.1.json +++ b/creator-keys/test_snapshots/test_buy_quote_total_amount_ordering_is_deterministic_small_range.1.json @@ -261,6 +261,51 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "CreatedAtLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -750,6 +795,57 @@ 6311520 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "LastBuyLedger" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + } + ] + }, + "durability": "persistent", + "val": { + "u32": 0 + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { @@ -882,6 +978,71 @@ 4095 ] ], + [ + { + "contract_data": { + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "StakingRewardsPool" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent" + } + }, + [ + { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "StakingRewardsPool" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "pool" + }, + "val": { + "i128": { + "hi": 0, + "lo": 30 + } + } + }, + { + "key": { + "symbol": "total_staked" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + 6311520 + ] + ], [ { "contract_data": { diff --git a/creator-keys/tests/balance_after_mixed_trades.rs b/creator-keys/tests/balance_after_mixed_trades.rs index 6fcd4d04..2d3d6112 100644 --- a/creator-keys/tests/balance_after_mixed_trades.rs +++ b/creator-keys/tests/balance_after_mixed_trades.rs @@ -9,7 +9,7 @@ use contract_test_env::{ compute_expected_balance_after_trades, register_creator_keys, register_test_creator, set_key_price_for_tests, test_env_with_auths, TradeOperation, }; -use soroban_sdk::testutils::Address as _; +use soroban_sdk::testutils::{Address as _, Ledger}; use soroban_sdk::Address; #[test] @@ -37,8 +37,10 @@ fn test_balance_after_sequence_of_buys_and_sells() { // Execute trades client.buy_key(&creator, &buyer, &100i128, &None); client.buy_key(&creator, &buyer, &100i128, &None); + env.ledger().with_mut(|l| l.sequence_number += 1); client.sell_key(&creator, &buyer, &None); client.buy_key(&creator, &buyer, &100i128, &None); + env.ledger().with_mut(|l| l.sequence_number += 1); client.sell_key(&creator, &buyer, &None); client.sell_key(&creator, &buyer, &None); @@ -72,6 +74,7 @@ fn test_balance_after_buys_then_sells() { for _ in 0..5 { client.buy_key(&creator, &buyer, &100i128, &None); } + env.ledger().with_mut(|l| l.sequence_number += 1); for _ in 0..2 { client.sell_key(&creator, &buyer, &None); } @@ -107,6 +110,7 @@ fn test_balance_with_non_zero_initial() { assert_eq!(expected, 5); client.buy_key(&creator, &buyer, &100i128, &None); + env.ledger().with_mut(|l| l.sequence_number += 1); client.sell_key(&creator, &buyer, &None); client.sell_key(&creator, &buyer, &None); client.buy_key(&creator, &buyer, &100i128, &None); diff --git a/creator-keys/tests/balance_lookup_invalid_reads.rs b/creator-keys/tests/balance_lookup_invalid_reads.rs index 872f544b..20bac82a 100644 --- a/creator-keys/tests/balance_lookup_invalid_reads.rs +++ b/creator-keys/tests/balance_lookup_invalid_reads.rs @@ -8,7 +8,10 @@ mod contract_test_env; use contract_test_env::{ register_creator_keys, register_test_creator, set_pricing_and_fees, test_env_with_auths, }; -use soroban_sdk::{testutils::Address as _, Env}; +use soroban_sdk::{ + testutils::{Address as _, Ledger}, + Env, +}; // ── get_key_balance: unregistered creator ──────────────────────────────────── @@ -180,6 +183,7 @@ fn test_get_balance_no_history_and_sold_all_returns_zero_no_panic() { // 2. Buy and sell all keys client.buy_key(&creator, &buyer, &100, &None); assert_eq!(client.get_balance(&creator, &buyer), 1); + env.ledger().with_mut(|l| l.sequence_number += 1); client.sell_key(&creator, &buyer, &None); // Wallet that sold all keys returns 0 and does not panic diff --git a/creator-keys/tests/bonding_curve_ten_buy_monotonicity.rs b/creator-keys/tests/bonding_curve_ten_buy_monotonicity.rs index 1e8ccb06..20af6d96 100644 --- a/creator-keys/tests/bonding_curve_ten_buy_monotonicity.rs +++ b/creator-keys/tests/bonding_curve_ten_buy_monotonicity.rs @@ -13,7 +13,7 @@ use contract_test_env::{ register_creator_keys, register_test_creator, set_curve_slope, set_pricing_and_fees, test_env_with_auths, }; -use soroban_sdk::testutils::Address as _; +use soroban_sdk::testutils::{Address as _, Ledger}; const BASE_PRICE: i128 = 5_000; const CURVE_SLOPE: i128 = 100; @@ -86,6 +86,7 @@ fn test_ten_sequential_buys_price_strictly_increases_and_sell_decreases() { // AC-2: price after one sell must be strictly less than the last buy price. let price_before_sell = client.get_buy_quote(&creator).price; + env.ledger().with_mut(|l| l.sequence_number += 1); client.sell_key(&creator, &holder, &None); let price_after_sell = client.get_buy_quote(&creator).price; diff --git a/creator-keys/tests/buy_holder_count.rs b/creator-keys/tests/buy_holder_count.rs index 7a6d3a6b..885d5f3b 100644 --- a/creator-keys/tests/buy_holder_count.rs +++ b/creator-keys/tests/buy_holder_count.rs @@ -5,7 +5,10 @@ mod contract_test_env; use contract_test_env::{ register_creator_keys, register_test_creator, set_key_price_for_tests, test_env_with_auths, }; -use soroban_sdk::{testutils::Address as _, Address}; +use soroban_sdk::{ + testutils::{Address as _, Ledger}, + Address, +}; #[test] fn test_buy_holder_count_behavior() { @@ -46,6 +49,7 @@ fn test_buy_holder_count_behavior() { // 4. Selling all keys and rebuying increments count again (wallet re-enters as a holder) // Sell first key of buyer3 + env.ledger().with_mut(|l| l.sequence_number += 1); client.sell_key(&creator, &buyer3, &None); // buyer3 has 0 keys left, holder count decrements assert_eq!(client.get_key_balance(&creator, &buyer3), 0); diff --git a/creator-keys/tests/buy_quote_idempotency.rs b/creator-keys/tests/buy_quote_idempotency.rs index f59a9442..8c582608 100644 --- a/creator-keys/tests/buy_quote_idempotency.rs +++ b/creator-keys/tests/buy_quote_idempotency.rs @@ -6,7 +6,7 @@ mod contract_test_env; use contract_test_env::{ register_creator_keys, register_test_creator, set_pricing_and_fees, test_env_with_auths, }; -use soroban_sdk::testutils::Address as _; +use soroban_sdk::testutils::{Address as _, Ledger}; #[test] fn test_buy_quote_idempotent_three_calls_at_supply_zero() { @@ -63,6 +63,7 @@ fn test_buy_quote_idempotent_buy_between_calls_at_same_supply() { let buyer_b = soroban_sdk::Address::generate(&env); let quote_for_sell_back = client.get_buy_quote(&creator); client.buy_key(&creator, &buyer_b, "e_for_sell_back.total_amount, &None); + env.ledger().with_mut(|l| l.sequence_number += 1); client.sell_key(&creator, &buyer_b, &None); let q_after = client.get_buy_quote(&creator); diff --git a/creator-keys/tests/buy_sell_event_topics_distinct.rs b/creator-keys/tests/buy_sell_event_topics_distinct.rs index e67fea3b..69732af9 100644 --- a/creator-keys/tests/buy_sell_event_topics_distinct.rs +++ b/creator-keys/tests/buy_sell_event_topics_distinct.rs @@ -6,7 +6,7 @@ mod contract_test_env; use contract_test_env::{register_creator_keys, register_test_creator, set_key_price_for_tests}; use creator_keys::events; use soroban_sdk::{ - testutils::{Address as _, Events}, + testutils::{Address as _, Events, Ledger}, Address, Env, IntoVal, Symbol, }; @@ -69,6 +69,7 @@ fn test_buy_and_sell_event_topics_are_distinct() { client.buy_key(&creator, &user, &KEY_PRICE, &None); let buy_event_name = extract_first_event_name(&env, events::BUY_EVENT_NAME); + env.ledger().with_mut(|l| l.sequence_number += 1); client.sell_key(&creator, &user, &None); let sell_event_name = extract_first_event_name(&env, events::SELL_EVENT_NAME); diff --git a/creator-keys/tests/launch_penalty.rs b/creator-keys/tests/launch_penalty.rs index a1ee41b7..feaecf64 100644 --- a/creator-keys/tests/launch_penalty.rs +++ b/creator-keys/tests/launch_penalty.rs @@ -9,8 +9,10 @@ mod contract_test_env; use contract_test_env::{ register_creator_keys, register_test_creator, set_key_price_for_tests, test_env_with_auths, }; -use creator_keys::{constants, ContractError}; -use soroban_sdk::{testutils::Address as _, Address, Env}; +use soroban_sdk::{ + testutils::{Address as _, Ledger}, + Address, Env, +}; const KEY_PRICE: i128 = 100; diff --git a/creator-keys/tests/prelaunch_auction.rs b/creator-keys/tests/prelaunch_auction.rs index 408820d2..29b2b15e 100644 --- a/creator-keys/tests/prelaunch_auction.rs +++ b/creator-keys/tests/prelaunch_auction.rs @@ -234,10 +234,7 @@ fn test_buy_key_transitions_to_bonding_curve_once_auction_supply_is_exhausted() client.buy_key(&creator, &buyer_a, &500i128, &None); client.buy_key(&creator, &buyer_b, &500i128, &None); - assert_eq!( - client.get_auction_config(&creator).unwrap().auction_sold, - 2 - ); + assert_eq!(client.get_auction_config(&creator).unwrap().auction_sold, 2); // Auction supply (2) is now exhausted; the next buy settles at the base // (bonding-curve) price, not the fixed auction price. diff --git a/creator-keys/tests/same_ledger_buy_sell.rs b/creator-keys/tests/same_ledger_buy_sell.rs index 4b0fd589..3bbb5ad8 100644 --- a/creator-keys/tests/same_ledger_buy_sell.rs +++ b/creator-keys/tests/same_ledger_buy_sell.rs @@ -35,7 +35,7 @@ use contract_test_env::{ }; use creator_keys::events; use soroban_sdk::{ - testutils::{Address as _, Events}, + testutils::{Address as _, Events, Ledger}, Address, IntoVal, Symbol, }; @@ -58,11 +58,13 @@ fn buy_n_keys( /// Sell `count` keys for `seller` from `creator`, one at a time. fn sell_n_keys( + env: &soroban_sdk::Env, client: &creator_keys::CreatorKeysContractClient<'_>, creator: &soroban_sdk::Address, seller: &soroban_sdk::Address, count: u32, ) { + env.ledger().with_mut(|l| l.sequence_number += 1); for _ in 0..count { client.sell_key(creator, seller, &None); } @@ -84,9 +86,9 @@ fn test_final_supply_equals_pre_buy_supply_after_net_zero_buy_sell() { let supply_before = client.get_total_key_supply(&creator); assert_eq!(supply_before, 0, "precondition: creator starts at supply 0"); - // Buy 5 keys then sell 5 keys — same ledger, no sequence bump between them. + // Buy 5 keys then sell 5 keys. buy_n_keys(&client, &creator, &trader, 5); - sell_n_keys(&client, &creator, &trader, 5); + sell_n_keys(&env, &client, &creator, &trader, 5); let supply_after = client.get_total_key_supply(&creator); assert_eq!( @@ -123,7 +125,8 @@ fn test_supply_transitions_correctly_through_buy_and_sell() { "supply must be 5 after 5 buys" ); - // Track supply after each sell (same ledger — no sequence bump) + // Track supply after each sell + env.ledger().with_mut(|l| l.sequence_number += 1); for expected in (0u32..5).rev() { let new_supply = client.sell_key(&creator, &trader, &None); assert_eq!( @@ -165,7 +168,7 @@ fn test_holder_count_returns_to_pre_buy_value_after_full_exit() { "holder count must be 1 while trader holds 5 keys" ); - sell_n_keys(&client, &creator, &trader, 5); + sell_n_keys(&env, &client, &creator, &trader, 5); let holder_count_after = client.get_creator_holder_count(&creator); assert_eq!( @@ -193,7 +196,7 @@ fn test_holder_count_unchanged_after_partial_sell() { assert_eq!(client.get_creator_holder_count(&creator), 1); // Partial sell: 3 out of 5 — trader still holds 2 - sell_n_keys(&client, &creator, &trader, 3); + sell_n_keys(&env, &client, &creator, &trader, 3); assert_eq!( client.get_creator_holder_count(&creator), @@ -265,7 +268,7 @@ fn test_trader_balance_is_zero_after_full_exit() { "precondition: trader holds 5 keys" ); - sell_n_keys(&client, &creator, &trader, 5); + sell_n_keys(&env, &client, &creator, &trader, 5); assert_eq!( client.get_key_balance(&creator, &trader), @@ -290,7 +293,7 @@ fn test_supply_equals_sum_of_holder_balances_after_net_zero_trade() { buy_n_keys(&client, &creator, &bystander, 3); buy_n_keys(&client, &creator, &trader, 5); - sell_n_keys(&client, &creator, &trader, 5); + sell_n_keys(&env, &client, &creator, &trader, 5); let supply = client.get_total_key_supply(&creator); let bal_trader = client.get_key_balance(&creator, &trader); @@ -337,6 +340,7 @@ fn test_buy_and_sell_return_values_form_consistent_supply_sequence() { } // Sell 5 keys; collect each return value + env.ledger().with_mut(|l| l.sequence_number += 1); let mut sell_returns = Vec::new(); for _ in 0..5 { let new_supply = client.sell_key(&creator, &trader, &None); @@ -410,6 +414,7 @@ fn test_buy_and_sell_events_both_emitted_and_correctly_tagged() { } // Count sell events — one per invocation + env.ledger().with_mut(|l| l.sequence_number += 1); let mut sell_count = 0usize; for _ in 0..5 { client.sell_key(&creator, &trader, &None); @@ -491,6 +496,7 @@ fn test_sell_events_carry_correct_addresses() { let trader = Address::generate(&env); buy_n_keys(&client, &creator, &trader, 5); + env.ledger().with_mut(|l| l.sequence_number += 1); for _ in 0..5 { client.sell_key(&creator, &trader, &None); @@ -550,9 +556,9 @@ fn test_bystander_unaffected_by_same_ledger_buy_sell() { let bystander_balance_before = client.get_key_balance(&creator, &bystander); let supply_after_bystander = client.get_total_key_supply(&creator); - // Trader's same-ledger buy+sell + // Trader's buy+sell buy_n_keys(&client, &creator, &trader, 5); - sell_n_keys(&client, &creator, &trader, 5); + sell_n_keys(&env, &client, &creator, &trader, 5); // Bystander must see no change assert_eq!( diff --git a/creator-keys/tests/staking_reward_claim.rs b/creator-keys/tests/staking_reward_claim.rs index c83a7884..26805fcf 100644 --- a/creator-keys/tests/staking_reward_claim.rs +++ b/creator-keys/tests/staking_reward_claim.rs @@ -1,4 +1,4 @@ -//! Tests for `claim_stake_reward` and the staking rewards pool (#786 / #789). +//! Tests for `claim_stake_reward` and the staking rewards pool (#786 / #789 / #806). mod contract_test_env; @@ -6,9 +6,9 @@ use contract_test_env::{ register_creator_keys, register_test_creator, set_ledger_sequence, set_pricing_and_fees, test_env_with_auths, }; -use creator_keys::{events, FeatureError, STAKE_LOCK_LEDGERS}; +use creator_keys::{events, StakingError, STAKE_LOCK_LEDGERS}; use soroban_sdk::{ - testutils::{Address as _, Events, Ledger}, + testutils::{Address as _, Events}, Address, IntoVal, Symbol, }; @@ -19,44 +19,40 @@ const PROTOCOL_BPS: u32 = 1000; #[test] fn test_claim_stake_reward_fails_with_no_stake() { let env = test_env_with_auths(); - env.ledger().set_max_entry_ttl(STAKE_LOCK_LEDGERS + 100_000); - env.ledger().set_min_persistent_entry_ttl(STAKE_LOCK_LEDGERS + 100_000); let (client, _) = register_creator_keys(&env); set_pricing_and_fees(&env, &client, KEY_PRICE, CREATOR_BPS, PROTOCOL_BPS); let creator = register_test_creator(&env, &client, "alice"); let holder = Address::generate(&env); - let result = client.try_claim_stake_reward(&creator, &holder); - assert_eq!(result, Err(Ok(FeatureError::NoStakeFound))); + let result = client.try_claim_stake_reward(&creator, &holder, &0u32); + assert_eq!(result, Err(Ok(StakingError::PositionNotFound))); } #[test] fn test_claim_stake_reward_fails_while_lock_is_active() { let env = test_env_with_auths(); - env.ledger().set_max_entry_ttl(STAKE_LOCK_LEDGERS + 100_000); - env.ledger().set_min_persistent_entry_ttl(STAKE_LOCK_LEDGERS + 100_000); let (client, _) = register_creator_keys(&env); set_pricing_and_fees(&env, &client, KEY_PRICE, CREATOR_BPS, PROTOCOL_BPS); let creator = register_test_creator(&env, &client, "alice"); let holder = Address::generate(&env); client.buy_key(&creator, &holder, &KEY_PRICE, &None); - client.stake_keys(&creator, &holder, &1u32); + let stake_id = client.stake_keys_locked(&creator, &holder, &1u32, &STAKE_LOCK_LEDGERS); - let result = client.try_claim_stake_reward(&creator, &holder); - assert_eq!(result, Err(Ok(FeatureError::StakeLockActive))); + let result = client.try_claim_stake_reward(&creator, &holder, &stake_id); + assert_eq!(result, Err(Ok(StakingError::PositionLocked))); // Still locked just one ledger before the unlock boundary. - let unlock_ledger = client.get_stake_unlock_ledger(&creator, &holder).unwrap(); - set_ledger_sequence(&env, unlock_ledger - 1); - let result = client.try_claim_stake_reward(&creator, &holder); - assert_eq!(result, Err(Ok(FeatureError::StakeLockActive))); + let position = client + .get_staking_position(&creator, &holder, &stake_id) + .unwrap(); + set_ledger_sequence(&env, position.unlock_ledger - 1); + let result = client.try_claim_stake_reward(&creator, &holder, &stake_id); + assert_eq!(result, Err(Ok(StakingError::PositionLocked))); } #[test] fn test_claim_stake_reward_pays_out_and_unlocks_after_lock_period() { let env = test_env_with_auths(); - env.ledger().set_max_entry_ttl(STAKE_LOCK_LEDGERS + 100_000); - env.ledger().set_min_persistent_entry_ttl(STAKE_LOCK_LEDGERS + 100_000); let (client, _) = register_creator_keys(&env); set_pricing_and_fees(&env, &client, KEY_PRICE, CREATOR_BPS, PROTOCOL_BPS); let creator = register_test_creator(&env, &client, "alice"); @@ -69,20 +65,26 @@ fn test_claim_stake_reward_pays_out_and_unlocks_after_lock_period() { "buying with a fee config configured should seed the staking rewards pool" ); - client.stake_keys(&creator, &holder, &1u32); + let stake_id = client.stake_keys_locked(&creator, &holder, &1u32, &STAKE_LOCK_LEDGERS); assert_eq!(client.get_total_staked(&creator), 1); - let start_sequence = env.ledger().sequence(); - set_ledger_sequence(&env, start_sequence + STAKE_LOCK_LEDGERS); + let position = client + .get_staking_position(&creator, &holder, &stake_id) + .unwrap(); + set_ledger_sequence(&env, position.unlock_ledger); - let reward = client.claim_stake_reward(&creator, &holder); - assert_eq!(reward, pool_after_buy); + let claim = client.claim_stake_reward(&creator, &holder, &stake_id); + assert_eq!(claim.reward, pool_after_buy); + assert_eq!(claim.amount, 1); // Sole staker gets the entire pool; pool and total-staked bookkeeping are cleared. assert_eq!(client.get_staking_rewards_pool(&creator), 0); assert_eq!(client.get_total_staked(&creator), 0); assert_eq!(client.get_staked_balance(&creator, &holder), 0); - assert_eq!(client.get_stake_unlock_ledger(&creator, &holder), None); + assert_eq!( + client.get_staking_position(&creator, &holder, &stake_id), + None + ); // Liquid balance is untouched by staking/unstaking bookkeeping. assert_eq!(client.get_key_balance(&creator, &holder), 1); @@ -91,8 +93,6 @@ fn test_claim_stake_reward_pays_out_and_unlocks_after_lock_period() { #[test] fn test_claim_stake_reward_splits_pool_pro_rata_across_stakers() { let env = test_env_with_auths(); - env.ledger().set_max_entry_ttl(STAKE_LOCK_LEDGERS + 100_000); - env.ledger().set_min_persistent_entry_ttl(STAKE_LOCK_LEDGERS + 100_000); let (client, _) = register_creator_keys(&env); set_pricing_and_fees(&env, &client, KEY_PRICE, CREATOR_BPS, PROTOCOL_BPS); let creator = register_test_creator(&env, &client, "alice"); @@ -105,25 +105,27 @@ fn test_claim_stake_reward_splits_pool_pro_rata_across_stakers() { } client.buy_key(&creator, &holder_b, &KEY_PRICE, &None); - client.stake_keys(&creator, &holder_a, &3u32); - client.stake_keys(&creator, &holder_b, &1u32); + let stake_a = client.stake_keys_locked(&creator, &holder_a, &3u32, &STAKE_LOCK_LEDGERS); + let stake_b = client.stake_keys_locked(&creator, &holder_b, &1u32, &STAKE_LOCK_LEDGERS); assert_eq!(client.get_total_staked(&creator), 4); let pool_total = client.get_staking_rewards_pool(&creator); let expected_a = pool_total * 3 / 4; - let expected_b_before_a_claims = pool_total * 1 / 4; + let expected_b_before_a_claims = pool_total / 4; - let start_sequence = env.ledger().sequence(); - set_ledger_sequence(&env, start_sequence + STAKE_LOCK_LEDGERS); + let position_a = client + .get_staking_position(&creator, &holder_a, &stake_a) + .unwrap(); + set_ledger_sequence(&env, position_a.unlock_ledger); - let reward_a = client.claim_stake_reward(&creator, &holder_a); - assert_eq!(reward_a, expected_a); + let claim_a = client.claim_stake_reward(&creator, &holder_a, &stake_a); + assert_eq!(claim_a.reward, expected_a); assert_eq!(client.get_total_staked(&creator), 1); - let reward_b = client.claim_stake_reward(&creator, &holder_b); + let claim_b = client.claim_stake_reward(&creator, &holder_b, &stake_b); // holder_b is the sole remaining staker and claims what's left in the pool, // which (absent further rounding loss) matches their pro-rata share. - assert_eq!(reward_b, expected_b_before_a_claims); + assert_eq!(claim_b.reward, expected_b_before_a_claims); assert_eq!(client.get_total_staked(&creator), 0); assert_eq!(client.get_staking_rewards_pool(&creator), 0); } @@ -131,19 +133,19 @@ fn test_claim_stake_reward_splits_pool_pro_rata_across_stakers() { #[test] fn test_claim_stake_reward_emits_event_with_expected_payload() { let env = test_env_with_auths(); - env.ledger().set_max_entry_ttl(STAKE_LOCK_LEDGERS + 100_000); - env.ledger().set_min_persistent_entry_ttl(STAKE_LOCK_LEDGERS + 100_000); let (client, contract_id) = register_creator_keys(&env); set_pricing_and_fees(&env, &client, KEY_PRICE, CREATOR_BPS, PROTOCOL_BPS); let creator = register_test_creator(&env, &client, "alice"); let holder = Address::generate(&env); client.buy_key(&creator, &holder, &KEY_PRICE, &None); let pool = client.get_staking_rewards_pool(&creator); - client.stake_keys(&creator, &holder, &1u32); + let stake_id = client.stake_keys_locked(&creator, &holder, &1u32, &STAKE_LOCK_LEDGERS); - let start_sequence = env.ledger().sequence(); - set_ledger_sequence(&env, start_sequence + STAKE_LOCK_LEDGERS); - client.claim_stake_reward(&creator, &holder); + let position = client + .get_staking_position(&creator, &holder, &stake_id) + .unwrap(); + set_ledger_sequence(&env, position.unlock_ledger); + client.claim_stake_reward(&creator, &holder, &stake_id); let mut found = false; for (contract, topics, data) in env.events().all().iter() { @@ -153,10 +155,11 @@ fn test_claim_stake_reward_emits_event_with_expected_payload() { let event_name: Symbol = topics.get(0).unwrap().into_val(&env); if event_name == events::STAKE_REWARD_CLAIMED_EVENT_NAME { let payload: events::StakeRewardClaimedEvent = data.clone().into_val(&env); - assert_eq!(payload.wallet, holder); - assert_eq!(payload.key_id, creator); - assert_eq!(payload.quantity_unlocked, 1); - assert_eq!(payload.reward_amount, pool); + assert_eq!(payload.holder, holder); + assert_eq!(payload.creator_id, creator); + assert_eq!(payload.stake_id, stake_id); + assert_eq!(payload.amount, 1); + assert_eq!(payload.reward, pool); found = true; } } @@ -166,20 +169,20 @@ fn test_claim_stake_reward_emits_event_with_expected_payload() { #[test] fn test_claim_stake_reward_fails_while_protocol_paused() { let env = test_env_with_auths(); - env.ledger().set_max_entry_ttl(STAKE_LOCK_LEDGERS + 100_000); - env.ledger().set_min_persistent_entry_ttl(STAKE_LOCK_LEDGERS + 100_000); let (client, _) = register_creator_keys(&env); let admin = set_pricing_and_fees(&env, &client, KEY_PRICE, CREATOR_BPS, PROTOCOL_BPS); let creator = register_test_creator(&env, &client, "alice"); let holder = Address::generate(&env); client.buy_key(&creator, &holder, &KEY_PRICE, &None); - client.stake_keys(&creator, &holder, &1u32); + let stake_id = client.stake_keys_locked(&creator, &holder, &1u32, &STAKE_LOCK_LEDGERS); - let start_sequence = env.ledger().sequence(); - set_ledger_sequence(&env, start_sequence + STAKE_LOCK_LEDGERS); + let position = client + .get_staking_position(&creator, &holder, &stake_id) + .unwrap(); + set_ledger_sequence(&env, position.unlock_ledger); client.pause(&admin); - let result = client.try_claim_stake_reward(&creator, &holder); - assert_eq!(result, Err(Ok(FeatureError::ProtocolPaused))); + let result = client.try_claim_stake_reward(&creator, &holder, &stake_id); + assert_eq!(result, Err(Ok(StakingError::ProtocolPaused))); }