diff --git a/contracts/globe-wallet/src/lib.rs b/contracts/globe-wallet/src/lib.rs
index ef047b8..c3f1acd 100644
--- a/contracts/globe-wallet/src/lib.rs
+++ b/contracts/globe-wallet/src/lib.rs
@@ -32,10 +32,10 @@ pub enum DataKey {
PendingUpgrade,
/// Whitelisted assets for a user wallet
UserAssets(Address),
- /// Spend limit: (user, asset_code) → limit in stroops
- SpendLimit(Address, String),
- /// Daily spent: (user, asset_code) → (amount, day_timestamp)
- DailySpent(Address, String),
+ /// Spend limit: (user, asset) → limit in stroops
+ SpendLimit(Address, AssetInfo),
+ /// Daily spent: (user, asset) → (amount, day_timestamp)
+ DailySpent(Address, AssetInfo),
/// Ordered set of guardian addresses authorized to co-sign admin recovery.
Guardians,
/// M-of-N approvals required, and the ledger-count timelock delay
@@ -1086,7 +1086,8 @@ impl GlobeWallet {
return Err(WalletError::AssetLimitExceeded);
}
for i in 0..assets.len() {
- if Self::codes_match_case_insensitive(&assets.get(i).unwrap().code, &asset.code) {
+ let existing = assets.get(i).unwrap();
+ if Self::assets_match(&existing, &asset) {
return Err(WalletError::AssetAlreadyAdded);
}
}
@@ -1167,57 +1168,65 @@ impl GlobeWallet {
///
/// # Errors
/// * [`WalletError::InvalidSpendLimit`] — negative limit.
+ /// * [`WalletError::AssetNotFound`] — asset is not registered in caller's `UserAssets`.
/// * [`WalletError::SpendLimitExceeded`] — current day's spend already
/// exceeds the proposed limit.
pub fn set_spend_limit(
env: Env,
user: Address,
- asset_code: String,
+ asset: AssetInfo,
limit: i128,
) -> Result<(), WalletError> {
user.require_auth();
if limit < 0 {
return Err(WalletError::InvalidSpendLimit);
}
+
+ let canonical_asset = Self::find_user_asset(&env, &user, &asset)
+ .ok_or(WalletError::AssetNotFound)?;
+
// Retroactive check: reject if today's spend already exceeds the
// new limit (unless the new limit is 0 = unlimited).
if limit != 0 {
let now = env.ledger().timestamp();
let day = now / 86400;
- let key = DataKey::DailySpent(user.clone(), asset_code.clone());
- let record: SpendRecord = env
- .storage()
- .persistent()
- .get(&key)
- .unwrap_or(SpendRecord { amount: 0, day });
+ let record = Self::get_daily_spent_record(&env, &user, &canonical_asset, day);
let spent_today = if record.day == day { record.amount } else { 0 };
if spent_today > limit {
return Err(WalletError::SpendLimitExceeded);
}
}
Self::bump_instance_ttl(&env);
- env.storage().persistent().set(
- &DataKey::SpendLimit(user.clone(), asset_code.clone()),
- &limit,
- );
+ let key = DataKey::SpendLimit(user.clone(), canonical_asset.clone());
+ env.storage().persistent().set(&key, &limit);
env.storage().persistent().extend_ttl(
- &DataKey::SpendLimit(user.clone(), asset_code.clone()),
+ &key,
PERSISTENT_TTL_THRESHOLD,
PERSISTENT_TTL_EXTEND_TO,
);
+
+ let legacy_key = Self::get_legacy_spend_limit_key(&env, &user, &canonical_asset.code);
+ env.storage().persistent().remove(&legacy_key);
+
env.events().publish(
(Symbol::new(&env, "spend_limit_set"),),
- (user, asset_code, limit),
+ (user, canonical_asset.code, limit),
);
Ok(())
}
/// Get the daily spend limit for a user/asset pair (0 = unlimited).
- pub fn get_spend_limit(env: Env, user: Address, asset_code: String) -> i128 {
- env.storage()
- .persistent()
- .get(&DataKey::SpendLimit(user, asset_code))
- .unwrap_or(0)
+ pub fn get_spend_limit(env: Env, user: Address, asset: AssetInfo) -> i128 {
+ let canonical_asset = match Self::find_user_asset(&env, &user, &asset) {
+ Some(a) => a,
+ None => return 0,
+ };
+ let key = DataKey::SpendLimit(user.clone(), canonical_asset.clone());
+ if let Some(limit) = env.storage().persistent().get(&key) {
+ return limit;
+ }
+ let legacy_key = Self::get_legacy_spend_limit_key(&env, &user, &canonical_asset.code);
+ env.storage().persistent().get(&legacy_key).unwrap_or(0)
}
/// Record a spend and reject if it would exceed the daily limit.
@@ -1248,17 +1257,22 @@ impl GlobeWallet {
/// the analogous negative-input case; a new variant would also
/// collide with the discriminant renumbering tracked in #23, which is
/// touching this same enum in parallel.
+ /// * [`WalletError::AssetNotFound`] — asset is not registered in caller's `UserAssets`.
/// * [`WalletError::SpendLimitExceeded`]
pub fn record_spend(
env: Env,
user: Address,
- asset_code: String,
+ asset: AssetInfo,
amount: i128,
) -> Result<(), WalletError> {
user.require_auth();
if amount <= 0 {
return Err(WalletError::InvalidSpendLimit);
}
+
+ let canonical_asset = Self::find_user_asset(&env, &user, &asset)
+ .ok_or(WalletError::AssetNotFound)?;
+
// A real spend is real wallet activity regardless of whether a
// limit happens to be configured for this asset — this is one of
// the most frequently-called functions in normal use, and exactly
@@ -1266,19 +1280,14 @@ impl GlobeWallet {
// instance storage from silently drifting toward archival (see
// `bump_instance_ttl`'s doc comment).
Self::bump_instance_ttl(&env);
- let limit = Self::get_spend_limit(env.clone(), user.clone(), asset_code.clone());
+ let limit = Self::get_spend_limit(env.clone(), user.clone(), canonical_asset.clone());
if limit == 0 {
// No limit configured → always allow
return Ok(());
}
let now = env.ledger().timestamp();
let day = now / 86400;
- let key = DataKey::DailySpent(user.clone(), asset_code.clone());
- let record: SpendRecord = env
- .storage()
- .persistent()
- .get(&key)
- .unwrap_or(SpendRecord { amount: 0, day });
+ let record = Self::get_daily_spent_record(&env, &user, &canonical_asset, day);
let spent_today = if record.day == day { record.amount } else { 0 };
let new_spent = spent_today
.checked_add(amount)
@@ -1286,6 +1295,7 @@ impl GlobeWallet {
if new_spent > limit {
return Err(WalletError::SpendLimitExceeded);
}
+ let key = DataKey::DailySpent(user.clone(), canonical_asset.clone());
env.storage()
.persistent()
.set(&key, &SpendRecord { amount: new_spent, day });
@@ -1294,9 +1304,13 @@ impl GlobeWallet {
DAILY_SPENT_TTL_THRESHOLD,
DAILY_SPENT_TTL_EXTEND_TO,
);
+
+ let legacy_key = Self::get_legacy_daily_spent_key(&env, &user, &canonical_asset.code);
+ env.storage().persistent().remove(&legacy_key);
+
env.events().publish(
(Symbol::new(&env, "spend_recorded"),),
- (user, asset_code, amount, new_spent, limit),
+ (user, canonical_asset.code, amount, new_spent, limit),
);
Ok(())
}
@@ -1318,89 +1332,113 @@ impl GlobeWallet {
env.storage()
.instance()
.set(&DataKey::TokenWrapperId, &token_wrapper_id);
+ Self::bump_instance_ttl(&env);
env.events().publish(
(Symbol::new(&env, "token_wrapper_set"),),
- token_wrapper_id,
+ (admin, token_wrapper_id),
);
Ok(())
}
- /// Returns the currently configured token-wrapper contract instance, if any.
+ /// Admin: get the configured token-wrapper contract address, if any.
pub fn get_token_wrapper(env: Env) -> Option
{
env.storage().instance().get(&DataKey::TokenWrapperId)
}
- /// Admin: add `token_id` to the set of tokens `send` is permitted to move.
- ///
- /// This is a governance/curation decision, not something this contract
- /// can verify on-chain — the admin is expected to have confirmed
- /// `token_id` implements the standard token interface correctly and
- /// represents a real, valued asset before allowlisting it. See
- /// docs/design/wiring-reentrancy-threat-model.md §4-5.
+ /// Admin: allowlist a token contract address so `send` can move it.
pub fn add_allowed_token(env: Env, admin: Address, token_id: Address) -> Result<(), WalletError> {
admin.require_auth();
Self::require_admin(&env, &admin)?;
- let key = DataKey::AllowedToken(token_id.clone());
- env.storage().persistent().set(&key, &true);
+ env.storage()
+ .persistent()
+ .set(&DataKey::AllowedToken(token_id.clone()), &());
env.storage().persistent().extend_ttl(
- &key,
+ &DataKey::AllowedToken(token_id.clone()),
PERSISTENT_TTL_THRESHOLD,
PERSISTENT_TTL_EXTEND_TO,
);
+ Self::bump_instance_ttl(&env);
env.events().publish(
- (Symbol::new(&env, "token_allowed"),),
- token_id,
+ (Symbol::new(&env, "allowed_token_added"),),
+ (admin, token_id),
);
Ok(())
}
- /// Admin: remove `token_id` from the send-allowlist.
+ /// Admin: remove a token contract address from the allowlist.
pub fn remove_allowed_token(env: Env, admin: Address, token_id: Address) -> Result<(), WalletError> {
admin.require_auth();
Self::require_admin(&env, &admin)?;
env.storage()
.persistent()
.remove(&DataKey::AllowedToken(token_id.clone()));
+ Self::bump_instance_ttl(&env);
env.events().publish(
- (Symbol::new(&env, "token_disallowed"),),
- token_id,
+ (Symbol::new(&env, "allowed_token_removed"),),
+ (admin, token_id),
);
Ok(())
}
- /// Returns whether `token_id` is currently allowlisted for `send`.
+ /// Query whether a token contract address is currently on the allowlist.
pub fn is_token_allowed(env: Env, token_id: Address) -> bool {
env.storage()
.persistent()
- .get(&DataKey::AllowedToken(token_id))
- .unwrap_or(false)
+ .has(&DataKey::AllowedToken(token_id))
}
- /// Atomically enforce the daily spend limit and move `amount` of
- /// `token_id` from `user` to `to`, via `token-wrapper::transfer_from`.
+ /// High-level payment entry point: enforce daily spend limit, then move
+ /// tokens via the configured token-wrapper contract.
///
- /// `user` must have already granted this contract (i.e.
- /// `env.current_contract_address()`) an allowance over `token_id` via
- /// `token-wrapper::approve` before calling this — matching
- /// `docs/design/architecture.md`'s intended integration flow.
+ /// # Threat-Model Invariants Enforced Here
+ /// 1. **Allowlist gate (§4, mitigation 1):** `token_id` must be on the
+ /// admin-curated allowlist. Prevents an attacker from passing an
+ /// adversarial token contract address that ignores allowances or
+ /// attempts reentrancy.
+ /// 2. **Checks-Effects-Interactions (§3.1):** `record_spend` runs
+ /// *before* `TokenWrapperClient::transfer_from` is called. Even if
+ /// the token contract could somehow regain control, the daily limit
+ /// is already marked spent in persistent storage.
+ /// 3. **Exact-amount authorization (§4, mitigation 2):** `send` moves
+ /// `amount` (the exact amount authorized by `user` for this call),
+ /// consuming allowance from `user` to `GlobeWallet` via the wrapper.
+ /// 4. **Atomicity across contracts (§3.1):** if `transfer_from` fails
+ /// (bad allowance, insufficient balance, etc.), the whole Soroban
+ /// invocation reverts, rolling back the `record_spend` write so the
+ /// user's daily limit is not consumed for a payment that didn't
+ /// move tokens.
///
/// # Errors
- /// * [`WalletError::TokenNotAllowed`] if `token_id` is not allowlisted.
- /// * [`WalletError::TokenWrapperNotSet`] if no admin has configured the
- /// token-wrapper instance yet.
- /// * [`WalletError::SpendLimitExceeded`] / [`WalletError::SpendOverflow`]
- /// per `record_spend`'s existing rules.
+ /// * [`WalletError::TokenNotAllowed`] — `token_id` not on the allowlist.
+ /// * [`WalletError::TokenWrapperNotSet`] — admin has not called `set_token_wrapper`.
+ /// * [`WalletError::InvalidSpendLimit`] — `amount` is not strictly positive.
+ /// * [`WalletError::AssetNotFound`] — `asset` is not registered in user's asset list.
+ /// * [`WalletError::SpendLimitExceeded`] — payment would exceed daily limit.
+ /// * [`WalletError::SpendOverflow`] — daily accumulator would overflow i128.
+ /// * [`WalletError::TokenTransferFailed`] — token-wrapper's `transfer_from` failed.
///
- /// A failure at any step reverts the whole call, including any
- /// `record_spend` write already applied in this same invocation —
- /// Soroban transactions are all-or-nothing, so there is no path where
- /// the daily counter advances without the underlying transfer actually
- /// succeeding (or vice versa).
+ /// # Reentrancy
+ /// `send` is the top-level orchestrator. The external call is
+ /// `TokenWrapperClient::transfer_from`, which makes a further external
+ /// call to the token contract. Per `docs/design/wiring-reentrancy-threat-model.md`,
+ /// this 3-hop chain is safe because:
+ /// - `record_spend` is invoked as a direct associated-function call on
+ /// the same host frame before any external invocation is started.
+ /// - GlobeWallet is active on the host call stack throughout `send`'s
+ /// execution, so Soroban's native cross-contract reentrancy guard
+ /// strictly forbids `token-wrapper` or `token_id` from calling back
+ /// into any `GlobeWallet` function.
+ /// - Any callback attempted from the token contract fails at the host
+ /// level, bubbling up as a transaction failure and causing the
+ /// `record_spend` write already applied in this same invocation —
+ /// Soroban transactions are all-or-nothing, so there is no path where
+ /// the daily counter advances without the underlying transfer actually
+ /// succeeding (or vice versa).
pub fn send(
env: Env,
user: Address,
token_id: Address,
- asset_code: String,
+ asset: AssetInfo,
to: Address,
amount: i128,
) -> Result<(), WalletError> {
@@ -1425,7 +1463,7 @@ impl GlobeWallet {
// a plain associated-function call (same host frame), so
// record_spend's existing reentrancy proof
// (docs/record-spend-reentrancy.md) is untouched by this wiring.
- Self::record_spend(env.clone(), user.clone(), asset_code, amount)?;
+ Self::record_spend(env.clone(), user.clone(), asset, amount)?;
let wrapper_id: Address = env
.storage()
@@ -1461,6 +1499,62 @@ impl GlobeWallet {
// ── Migration ───────────────────────────────────────────────────────────────
+ /// Migrate legacy spend limits and daily spend records keyed by `(Address, String)`
+ /// to `(Address, AssetInfo)` keys for all assets currently registered by the user.
+ pub fn migrate_spend_limits(env: Env, user: Address) -> Result {
+ user.require_auth();
+ let assets: Vec = env
+ .storage()
+ .persistent()
+ .get(&DataKey::UserAssets(user.clone()))
+ .unwrap_or_else(|| Vec::new(&env));
+ let mut count = 0u32;
+ let now = env.ledger().timestamp();
+ let day = now / 86400;
+
+ for i in 0..assets.len() {
+ let asset = assets.get(i).unwrap();
+ let legacy_spend_key = Self::get_legacy_spend_limit_key(&env, &user, &asset.code);
+ let legacy_limit: Option = env.storage().persistent().get(&legacy_spend_key);
+
+ let new_spend_key = DataKey::SpendLimit(user.clone(), asset.clone());
+ if let Some(limit) = legacy_limit {
+ if !env.storage().persistent().has(&new_spend_key) {
+ env.storage().persistent().set(&new_spend_key, &limit);
+ env.storage().persistent().extend_ttl(
+ &new_spend_key,
+ PERSISTENT_TTL_THRESHOLD,
+ PERSISTENT_TTL_EXTEND_TO,
+ );
+ }
+ env.storage().persistent().remove(&legacy_spend_key);
+ count += 1;
+ }
+
+ let legacy_daily_key = Self::get_legacy_daily_spent_key(&env, &user, &asset.code);
+ let legacy_daily: Option = env.storage().persistent().get(&legacy_daily_key);
+ let new_daily_key = DataKey::DailySpent(user.clone(), asset.clone());
+ if let Some(record) = legacy_daily {
+ if !env.storage().persistent().has(&new_daily_key) && record.day == day {
+ env.storage().persistent().set(&new_daily_key, &record);
+ env.storage().persistent().extend_ttl(
+ &new_daily_key,
+ DAILY_SPENT_TTL_THRESHOLD,
+ DAILY_SPENT_TTL_EXTEND_TO,
+ );
+ }
+ env.storage().persistent().remove(&legacy_daily_key);
+ }
+ }
+
+ Self::bump_instance_ttl(&env);
+ env.events().publish(
+ (Symbol::new(&env, "spend_limits_migrated"),),
+ (user, count),
+ );
+ Ok(count)
+ }
+
/// Admin and user: trim a user's asset list to [`GlobeWallet::MAX_ASSETS`] if it exceeds the bound.
/// Returns the number of assets trimmed (0 if already within limit).
///
@@ -1489,8 +1583,12 @@ impl GlobeWallet {
}
for i in Self::MAX_ASSETS..len {
let dropped = assets.get(i).unwrap();
- env.storage().persistent().remove(&DataKey::SpendLimit(user.clone(), dropped.code.clone()));
- env.storage().persistent().remove(&DataKey::DailySpent(user.clone(), dropped.code.clone()));
+ env.storage().persistent().remove(&DataKey::SpendLimit(user.clone(), dropped.clone()));
+ env.storage().persistent().remove(&DataKey::DailySpent(user.clone(), dropped.clone()));
+ let legacy_spend_key = Self::get_legacy_spend_limit_key(&env, &user, &dropped.code);
+ let legacy_daily_key = Self::get_legacy_daily_spent_key(&env, &user, &dropped.code);
+ env.storage().persistent().remove(&legacy_spend_key);
+ env.storage().persistent().remove(&legacy_daily_key);
}
env.storage()
.persistent()
@@ -1549,6 +1647,49 @@ impl GlobeWallet {
buf_a[..len] == buf_b[..len]
}
+ /// Compare two `AssetInfo`s for equality:
+ /// - Codes match case-insensitively (`codes_match_case_insensitive`)
+ /// - Issuers are identical (`a.issuer == b.issuer`)
+ fn assets_match(a: &AssetInfo, b: &AssetInfo) -> bool {
+ if !Self::codes_match_case_insensitive(&a.code, &b.code) {
+ return false;
+ }
+ a.issuer == b.issuer
+ }
+
+ /// Look up registered asset in `UserAssets(user)` matching the given `AssetInfo`.
+ /// Returns the canonical `AssetInfo` stored in `UserAssets(user)` if found, or `None`.
+ fn find_user_asset(env: &Env, user: &Address, asset: &AssetInfo) -> Option {
+ let assets: Vec = env
+ .storage()
+ .persistent()
+ .get(&DataKey::UserAssets(user.clone()))?;
+ for i in 0..assets.len() {
+ let a = assets.get(i).unwrap();
+ if Self::assets_match(&a, asset) {
+ return Some(a);
+ }
+ }
+ None
+ }
+
+ fn get_legacy_spend_limit_key(env: &Env, user: &Address, code: &String) -> (Symbol, Address, String) {
+ (Symbol::new(env, "SpendLimit"), user.clone(), code.clone())
+ }
+
+ fn get_legacy_daily_spent_key(env: &Env, user: &Address, code: &String) -> (Symbol, Address, String) {
+ (Symbol::new(env, "DailySpent"), user.clone(), code.clone())
+ }
+
+ fn get_daily_spent_record(env: &Env, user: &Address, canonical_asset: &AssetInfo, day: u64) -> SpendRecord {
+ let key = DataKey::DailySpent(user.clone(), canonical_asset.clone());
+ if let Some(record) = env.storage().persistent().get(&key) {
+ return record;
+ }
+ let legacy_key = Self::get_legacy_daily_spent_key(env, user, &canonical_asset.code);
+ env.storage().persistent().get(&legacy_key).unwrap_or(SpendRecord { amount: 0, day })
+ }
+
/// Bump this contract's own *instance* storage TTL (`Admin`, `Guardians`,
/// `RecoveryConfig`, every `PendingAdmin(...)`/`PendingUpgrade`/
/// `RecoveryProposal` entry — everything that isn't per-user
@@ -1747,13 +1888,14 @@ mod tests {
#[test]
fn test_add_asset_case_variant_duplicate_fails() {
- // issue #29: "USDC" and "usdc" must be treated as the same asset.
+ // issue #29: "USDC" and "usdc" with the same issuer must be treated as duplicate.
let (env, _cid, _admin, client) = setup();
let user = Address::generate(&env);
- client.add_asset(&user, &usdc(&env)); // "USDC"
+ let usdc_asset = usdc(&env);
+ client.add_asset(&user, &usdc_asset); // "USDC"
let lower = AssetInfo {
code: String::from_str(&env, "usdc"),
- issuer: Some(Address::generate(&env)),
+ issuer: usdc_asset.issuer.clone(),
};
assert_eq!(
client.try_add_asset(&user, &lower),
@@ -1789,30 +1931,33 @@ mod tests {
fn test_spend_limit_set_and_get() {
let (env, _cid, _admin, client) = setup();
let user = Address::generate(&env);
- let code = String::from_str(&env, "XLM");
- client.set_spend_limit(&user, &code, &1_000_000_i128);
- assert_eq!(client.get_spend_limit(&user, &code), 1_000_000);
+ let asset = xlm(&env);
+ client.add_asset(&user, &asset);
+ client.set_spend_limit(&user, &asset, &1_000_000_i128);
+ assert_eq!(client.get_spend_limit(&user, &asset), 1_000_000);
}
#[test]
fn test_record_spend_within_limit() {
let (env, _cid, _admin, client) = setup();
let user = Address::generate(&env);
- let code = String::from_str(&env, "XLM");
- client.set_spend_limit(&user, &code, &1_000_000_i128);
- client.record_spend(&user, &code, &500_000_i128);
- client.record_spend(&user, &code, &499_999_i128);
+ let asset = xlm(&env);
+ client.add_asset(&user, &asset);
+ client.set_spend_limit(&user, &asset, &1_000_000_i128);
+ client.record_spend(&user, &asset, &500_000_i128);
+ client.record_spend(&user, &asset, &499_999_i128);
}
#[test]
fn test_record_spend_exceeds_limit_fails() {
let (env, _cid, _admin, client) = setup();
let user = Address::generate(&env);
- let code = String::from_str(&env, "XLM");
- client.set_spend_limit(&user, &code, &1_000_000_i128);
- client.record_spend(&user, &code, &999_999_i128);
+ let asset = xlm(&env);
+ client.add_asset(&user, &asset);
+ client.set_spend_limit(&user, &asset, &1_000_000_i128);
+ client.record_spend(&user, &asset, &999_999_i128);
assert_eq!(
- client.try_record_spend(&user, &code, &2_i128),
+ client.try_record_spend(&user, &asset, &2_i128),
Err(Ok(WalletError::SpendLimitExceeded))
);
}
@@ -1821,10 +1966,11 @@ mod tests {
fn test_record_spend_negative_amount_fails() {
let (env, _cid, _admin, client) = setup();
let user = Address::generate(&env);
- let code = String::from_str(&env, "XLM");
- client.set_spend_limit(&user, &code, &1_000_000_i128);
+ let asset = xlm(&env);
+ client.add_asset(&user, &asset);
+ client.set_spend_limit(&user, &asset, &1_000_000_i128);
assert_eq!(
- client.try_record_spend(&user, &code, &(-1_i128)),
+ client.try_record_spend(&user, &asset, &(-1_i128)),
Err(Ok(WalletError::InvalidSpendLimit))
);
}
@@ -1833,10 +1979,11 @@ mod tests {
fn test_record_spend_zero_amount_fails() {
let (env, _cid, _admin, client) = setup();
let user = Address::generate(&env);
- let code = String::from_str(&env, "XLM");
- client.set_spend_limit(&user, &code, &1_000_000_i128);
+ let asset = xlm(&env);
+ client.add_asset(&user, &asset);
+ client.set_spend_limit(&user, &asset, &1_000_000_i128);
assert_eq!(
- client.try_record_spend(&user, &code, &0_i128),
+ client.try_record_spend(&user, &asset, &0_i128),
Err(Ok(WalletError::InvalidSpendLimit))
);
}
@@ -1848,12 +1995,13 @@ mod tests {
// before the limit comparison.
let (env, _cid, _admin, client) = setup();
let user = Address::generate(&env);
- let code = String::from_str(&env, "XLM");
- client.set_spend_limit(&user, &code, &1_000_000_i128);
- client.record_spend(&user, &code, &900_000_i128);
+ let asset = xlm(&env);
+ client.add_asset(&user, &asset);
+ client.set_spend_limit(&user, &asset, &1_000_000_i128);
+ client.record_spend(&user, &asset, &900_000_i128);
assert_eq!(
- client.try_record_spend(&user, &code, &(-900_000_i128)),
+ client.try_record_spend(&user, &asset, &(-900_000_i128)),
Err(Ok(WalletError::InvalidSpendLimit))
);
@@ -1861,13 +2009,13 @@ mod tests {
// of headroom against the 1_000_000 limit. One unit over that
// headroom must be rejected...
assert_eq!(
- client.try_record_spend(&user, &code, &100_001_i128),
+ client.try_record_spend(&user, &asset, &100_001_i128),
Err(Ok(WalletError::SpendLimitExceeded))
);
// ...while spending exactly the remaining headroom must succeed,
// proving spent_today was neither reset nor left in some other
// corrupted value by the rejected negative-amount call.
- client.record_spend(&user, &code, &100_000_i128);
+ client.record_spend(&user, &asset, &100_000_i128);
}
#[test]
@@ -1877,13 +2025,14 @@ mod tests {
// the configured limit was supposed to allow for the day.
let (env, _cid, _admin, client) = setup();
let user = Address::generate(&env);
- let code = String::from_str(&env, "XLM");
- client.set_spend_limit(&user, &code, &1_000_000_i128);
- client.record_spend(&user, &code, &900_000_i128);
+ let asset = xlm(&env);
+ client.add_asset(&user, &asset);
+ client.set_spend_limit(&user, &asset, &1_000_000_i128);
+ client.record_spend(&user, &asset, &900_000_i128);
// Attempted reset via negative amount must be rejected outright...
assert_eq!(
- client.try_record_spend(&user, &code, &(-900_000_i128)),
+ client.try_record_spend(&user, &asset, &(-900_000_i128)),
Err(Ok(WalletError::InvalidSpendLimit))
);
@@ -1892,7 +2041,7 @@ mod tests {
// further 999_999 remains correctly rejected as exceeding the
// 1_000_000 daily limit.
assert_eq!(
- client.try_record_spend(&user, &code, &999_999_i128),
+ client.try_record_spend(&user, &asset, &999_999_i128),
Err(Ok(WalletError::SpendLimitExceeded))
);
}
@@ -1901,26 +2050,28 @@ mod tests {
fn test_record_spend_overflow_does_not_poison_later_calls() {
let (env, _cid, _admin, client) = setup();
let user = Address::generate(&env);
- let code = String::from_str(&env, "XLM");
- client.set_spend_limit(&user, &code, &i128::MAX);
+ let asset = xlm(&env);
+ client.add_asset(&user, &asset);
+ client.set_spend_limit(&user, &asset, &i128::MAX);
- client.record_spend(&user, &code, &1_i128);
+ client.record_spend(&user, &asset, &1_i128);
assert_eq!(
- client.try_record_spend(&user, &code, &i128::MAX),
+ client.try_record_spend(&user, &asset, &i128::MAX),
Err(Ok(WalletError::SpendOverflow))
);
- client.record_spend(&user, &code, &1_i128);
+ client.record_spend(&user, &asset, &1_i128);
}
#[test]
fn test_no_limit_allows_any_spend() {
let (env, _cid, _admin, client) = setup();
let user = Address::generate(&env);
- let code = String::from_str(&env, "XLM");
+ let asset = xlm(&env);
+ client.add_asset(&user, &asset);
// No set_spend_limit call → unlimited
- client.record_spend(&user, &code, &i128::MAX);
+ client.record_spend(&user, &asset, &i128::MAX);
}
/// Retroactive enforcement: raise limit → spend near it → lower limit
@@ -1929,36 +2080,37 @@ mod tests {
fn test_raise_spend_then_lower_limit() {
let (env, _cid, _admin, client) = setup();
let user = Address::generate(&env);
- let code = String::from_str(&env, "XLM");
+ let asset = xlm(&env);
+ client.add_asset(&user, &asset);
// 1. Set a high limit
- client.set_spend_limit(&user, &code, &1_000_000_i128);
+ client.set_spend_limit(&user, &asset, &1_000_000_i128);
// 2. Spend close to the high limit
- client.record_spend(&user, &code, &900_000_i128);
+ client.record_spend(&user, &asset, &900_000_i128);
// 3. Try to lower the limit below what was already spent → must fail
assert_eq!(
- client.try_set_spend_limit(&user, &code, &500_000_i128),
+ client.try_set_spend_limit(&user, &asset, &500_000_i128),
Err(Ok(WalletError::SpendLimitExceeded))
);
// 4. The old limit should still be in effect
- assert_eq!(client.get_spend_limit(&user, &code), 1_000_000);
+ assert_eq!(client.get_spend_limit(&user, &asset), 1_000_000);
// 5. Lowering to exactly the spent amount should succeed
- client.set_spend_limit(&user, &code, &900_000_i128);
- assert_eq!(client.get_spend_limit(&user, &code), 900_000);
+ client.set_spend_limit(&user, &asset, &900_000_i128);
+ assert_eq!(client.get_spend_limit(&user, &asset), 900_000);
// 6. Further spending is now blocked (at the exact limit)
assert_eq!(
- client.try_record_spend(&user, &code, &1_i128),
+ client.try_record_spend(&user, &asset, &1_i128),
Err(Ok(WalletError::SpendLimitExceeded))
);
// 7. Removing the limit (setting to 0 = unlimited) should always work
- client.set_spend_limit(&user, &code, &0_i128);
- assert_eq!(client.get_spend_limit(&user, &code), 0);
+ client.set_spend_limit(&user, &asset, &0_i128);
+ assert_eq!(client.get_spend_limit(&user, &asset), 0);
}
#[test]
@@ -1979,9 +2131,10 @@ mod tests {
// spend counter before the real 86_400s day window elapses.
let (env, _cid, _admin, client) = setup();
let user = Address::generate(&env);
- let code = String::from_str(&env, "XLM");
- client.set_spend_limit(&user, &code, &1_000_000_i128);
- client.record_spend(&user, &code, &900_000_i128);
+ let asset = xlm(&env);
+ client.add_asset(&user, &asset);
+ client.set_spend_limit(&user, &asset, &1_000_000_i128);
+ client.record_spend(&user, &asset, &900_000_i128);
// Simulate an eviction sweep of *temporary* storage only (persistent
// entries are untouched) by bumping the ledger sequence far past the
@@ -1994,7 +2147,7 @@ mod tests {
// If DailySpent were still in temporary storage this would have been
// archived/reset to 0 and the next 200_000 spend would wrongly succeed.
assert_eq!(
- client.try_record_spend(&user, &code, &200_000_i128),
+ client.try_record_spend(&user, &asset, &200_000_i128),
Err(Ok(WalletError::SpendLimitExceeded))
);
}
@@ -2080,7 +2233,7 @@ mod tests {
let mut assets: Vec = Vec::new(&env);
for i in 0..GlobeWallet::MAX_ASSETS + 10 {
let code = String::from_str(&env, &std::format!("ASSET{}", i));
- assets.push_back(AssetInfo { code: code.clone(), issuer: None });
+ assets.push_back(AssetInfo { code: code.clone(), issuer: Some(Address::generate(&env)) });
}
env.as_contract(&cid, || {
env.storage()
@@ -2089,29 +2242,29 @@ mod tests {
// Set up some spend limits and daily spent records for all assets
for i in 0..GlobeWallet::MAX_ASSETS + 10 {
- let code = String::from_str(&env, &std::format!("ASSET{}", i));
- env.storage().persistent().set(&DataKey::SpendLimit(user.clone(), code.clone()), &1000_i128);
- env.storage().persistent().set(&DataKey::DailySpent(user.clone(), code.clone()), &SpendRecord { amount: 500, day: 0 });
+ let asset = assets.get(i).unwrap();
+ env.storage().persistent().set(&DataKey::SpendLimit(user.clone(), asset.clone()), &1000_i128);
+ env.storage().persistent().set(&DataKey::DailySpent(user.clone(), asset.clone()), &SpendRecord { amount: 500, day: 0 });
}
});
let removed = client.migrate_user_assets(&admin, &user);
assert_eq!(removed, 10);
- let assets = client.get_assets(&user);
- assert_eq!(assets.len(), GlobeWallet::MAX_ASSETS as u32);
+ let user_assets = client.get_assets(&user);
+ assert_eq!(user_assets.len(), GlobeWallet::MAX_ASSETS as u32);
env.as_contract(&cid, || {
// Verify that dropped assets' storage keys are removed
for i in GlobeWallet::MAX_ASSETS..GlobeWallet::MAX_ASSETS + 10 {
- let code = String::from_str(&env, &std::format!("ASSET{}", i));
- assert!(!env.storage().persistent().has(&DataKey::SpendLimit(user.clone(), code.clone())));
- assert!(!env.storage().persistent().has(&DataKey::DailySpent(user.clone(), code.clone())));
+ let asset = assets.get(i).unwrap();
+ assert!(!env.storage().persistent().has(&DataKey::SpendLimit(user.clone(), asset.clone())));
+ assert!(!env.storage().persistent().has(&DataKey::DailySpent(user.clone(), asset.clone())));
}
// Verify that kept assets' storage keys are intact
for i in 0..GlobeWallet::MAX_ASSETS {
- let code = String::from_str(&env, &std::format!("ASSET{}", i));
- assert!(env.storage().persistent().has(&DataKey::SpendLimit(user.clone(), code.clone())));
- assert!(env.storage().persistent().has(&DataKey::DailySpent(user.clone(), code.clone())));
+ let asset = assets.get(i).unwrap();
+ assert!(env.storage().persistent().has(&DataKey::SpendLimit(user.clone(), asset.clone())));
+ assert!(env.storage().persistent().has(&DataKey::DailySpent(user.clone(), asset.clone())));
}
});
}
@@ -3072,19 +3225,20 @@ mod tests {
fn test_record_spend_boundary_last_second_of_day_accumulates() {
let (env, _cid, _admin, client) = setup();
let user = Address::generate(&env);
- let code = String::from_str(&env, "XLM");
- client.set_spend_limit(&user, &code, &1_000_i128);
+ let asset = xlm(&env);
+ client.add_asset(&user, &asset);
+ client.set_spend_limit(&user, &asset, &1_000_i128);
// Set timestamp to the very last second of day 1 (day 0 bucket ends at 86399)
let day = 1u64;
let last_sec_of_day = day * 86_400 - 1; // 86_399 → still in bucket 0
env.ledger().with_mut(|l| l.timestamp = last_sec_of_day);
- client.record_spend(&user, &code, &600_i128);
+ client.record_spend(&user, &asset, &600_i128);
// Second call in the same bucket should accumulate
assert_eq!(
- client.try_record_spend(&user, &code, &401_i128),
+ client.try_record_spend(&user, &asset, &401_i128),
Err(Ok(WalletError::SpendLimitExceeded)),
"Two spends in the same bucket must accumulate: 600+401 > 1000"
);
@@ -3095,18 +3249,19 @@ mod tests {
fn test_record_spend_boundary_first_second_of_new_day_resets() {
let (env, _cid, _admin, client) = setup();
let user = Address::generate(&env);
- let code = String::from_str(&env, "XLM");
- client.set_spend_limit(&user, &code, &1_000_i128);
+ let asset = xlm(&env);
+ client.add_asset(&user, &asset);
+ client.set_spend_limit(&user, &asset, &1_000_i128);
// Spend 900 in bucket 0
env.ledger().with_mut(|l| l.timestamp = 86_399); // bucket 0 = ts/86400 == 0
- client.record_spend(&user, &code, &900_i128);
+ client.record_spend(&user, &asset, &900_i128);
// Advance to the exact start of bucket 1 — counter must reset
env.ledger().with_mut(|l| l.timestamp = 86_400); // bucket 1 = ts/86400 == 1
// Should succeed because we're in a brand-new bucket
- client.record_spend(&user, &code, &1_000_i128);
+ client.record_spend(&user, &asset, &1_000_i128);
}
/// Explicit boundary: timestamp N*86400 - 1 vs N*86400 are different buckets.
@@ -3114,8 +3269,9 @@ mod tests {
fn test_record_spend_exact_day_boundary() {
let (env, _cid, _admin, client) = setup();
let user = Address::generate(&env);
- let code = String::from_str(&env, "XLM");
- client.set_spend_limit(&user, &code, &500_i128);
+ let asset = xlm(&env);
+ client.add_asset(&user, &asset);
+ client.set_spend_limit(&user, &asset, &500_i128);
let n: u64 = 5;
let before_boundary = n * 86_400 - 1; // bucket n-1
@@ -3123,17 +3279,17 @@ mod tests {
// Spend right at the boundary-minus-one
env.ledger().with_mut(|l| l.timestamp = before_boundary);
- client.record_spend(&user, &code, &500_i128); // fills bucket n-1 exactly
+ client.record_spend(&user, &asset, &500_i128); // fills bucket n-1 exactly
// Any more spend in bucket n-1 must fail
assert_eq!(
- client.try_record_spend(&user, &code, &1_i128),
+ client.try_record_spend(&user, &asset, &1_i128),
Err(Ok(WalletError::SpendLimitExceeded))
);
// Crossing into bucket n resets the counter: full 500 must be available again
env.ledger().with_mut(|l| l.timestamp = at_boundary);
- client.record_spend(&user, &code, &500_i128);
+ client.record_spend(&user, &asset, &500_i128);
}
/// Validates that the bucket is derived from integer division (not rounding).
@@ -3141,8 +3297,9 @@ mod tests {
fn test_record_spend_bucket_is_integer_division() {
let (env, _cid, _admin, client) = setup();
let user = Address::generate(&env);
- let code = String::from_str(&env, "XLM");
- client.set_spend_limit(&user, &code, &100_i128);
+ let asset = xlm(&env);
+ client.add_asset(&user, &asset);
+ client.set_spend_limit(&user, &asset, &100_i128);
// All three timestamps below belong to bucket 1 (86400..=172799)
// Reset env per iteration by re-registering is expensive;
@@ -3151,12 +3308,12 @@ mod tests {
// Spend 50 in bucket 1
env.ledger().with_mut(|l| l.timestamp = 86_400);
- client.record_spend(&user, &code, &50_i128);
+ client.record_spend(&user, &asset, &50_i128);
// Move to middle of same bucket — still bucket 1, should accumulate
env.ledger().with_mut(|l| l.timestamp = 129_600); // 86400 + 43200
assert_eq!(
- client.try_record_spend(&user, &code, &51_i128),
+ client.try_record_spend(&user, &asset, &51_i128),
Err(Ok(WalletError::SpendLimitExceeded)),
"50+51 > 100: mid-bucket accumulation must hold"
);
@@ -3164,7 +3321,7 @@ mod tests {
// Move to end of bucket 1
env.ledger().with_mut(|l| l.timestamp = 172_799);
assert_eq!(
- client.try_record_spend(&user, &code, &51_i128),
+ client.try_record_spend(&user, &asset, &51_i128),
Err(Ok(WalletError::SpendLimitExceeded)),
"50+51 > 100: end-of-bucket accumulation must hold"
);
@@ -3179,8 +3336,9 @@ mod tests {
fn test_record_spend_boundary_drift_awareness() {
let (env, _cid, _admin, client) = setup();
let user = Address::generate(&env);
- let code = String::from_str(&env, "XLM");
- client.set_spend_limit(&user, &code, &1_000_i128);
+ let asset = xlm(&env);
+ client.add_asset(&user, &asset);
+ client.set_spend_limit(&user, &asset, &1_000_i128);
// Two validator-derived timestamps 2 seconds apart straddling midnight
let just_before = 2 * 86_400 - 1;
@@ -3188,14 +3346,14 @@ mod tests {
// Spend near-limit just before midnight
env.ledger().with_mut(|l| l.timestamp = just_before);
- client.record_spend(&user, &code, &999_i128);
+ client.record_spend(&user, &asset, &999_i128);
// If a second tx arrives 1 second later it lands in a new bucket and is ALLOWED.
// This is the known fixed-bucket split: user perceives same-session but
// contract resets. Not exploitable (it's more restrictive by resetting), but
// confusing to users.
env.ledger().with_mut(|l| l.timestamp = just_after);
- client.record_spend(&user, &code, &1_000_i128); // succeeds — new bucket
+ client.record_spend(&user, &asset, &1_000_i128); // succeeds — new bucket
}
#[test]
@@ -3254,13 +3412,14 @@ mod tests {
fn test_spend_limit_ttl_extension_after_long_idle_period() {
let (env, _cid, _admin, client) = setup();
let user = Address::generate(&env);
- let code = String::from_str(&env, "XLM");
- client.set_spend_limit(&user, &code, &1_000_000_i128);
+ let asset = xlm(&env);
+ client.add_asset(&user, &asset);
+ client.set_spend_limit(&user, &asset, &1_000_000_i128);
// Jump well past default persistent-entry TTL.
env.ledger().with_mut(|l| l.sequence_number += 50_000);
- assert_eq!(client.get_spend_limit(&user, &code), 1_000_000);
+ assert_eq!(client.get_spend_limit(&user, &asset), 1_000_000);
}
// ── Wiring: globe-wallet <-> token-wrapper ───────────────────────────────
@@ -3292,17 +3451,18 @@ mod tests {
let token_admin = Address::generate(&env);
let user = Address::generate(&env);
let to = Address::generate(&env);
- let code = String::from_str(&env, "XLM");
+ let asset = xlm(&env);
+ client.add_asset(&user, &asset);
let (token_id, token_admin_client, token) = create_real_token(&env, &token_admin);
token_admin_client.mint(&user, &1_000);
client.add_allowed_token(&admin, &token_id);
- client.set_spend_limit(&user, &code, &500_i128);
+ client.set_spend_limit(&user, &asset, &500_i128);
env.ledger().with_mut(|l| l.sequence_number = 100);
wrapper_client.approve(&user, &wallet_id, &500, &10_000);
- client.send(&user, &token_id, &code, &to, &200);
+ client.send(&user, &token_id, &asset, &to, &200);
assert_eq!(token.balance(&user), 800);
assert_eq!(token.balance(&to), 200);
@@ -3314,13 +3474,14 @@ mod tests {
let (env, _wallet_id, _admin, client, _wrapper_client) = setup_wiring();
let user = Address::generate(&env);
let to = Address::generate(&env);
- let code = String::from_str(&env, "XLM");
+ let asset = xlm(&env);
+ client.add_asset(&user, &asset);
let token_admin = Address::generate(&env);
let (token_id, _token_admin_client, _token) = create_real_token(&env, &token_admin);
// Deliberately NOT allowlisted.
assert_eq!(
- client.try_send(&user, &token_id, &code, &to, &100),
+ client.try_send(&user, &token_id, &asset, &to, &100),
Err(Ok(WalletError::TokenNotAllowed))
);
}
@@ -3330,14 +3491,15 @@ mod tests {
let (env, _cid, admin, client) = setup();
let user = Address::generate(&env);
let to = Address::generate(&env);
- let code = String::from_str(&env, "XLM");
+ let asset = xlm(&env);
+ client.add_asset(&user, &asset);
let token_admin = Address::generate(&env);
let (token_id, _token_admin_client, _token) = create_real_token(&env, &token_admin);
client.add_allowed_token(&admin, &token_id);
// Deliberately never called set_token_wrapper.
assert_eq!(
- client.try_send(&user, &token_id, &code, &to, &100),
+ client.try_send(&user, &token_id, &asset, &to, &100),
Err(Ok(WalletError::TokenWrapperNotSet))
);
}
@@ -3351,18 +3513,19 @@ mod tests {
let token_admin = Address::generate(&env);
let user = Address::generate(&env);
let to = Address::generate(&env);
- let code = String::from_str(&env, "XLM");
+ let asset = xlm(&env);
+ client.add_asset(&user, &asset);
let (token_id, token_admin_client, token) = create_real_token(&env, &token_admin);
token_admin_client.mint(&user, &1_000);
client.add_allowed_token(&admin, &token_id);
- client.set_spend_limit(&user, &code, &100_i128);
+ client.set_spend_limit(&user, &asset, &100_i128);
env.ledger().with_mut(|l| l.sequence_number = 100);
wrapper_client.approve(&user, &wallet_id, &500, &10_000);
assert_eq!(
- client.try_send(&user, &token_id, &code, &to, &200),
+ client.try_send(&user, &token_id, &asset, &to, &200),
Err(Ok(WalletError::SpendLimitExceeded))
);
assert_eq!(token.balance(&user), 1_000, "no tokens should move on a rejected send");
@@ -3418,7 +3581,7 @@ mod tests {
// for any real SAC, since token_id is caller-supplied and unconstrained
// beyond the allowlist check. Its `transfer` implementation, instead of
// moving any value, immediately tries to call back into
- // `GlobeWallet::record_spend` for the same (victim, asset_code) pair —
+ // `GlobeWallet::record_spend` for the same (victim, asset) pair —
// the exact double-count scenario issue #92 describes. If Soroban's
// reentry protection did not hold for this 3-hop chain, that call would
// succeed and the assertions below would catch the resulting
@@ -3429,10 +3592,10 @@ mod tests {
#[contractimpl]
impl MaliciousToken {
- pub fn init(env: Env, wallet_id: Address, victim: Address, asset_code: String) {
+ pub fn init(env: Env, wallet_id: Address, victim: Address, asset: AssetInfo) {
env.storage().instance().set(&Symbol::new(&env, "wallet"), &wallet_id);
env.storage().instance().set(&Symbol::new(&env, "victim"), &victim);
- env.storage().instance().set(&Symbol::new(&env, "code"), &asset_code);
+ env.storage().instance().set(&Symbol::new(&env, "asset"), &asset);
}
/// Matches the standard token interface's `transfer` signature so
@@ -3440,16 +3603,16 @@ mod tests {
pub fn transfer(env: Env, _from: Address, _to: Address, amount: i128) {
let wallet_id: Address = env.storage().instance().get(&Symbol::new(&env, "wallet")).unwrap();
let victim: Address = env.storage().instance().get(&Symbol::new(&env, "victim")).unwrap();
- let code: String = env.storage().instance().get(&Symbol::new(&env, "code")).unwrap();
+ let asset: AssetInfo = env.storage().instance().get(&Symbol::new(&env, "asset")).unwrap();
// Attempt the exact reentrant callback issue #92 describes: a
- // second record_spend for the same (victim, asset_code) pair,
+ // second record_spend for the same (victim, asset) pair,
// from inside the token's own transfer, before the outer
// send/transfer_from call chain has unwound. Per
// docs/design/wiring-reentrancy-threat-model.md §3.1, the host
// must reject this because GlobeWallet's frame (the root of this
// whole call chain) is still active on the stack.
let victim_client = GlobeWalletClient::new(&env, &wallet_id);
- victim_client.record_spend(&victim, &code, &amount);
+ victim_client.record_spend(&victim, &asset, &amount);
// If we ever get here, the reentrant call above did NOT panic —
// i.e. reentry protection failed to hold. Nothing further to do;
// the test asserts on the resulting DailySpent state instead of
@@ -3467,14 +3630,15 @@ mod tests {
let user = Address::generate(&env);
let to = Address::generate(&env);
- let code = String::from_str(&env, "XLM");
+ let asset = xlm(&env);
+ client.add_asset(&user, &asset);
let evil_id = env.register_contract(None, MaliciousToken);
let evil_client = MaliciousTokenClient::new(&env, &evil_id);
- evil_client.init(&wallet_id, &user, &code);
+ evil_client.init(&wallet_id, &user, &asset);
client.add_allowed_token(&admin, &evil_id);
- client.set_spend_limit(&user, &code, &1_000_000_i128);
+ client.set_spend_limit(&user, &asset, &1_000_000_i128);
env.ledger().with_mut(|l| l.sequence_number = 100);
wrapper_client.approve(&user, &wallet_id, &1_000, &10_000);
@@ -3482,7 +3646,7 @@ mod tests {
// The reentrant callback inside MaliciousToken::transfer must be
// rejected by the host, which must fail transfer_from's call into
// it, which must fail send() as a whole — never a silent success.
- let result = client.try_send(&user, &evil_id, &code, &to, &100);
+ let result = client.try_send(&user, &evil_id, &asset, &to, &100);
assert!(
result.is_err(),
"send() must fail when the token contract attempts to re-enter GlobeWallet, not silently succeed"
@@ -3494,7 +3658,7 @@ mod tests {
// must be no DailySpent entry at all, proving neither the intended
// spend nor a reentrant double-spend was left committed.
env.as_contract(&wallet_id, || {
- let key = DataKey::DailySpent(user.clone(), code.clone());
+ let key = DataKey::DailySpent(user.clone(), asset.clone());
let record: Option = env.storage().persistent().get(&key);
assert!(
record.is_none(),
@@ -3506,6 +3670,160 @@ mod tests {
// The spend limit configuration itself (untouched by this call
// either way) confirms setup was correct and we're not passing
// vacuously because the limit was never configured.
- assert_eq!(client.get_spend_limit(&user, &code), 1_000_000);
+ assert_eq!(client.get_spend_limit(&user, &asset), 1_000_000);
+ }
+
+ // ── Issue #82: Same-Code Different-Issuer Disambiguation & Acceptance Tests ──
+
+ #[test]
+ fn test_same_code_different_issuer_independent_spend_limits() {
+ let (env, _cid, _admin, client) = setup();
+ let user = Address::generate(&env);
+
+ let issuer_a = Address::generate(&env);
+ let issuer_b = Address::generate(&env);
+
+ let asset_a = AssetInfo {
+ code: String::from_str(&env, "USDC"),
+ issuer: Some(issuer_a),
+ };
+ let asset_b = AssetInfo {
+ code: String::from_str(&env, "USDC"),
+ issuer: Some(issuer_b),
+ };
+
+ client.add_asset(&user, &asset_a);
+ client.add_asset(&user, &asset_b);
+
+ client.set_spend_limit(&user, &asset_a, &500_i128);
+ client.set_spend_limit(&user, &asset_b, &1_000_i128);
+
+ assert_eq!(client.get_spend_limit(&user, &asset_a), 500);
+ assert_eq!(client.get_spend_limit(&user, &asset_b), 1_000);
+
+ // Spend against asset_a budget
+ client.record_spend(&user, &asset_a, &400_i128);
+ // Spend against asset_b budget
+ client.record_spend(&user, &asset_b, &800_i128);
+
+ // asset_a: 400 + 200 > 500 -> fails
+ assert_eq!(
+ client.try_record_spend(&user, &asset_a, &200_i128),
+ Err(Ok(WalletError::SpendLimitExceeded))
+ );
+
+ // asset_b: 800 + 200 <= 1000 -> succeeds independently
+ client.record_spend(&user, &asset_b, &200_i128);
+
+ // asset_b: now full -> further spend fails
+ assert_eq!(
+ client.try_record_spend(&user, &asset_b, &1_i128),
+ Err(Ok(WalletError::SpendLimitExceeded))
+ );
+ }
+
+ #[test]
+ fn test_spend_limit_and_record_spend_reject_unregistered_asset() {
+ let (env, _cid, _admin, client) = setup();
+ let user = Address::generate(&env);
+
+ let unregistered = AssetInfo {
+ code: String::from_str(&env, "EURC"),
+ issuer: Some(Address::generate(&env)),
+ };
+
+ // Rejects setting spend limit on unregistered asset
+ assert_eq!(
+ client.try_set_spend_limit(&user, &unregistered, &1_000_i128),
+ Err(Ok(WalletError::AssetNotFound))
+ );
+
+ // Rejects recording spend on unregistered asset
+ assert_eq!(
+ client.try_record_spend(&user, &unregistered, &100_i128),
+ Err(Ok(WalletError::AssetNotFound))
+ );
+
+ // get_spend_limit returns 0 for unregistered asset
+ assert_eq!(client.get_spend_limit(&user, &unregistered), 0);
+ }
+
+ #[test]
+ fn test_case_variant_asset_shares_same_spend_limit_bucket() {
+ let (env, _cid, _admin, client) = setup();
+ let user = Address::generate(&env);
+ let usdc_canonical = usdc(&env);
+ client.add_asset(&user, &usdc_canonical);
+
+ let usdc_lowercase = AssetInfo {
+ code: String::from_str(&env, "usdc"),
+ issuer: usdc_canonical.issuer.clone(),
+ };
+
+ // Setting limit using lowercase variant sets limit for canonical asset
+ client.set_spend_limit(&user, &usdc_lowercase, &1_000_i128);
+ assert_eq!(client.get_spend_limit(&user, &usdc_canonical), 1_000);
+ assert_eq!(client.get_spend_limit(&user, &usdc_lowercase), 1_000);
+
+ // Spend via canonical
+ client.record_spend(&user, &usdc_canonical, &600_i128);
+
+ // Spend via lowercase variant accumulates in the same bucket
+ client.record_spend(&user, &usdc_lowercase, &400_i128);
+
+ // Next unit fails on either
+ assert_eq!(
+ client.try_record_spend(&user, &usdc_canonical, &1_i128),
+ Err(Ok(WalletError::SpendLimitExceeded))
+ );
+ assert_eq!(
+ client.try_record_spend(&user, &usdc_lowercase, &1_i128),
+ Err(Ok(WalletError::SpendLimitExceeded))
+ );
+ }
+
+ #[test]
+ fn test_migrate_spend_limits_and_legacy_fallback() {
+ let (env, cid, _admin, client) = setup();
+ let user = Address::generate(&env);
+ let xlm_asset = xlm(&env);
+ let usdc_asset = usdc(&env);
+ client.add_asset(&user, &xlm_asset);
+ client.add_asset(&user, &usdc_asset);
+
+ // Write legacy entries directly to persistent storage under old (Symbol, Address, String) keys
+ let legacy_xlm_spend_key = (Symbol::new(&env, "SpendLimit"), user.clone(), String::from_str(&env, "XLM"));
+ let legacy_xlm_daily_key = (Symbol::new(&env, "DailySpent"), user.clone(), String::from_str(&env, "XLM"));
+ let legacy_usdc_spend_key = (Symbol::new(&env, "SpendLimit"), user.clone(), String::from_str(&env, "USDC"));
+
+ env.as_contract(&cid, || {
+ env.storage().persistent().set(&legacy_xlm_spend_key, &500_i128);
+ env.storage().persistent().set(&legacy_xlm_daily_key, &SpendRecord { amount: 200, day: 0 });
+ env.storage().persistent().set(&legacy_usdc_spend_key, &2_000_i128);
+ });
+
+ // Lazy fallback: get_spend_limit reads legacy key before migration
+ assert_eq!(client.get_spend_limit(&user, &xlm_asset), 500);
+ assert_eq!(client.get_spend_limit(&user, &usdc_asset), 2_000);
+
+ // Explicit migration runs and migrates both assets
+ let migrated_count = client.migrate_spend_limits(&user);
+ assert_eq!(migrated_count, 2);
+
+ // Verify storage keys were converted to DataKey::SpendLimit(user, AssetInfo)
+ env.as_contract(&cid, || {
+ assert!(env.storage().persistent().has(&DataKey::SpendLimit(user.clone(), xlm_asset.clone())));
+ assert!(env.storage().persistent().has(&DataKey::SpendLimit(user.clone(), usdc_asset.clone())));
+ assert!(!env.storage().persistent().has(&legacy_xlm_spend_key));
+ assert!(!env.storage().persistent().has(&legacy_xlm_daily_key));
+ assert!(!env.storage().persistent().has(&legacy_usdc_spend_key));
+ });
+
+ // Spending respects migrated records: XLM already spent 200 of 500 limit
+ client.record_spend(&user, &xlm_asset, &300_i128);
+ assert_eq!(
+ client.try_record_spend(&user, &xlm_asset, &1_i128),
+ Err(Ok(WalletError::SpendLimitExceeded))
+ );
}
}
diff --git a/contracts/globe-wallet/test_snapshots/tests/test_add_allowed_token_requires_admin.1.json b/contracts/globe-wallet/test_snapshots/tests/test_add_allowed_token_requires_admin.1.json
index 47f3551..9d07398 100644
--- a/contracts/globe-wallet/test_snapshots/tests/test_add_allowed_token_requires_admin.1.json
+++ b/contracts/globe-wallet/test_snapshots/tests/test_add_allowed_token_requires_admin.1.json
@@ -174,7 +174,7 @@
},
"ext": "v0"
},
- 4095
+ 518400
]
],
[
@@ -372,7 +372,7 @@
},
"ext": "v0"
},
- 4095
+ 518400
]
]
]
@@ -491,7 +491,14 @@
}
],
"data": {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
}
}
}
diff --git a/contracts/globe-wallet/test_snapshots/tests/test_add_asset_case_variant_duplicate_fails.1.json b/contracts/globe-wallet/test_snapshots/tests/test_add_asset_case_variant_duplicate_fails.1.json
index 8bcf2d6..ae7a309 100644
--- a/contracts/globe-wallet/test_snapshots/tests/test_add_asset_case_variant_duplicate_fails.1.json
+++ b/contracts/globe-wallet/test_snapshots/tests/test_add_asset_case_variant_duplicate_fails.1.json
@@ -1,6 +1,6 @@
{
"generators": {
- "address": 5,
+ "address": 4,
"nonce": 0
},
"auth": [
@@ -428,7 +428,7 @@
"symbol": "issuer"
},
"val": {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
}
}
]
@@ -535,7 +535,7 @@
"symbol": "issuer"
},
"val": {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
}
}
]
diff --git a/contracts/globe-wallet/test_snapshots/tests/test_case_variant_asset_shares_same_spend_limit_bucket.1.json b/contracts/globe-wallet/test_snapshots/tests/test_case_variant_asset_shares_same_spend_limit_bucket.1.json
new file mode 100644
index 0000000..4c42999
--- /dev/null
+++ b/contracts/globe-wallet/test_snapshots/tests/test_case_variant_asset_shares_same_spend_limit_bucket.1.json
@@ -0,0 +1,1671 @@
+{
+ "generators": {
+ "address": 4,
+ "nonce": 0
+ },
+ "auth": [
+ [],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "add_asset",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "set_spend_limit",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "usdc"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 1000
+ }
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
+ [],
+ [],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "record_spend",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 600
+ }
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "record_spend",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "usdc"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 400
+ }
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
+ [],
+ []
+ ],
+ "ledger": {
+ "protocol_version": 21,
+ "sequence_number": 0,
+ "timestamp": 0,
+ "network_id": "0000000000000000000000000000000000000000000000000000000000000000",
+ "base_reserve": 0,
+ "min_persistent_entry_ttl": 4096,
+ "min_temp_entry_ttl": 16,
+ "max_entry_ttl": 6312000,
+ "ledger_entries": [
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "DailySpent"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "DailySpent"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "map": [
+ {
+ "key": {
+ "symbol": "amount"
+ },
+ "val": {
+ "i128": {
+ "hi": 0,
+ "lo": 1000
+ }
+ }
+ },
+ {
+ "key": {
+ "symbol": "day"
+ },
+ "val": {
+ "u64": 0
+ }
+ }
+ ]
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 34560
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "SpendLimit"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "SpendLimit"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "i128": {
+ "hi": 0,
+ "lo": 1000
+ }
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "vec": [
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": "ledger_key_contract_instance",
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": "ledger_key_contract_instance",
+ "durability": "persistent",
+ "val": {
+ "contract_instance": {
+ "executable": {
+ "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
+ },
+ "storage": [
+ {
+ "key": {
+ "vec": [
+ {
+ "symbol": "Admin"
+ }
+ ]
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4"
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 801925984706572462
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 801925984706572462
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 1033654523790656264
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 1033654523790656264
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 4837995959683129791
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 4837995959683129791
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 5541220902715666415
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 5541220902715666415
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
+ [
+ {
+ "contract_code": {
+ "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_code": {
+ "ext": "v0",
+ "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "code": ""
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ]
+ ]
+ },
+ "events": [
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "initialize"
+ }
+ ],
+ "data": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4"
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "initialized"
+ }
+ ],
+ "data": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4"
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "initialize"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "asset_added"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "string": "USDC"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "set_spend_limit"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "usdc"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 1000
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "spend_limit_set"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "string": "USDC"
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 1000
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "set_spend_limit"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "get_spend_limit"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "get_spend_limit"
+ }
+ ],
+ "data": {
+ "i128": {
+ "hi": 0,
+ "lo": 1000
+ }
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "get_spend_limit"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "usdc"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "get_spend_limit"
+ }
+ ],
+ "data": {
+ "i128": {
+ "hi": 0,
+ "lo": 1000
+ }
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "record_spend"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 600
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "spend_recorded"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "string": "USDC"
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 600
+ }
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 600
+ }
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 1000
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "record_spend"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "record_spend"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "usdc"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 400
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "spend_recorded"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "string": "USDC"
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 400
+ }
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 1000
+ }
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 1000
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "record_spend"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "record_spend"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 1
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "record_spend"
+ }
+ ],
+ "data": {
+ "error": {
+ "contract": 1007
+ }
+ }
+ }
+ }
+ },
+ "failed_call": true
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "error"
+ },
+ {
+ "error": {
+ "contract": 1007
+ }
+ }
+ ],
+ "data": {
+ "string": "escalating Ok(ScErrorType::Contract) frame-exit to Err"
+ }
+ }
+ }
+ },
+ "failed_call": true
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "error"
+ },
+ {
+ "error": {
+ "contract": 1007
+ }
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "string": "contract try_call failed"
+ },
+ {
+ "symbol": "record_spend"
+ },
+ {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 1
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "record_spend"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "usdc"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 1
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "record_spend"
+ }
+ ],
+ "data": {
+ "error": {
+ "contract": 1007
+ }
+ }
+ }
+ }
+ },
+ "failed_call": true
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "error"
+ },
+ {
+ "error": {
+ "contract": 1007
+ }
+ }
+ ],
+ "data": {
+ "string": "escalating Ok(ScErrorType::Contract) frame-exit to Err"
+ }
+ }
+ }
+ },
+ "failed_call": true
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "error"
+ },
+ {
+ "error": {
+ "contract": 1007
+ }
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "string": "contract try_call failed"
+ },
+ {
+ "symbol": "record_spend"
+ },
+ {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "usdc"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 1
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ }
+ ]
+}
\ No newline at end of file
diff --git a/contracts/globe-wallet/test_snapshots/tests/test_daily_spent_survives_temporary_ttl_eviction.1.json b/contracts/globe-wallet/test_snapshots/tests/test_daily_spent_survives_temporary_ttl_eviction.1.json
index 7b53ead..6bb9f2d 100644
--- a/contracts/globe-wallet/test_snapshots/tests/test_daily_spent_survives_temporary_ttl_eviction.1.json
+++ b/contracts/globe-wallet/test_snapshots/tests/test_daily_spent_survives_temporary_ttl_eviction.1.json
@@ -5,6 +5,43 @@
},
"auth": [
[],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "add_asset",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
[
[
"CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
@@ -18,7 +55,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -46,7 +98,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -86,7 +153,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -109,7 +191,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -157,7 +254,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -180,7 +292,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -198,6 +325,70 @@
518400
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "vec": [
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
[
{
"contract_data": {
@@ -276,6 +467,39 @@
6311999
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 1033654523790656264
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 1033654523790656264
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
[
{
"contract_data": {
@@ -415,7 +639,49 @@
"bytes": "0000000000000000000000000000000000000000000000000000000000000001"
},
{
- "symbol": "set_spend_limit"
+ "symbol": "add_asset"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "asset_added"
}
],
"data": {
@@ -425,6 +691,75 @@
},
{
"string": "XLM"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "set_spend_limit"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -517,7 +852,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -622,7 +972,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -718,7 +1083,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
diff --git a/contracts/globe-wallet/test_snapshots/tests/test_migrate_spend_limits_and_legacy_fallback.1.json b/contracts/globe-wallet/test_snapshots/tests/test_migrate_spend_limits_and_legacy_fallback.1.json
new file mode 100644
index 0000000..5456d17
--- /dev/null
+++ b/contracts/globe-wallet/test_snapshots/tests/test_migrate_spend_limits_and_legacy_fallback.1.json
@@ -0,0 +1,1495 @@
+{
+ "generators": {
+ "address": 4,
+ "nonce": 0
+ },
+ "auth": [
+ [],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "add_asset",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "add_asset",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
+ [],
+ [],
+ [],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "migrate_spend_limits",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
+ [],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "record_spend",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 300
+ }
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
+ []
+ ],
+ "ledger": {
+ "protocol_version": 21,
+ "sequence_number": 0,
+ "timestamp": 0,
+ "network_id": "0000000000000000000000000000000000000000000000000000000000000000",
+ "base_reserve": 0,
+ "min_persistent_entry_ttl": 4096,
+ "min_temp_entry_ttl": 16,
+ "max_entry_ttl": 6312000,
+ "ledger_entries": [
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "DailySpent"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "DailySpent"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "map": [
+ {
+ "key": {
+ "symbol": "amount"
+ },
+ "val": {
+ "i128": {
+ "hi": 0,
+ "lo": 500
+ }
+ }
+ },
+ {
+ "key": {
+ "symbol": "day"
+ },
+ "val": {
+ "u64": 0
+ }
+ }
+ ]
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 34560
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "SpendLimit"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "SpendLimit"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "i128": {
+ "hi": 0,
+ "lo": 2000
+ }
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "SpendLimit"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "SpendLimit"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "i128": {
+ "hi": 0,
+ "lo": 500
+ }
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "vec": [
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": "ledger_key_contract_instance",
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": "ledger_key_contract_instance",
+ "durability": "persistent",
+ "val": {
+ "contract_instance": {
+ "executable": {
+ "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
+ },
+ "storage": [
+ {
+ "key": {
+ "vec": [
+ {
+ "symbol": "Admin"
+ }
+ ]
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4"
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 801925984706572462
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 801925984706572462
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 1033654523790656264
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 1033654523790656264
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 4837995959683129791
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 4837995959683129791
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 5541220902715666415
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 5541220902715666415
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
+ [
+ {
+ "contract_code": {
+ "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_code": {
+ "ext": "v0",
+ "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "code": ""
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ]
+ ]
+ },
+ "events": [
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "initialize"
+ }
+ ],
+ "data": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4"
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "initialized"
+ }
+ ],
+ "data": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4"
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "initialize"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "asset_added"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "string": "XLM"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "asset_added"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "string": "USDC"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "get_spend_limit"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "get_spend_limit"
+ }
+ ],
+ "data": {
+ "i128": {
+ "hi": 0,
+ "lo": 500
+ }
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "get_spend_limit"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "get_spend_limit"
+ }
+ ],
+ "data": {
+ "i128": {
+ "hi": 0,
+ "lo": 2000
+ }
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "migrate_spend_limits"
+ }
+ ],
+ "data": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "spend_limits_migrated"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "u32": 2
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "migrate_spend_limits"
+ }
+ ],
+ "data": {
+ "u32": 2
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "record_spend"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 300
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "spend_recorded"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "string": "XLM"
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 300
+ }
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 500
+ }
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 500
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "record_spend"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "record_spend"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 1
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "record_spend"
+ }
+ ],
+ "data": {
+ "error": {
+ "contract": 1007
+ }
+ }
+ }
+ }
+ },
+ "failed_call": true
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "error"
+ },
+ {
+ "error": {
+ "contract": 1007
+ }
+ }
+ ],
+ "data": {
+ "string": "escalating Ok(ScErrorType::Contract) frame-exit to Err"
+ }
+ }
+ }
+ },
+ "failed_call": true
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "error"
+ },
+ {
+ "error": {
+ "contract": 1007
+ }
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "string": "contract try_call failed"
+ },
+ {
+ "symbol": "record_spend"
+ },
+ {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 1
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ }
+ ]
+}
\ No newline at end of file
diff --git a/contracts/globe-wallet/test_snapshots/tests/test_migrate_user_assets_trims_excess.1.json b/contracts/globe-wallet/test_snapshots/tests/test_migrate_user_assets_trims_excess.1.json
index ff429c2..a3346b3 100644
--- a/contracts/globe-wallet/test_snapshots/tests/test_migrate_user_assets_trims_excess.1.json
+++ b/contracts/globe-wallet/test_snapshots/tests/test_migrate_user_assets_trims_excess.1.json
@@ -1,6 +1,6 @@
{
"generators": {
- "address": 3,
+ "address": 63,
"nonce": 0
},
"auth": [
@@ -74,7 +74,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET0"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET0"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
}
]
},
@@ -97,7 +114,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET0"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET0"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
}
]
},
@@ -145,7 +179,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET1"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET1"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ }
+ }
+ ]
}
]
},
@@ -168,7 +219,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET1"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET1"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ }
+ }
+ ]
}
]
},
@@ -216,7 +284,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET10"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET10"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BV5"
+ }
+ }
+ ]
}
]
},
@@ -239,7 +324,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET10"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET10"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BV5"
+ }
+ }
+ ]
}
]
},
@@ -287,7 +389,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET11"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET11"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6J5N"
+ }
+ }
+ ]
}
]
},
@@ -310,7 +429,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET11"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET11"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6J5N"
+ }
+ }
+ ]
}
]
},
@@ -358,7 +494,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET12"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET12"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB6KO"
+ }
+ }
+ ]
}
]
},
@@ -381,7 +534,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET12"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET12"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB6KO"
+ }
+ }
+ ]
}
]
},
@@ -429,7 +599,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET13"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET13"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDWC6"
+ }
+ }
+ ]
}
]
},
@@ -452,7 +639,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET13"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET13"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDWC6"
+ }
+ }
+ ]
}
]
},
@@ -500,7 +704,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET14"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET14"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFO3O"
+ }
+ }
+ ]
}
]
},
@@ -523,7 +744,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET14"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET14"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFO3O"
+ }
+ }
+ ]
}
]
},
@@ -571,7 +809,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET15"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET15"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHGT6"
+ }
+ }
+ ]
}
]
},
@@ -594,8 +849,25 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET15"
- }
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET15"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHGT6"
+ }
+ }
+ ]
+ }
]
},
"durability": "persistent",
@@ -642,7 +914,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET16"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET16"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABI7IO"
+ }
+ }
+ ]
}
]
},
@@ -665,7 +954,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET16"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET16"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABI7IO"
+ }
+ }
+ ]
}
]
},
@@ -713,7 +1019,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET17"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET17"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKXA6"
+ }
+ }
+ ]
}
]
},
@@ -736,7 +1059,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET17"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET17"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKXA6"
+ }
+ }
+ ]
}
]
},
@@ -784,7 +1124,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET18"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET18"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMPZO"
+ }
+ }
+ ]
}
]
},
@@ -807,7 +1164,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET18"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET18"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMPZO"
+ }
+ }
+ ]
}
]
},
@@ -855,7 +1229,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET19"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET19"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOHR6"
+ }
+ }
+ ]
}
]
},
@@ -878,7 +1269,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET19"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET19"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOHR6"
+ }
+ }
+ ]
}
]
},
@@ -926,7 +1334,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET2"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET2"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
+ }
+ }
+ ]
}
]
},
@@ -949,7 +1374,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET2"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET2"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
+ }
+ }
+ ]
}
]
},
@@ -997,7 +1439,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET20"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET20"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR4OP"
+ }
+ }
+ ]
}
]
},
@@ -1020,7 +1479,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET20"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET20"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR4OP"
+ }
+ }
+ ]
}
]
},
@@ -1068,7 +1544,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET21"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET21"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTUG7"
+ }
+ }
+ ]
}
]
},
@@ -1091,7 +1584,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET21"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET21"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTUG7"
+ }
+ }
+ ]
}
]
},
@@ -1139,7 +1649,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET22"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET22"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVM7P"
+ }
+ }
+ ]
}
]
},
@@ -1162,7 +1689,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET22"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET22"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVM7P"
+ }
+ }
+ ]
}
]
},
@@ -1210,7 +1754,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET23"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET23"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXEX7"
+ }
+ }
+ ]
}
]
},
@@ -1233,7 +1794,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET23"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET23"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXEX7"
+ }
+ }
+ ]
}
]
},
@@ -1281,7 +1859,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET24"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET24"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABY5MP"
+ }
+ }
+ ]
}
]
},
@@ -1304,7 +1899,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET24"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET24"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABY5MP"
+ }
+ }
+ ]
}
]
},
@@ -1352,7 +1964,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET25"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET25"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2VE7"
+ }
+ }
+ ]
}
]
},
@@ -1375,7 +2004,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET25"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET25"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2VE7"
+ }
+ }
+ ]
}
]
},
@@ -1423,7 +2069,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET26"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET26"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4N5P"
+ }
+ }
+ ]
}
]
},
@@ -1446,7 +2109,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET26"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET26"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4N5P"
+ }
+ }
+ ]
}
]
},
@@ -1494,7 +2174,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET27"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET27"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6FV7"
+ }
+ }
+ ]
}
]
},
@@ -1517,7 +2214,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET27"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET27"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6FV7"
+ }
+ }
+ ]
}
]
},
@@ -1565,7 +2279,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET28"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET28"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBKTY"
+ }
+ }
+ ]
}
]
},
@@ -1588,7 +2319,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET28"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET28"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBKTY"
+ }
+ }
+ ]
}
]
},
@@ -1636,7 +2384,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET29"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET29"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDC3I"
+ }
+ }
+ ]
}
]
},
@@ -1659,8 +2424,25 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET29"
- }
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET29"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDC3I"
+ }
+ }
+ ]
+ }
]
},
"durability": "persistent",
@@ -1707,7 +2489,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET3"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET3"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM"
+ }
+ }
+ ]
}
]
},
@@ -1730,7 +2529,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET3"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET3"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM"
+ }
+ }
+ ]
}
]
},
@@ -1778,7 +2594,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET30"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET30"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACF2CY"
+ }
+ }
+ ]
}
]
},
@@ -1801,7 +2634,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET30"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET30"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACF2CY"
+ }
+ }
+ ]
}
]
},
@@ -1849,7 +2699,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET31"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET31"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHSKI"
+ }
+ }
+ ]
}
]
},
@@ -1872,7 +2739,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET31"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET31"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHSKI"
+ }
+ }
+ ]
}
]
},
@@ -1920,7 +2804,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET32"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET32"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACILRY"
+ }
+ }
+ ]
}
]
},
@@ -1943,7 +2844,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET32"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET32"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACILRY"
+ }
+ }
+ ]
}
]
},
@@ -1991,7 +2909,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET33"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET33"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKDZI"
+ }
+ }
+ ]
}
]
},
@@ -2014,7 +2949,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET33"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET33"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKDZI"
+ }
+ }
+ ]
}
]
},
@@ -2062,7 +3014,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET34"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET34"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACM3AY"
+ }
+ }
+ ]
}
]
},
@@ -2085,7 +3054,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET34"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET34"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACM3AY"
+ }
+ }
+ ]
}
]
},
@@ -2133,7 +3119,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET35"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET35"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOTII"
+ }
+ }
+ ]
}
]
},
@@ -2156,7 +3159,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET35"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET35"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOTII"
+ }
+ }
+ ]
}
]
},
@@ -2204,7 +3224,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET36"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET36"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRIXZ"
+ }
+ }
+ ]
}
]
},
@@ -2227,7 +3264,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET36"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET36"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRIXZ"
+ }
+ }
+ ]
}
]
},
@@ -2275,7 +3329,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET37"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET37"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTA7J"
+ }
+ }
+ ]
}
]
},
@@ -2298,7 +3369,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET37"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET37"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTA7J"
+ }
+ }
+ ]
}
]
},
@@ -2346,7 +3434,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET38"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET38"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVYGZ"
+ }
+ }
+ ]
}
]
},
@@ -2369,7 +3474,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET38"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET38"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVYGZ"
+ }
+ }
+ ]
}
]
},
@@ -2417,7 +3539,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET39"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET39"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXQOJ"
+ }
+ }
+ ]
}
]
},
@@ -2440,7 +3579,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET39"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET39"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXQOJ"
+ }
+ }
+ ]
}
]
},
@@ -2488,7 +3644,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET4"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET4"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5"
+ }
+ }
+ ]
}
]
},
@@ -2511,7 +3684,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET4"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET4"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5"
+ }
+ }
+ ]
}
]
},
@@ -2559,7 +3749,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET40"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET40"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYJVZ"
+ }
+ }
+ ]
}
]
},
@@ -2582,7 +3789,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET40"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET40"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYJVZ"
+ }
+ }
+ ]
}
]
},
@@ -2630,7 +3854,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET41"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET41"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2B5J"
+ }
+ }
+ ]
}
]
},
@@ -2653,7 +3894,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET41"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET41"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2B5J"
+ }
+ }
+ ]
}
]
},
@@ -2701,7 +3959,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET42"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET42"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4ZEZ"
+ }
+ }
+ ]
}
]
},
@@ -2724,8 +3999,25 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET42"
- }
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET42"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4ZEZ"
+ }
+ }
+ ]
+ }
]
},
"durability": "persistent",
@@ -2772,7 +4064,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET43"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET43"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6RMJ"
+ }
+ }
+ ]
}
]
},
@@ -2795,7 +4104,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET43"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET43"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6RMJ"
+ }
+ }
+ ]
}
]
},
@@ -2843,7 +4169,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET44"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET44"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBG3K"
+ }
+ }
+ ]
}
]
},
@@ -2866,7 +4209,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET44"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET44"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBG3K"
+ }
+ }
+ ]
}
]
},
@@ -2914,7 +4274,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET45"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET45"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDOT2"
+ }
+ }
+ ]
}
]
},
@@ -2937,7 +4314,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET45"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET45"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDOT2"
+ }
+ }
+ ]
}
]
},
@@ -2985,7 +4379,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET46"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET46"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFWKK"
+ }
+ }
+ ]
}
]
},
@@ -3008,7 +4419,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET46"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET46"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFWKK"
+ }
+ }
+ ]
}
]
},
@@ -3056,7 +4484,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET47"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET47"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADH6C2"
+ }
+ }
+ ]
}
]
},
@@ -3079,7 +4524,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET47"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET47"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADH6C2"
+ }
+ }
+ ]
}
]
},
@@ -3127,7 +4589,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET48"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET48"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIHZK"
+ }
+ }
+ ]
}
]
},
@@ -3150,7 +4629,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET48"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET48"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIHZK"
+ }
+ }
+ ]
}
]
},
@@ -3198,7 +4694,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET49"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET49"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKPR2"
+ }
+ }
+ ]
}
]
},
@@ -3221,7 +4734,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET49"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET49"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKPR2"
+ }
+ }
+ ]
}
]
},
@@ -3269,7 +4799,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET5"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET5"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON"
+ }
+ }
+ ]
}
]
},
@@ -3292,7 +4839,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET5"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET5"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON"
+ }
+ }
+ ]
}
]
},
@@ -3340,7 +4904,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET6"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET6"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAX5"
+ }
+ }
+ ]
}
]
},
@@ -3363,7 +4944,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET6"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET6"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAX5"
+ }
+ }
+ ]
}
]
},
@@ -3411,7 +5009,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET7"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET7"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXI7N"
+ }
+ }
+ ]
}
]
},
@@ -3434,7 +5049,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET7"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET7"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXI7N"
+ }
+ }
+ ]
}
]
},
@@ -3482,7 +5114,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET8"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET8"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYRE5"
+ }
+ }
+ ]
}
]
},
@@ -3505,7 +5154,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET8"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET8"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYRE5"
+ }
+ }
+ ]
}
]
},
@@ -3553,7 +5219,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET9"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET9"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN"
+ }
+ }
+ ]
}
]
},
@@ -3576,7 +5259,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET9"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET9"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN"
+ }
+ }
+ ]
}
]
},
@@ -3624,7 +5324,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET0"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET0"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
}
]
},
@@ -3647,7 +5364,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET0"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET0"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
}
]
},
@@ -3678,7 +5412,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET1"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET1"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ }
+ }
+ ]
}
]
},
@@ -3701,7 +5452,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET1"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET1"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ }
+ }
+ ]
}
]
},
@@ -3732,7 +5500,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET10"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET10"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BV5"
+ }
+ }
+ ]
}
]
},
@@ -3755,8 +5540,25 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET10"
- }
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET10"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BV5"
+ }
+ }
+ ]
+ }
]
},
"durability": "persistent",
@@ -3786,7 +5588,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET11"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET11"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6J5N"
+ }
+ }
+ ]
}
]
},
@@ -3809,7 +5628,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET11"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET11"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6J5N"
+ }
+ }
+ ]
}
]
},
@@ -3840,7 +5676,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET12"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET12"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB6KO"
+ }
+ }
+ ]
}
]
},
@@ -3863,7 +5716,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET12"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET12"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB6KO"
+ }
+ }
+ ]
}
]
},
@@ -3894,7 +5764,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET13"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET13"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDWC6"
+ }
+ }
+ ]
}
]
},
@@ -3917,7 +5804,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET13"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET13"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDWC6"
+ }
+ }
+ ]
}
]
},
@@ -3948,7 +5852,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET14"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET14"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFO3O"
+ }
+ }
+ ]
}
]
},
@@ -3971,7 +5892,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET14"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET14"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFO3O"
+ }
+ }
+ ]
}
]
},
@@ -4002,7 +5940,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET15"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET15"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHGT6"
+ }
+ }
+ ]
}
]
},
@@ -4025,7 +5980,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET15"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET15"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHGT6"
+ }
+ }
+ ]
}
]
},
@@ -4056,7 +6028,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET16"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET16"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABI7IO"
+ }
+ }
+ ]
}
]
},
@@ -4079,7 +6068,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET16"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET16"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABI7IO"
+ }
+ }
+ ]
}
]
},
@@ -4110,7 +6116,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET17"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET17"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKXA6"
+ }
+ }
+ ]
}
]
},
@@ -4133,7 +6156,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET17"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET17"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKXA6"
+ }
+ }
+ ]
}
]
},
@@ -4164,7 +6204,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET18"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET18"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMPZO"
+ }
+ }
+ ]
}
]
},
@@ -4187,7 +6244,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET18"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET18"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMPZO"
+ }
+ }
+ ]
}
]
},
@@ -4218,7 +6292,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET19"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET19"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOHR6"
+ }
+ }
+ ]
}
]
},
@@ -4241,7 +6332,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET19"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET19"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOHR6"
+ }
+ }
+ ]
}
]
},
@@ -4272,7 +6380,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET2"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET2"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
+ }
+ }
+ ]
}
]
},
@@ -4295,7 +6420,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET2"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET2"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
+ }
+ }
+ ]
}
]
},
@@ -4326,7 +6468,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET20"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET20"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR4OP"
+ }
+ }
+ ]
}
]
},
@@ -4349,7 +6508,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET20"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET20"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR4OP"
+ }
+ }
+ ]
}
]
},
@@ -4380,7 +6556,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET21"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET21"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTUG7"
+ }
+ }
+ ]
}
]
},
@@ -4403,7 +6596,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET21"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET21"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTUG7"
+ }
+ }
+ ]
}
]
},
@@ -4434,7 +6644,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET22"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET22"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVM7P"
+ }
+ }
+ ]
}
]
},
@@ -4457,7 +6684,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET22"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET22"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVM7P"
+ }
+ }
+ ]
}
]
},
@@ -4488,7 +6732,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET23"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET23"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXEX7"
+ }
+ }
+ ]
}
]
},
@@ -4511,7 +6772,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET23"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET23"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXEX7"
+ }
+ }
+ ]
}
]
},
@@ -4542,7 +6820,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET24"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET24"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABY5MP"
+ }
+ }
+ ]
}
]
},
@@ -4565,7 +6860,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET24"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET24"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABY5MP"
+ }
+ }
+ ]
}
]
},
@@ -4596,7 +6908,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET25"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET25"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2VE7"
+ }
+ }
+ ]
}
]
},
@@ -4619,7 +6948,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET25"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET25"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2VE7"
+ }
+ }
+ ]
}
]
},
@@ -4650,7 +6996,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET26"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET26"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4N5P"
+ }
+ }
+ ]
}
]
},
@@ -4673,7 +7036,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET26"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET26"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4N5P"
+ }
+ }
+ ]
}
]
},
@@ -4704,7 +7084,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET27"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET27"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6FV7"
+ }
+ }
+ ]
}
]
},
@@ -4727,7 +7124,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET27"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET27"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6FV7"
+ }
+ }
+ ]
}
]
},
@@ -4758,7 +7172,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET28"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET28"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBKTY"
+ }
+ }
+ ]
}
]
},
@@ -4781,7 +7212,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET28"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET28"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBKTY"
+ }
+ }
+ ]
}
]
},
@@ -4812,7 +7260,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET29"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET29"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDC3I"
+ }
+ }
+ ]
}
]
},
@@ -4835,7 +7300,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET29"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET29"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDC3I"
+ }
+ }
+ ]
}
]
},
@@ -4866,7 +7348,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET3"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET3"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM"
+ }
+ }
+ ]
}
]
},
@@ -4889,7 +7388,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET3"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET3"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM"
+ }
+ }
+ ]
}
]
},
@@ -4920,7 +7436,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET30"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET30"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACF2CY"
+ }
+ }
+ ]
}
]
},
@@ -4943,7 +7476,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET30"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET30"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACF2CY"
+ }
+ }
+ ]
}
]
},
@@ -4974,7 +7524,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET31"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET31"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHSKI"
+ }
+ }
+ ]
}
]
},
@@ -4997,7 +7564,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET31"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET31"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHSKI"
+ }
+ }
+ ]
}
]
},
@@ -5028,7 +7612,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET32"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET32"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACILRY"
+ }
+ }
+ ]
}
]
},
@@ -5051,7 +7652,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET32"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET32"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACILRY"
+ }
+ }
+ ]
}
]
},
@@ -5082,7 +7700,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET33"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET33"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKDZI"
+ }
+ }
+ ]
}
]
},
@@ -5105,7 +7740,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET33"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET33"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKDZI"
+ }
+ }
+ ]
}
]
},
@@ -5136,7 +7788,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET34"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET34"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACM3AY"
+ }
+ }
+ ]
}
]
},
@@ -5159,7 +7828,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET34"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET34"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACM3AY"
+ }
+ }
+ ]
}
]
},
@@ -5190,7 +7876,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET35"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET35"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOTII"
+ }
+ }
+ ]
}
]
},
@@ -5213,7 +7916,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET35"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET35"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOTII"
+ }
+ }
+ ]
}
]
},
@@ -5244,7 +7964,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET36"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET36"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRIXZ"
+ }
+ }
+ ]
}
]
},
@@ -5267,7 +8004,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET36"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET36"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRIXZ"
+ }
+ }
+ ]
}
]
},
@@ -5298,7 +8052,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET37"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET37"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTA7J"
+ }
+ }
+ ]
}
]
},
@@ -5321,7 +8092,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET37"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET37"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTA7J"
+ }
+ }
+ ]
}
]
},
@@ -5352,7 +8140,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET38"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET38"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVYGZ"
+ }
+ }
+ ]
}
]
},
@@ -5375,7 +8180,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET38"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET38"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVYGZ"
+ }
+ }
+ ]
}
]
},
@@ -5406,7 +8228,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET39"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET39"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXQOJ"
+ }
+ }
+ ]
}
]
},
@@ -5429,7 +8268,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET39"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET39"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXQOJ"
+ }
+ }
+ ]
}
]
},
@@ -5460,7 +8316,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET4"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET4"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5"
+ }
+ }
+ ]
}
]
},
@@ -5483,7 +8356,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET4"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET4"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5"
+ }
+ }
+ ]
}
]
},
@@ -5514,7 +8404,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET40"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET40"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYJVZ"
+ }
+ }
+ ]
}
]
},
@@ -5537,7 +8444,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET40"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET40"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYJVZ"
+ }
+ }
+ ]
}
]
},
@@ -5568,7 +8492,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET41"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET41"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2B5J"
+ }
+ }
+ ]
}
]
},
@@ -5591,7 +8532,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET41"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET41"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2B5J"
+ }
+ }
+ ]
}
]
},
@@ -5622,7 +8580,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET42"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET42"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4ZEZ"
+ }
+ }
+ ]
}
]
},
@@ -5645,7 +8620,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET42"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET42"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4ZEZ"
+ }
+ }
+ ]
}
]
},
@@ -5676,7 +8668,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET43"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET43"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6RMJ"
+ }
+ }
+ ]
}
]
},
@@ -5699,7 +8708,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET43"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET43"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6RMJ"
+ }
+ }
+ ]
}
]
},
@@ -5730,7 +8756,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET44"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET44"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBG3K"
+ }
+ }
+ ]
}
]
},
@@ -5753,7 +8796,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET44"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET44"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBG3K"
+ }
+ }
+ ]
}
]
},
@@ -5784,7 +8844,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET45"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET45"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDOT2"
+ }
+ }
+ ]
}
]
},
@@ -5807,7 +8884,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET45"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET45"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDOT2"
+ }
+ }
+ ]
}
]
},
@@ -5838,7 +8932,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET46"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET46"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFWKK"
+ }
+ }
+ ]
}
]
},
@@ -5861,7 +8972,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET46"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET46"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFWKK"
+ }
+ }
+ ]
}
]
},
@@ -5892,7 +9020,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET47"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET47"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADH6C2"
+ }
+ }
+ ]
}
]
},
@@ -5915,7 +9060,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET47"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET47"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADH6C2"
+ }
+ }
+ ]
}
]
},
@@ -5946,7 +9108,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET48"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET48"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIHZK"
+ }
+ }
+ ]
}
]
},
@@ -5969,7 +9148,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET48"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET48"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIHZK"
+ }
+ }
+ ]
}
]
},
@@ -6000,7 +9196,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET49"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET49"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKPR2"
+ }
+ }
+ ]
}
]
},
@@ -6023,7 +9236,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET49"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET49"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKPR2"
+ }
+ }
+ ]
}
]
},
@@ -6054,7 +9284,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET5"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET5"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON"
+ }
+ }
+ ]
}
]
},
@@ -6077,7 +9324,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET5"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET5"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON"
+ }
+ }
+ ]
}
]
},
@@ -6108,7 +9372,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET6"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET6"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAX5"
+ }
+ }
+ ]
}
]
},
@@ -6131,7 +9412,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET6"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET6"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAX5"
+ }
+ }
+ ]
}
]
},
@@ -6162,7 +9460,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET7"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET7"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXI7N"
+ }
+ }
+ ]
}
]
},
@@ -6185,7 +9500,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET7"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET7"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXI7N"
+ }
+ }
+ ]
}
]
},
@@ -6216,7 +9548,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET8"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET8"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYRE5"
+ }
+ }
+ ]
}
]
},
@@ -6239,7 +9588,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET8"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET8"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYRE5"
+ }
+ }
+ ]
}
]
},
@@ -6270,7 +9636,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET9"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET9"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN"
+ }
+ }
+ ]
}
]
},
@@ -6293,7 +9676,24 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "ASSET9"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "ASSET9"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN"
+ }
+ }
+ ]
}
]
},
@@ -6362,7 +9762,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
}
]
},
@@ -6380,7 +9782,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ }
}
]
},
@@ -6398,7 +9802,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
+ }
}
]
},
@@ -6416,7 +9822,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM"
+ }
}
]
},
@@ -6434,7 +9842,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5"
+ }
}
]
},
@@ -6452,7 +9862,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON"
+ }
}
]
},
@@ -6470,7 +9882,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAX5"
+ }
}
]
},
@@ -6488,7 +9902,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXI7N"
+ }
}
]
},
@@ -6506,7 +9922,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYRE5"
+ }
}
]
},
@@ -6524,7 +9942,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN"
+ }
}
]
},
@@ -6542,7 +9962,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BV5"
+ }
}
]
},
@@ -6560,7 +9982,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6J5N"
+ }
}
]
},
@@ -6578,7 +10002,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB6KO"
+ }
}
]
},
@@ -6596,7 +10022,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDWC6"
+ }
}
]
},
@@ -6614,7 +10042,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFO3O"
+ }
}
]
},
@@ -6632,7 +10062,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHGT6"
+ }
}
]
},
@@ -6650,7 +10082,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABI7IO"
+ }
}
]
},
@@ -6668,7 +10102,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKXA6"
+ }
}
]
},
@@ -6686,7 +10122,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMPZO"
+ }
}
]
},
@@ -6704,7 +10142,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOHR6"
+ }
}
]
},
@@ -6722,7 +10162,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR4OP"
+ }
}
]
},
@@ -6740,7 +10182,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTUG7"
+ }
}
]
},
@@ -6758,7 +10202,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVM7P"
+ }
}
]
},
@@ -6776,7 +10222,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXEX7"
+ }
}
]
},
@@ -6794,7 +10242,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABY5MP"
+ }
}
]
},
@@ -6812,7 +10262,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2VE7"
+ }
}
]
},
@@ -6830,7 +10282,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4N5P"
+ }
}
]
},
@@ -6848,7 +10302,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6FV7"
+ }
}
]
},
@@ -6866,7 +10322,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBKTY"
+ }
}
]
},
@@ -6884,7 +10342,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDC3I"
+ }
}
]
},
@@ -6902,7 +10362,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACF2CY"
+ }
}
]
},
@@ -6920,7 +10382,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHSKI"
+ }
}
]
},
@@ -6938,7 +10402,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACILRY"
+ }
}
]
},
@@ -6956,7 +10422,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKDZI"
+ }
}
]
},
@@ -6974,7 +10442,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACM3AY"
+ }
}
]
},
@@ -6992,7 +10462,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOTII"
+ }
}
]
},
@@ -7010,7 +10482,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRIXZ"
+ }
}
]
},
@@ -7028,7 +10502,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTA7J"
+ }
}
]
},
@@ -7046,7 +10522,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVYGZ"
+ }
}
]
},
@@ -7064,7 +10542,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXQOJ"
+ }
}
]
},
@@ -7082,7 +10562,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYJVZ"
+ }
}
]
},
@@ -7100,7 +10582,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2B5J"
+ }
}
]
},
@@ -7118,7 +10602,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4ZEZ"
+ }
}
]
},
@@ -7136,7 +10622,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6RMJ"
+ }
}
]
},
@@ -7154,7 +10642,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBG3K"
+ }
}
]
},
@@ -7172,7 +10662,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDOT2"
+ }
}
]
},
@@ -7190,7 +10682,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFWKK"
+ }
}
]
},
@@ -7208,7 +10702,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADH6C2"
+ }
}
]
},
@@ -7226,7 +10722,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIHZK"
+ }
}
]
},
@@ -7244,7 +10742,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKPR2"
+ }
}
]
}
@@ -7599,7 +11099,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
}
]
},
@@ -7617,7 +11119,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ }
}
]
},
@@ -7635,7 +11139,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
+ }
}
]
},
@@ -7653,7 +11159,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM"
+ }
}
]
},
@@ -7671,7 +11179,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5"
+ }
}
]
},
@@ -7689,7 +11199,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON"
+ }
}
]
},
@@ -7707,7 +11219,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAX5"
+ }
}
]
},
@@ -7725,7 +11239,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXI7N"
+ }
}
]
},
@@ -7743,7 +11259,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYRE5"
+ }
}
]
},
@@ -7761,7 +11279,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN"
+ }
}
]
},
@@ -7779,7 +11299,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BV5"
+ }
}
]
},
@@ -7797,7 +11319,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6J5N"
+ }
}
]
},
@@ -7815,7 +11339,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB6KO"
+ }
}
]
},
@@ -7833,7 +11359,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDWC6"
+ }
}
]
},
@@ -7851,7 +11379,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFO3O"
+ }
}
]
},
@@ -7869,7 +11399,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHGT6"
+ }
}
]
},
@@ -7887,7 +11419,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABI7IO"
+ }
}
]
},
@@ -7905,7 +11439,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKXA6"
+ }
}
]
},
@@ -7923,7 +11459,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMPZO"
+ }
}
]
},
@@ -7941,7 +11479,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOHR6"
+ }
}
]
},
@@ -7959,7 +11499,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR4OP"
+ }
}
]
},
@@ -7977,7 +11519,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTUG7"
+ }
}
]
},
@@ -7995,7 +11539,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVM7P"
+ }
}
]
},
@@ -8013,7 +11559,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXEX7"
+ }
}
]
},
@@ -8031,7 +11579,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABY5MP"
+ }
}
]
},
@@ -8049,7 +11599,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2VE7"
+ }
}
]
},
@@ -8067,7 +11619,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4N5P"
+ }
}
]
},
@@ -8085,7 +11639,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6FV7"
+ }
}
]
},
@@ -8103,7 +11659,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBKTY"
+ }
}
]
},
@@ -8121,7 +11679,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDC3I"
+ }
}
]
},
@@ -8139,7 +11699,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACF2CY"
+ }
}
]
},
@@ -8157,7 +11719,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHSKI"
+ }
}
]
},
@@ -8175,7 +11739,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACILRY"
+ }
}
]
},
@@ -8193,7 +11759,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKDZI"
+ }
}
]
},
@@ -8211,7 +11779,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACM3AY"
+ }
}
]
},
@@ -8229,7 +11799,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOTII"
+ }
}
]
},
@@ -8247,7 +11819,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRIXZ"
+ }
}
]
},
@@ -8265,7 +11839,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTA7J"
+ }
}
]
},
@@ -8283,7 +11859,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVYGZ"
+ }
}
]
},
@@ -8301,7 +11879,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXQOJ"
+ }
}
]
},
@@ -8319,7 +11899,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYJVZ"
+ }
}
]
},
@@ -8337,7 +11919,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2B5J"
+ }
}
]
},
@@ -8355,7 +11939,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4ZEZ"
+ }
}
]
},
@@ -8373,7 +11959,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6RMJ"
+ }
}
]
},
@@ -8391,7 +11979,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBG3K"
+ }
}
]
},
@@ -8409,7 +11999,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDOT2"
+ }
}
]
},
@@ -8427,7 +12019,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFWKK"
+ }
}
]
},
@@ -8445,7 +12039,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADH6C2"
+ }
}
]
},
@@ -8463,7 +12059,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIHZK"
+ }
}
]
},
@@ -8481,7 +12079,9 @@
"key": {
"symbol": "issuer"
},
- "val": "void"
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKPR2"
+ }
}
]
}
diff --git a/contracts/globe-wallet/test_snapshots/tests/test_no_limit_allows_any_spend.1.json b/contracts/globe-wallet/test_snapshots/tests/test_no_limit_allows_any_spend.1.json
index f78ab0c..701cf9f 100644
--- a/contracts/globe-wallet/test_snapshots/tests/test_no_limit_allows_any_spend.1.json
+++ b/contracts/globe-wallet/test_snapshots/tests/test_no_limit_allows_any_spend.1.json
@@ -5,6 +5,43 @@
},
"auth": [
[],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "add_asset",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
[
[
"CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
@@ -18,7 +55,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -44,6 +96,70 @@
"min_temp_entry_ttl": 16,
"max_entry_ttl": 6312000,
"ledger_entries": [
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "vec": [
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
[
{
"contract_data": {
@@ -122,6 +238,39 @@
6311999
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 5541220902715666415
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 5541220902715666415
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
[
{
"contract_code": {
@@ -228,7 +377,49 @@
"bytes": "0000000000000000000000000000000000000000000000000000000000000001"
},
{
- "symbol": "record_spend"
+ "symbol": "add_asset"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "asset_added"
}
],
"data": {
@@ -238,6 +429,75 @@
},
{
"string": "XLM"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "record_spend"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
diff --git a/contracts/globe-wallet/test_snapshots/tests/test_raise_spend_then_lower_limit.1.json b/contracts/globe-wallet/test_snapshots/tests/test_raise_spend_then_lower_limit.1.json
index 90bad75..d67ed47 100644
--- a/contracts/globe-wallet/test_snapshots/tests/test_raise_spend_then_lower_limit.1.json
+++ b/contracts/globe-wallet/test_snapshots/tests/test_raise_spend_then_lower_limit.1.json
@@ -5,6 +5,43 @@
},
"auth": [
[],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "add_asset",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
[
[
"CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
@@ -18,7 +55,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -46,7 +98,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -76,7 +143,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -106,7 +188,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -146,7 +243,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -169,7 +281,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -217,7 +344,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -240,7 +382,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -258,6 +415,70 @@
518400
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "vec": [
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
[
{
"contract_data": {
@@ -342,7 +563,7 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
"key": {
"ledger_key_nonce": {
- "nonce": 4270020994084947596
+ "nonce": 1033654523790656264
}
},
"durability": "temporary"
@@ -357,7 +578,7 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
"key": {
"ledger_key_nonce": {
- "nonce": 4270020994084947596
+ "nonce": 1033654523790656264
}
},
"durability": "temporary",
@@ -375,7 +596,7 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
"key": {
"ledger_key_nonce": {
- "nonce": 4837995959683129791
+ "nonce": 2032731177588607455
}
},
"durability": "temporary"
@@ -390,7 +611,7 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
"key": {
"ledger_key_nonce": {
- "nonce": 4837995959683129791
+ "nonce": 2032731177588607455
}
},
"durability": "temporary",
@@ -435,6 +656,39 @@
6311999
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 8370022561469687789
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 8370022561469687789
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
[
{
"contract_code": {
@@ -541,7 +795,49 @@
"bytes": "0000000000000000000000000000000000000000000000000000000000000001"
},
{
- "symbol": "set_spend_limit"
+ "symbol": "add_asset"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "asset_added"
}
],
"data": {
@@ -551,6 +847,75 @@
},
{
"string": "XLM"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "set_spend_limit"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -643,7 +1008,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -748,7 +1128,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -844,7 +1239,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -885,7 +1295,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
}
@@ -944,7 +1369,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -1037,7 +1477,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
}
@@ -1096,7 +1551,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -1192,7 +1662,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -1233,7 +1718,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -1326,7 +1826,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
}
diff --git a/contracts/globe-wallet/test_snapshots/tests/test_record_spend_boundary_drift_awareness.1.json b/contracts/globe-wallet/test_snapshots/tests/test_record_spend_boundary_drift_awareness.1.json
index 5dccb69..c9abbe5 100644
--- a/contracts/globe-wallet/test_snapshots/tests/test_record_spend_boundary_drift_awareness.1.json
+++ b/contracts/globe-wallet/test_snapshots/tests/test_record_spend_boundary_drift_awareness.1.json
@@ -5,6 +5,43 @@
},
"auth": [
[],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "add_asset",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
[
[
"CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
@@ -18,7 +55,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -46,7 +98,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -74,7 +141,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -113,7 +195,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -136,7 +233,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -184,7 +296,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -207,7 +334,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -225,6 +367,70 @@
518400
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "vec": [
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
[
{
"contract_data": {
@@ -336,6 +542,39 @@
6311999
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 4837995959683129791
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 4837995959683129791
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
[
{
"contract_data": {
@@ -475,7 +714,49 @@
"bytes": "0000000000000000000000000000000000000000000000000000000000000001"
},
{
- "symbol": "set_spend_limit"
+ "symbol": "add_asset"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "asset_added"
}
],
"data": {
@@ -485,6 +766,75 @@
},
{
"string": "XLM"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "set_spend_limit"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -577,7 +927,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -682,7 +1047,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
diff --git a/contracts/globe-wallet/test_snapshots/tests/test_record_spend_boundary_first_second_of_new_day_resets.1.json b/contracts/globe-wallet/test_snapshots/tests/test_record_spend_boundary_first_second_of_new_day_resets.1.json
index f17af44..9968d48 100644
--- a/contracts/globe-wallet/test_snapshots/tests/test_record_spend_boundary_first_second_of_new_day_resets.1.json
+++ b/contracts/globe-wallet/test_snapshots/tests/test_record_spend_boundary_first_second_of_new_day_resets.1.json
@@ -5,6 +5,43 @@
},
"auth": [
[],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "add_asset",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
[
[
"CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
@@ -18,7 +55,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -46,7 +98,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -74,7 +141,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -113,7 +195,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -136,7 +233,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -184,7 +296,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -207,7 +334,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -225,6 +367,70 @@
518400
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "vec": [
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
[
{
"contract_data": {
@@ -336,6 +542,39 @@
6311999
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 4837995959683129791
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 4837995959683129791
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
[
{
"contract_data": {
@@ -475,7 +714,49 @@
"bytes": "0000000000000000000000000000000000000000000000000000000000000001"
},
{
- "symbol": "set_spend_limit"
+ "symbol": "add_asset"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "asset_added"
}
],
"data": {
@@ -485,6 +766,75 @@
},
{
"string": "XLM"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "set_spend_limit"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -577,7 +927,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -682,7 +1047,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
diff --git a/contracts/globe-wallet/test_snapshots/tests/test_record_spend_boundary_last_second_of_day_accumulates.1.json b/contracts/globe-wallet/test_snapshots/tests/test_record_spend_boundary_last_second_of_day_accumulates.1.json
index 25e09f6..e0c00e5 100644
--- a/contracts/globe-wallet/test_snapshots/tests/test_record_spend_boundary_last_second_of_day_accumulates.1.json
+++ b/contracts/globe-wallet/test_snapshots/tests/test_record_spend_boundary_last_second_of_day_accumulates.1.json
@@ -5,6 +5,43 @@
},
"auth": [
[],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "add_asset",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
[
[
"CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
@@ -18,7 +55,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -46,7 +98,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -86,7 +153,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -109,7 +191,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -157,7 +254,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -180,7 +292,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -198,6 +325,70 @@
518400
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "vec": [
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
[
{
"contract_data": {
@@ -276,6 +467,39 @@
6311999
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 1033654523790656264
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 1033654523790656264
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
[
{
"contract_data": {
@@ -415,7 +639,49 @@
"bytes": "0000000000000000000000000000000000000000000000000000000000000001"
},
{
- "symbol": "set_spend_limit"
+ "symbol": "add_asset"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "asset_added"
}
],
"data": {
@@ -425,6 +691,75 @@
},
{
"string": "XLM"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "set_spend_limit"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -517,7 +852,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -622,7 +972,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -718,7 +1083,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
diff --git a/contracts/globe-wallet/test_snapshots/tests/test_record_spend_bucket_is_integer_division.1.json b/contracts/globe-wallet/test_snapshots/tests/test_record_spend_bucket_is_integer_division.1.json
index 3b0e902..0c208b6 100644
--- a/contracts/globe-wallet/test_snapshots/tests/test_record_spend_bucket_is_integer_division.1.json
+++ b/contracts/globe-wallet/test_snapshots/tests/test_record_spend_bucket_is_integer_division.1.json
@@ -5,6 +5,43 @@
},
"auth": [
[],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "add_asset",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
[
[
"CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
@@ -18,7 +55,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -46,7 +98,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -87,7 +154,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -110,7 +192,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -158,7 +255,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -181,7 +293,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -199,6 +326,70 @@
518400
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "vec": [
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
[
{
"contract_data": {
@@ -277,6 +468,39 @@
6311999
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 1033654523790656264
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 1033654523790656264
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
[
{
"contract_data": {
@@ -416,7 +640,49 @@
"bytes": "0000000000000000000000000000000000000000000000000000000000000001"
},
{
- "symbol": "set_spend_limit"
+ "symbol": "add_asset"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "asset_added"
}
],
"data": {
@@ -426,6 +692,75 @@
},
{
"string": "XLM"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "set_spend_limit"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -518,7 +853,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -623,7 +973,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -719,7 +1084,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -760,7 +1140,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -856,7 +1251,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
diff --git a/contracts/globe-wallet/test_snapshots/tests/test_record_spend_exact_day_boundary.1.json b/contracts/globe-wallet/test_snapshots/tests/test_record_spend_exact_day_boundary.1.json
index af51ed0..d6306b4 100644
--- a/contracts/globe-wallet/test_snapshots/tests/test_record_spend_exact_day_boundary.1.json
+++ b/contracts/globe-wallet/test_snapshots/tests/test_record_spend_exact_day_boundary.1.json
@@ -5,6 +5,43 @@
},
"auth": [
[],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "add_asset",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
[
[
"CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
@@ -18,7 +55,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -46,7 +98,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -75,7 +142,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -114,7 +196,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -137,7 +234,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -185,7 +297,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -208,7 +335,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -226,6 +368,70 @@
518400
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "vec": [
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
[
{
"contract_data": {
@@ -310,7 +516,7 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
"key": {
"ledger_key_nonce": {
- "nonce": 4837995959683129791
+ "nonce": 1033654523790656264
}
},
"durability": "temporary"
@@ -325,7 +531,40 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
"key": {
"ledger_key_nonce": {
- "nonce": 4837995959683129791
+ "nonce": 1033654523790656264
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 2032731177588607455
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 2032731177588607455
}
},
"durability": "temporary",
@@ -476,7 +715,49 @@
"bytes": "0000000000000000000000000000000000000000000000000000000000000001"
},
{
- "symbol": "set_spend_limit"
+ "symbol": "add_asset"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "asset_added"
}
],
"data": {
@@ -486,6 +767,75 @@
},
{
"string": "XLM"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "set_spend_limit"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -578,7 +928,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -683,7 +1048,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -779,7 +1159,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -820,7 +1215,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
diff --git a/contracts/globe-wallet/test_snapshots/tests/test_record_spend_exceeds_limit_fails.1.json b/contracts/globe-wallet/test_snapshots/tests/test_record_spend_exceeds_limit_fails.1.json
index 5f8be63..cb34074 100644
--- a/contracts/globe-wallet/test_snapshots/tests/test_record_spend_exceeds_limit_fails.1.json
+++ b/contracts/globe-wallet/test_snapshots/tests/test_record_spend_exceeds_limit_fails.1.json
@@ -5,6 +5,43 @@
},
"auth": [
[],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "add_asset",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
[
[
"CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
@@ -18,7 +55,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -46,7 +98,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -86,7 +153,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -109,7 +191,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -157,7 +254,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -180,7 +292,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -198,6 +325,70 @@
518400
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "vec": [
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
[
{
"contract_data": {
@@ -276,6 +467,39 @@
6311999
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 1033654523790656264
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 1033654523790656264
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
[
{
"contract_data": {
@@ -415,7 +639,49 @@
"bytes": "0000000000000000000000000000000000000000000000000000000000000001"
},
{
- "symbol": "set_spend_limit"
+ "symbol": "add_asset"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "asset_added"
}
],
"data": {
@@ -425,6 +691,75 @@
},
{
"string": "XLM"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "set_spend_limit"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -517,7 +852,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -622,7 +972,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -718,7 +1083,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
diff --git a/contracts/globe-wallet/test_snapshots/tests/test_record_spend_negative_amount_cannot_bypass_daily_limit.1.json b/contracts/globe-wallet/test_snapshots/tests/test_record_spend_negative_amount_cannot_bypass_daily_limit.1.json
index 42276ca..1586743 100644
--- a/contracts/globe-wallet/test_snapshots/tests/test_record_spend_negative_amount_cannot_bypass_daily_limit.1.json
+++ b/contracts/globe-wallet/test_snapshots/tests/test_record_spend_negative_amount_cannot_bypass_daily_limit.1.json
@@ -5,6 +5,43 @@
},
"auth": [
[],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "add_asset",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
[
[
"CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
@@ -18,7 +55,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -46,7 +98,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -87,7 +154,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -110,7 +192,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -158,7 +255,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -181,7 +293,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -199,6 +326,70 @@
518400
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "vec": [
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
[
{
"contract_data": {
@@ -277,6 +468,39 @@
6311999
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 1033654523790656264
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 1033654523790656264
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
[
{
"contract_data": {
@@ -416,7 +640,49 @@
"bytes": "0000000000000000000000000000000000000000000000000000000000000001"
},
{
- "symbol": "set_spend_limit"
+ "symbol": "add_asset"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "asset_added"
}
],
"data": {
@@ -426,6 +692,75 @@
},
{
"string": "XLM"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "set_spend_limit"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -518,7 +853,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -623,7 +973,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -719,7 +1084,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -760,7 +1140,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -856,7 +1251,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
diff --git a/contracts/globe-wallet/test_snapshots/tests/test_record_spend_negative_amount_fails.1.json b/contracts/globe-wallet/test_snapshots/tests/test_record_spend_negative_amount_fails.1.json
index 5731860..3bd0e12 100644
--- a/contracts/globe-wallet/test_snapshots/tests/test_record_spend_negative_amount_fails.1.json
+++ b/contracts/globe-wallet/test_snapshots/tests/test_record_spend_negative_amount_fails.1.json
@@ -5,6 +5,43 @@
},
"auth": [
[],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "add_asset",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
[
[
"CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
@@ -18,7 +55,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -58,7 +110,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -81,7 +148,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -99,6 +181,70 @@
518400
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "vec": [
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
[
{
"contract_data": {
@@ -177,6 +323,39 @@
6311999
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 5541220902715666415
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 5541220902715666415
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
[
{
"contract_code": {
@@ -283,7 +462,49 @@
"bytes": "0000000000000000000000000000000000000000000000000000000000000001"
},
{
- "symbol": "set_spend_limit"
+ "symbol": "add_asset"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "asset_added"
}
],
"data": {
@@ -293,6 +514,75 @@
},
{
"string": "XLM"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "set_spend_limit"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -385,7 +675,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -481,7 +786,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
diff --git a/contracts/globe-wallet/test_snapshots/tests/test_record_spend_overflow_does_not_poison_later_calls.1.json b/contracts/globe-wallet/test_snapshots/tests/test_record_spend_overflow_does_not_poison_later_calls.1.json
index be1d7a3..2b85e45 100644
--- a/contracts/globe-wallet/test_snapshots/tests/test_record_spend_overflow_does_not_poison_later_calls.1.json
+++ b/contracts/globe-wallet/test_snapshots/tests/test_record_spend_overflow_does_not_poison_later_calls.1.json
@@ -5,6 +5,43 @@
},
"auth": [
[],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "add_asset",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
[
[
"CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
@@ -18,7 +55,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -46,7 +98,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -75,7 +142,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -114,7 +196,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -137,7 +234,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -185,7 +297,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -208,7 +335,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -226,6 +368,70 @@
518400
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "vec": [
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
[
{
"contract_data": {
@@ -310,7 +516,7 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
"key": {
"ledger_key_nonce": {
- "nonce": 4837995959683129791
+ "nonce": 1033654523790656264
}
},
"durability": "temporary"
@@ -325,7 +531,40 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
"key": {
"ledger_key_nonce": {
- "nonce": 4837995959683129791
+ "nonce": 1033654523790656264
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 2032731177588607455
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 2032731177588607455
}
},
"durability": "temporary",
@@ -476,7 +715,49 @@
"bytes": "0000000000000000000000000000000000000000000000000000000000000001"
},
{
- "symbol": "set_spend_limit"
+ "symbol": "add_asset"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "asset_added"
}
],
"data": {
@@ -486,6 +767,75 @@
},
{
"string": "XLM"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "set_spend_limit"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -578,7 +928,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -683,7 +1048,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -779,7 +1159,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -820,7 +1215,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
diff --git a/contracts/globe-wallet/test_snapshots/tests/test_record_spend_rejected_negative_amount_does_not_mutate_state.1.json b/contracts/globe-wallet/test_snapshots/tests/test_record_spend_rejected_negative_amount_does_not_mutate_state.1.json
index 6a0d527..5dfcaa3 100644
--- a/contracts/globe-wallet/test_snapshots/tests/test_record_spend_rejected_negative_amount_does_not_mutate_state.1.json
+++ b/contracts/globe-wallet/test_snapshots/tests/test_record_spend_rejected_negative_amount_does_not_mutate_state.1.json
@@ -5,6 +5,43 @@
},
"auth": [
[],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "add_asset",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
[
[
"CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
@@ -18,7 +55,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -46,7 +98,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -76,7 +143,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -115,7 +197,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -138,7 +235,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -186,7 +298,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -209,7 +336,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -227,6 +369,70 @@
518400
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "vec": [
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
[
{
"contract_data": {
@@ -311,7 +517,40 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
"key": {
"ledger_key_nonce": {
- "nonce": 2032731177588607455
+ "nonce": 1033654523790656264
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 1033654523790656264
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 4270020994084947596
}
},
"durability": "temporary"
@@ -326,7 +565,7 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
"key": {
"ledger_key_nonce": {
- "nonce": 2032731177588607455
+ "nonce": 4270020994084947596
}
},
"durability": "temporary",
@@ -477,7 +716,49 @@
"bytes": "0000000000000000000000000000000000000000000000000000000000000001"
},
{
- "symbol": "set_spend_limit"
+ "symbol": "add_asset"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "asset_added"
}
],
"data": {
@@ -487,6 +768,75 @@
},
{
"string": "XLM"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "set_spend_limit"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -579,7 +929,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -684,7 +1049,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -780,7 +1160,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -821,7 +1216,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -917,7 +1327,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -958,7 +1383,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
diff --git a/contracts/globe-wallet/test_snapshots/tests/test_record_spend_within_limit.1.json b/contracts/globe-wallet/test_snapshots/tests/test_record_spend_within_limit.1.json
index 96382a8..0117b76 100644
--- a/contracts/globe-wallet/test_snapshots/tests/test_record_spend_within_limit.1.json
+++ b/contracts/globe-wallet/test_snapshots/tests/test_record_spend_within_limit.1.json
@@ -5,6 +5,43 @@
},
"auth": [
[],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "add_asset",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
[
[
"CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
@@ -18,7 +55,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -46,7 +98,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -74,7 +141,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -113,7 +195,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -136,7 +233,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -184,7 +296,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -207,7 +334,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -225,6 +367,70 @@
518400
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "vec": [
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
[
{
"contract_data": {
@@ -336,6 +542,39 @@
6311999
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 4837995959683129791
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 4837995959683129791
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
[
{
"contract_data": {
@@ -475,7 +714,49 @@
"bytes": "0000000000000000000000000000000000000000000000000000000000000001"
},
{
- "symbol": "set_spend_limit"
+ "symbol": "add_asset"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "asset_added"
}
],
"data": {
@@ -485,6 +766,75 @@
},
{
"string": "XLM"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "set_spend_limit"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -577,7 +927,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -682,7 +1047,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
diff --git a/contracts/globe-wallet/test_snapshots/tests/test_record_spend_zero_amount_fails.1.json b/contracts/globe-wallet/test_snapshots/tests/test_record_spend_zero_amount_fails.1.json
index f461a34..ab47696 100644
--- a/contracts/globe-wallet/test_snapshots/tests/test_record_spend_zero_amount_fails.1.json
+++ b/contracts/globe-wallet/test_snapshots/tests/test_record_spend_zero_amount_fails.1.json
@@ -5,6 +5,43 @@
},
"auth": [
[],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "add_asset",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
[
[
"CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
@@ -18,7 +55,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -58,7 +110,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -81,7 +148,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -99,6 +181,70 @@
518400
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "vec": [
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
[
{
"contract_data": {
@@ -177,6 +323,39 @@
6311999
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 5541220902715666415
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 5541220902715666415
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
[
{
"contract_code": {
@@ -283,7 +462,49 @@
"bytes": "0000000000000000000000000000000000000000000000000000000000000001"
},
{
- "symbol": "set_spend_limit"
+ "symbol": "add_asset"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "asset_added"
}
],
"data": {
@@ -293,6 +514,75 @@
},
{
"string": "XLM"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "set_spend_limit"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -385,7 +675,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -481,7 +786,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
diff --git a/contracts/globe-wallet/test_snapshots/tests/test_remove_allowed_token.1.json b/contracts/globe-wallet/test_snapshots/tests/test_remove_allowed_token.1.json
index bca45fe..84b39fd 100644
--- a/contracts/globe-wallet/test_snapshots/tests/test_remove_allowed_token.1.json
+++ b/contracts/globe-wallet/test_snapshots/tests/test_remove_allowed_token.1.json
@@ -218,7 +218,7 @@
},
"ext": "v0"
},
- 4095
+ 518400
]
],
[
@@ -482,7 +482,7 @@
},
"ext": "v0"
},
- 4095
+ 518400
]
]
]
@@ -601,7 +601,14 @@
}
],
"data": {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
}
}
}
@@ -791,11 +798,18 @@
"v0": {
"topics": [
{
- "symbol": "token_allowed"
+ "symbol": "allowed_token_added"
}
],
"data": {
- "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG"
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4"
+ },
+ {
+ "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG"
+ }
+ ]
}
}
}
@@ -914,11 +928,18 @@
"v0": {
"topics": [
{
- "symbol": "token_disallowed"
+ "symbol": "allowed_token_removed"
}
],
"data": {
- "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG"
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4"
+ },
+ {
+ "address": "CDLDVFKHEZ2RVB3NG4UQA4VPD3TSHV6XMHXMHP2BSGCJ2IIWVTOHGDSG"
+ }
+ ]
}
}
}
diff --git a/contracts/globe-wallet/test_snapshots/tests/test_same_code_different_issuer_independent_spend_limits.1.json b/contracts/globe-wallet/test_snapshots/tests/test_same_code_different_issuer_independent_spend_limits.1.json
new file mode 100644
index 0000000..860b6c6
--- /dev/null
+++ b/contracts/globe-wallet/test_snapshots/tests/test_same_code_different_issuer_independent_spend_limits.1.json
@@ -0,0 +1,2442 @@
+{
+ "generators": {
+ "address": 5,
+ "nonce": 0
+ },
+ "auth": [
+ [],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "add_asset",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "add_asset",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "set_spend_limit",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 500
+ }
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "set_spend_limit",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ }
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 1000
+ }
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
+ [],
+ [],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "record_spend",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 400
+ }
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "record_spend",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ }
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 800
+ }
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
+ [],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "record_spend",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ }
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 200
+ }
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
+ []
+ ],
+ "ledger": {
+ "protocol_version": 21,
+ "sequence_number": 0,
+ "timestamp": 0,
+ "network_id": "0000000000000000000000000000000000000000000000000000000000000000",
+ "base_reserve": 0,
+ "min_persistent_entry_ttl": 4096,
+ "min_temp_entry_ttl": 16,
+ "max_entry_ttl": 6312000,
+ "ledger_entries": [
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "DailySpent"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "DailySpent"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "map": [
+ {
+ "key": {
+ "symbol": "amount"
+ },
+ "val": {
+ "i128": {
+ "hi": 0,
+ "lo": 400
+ }
+ }
+ },
+ {
+ "key": {
+ "symbol": "day"
+ },
+ "val": {
+ "u64": 0
+ }
+ }
+ ]
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 34560
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "DailySpent"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "DailySpent"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "map": [
+ {
+ "key": {
+ "symbol": "amount"
+ },
+ "val": {
+ "i128": {
+ "hi": 0,
+ "lo": 1000
+ }
+ }
+ },
+ {
+ "key": {
+ "symbol": "day"
+ },
+ "val": {
+ "u64": 0
+ }
+ }
+ ]
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 34560
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "SpendLimit"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "SpendLimit"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "i128": {
+ "hi": 0,
+ "lo": 500
+ }
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "SpendLimit"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "SpendLimit"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "i128": {
+ "hi": 0,
+ "lo": 1000
+ }
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "vec": [
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": "ledger_key_contract_instance",
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": "ledger_key_contract_instance",
+ "durability": "persistent",
+ "val": {
+ "contract_instance": {
+ "executable": {
+ "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
+ },
+ "storage": [
+ {
+ "key": {
+ "vec": [
+ {
+ "symbol": "Admin"
+ }
+ ]
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4"
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 801925984706572462
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 801925984706572462
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 1033654523790656264
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 1033654523790656264
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 2032731177588607455
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 2032731177588607455
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 4270020994084947596
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 4270020994084947596
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 4837995959683129791
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 4837995959683129791
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 5541220902715666415
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 5541220902715666415
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 6277191135259896685
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 6277191135259896685
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
+ [
+ {
+ "contract_code": {
+ "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_code": {
+ "ext": "v0",
+ "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "code": ""
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ]
+ ]
+ },
+ "events": [
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "initialize"
+ }
+ ],
+ "data": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4"
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "initialized"
+ }
+ ],
+ "data": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4"
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "initialize"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "asset_added"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "string": "USDC"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "asset_added"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "string": "USDC"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "set_spend_limit"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 500
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "spend_limit_set"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "string": "USDC"
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 500
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "set_spend_limit"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "set_spend_limit"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ }
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 1000
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "spend_limit_set"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "string": "USDC"
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 1000
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "set_spend_limit"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "get_spend_limit"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "get_spend_limit"
+ }
+ ],
+ "data": {
+ "i128": {
+ "hi": 0,
+ "lo": 500
+ }
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "get_spend_limit"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "get_spend_limit"
+ }
+ ],
+ "data": {
+ "i128": {
+ "hi": 0,
+ "lo": 1000
+ }
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "record_spend"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 400
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "spend_recorded"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "string": "USDC"
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 400
+ }
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 400
+ }
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 500
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "record_spend"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "record_spend"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ }
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 800
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "spend_recorded"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "string": "USDC"
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 800
+ }
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 800
+ }
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 1000
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "record_spend"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "record_spend"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 200
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "record_spend"
+ }
+ ],
+ "data": {
+ "error": {
+ "contract": 1007
+ }
+ }
+ }
+ }
+ },
+ "failed_call": true
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "error"
+ },
+ {
+ "error": {
+ "contract": 1007
+ }
+ }
+ ],
+ "data": {
+ "string": "escalating Ok(ScErrorType::Contract) frame-exit to Err"
+ }
+ }
+ }
+ },
+ "failed_call": true
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "error"
+ },
+ {
+ "error": {
+ "contract": 1007
+ }
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "string": "contract try_call failed"
+ },
+ {
+ "symbol": "record_spend"
+ },
+ {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 200
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "record_spend"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ }
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 200
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "spend_recorded"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "string": "USDC"
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 200
+ }
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 1000
+ }
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 1000
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "record_spend"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "record_spend"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ }
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 1
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "record_spend"
+ }
+ ],
+ "data": {
+ "error": {
+ "contract": 1007
+ }
+ }
+ }
+ }
+ },
+ "failed_call": true
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "error"
+ },
+ {
+ "error": {
+ "contract": 1007
+ }
+ }
+ ],
+ "data": {
+ "string": "escalating Ok(ScErrorType::Contract) frame-exit to Err"
+ }
+ }
+ }
+ },
+ "failed_call": true
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "error"
+ },
+ {
+ "error": {
+ "contract": 1007
+ }
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "string": "contract try_call failed"
+ },
+ {
+ "symbol": "record_spend"
+ },
+ {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "USDC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ }
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 1
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ }
+ ]
+}
\ No newline at end of file
diff --git a/contracts/globe-wallet/test_snapshots/tests/test_send_happy_path_moves_tokens_and_records_spend.1.json b/contracts/globe-wallet/test_snapshots/tests/test_send_happy_path_moves_tokens_and_records_spend.1.json
index b59e063..98770a2 100644
--- a/contracts/globe-wallet/test_snapshots/tests/test_send_happy_path_moves_tokens_and_records_spend.1.json
+++ b/contracts/globe-wallet/test_snapshots/tests/test_send_happy_path_moves_tokens_and_records_spend.1.json
@@ -27,6 +27,43 @@
}
]
],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "add_asset",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
[
[
"GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPP4V",
@@ -106,7 +143,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -168,7 +220,22 @@
"address": "CDS3FDGQ4JA2V3F26Y4BMWWJEC5TT26RJBN7KIQKUMVO2MAOCMDTSZ7A"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
@@ -258,7 +325,7 @@
"contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPP4V",
"key": {
"ledger_key_nonce": {
- "nonce": 5541220902715666415
+ "nonce": 1033654523790656264
}
},
"durability": "temporary"
@@ -273,7 +340,7 @@
"contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPP4V",
"key": {
"ledger_key_nonce": {
- "nonce": 5541220902715666415
+ "nonce": 1033654523790656264
}
},
"durability": "temporary",
@@ -320,9 +387,7 @@
]
},
"durability": "persistent",
- "val": {
- "bool": true
- }
+ "val": "void"
}
},
"ext": "v0"
@@ -343,7 +408,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -366,7 +446,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -414,7 +509,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -437,7 +547,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -455,6 +580,70 @@
518400
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "vec": [
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
[
{
"contract_data": {
@@ -509,7 +698,7 @@
},
"ext": "v0"
},
- 4095
+ 518400
]
],
[
@@ -551,7 +740,7 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4",
"key": {
"ledger_key_nonce": {
- "nonce": 4837995959683129791
+ "nonce": 2032731177588607455
}
},
"durability": "temporary"
@@ -566,7 +755,7 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4",
"key": {
"ledger_key_nonce": {
- "nonce": 4837995959683129791
+ "nonce": 2032731177588607455
}
},
"durability": "temporary",
@@ -687,7 +876,7 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4",
"key": {
"ledger_key_nonce": {
- "nonce": 1033654523790656264
+ "nonce": 4837995959683129791
}
},
"durability": "temporary"
@@ -702,7 +891,7 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4",
"key": {
"ledger_key_nonce": {
- "nonce": 1033654523790656264
+ "nonce": 4837995959683129791
}
},
"durability": "temporary",
@@ -720,7 +909,7 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM",
"key": {
"ledger_key_nonce": {
- "nonce": 2032731177588607455
+ "nonce": 4270020994084947596
}
},
"durability": "temporary"
@@ -735,7 +924,7 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM",
"key": {
"ledger_key_nonce": {
- "nonce": 2032731177588607455
+ "nonce": 4270020994084947596
}
},
"durability": "temporary",
@@ -753,7 +942,7 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM",
"key": {
"ledger_key_nonce": {
- "nonce": 4270020994084947596
+ "nonce": 5541220902715666415
}
},
"durability": "temporary"
@@ -768,7 +957,40 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM",
"key": {
"ledger_key_nonce": {
- "nonce": 4270020994084947596
+ "nonce": 5541220902715666415
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 6277191135259896685
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 6277191135259896685
}
},
"durability": "temporary",
@@ -1089,7 +1311,7 @@
},
"ext": "v0"
},
- 4095
+ 518400
]
]
]
@@ -1208,7 +1430,14 @@
}
],
"data": {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
}
}
}
@@ -1236,6 +1465,102 @@
},
"failed_call": false
},
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "asset_added"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ },
+ {
+ "string": "XLM"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
{
"event": {
"ext": "v0",
@@ -1487,11 +1812,18 @@
"v0": {
"topics": [
{
- "symbol": "token_allowed"
+ "symbol": "allowed_token_added"
}
],
"data": {
- "address": "CDS3FDGQ4JA2V3F26Y4BMWWJEC5TT26RJBN7KIQKUMVO2MAOCMDTSZ7A"
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4"
+ },
+ {
+ "address": "CDS3FDGQ4JA2V3F26Y4BMWWJEC5TT26RJBN7KIQKUMVO2MAOCMDTSZ7A"
+ }
+ ]
}
}
}
@@ -1543,7 +1875,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -1738,7 +2085,22 @@
"address": "CDS3FDGQ4JA2V3F26Y4BMWWJEC5TT26RJBN7KIQKUMVO2MAOCMDTSZ7A"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
diff --git a/contracts/globe-wallet/test_snapshots/tests/test_send_over_daily_limit_fails_and_moves_no_tokens.1.json b/contracts/globe-wallet/test_snapshots/tests/test_send_over_daily_limit_fails_and_moves_no_tokens.1.json
index 13781b6..e6001a3 100644
--- a/contracts/globe-wallet/test_snapshots/tests/test_send_over_daily_limit_fails_and_moves_no_tokens.1.json
+++ b/contracts/globe-wallet/test_snapshots/tests/test_send_over_daily_limit_fails_and_moves_no_tokens.1.json
@@ -27,6 +27,43 @@
}
]
],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "add_asset",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
[
[
"GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPP4V",
@@ -106,7 +143,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -201,7 +253,7 @@
"contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPP4V",
"key": {
"ledger_key_nonce": {
- "nonce": 5541220902715666415
+ "nonce": 1033654523790656264
}
},
"durability": "temporary"
@@ -216,7 +268,7 @@
"contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPP4V",
"key": {
"ledger_key_nonce": {
- "nonce": 5541220902715666415
+ "nonce": 1033654523790656264
}
},
"durability": "temporary",
@@ -263,9 +315,7 @@
]
},
"durability": "persistent",
- "val": {
- "bool": true
- }
+ "val": "void"
}
},
"ext": "v0"
@@ -286,7 +336,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -309,7 +374,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -327,6 +407,70 @@
518400
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "vec": [
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
[
{
"contract_data": {
@@ -381,7 +525,7 @@
},
"ext": "v0"
},
- 4095
+ 518400
]
],
[
@@ -423,7 +567,7 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4",
"key": {
"ledger_key_nonce": {
- "nonce": 4837995959683129791
+ "nonce": 2032731177588607455
}
},
"durability": "temporary"
@@ -438,7 +582,7 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4",
"key": {
"ledger_key_nonce": {
- "nonce": 4837995959683129791
+ "nonce": 2032731177588607455
}
},
"durability": "temporary",
@@ -559,7 +703,7 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4",
"key": {
"ledger_key_nonce": {
- "nonce": 1033654523790656264
+ "nonce": 4837995959683129791
}
},
"durability": "temporary"
@@ -574,7 +718,7 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4",
"key": {
"ledger_key_nonce": {
- "nonce": 1033654523790656264
+ "nonce": 4837995959683129791
}
},
"durability": "temporary",
@@ -592,7 +736,7 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM",
"key": {
"ledger_key_nonce": {
- "nonce": 2032731177588607455
+ "nonce": 4270020994084947596
}
},
"durability": "temporary"
@@ -607,7 +751,7 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM",
"key": {
"ledger_key_nonce": {
- "nonce": 2032731177588607455
+ "nonce": 4270020994084947596
}
},
"durability": "temporary",
@@ -625,7 +769,7 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM",
"key": {
"ledger_key_nonce": {
- "nonce": 4270020994084947596
+ "nonce": 5541220902715666415
}
},
"durability": "temporary"
@@ -640,7 +784,40 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM",
"key": {
"ledger_key_nonce": {
- "nonce": 4270020994084947596
+ "nonce": 5541220902715666415
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 8370022561469687789
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 8370022561469687789
}
},
"durability": "temporary",
@@ -855,7 +1032,7 @@
},
"ext": "v0"
},
- 4095
+ 518400
]
]
]
@@ -974,7 +1151,14 @@
}
],
"data": {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
}
}
}
@@ -1002,6 +1186,102 @@
},
"failed_call": false
},
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "asset_added"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
+ },
+ {
+ "string": "XLM"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
{
"event": {
"ext": "v0",
@@ -1253,11 +1533,18 @@
"v0": {
"topics": [
{
- "symbol": "token_allowed"
+ "symbol": "allowed_token_added"
}
],
"data": {
- "address": "CDS3FDGQ4JA2V3F26Y4BMWWJEC5TT26RJBN7KIQKUMVO2MAOCMDTSZ7A"
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4"
+ },
+ {
+ "address": "CDS3FDGQ4JA2V3F26Y4BMWWJEC5TT26RJBN7KIQKUMVO2MAOCMDTSZ7A"
+ }
+ ]
}
}
}
@@ -1309,7 +1596,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -1504,7 +1806,22 @@
"address": "CDS3FDGQ4JA2V3F26Y4BMWWJEC5TT26RJBN7KIQKUMVO2MAOCMDTSZ7A"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
@@ -1606,7 +1923,22 @@
"address": "CDS3FDGQ4JA2V3F26Y4BMWWJEC5TT26RJBN7KIQKUMVO2MAOCMDTSZ7A"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
diff --git a/contracts/globe-wallet/test_snapshots/tests/test_send_rejects_disallowed_token.1.json b/contracts/globe-wallet/test_snapshots/tests/test_send_rejects_disallowed_token.1.json
index 82363e1..cec9a93 100644
--- a/contracts/globe-wallet/test_snapshots/tests/test_send_rejects_disallowed_token.1.json
+++ b/contracts/globe-wallet/test_snapshots/tests/test_send_rejects_disallowed_token.1.json
@@ -27,6 +27,43 @@
}
]
],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "add_asset",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
[
[
"GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPP4V",
@@ -92,7 +129,7 @@
"contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPP4V",
"key": {
"ledger_key_nonce": {
- "nonce": 5541220902715666415
+ "nonce": 1033654523790656264
}
},
"durability": "temporary"
@@ -107,7 +144,7 @@
"contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPP4V",
"key": {
"ledger_key_nonce": {
- "nonce": 5541220902715666415
+ "nonce": 1033654523790656264
}
},
"durability": "temporary",
@@ -119,6 +156,70 @@
6311999
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "vec": [
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
[
{
"contract_data": {
@@ -173,7 +274,7 @@
},
"ext": "v0"
},
- 4095
+ 518400
]
],
[
@@ -241,6 +342,39 @@
4095
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 5541220902715666415
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 5541220902715666415
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
[
{
"contract_data": {
@@ -371,7 +505,7 @@
},
"ext": "v0"
},
- 4095
+ 518400
]
]
]
@@ -490,7 +624,14 @@
}
],
"data": {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
}
}
}
@@ -518,6 +659,102 @@
},
"failed_call": false
},
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "asset_added"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ },
+ {
+ "string": "XLM"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
{
"event": {
"ext": "v0",
@@ -665,7 +902,22 @@
"address": "CDS3FDGQ4JA2V3F26Y4BMWWJEC5TT26RJBN7KIQKUMVO2MAOCMDTSZ7A"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
@@ -700,7 +952,7 @@
],
"data": {
"error": {
- "contract": 31
+ "contract": 1034
}
}
}
@@ -721,7 +973,7 @@
},
{
"error": {
- "contract": 31
+ "contract": 1034
}
}
],
@@ -746,7 +998,7 @@
},
{
"error": {
- "contract": 31
+ "contract": 1034
}
}
],
@@ -767,7 +1019,22 @@
"address": "CDS3FDGQ4JA2V3F26Y4BMWWJEC5TT26RJBN7KIQKUMVO2MAOCMDTSZ7A"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
diff --git a/contracts/globe-wallet/test_snapshots/tests/test_send_rejects_reentrant_malicious_token.1.json b/contracts/globe-wallet/test_snapshots/tests/test_send_rejects_reentrant_malicious_token.1.json
index b28fc3c..4a9563f 100644
--- a/contracts/globe-wallet/test_snapshots/tests/test_send_rejects_reentrant_malicious_token.1.json
+++ b/contracts/globe-wallet/test_snapshots/tests/test_send_rejects_reentrant_malicious_token.1.json
@@ -27,6 +27,43 @@
}
]
],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "add_asset",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
[],
[
[
@@ -63,7 +100,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -158,9 +210,7 @@
]
},
"durability": "persistent",
- "val": {
- "bool": true
- }
+ "val": "void"
}
},
"ext": "v0"
@@ -181,7 +231,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -204,7 +269,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -222,6 +302,70 @@
518400
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "vec": [
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
[
{
"contract_data": {
@@ -276,7 +420,7 @@
},
"ext": "v0"
},
- 4095
+ 518400
]
],
[
@@ -318,7 +462,7 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4",
"key": {
"ledger_key_nonce": {
- "nonce": 5541220902715666415
+ "nonce": 1033654523790656264
}
},
"durability": "temporary"
@@ -333,7 +477,7 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4",
"key": {
"ledger_key_nonce": {
- "nonce": 5541220902715666415
+ "nonce": 1033654523790656264
}
},
"durability": "temporary",
@@ -454,7 +598,7 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4",
"key": {
"ledger_key_nonce": {
- "nonce": 1033654523790656264
+ "nonce": 2032731177588607455
}
},
"durability": "temporary"
@@ -469,7 +613,7 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4",
"key": {
"ledger_key_nonce": {
- "nonce": 1033654523790656264
+ "nonce": 2032731177588607455
}
},
"durability": "temporary",
@@ -478,7 +622,7 @@
},
"ext": "v0"
},
- 6311999
+ 6312099
]
],
[
@@ -511,7 +655,40 @@
},
"ext": "v0"
},
- 6312099
+ 6311999
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 5541220902715666415
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 5541220902715666415
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
]
],
[
@@ -539,10 +716,25 @@
"storage": [
{
"key": {
- "symbol": "code"
+ "symbol": "asset"
},
"val": {
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
},
{
@@ -589,7 +781,7 @@
},
"ext": "v0"
},
- 4095
+ 518400
]
]
]
@@ -708,7 +900,14 @@
}
],
"data": {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
}
}
}
@@ -736,6 +935,102 @@
},
"failed_call": false
},
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "asset_added"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ },
+ {
+ "string": "XLM"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
{
"event": {
"ext": "v0",
@@ -763,7 +1058,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
}
@@ -835,11 +1145,18 @@
"v0": {
"topics": [
{
- "symbol": "token_allowed"
+ "symbol": "allowed_token_added"
}
],
"data": {
- "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
+ }
+ ]
}
}
}
@@ -891,7 +1208,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -1086,7 +1418,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
@@ -1289,7 +1636,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -1525,7 +1887,7 @@
],
"data": {
"error": {
- "contract": 33
+ "contract": 1036
}
}
}
@@ -1546,7 +1908,7 @@
},
{
"error": {
- "contract": 33
+ "contract": 1036
}
}
],
@@ -1571,7 +1933,7 @@
},
{
"error": {
- "contract": 33
+ "contract": 1036
}
}
],
@@ -1592,7 +1954,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM"
@@ -1636,7 +2013,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
}
diff --git a/contracts/globe-wallet/test_snapshots/tests/test_send_rejects_when_token_wrapper_not_set.1.json b/contracts/globe-wallet/test_snapshots/tests/test_send_rejects_when_token_wrapper_not_set.1.json
index abea28f..45f74ad 100644
--- a/contracts/globe-wallet/test_snapshots/tests/test_send_rejects_when_token_wrapper_not_set.1.json
+++ b/contracts/globe-wallet/test_snapshots/tests/test_send_rejects_when_token_wrapper_not_set.1.json
@@ -5,6 +5,43 @@
},
"auth": [
[],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "add_asset",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
[
[
"GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANHUF",
@@ -92,7 +129,7 @@
"contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANHUF",
"key": {
"ledger_key_nonce": {
- "nonce": 801925984706572462
+ "nonce": 5541220902715666415
}
},
"durability": "temporary"
@@ -107,7 +144,7 @@
"contract": "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANHUF",
"key": {
"ledger_key_nonce": {
- "nonce": 801925984706572462
+ "nonce": 5541220902715666415
}
},
"durability": "temporary",
@@ -154,8 +191,70 @@
]
},
"durability": "persistent",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent",
"val": {
- "bool": true
+ "vec": [
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
}
}
},
@@ -206,7 +305,7 @@
},
"ext": "v0"
},
- 4095
+ 518400
]
],
[
@@ -215,7 +314,7 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4",
"key": {
"ledger_key_nonce": {
- "nonce": 5541220902715666415
+ "nonce": 1033654523790656264
}
},
"durability": "temporary"
@@ -230,7 +329,40 @@
"contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4",
"key": {
"ledger_key_nonce": {
- "nonce": 5541220902715666415
+ "nonce": 1033654523790656264
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 801925984706572462
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 801925984706572462
}
},
"durability": "temporary",
@@ -372,7 +504,7 @@
},
"ext": "v0"
},
- 4095
+ 518400
]
]
]
@@ -445,6 +577,102 @@
},
"failed_call": false
},
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "asset_added"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "string": "XLM"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
{
"event": {
"ext": "v0",
@@ -607,11 +835,18 @@
"v0": {
"topics": [
{
- "symbol": "token_allowed"
+ "symbol": "allowed_token_added"
}
],
"data": {
- "address": "CACMVW2KK4H5FZDFF2AUCAKQTEJMZZWJUIZF23XMRVYQBSXYLHZ6BKWN"
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4"
+ },
+ {
+ "address": "CACMVW2KK4H5FZDFF2AUCAKQTEJMZZWJUIZF23XMRVYQBSXYLHZ6BKWN"
+ }
+ ]
}
}
}
@@ -666,7 +901,22 @@
"address": "CACMVW2KK4H5FZDFF2AUCAKQTEJMZZWJUIZF23XMRVYQBSXYLHZ6BKWN"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
@@ -701,7 +951,7 @@
],
"data": {
"error": {
- "contract": 32
+ "contract": 1035
}
}
}
@@ -722,7 +972,7 @@
},
{
"error": {
- "contract": 32
+ "contract": 1035
}
}
],
@@ -747,7 +997,7 @@
},
{
"error": {
- "contract": 32
+ "contract": 1035
}
}
],
@@ -768,7 +1018,22 @@
"address": "CACMVW2KK4H5FZDFF2AUCAKQTEJMZZWJUIZF23XMRVYQBSXYLHZ6BKWN"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
diff --git a/contracts/globe-wallet/test_snapshots/tests/test_set_token_wrapper_requires_admin.1.json b/contracts/globe-wallet/test_snapshots/tests/test_set_token_wrapper_requires_admin.1.json
index faf371c..65a314e 100644
--- a/contracts/globe-wallet/test_snapshots/tests/test_set_token_wrapper_requires_admin.1.json
+++ b/contracts/globe-wallet/test_snapshots/tests/test_set_token_wrapper_requires_admin.1.json
@@ -60,7 +60,7 @@
},
"ext": "v0"
},
- 4095
+ 518400
]
],
[
@@ -81,7 +81,7 @@
},
"ext": "v0"
},
- 4095
+ 518400
]
]
]
diff --git a/contracts/globe-wallet/test_snapshots/tests/test_spend_limit_and_record_spend_reject_unregistered_asset.1.json b/contracts/globe-wallet/test_snapshots/tests/test_spend_limit_and_record_spend_reject_unregistered_asset.1.json
new file mode 100644
index 0000000..4233911
--- /dev/null
+++ b/contracts/globe-wallet/test_snapshots/tests/test_spend_limit_and_record_spend_reject_unregistered_asset.1.json
@@ -0,0 +1,577 @@
+{
+ "generators": {
+ "address": 4,
+ "nonce": 0
+ },
+ "auth": [
+ [],
+ [],
+ [],
+ []
+ ],
+ "ledger": {
+ "protocol_version": 21,
+ "sequence_number": 0,
+ "timestamp": 0,
+ "network_id": "0000000000000000000000000000000000000000000000000000000000000000",
+ "base_reserve": 0,
+ "min_persistent_entry_ttl": 4096,
+ "min_temp_entry_ttl": 16,
+ "max_entry_ttl": 6312000,
+ "ledger_entries": [
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": "ledger_key_contract_instance",
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": "ledger_key_contract_instance",
+ "durability": "persistent",
+ "val": {
+ "contract_instance": {
+ "executable": {
+ "wasm": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
+ },
+ "storage": [
+ {
+ "key": {
+ "vec": [
+ {
+ "symbol": "Admin"
+ }
+ ]
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4"
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
+ [
+ {
+ "contract_code": {
+ "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_code": {
+ "ext": "v0",
+ "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+ "code": ""
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ]
+ ]
+ },
+ "events": [
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "initialize"
+ }
+ ],
+ "data": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4"
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "initialized"
+ }
+ ],
+ "data": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4"
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "initialize"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "set_spend_limit"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "EURC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 1000
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "set_spend_limit"
+ }
+ ],
+ "data": {
+ "error": {
+ "contract": 1005
+ }
+ }
+ }
+ }
+ },
+ "failed_call": true
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "error"
+ },
+ {
+ "error": {
+ "contract": 1005
+ }
+ }
+ ],
+ "data": {
+ "string": "escalating Ok(ScErrorType::Contract) frame-exit to Err"
+ }
+ }
+ }
+ },
+ "failed_call": true
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "error"
+ },
+ {
+ "error": {
+ "contract": 1005
+ }
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "string": "contract try_call failed"
+ },
+ {
+ "symbol": "set_spend_limit"
+ },
+ {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "EURC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 1000
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "record_spend"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "EURC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 100
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "record_spend"
+ }
+ ],
+ "data": {
+ "error": {
+ "contract": 1005
+ }
+ }
+ }
+ }
+ },
+ "failed_call": true
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "error"
+ },
+ {
+ "error": {
+ "contract": 1005
+ }
+ }
+ ],
+ "data": {
+ "string": "escalating Ok(ScErrorType::Contract) frame-exit to Err"
+ }
+ }
+ }
+ },
+ "failed_call": true
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "error"
+ },
+ {
+ "error": {
+ "contract": 1005
+ }
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "string": "contract try_call failed"
+ },
+ {
+ "symbol": "record_spend"
+ },
+ {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "EURC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ },
+ {
+ "i128": {
+ "hi": 0,
+ "lo": 100
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "get_spend_limit"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "EURC"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "get_spend_limit"
+ }
+ ],
+ "data": {
+ "i128": {
+ "hi": 0,
+ "lo": 0
+ }
+ }
+ }
+ }
+ },
+ "failed_call": false
+ }
+ ]
+}
\ No newline at end of file
diff --git a/contracts/globe-wallet/test_snapshots/tests/test_spend_limit_set_and_get.1.json b/contracts/globe-wallet/test_snapshots/tests/test_spend_limit_set_and_get.1.json
index a49d30e..aa500cd 100644
--- a/contracts/globe-wallet/test_snapshots/tests/test_spend_limit_set_and_get.1.json
+++ b/contracts/globe-wallet/test_snapshots/tests/test_spend_limit_set_and_get.1.json
@@ -5,6 +5,43 @@
},
"auth": [
[],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "add_asset",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
[
[
"CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
@@ -18,7 +55,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -58,7 +110,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -81,7 +148,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -99,6 +181,70 @@
518400
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "vec": [
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
[
{
"contract_data": {
@@ -177,6 +323,39 @@
6311999
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 5541220902715666415
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 5541220902715666415
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
[
{
"contract_code": {
@@ -283,7 +462,49 @@
"bytes": "0000000000000000000000000000000000000000000000000000000000000001"
},
{
- "symbol": "set_spend_limit"
+ "symbol": "add_asset"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "asset_added"
}
],
"data": {
@@ -293,6 +514,75 @@
},
{
"string": "XLM"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "set_spend_limit"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -385,7 +675,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
}
diff --git a/contracts/globe-wallet/test_snapshots/tests/test_spend_limit_ttl_extension_after_long_idle_period.1.json b/contracts/globe-wallet/test_snapshots/tests/test_spend_limit_ttl_extension_after_long_idle_period.1.json
index c33311a..e57a26f 100644
--- a/contracts/globe-wallet/test_snapshots/tests/test_spend_limit_ttl_extension_after_long_idle_period.1.json
+++ b/contracts/globe-wallet/test_snapshots/tests/test_spend_limit_ttl_extension_after_long_idle_period.1.json
@@ -5,6 +5,43 @@
},
"auth": [
[],
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "add_asset",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
[
[
"CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
@@ -18,7 +55,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -58,7 +110,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -81,7 +148,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -99,6 +181,70 @@
518400
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "vec": [
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
[
{
"contract_data": {
@@ -177,6 +323,39 @@
6311999
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 5541220902715666415
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 5541220902715666415
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
[
{
"contract_code": {
@@ -283,7 +462,49 @@
"bytes": "0000000000000000000000000000000000000000000000000000000000000001"
},
{
- "symbol": "set_spend_limit"
+ "symbol": "add_asset"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "asset_added"
}
],
"data": {
@@ -293,6 +514,75 @@
},
{
"string": "XLM"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "set_spend_limit"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -385,7 +675,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
}
diff --git a/contracts/globe-wallet/test_snapshots/two_spends_in_one_host_invocation_accumulate.1.json b/contracts/globe-wallet/test_snapshots/two_spends_in_one_host_invocation_accumulate.1.json
index 53035f8..c5ac4a2 100644
--- a/contracts/globe-wallet/test_snapshots/two_spends_in_one_host_invocation_accumulate.1.json
+++ b/contracts/globe-wallet/test_snapshots/two_spends_in_one_host_invocation_accumulate.1.json
@@ -4,6 +4,43 @@
"nonce": 0
},
"auth": [
+ [
+ [
+ "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ {
+ "function": {
+ "contract_fn": {
+ "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "function_name": "add_asset",
+ "args": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "sub_invocations": []
+ }
+ ]
+ ],
[
[
"CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
@@ -17,7 +54,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -45,7 +97,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -71,7 +138,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -111,7 +193,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -134,7 +231,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -182,7 +294,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -205,7 +332,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
}
]
},
@@ -223,6 +365,70 @@
518400
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM",
+ "key": {
+ "vec": [
+ {
+ "symbol": "UserAssets"
+ },
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ }
+ ]
+ },
+ "durability": "persistent",
+ "val": {
+ "vec": [
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "ext": "v0"
+ },
+ 518400
+ ]
+ ],
[
{
"contract_data": {
@@ -353,6 +559,39 @@
6311999
]
],
+ [
+ {
+ "contract_data": {
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 4837995959683129791
+ }
+ },
+ "durability": "temporary"
+ }
+ },
+ [
+ {
+ "last_modified_ledger_seq": 0,
+ "data": {
+ "contract_data": {
+ "ext": "v0",
+ "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M",
+ "key": {
+ "ledger_key_nonce": {
+ "nonce": 4837995959683129791
+ }
+ },
+ "durability": "temporary",
+ "val": "void"
+ }
+ },
+ "ext": "v0"
+ },
+ 6311999
+ ]
+ ],
[
{
"contract_data": {
@@ -425,7 +664,49 @@
"bytes": "0000000000000000000000000000000000000000000000000000000000000001"
},
{
- "symbol": "set_spend_limit"
+ "symbol": "add_asset"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "contract",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "asset_added"
}
],
"data": {
@@ -435,6 +716,75 @@
},
{
"string": "XLM"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": "0000000000000000000000000000000000000000000000000000000000000001",
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_return"
+ },
+ {
+ "symbol": "add_asset"
+ }
+ ],
+ "data": "void"
+ }
+ }
+ },
+ "failed_call": false
+ },
+ {
+ "event": {
+ "ext": "v0",
+ "contract_id": null,
+ "type_": "diagnostic",
+ "body": {
+ "v0": {
+ "topics": [
+ {
+ "symbol": "fn_call"
+ },
+ {
+ "bytes": "0000000000000000000000000000000000000000000000000000000000000001"
+ },
+ {
+ "symbol": "set_spend_limit"
+ }
+ ],
+ "data": {
+ "vec": [
+ {
+ "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
+ },
+ {
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -530,7 +880,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -575,7 +940,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -680,7 +1060,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -806,7 +1201,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
@@ -902,7 +1312,22 @@
"address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M"
},
{
- "string": "XLM"
+ "map": [
+ {
+ "key": {
+ "symbol": "code"
+ },
+ "val": {
+ "string": "XLM"
+ }
+ },
+ {
+ "key": {
+ "symbol": "issuer"
+ },
+ "val": "void"
+ }
+ ]
},
{
"i128": {
diff --git a/contracts/globe-wallet/tests/record_spend_reentrancy.rs b/contracts/globe-wallet/tests/record_spend_reentrancy.rs
index 8db4214..e457465 100644
--- a/contracts/globe-wallet/tests/record_spend_reentrancy.rs
+++ b/contracts/globe-wallet/tests/record_spend_reentrancy.rs
@@ -1,4 +1,4 @@
-use globe_wallet::{GlobeWallet, GlobeWalletClient, WalletError};
+use globe_wallet::{AssetInfo, GlobeWallet, GlobeWalletClient, WalletError};
use soroban_sdk::{contract, contractimpl, testutils::Address as _, Address, Env, String};
#[contract]
@@ -10,13 +10,13 @@ impl SameInvocationBatcher {
env: Env,
wallet: Address,
user: Address,
- asset_code: String,
+ asset: AssetInfo,
first: i128,
second: i128,
) {
let wallet = GlobeWalletClient::new(&env, &wallet);
- wallet.record_spend(&user, &asset_code, &first);
- wallet.record_spend(&user, &asset_code, &second);
+ wallet.record_spend(&user, &asset, &first);
+ wallet.record_spend(&user, &asset, &second);
}
}
@@ -30,22 +30,26 @@ fn two_spends_in_one_host_invocation_accumulate() {
let batcher_id = env.register_contract(None, SameInvocationBatcher);
let batcher = SameInvocationBatcherClient::new(&env, &batcher_id);
let user = Address::generate(&env);
- let asset_code = String::from_str(&env, "XLM");
+ let asset = AssetInfo {
+ code: String::from_str(&env, "XLM"),
+ issuer: None,
+ };
- wallet.set_spend_limit(&user, &asset_code, &1_000_i128);
+ wallet.add_asset(&user, &asset);
+ wallet.set_spend_limit(&user, &asset, &1_000_i128);
// Both calls share one root host invocation. The second call must observe
// the first call's write rather than overwrite a stale zero value.
batcher.record_twice(
&wallet_id,
&user,
- &asset_code,
+ &asset,
&600_i128,
&400_i128,
);
assert_eq!(
- wallet.try_record_spend(&user, &asset_code, &1_i128),
+ wallet.try_record_spend(&user, &asset, &1_i128),
Err(Ok(WalletError::SpendLimitExceeded))
);
}