Preliminary use of DataFrame calculations on Accounts.
This commit is contained in:
parent
3947e337bc
commit
d8e61625cf
2
.flake8
2
.flake8
|
@ -1,5 +1,5 @@
|
|||
[flake8]
|
||||
ignore = D203
|
||||
ignore = D203,W503
|
||||
exclude = .venv,.git,__pycache__,.ipynb_checkpoints,docs
|
||||
per-file-ignores =
|
||||
# imported but unused
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import argparse
|
||||
import os
|
||||
import os.path
|
||||
import pandas
|
||||
import sys
|
||||
import typing
|
||||
|
||||
from solana.publickey import PublicKey
|
||||
|
||||
sys.path.insert(0, os.path.abspath(
|
||||
os.path.join(os.path.dirname(__file__), "..")))
|
||||
import mango # nopep8
|
||||
|
||||
parser = argparse.ArgumentParser(description="Display the balances of all group tokens in the current wallet.")
|
||||
mango.ContextBuilder.add_command_line_parameters(parser)
|
||||
mango.Wallet.add_command_line_parameters(parser)
|
||||
parser.add_argument("--address", type=PublicKey,
|
||||
help="Root address to check (if not provided, the wallet address is used)")
|
||||
args: argparse.Namespace = mango.parse_args(parser)
|
||||
|
||||
address: typing.Optional[PublicKey] = args.address
|
||||
if address is None:
|
||||
wallet = mango.Wallet.from_command_line_parameters_or_raise(args)
|
||||
address = wallet.address
|
||||
|
||||
context: mango.Context = mango.ContextBuilder.from_command_line_parameters(args)
|
||||
group: mango.Group = mango.Group.load(context)
|
||||
cache: mango.Cache = mango.Cache.load(context, group.cache)
|
||||
|
||||
address_account_info: typing.Optional[mango.AccountInfo] = mango.AccountInfo.load(context, address)
|
||||
if address_account_info is None:
|
||||
raise Exception(f"Could not load account data from address {address}")
|
||||
|
||||
mango_accounts: typing.Sequence[mango.Account]
|
||||
if len(address_account_info.data) == mango.layouts.MANGO_ACCOUNT.sizeof():
|
||||
mango_accounts = [mango.Account.parse(address_account_info, group, cache)]
|
||||
else:
|
||||
mango_accounts = mango.Account.load_all_for_owner(context, address, group)
|
||||
|
||||
for account in mango_accounts:
|
||||
print("\n⚠ WARNING! ⚠ This is a work-in-progress and these figures may be wrong!\n")
|
||||
pandas.set_option('display.max_columns', None)
|
||||
pandas.set_option('display.width', None)
|
||||
pandas.set_option('precision', 6)
|
||||
|
||||
open_orders: typing.Dict[str, mango.OpenOrders] = account.load_all_spot_open_orders(context)
|
||||
frame: pandas.DataFrame = account.to_dataframe(group, open_orders, cache)
|
||||
print(frame)
|
||||
|
||||
print("Init Health:", account.init_health(frame))
|
||||
print("Maint Health:", account.maint_health(frame))
|
||||
print("Total Value:", account.total_value(frame))
|
|
@ -42,6 +42,7 @@ from .client import TooMuchBandwidthRateLimitException as TooMuchBandwidthRateLi
|
|||
from .client import TransactionException as TransactionException
|
||||
from .combinableinstructions import CombinableInstructions as CombinableInstructions
|
||||
from .constants import MangoConstants as MangoConstants
|
||||
from .constants import DATA_PATH as DATA_PATH
|
||||
from .constants import SOL_DECIMAL_DIVISOR as SOL_DECIMAL_DIVISOR
|
||||
from .constants import SOL_DECIMALS as SOL_DECIMALS
|
||||
from .constants import SOL_MINT_ADDRESS as SOL_MINT_ADDRESS
|
||||
|
|
309
mango/account.py
309
mango/account.py
|
@ -13,6 +13,7 @@
|
|||
# [Github](https://github.com/blockworks-foundation)
|
||||
# [Email](mailto:hello@blockworks.foundation)
|
||||
|
||||
import pandas
|
||||
import typing
|
||||
|
||||
from decimal import Decimal
|
||||
|
@ -21,10 +22,10 @@ from solana.rpc.types import MemcmpOpts
|
|||
|
||||
from .accountinfo import AccountInfo
|
||||
from .addressableaccount import AddressableAccount
|
||||
from .cache import Cache, RootBankCache
|
||||
from .cache import Cache, PerpMarketCache, RootBankCache, MarketCache
|
||||
from .context import Context
|
||||
from .encoding import encode_key
|
||||
from .group import Group
|
||||
from .group import Group, GroupSlot, GroupSlotPerpMarket
|
||||
from .instrumentvalue import InstrumentValue
|
||||
from .layouts import layouts
|
||||
from .metadata import Metadata
|
||||
|
@ -67,7 +68,7 @@ class AccountSlot:
|
|||
perp_account: str = "None"
|
||||
if self.perp_account is not None:
|
||||
perp_account = f"{self.perp_account}".replace("\n", "\n ")
|
||||
return f"""« AccountSlot {self.base_instrument.symbol}
|
||||
return f"""« AccountSlot [{self.index}] {self.base_instrument.symbol}
|
||||
Net Value: {self.net_value}
|
||||
Deposited: {self.deposit} (raw value: {self.raw_deposit})
|
||||
Borrowed: {self.borrow} (raw value {self.raw_borrow})
|
||||
|
@ -85,6 +86,14 @@ class AccountSlot:
|
|||
# `Account` holds information about the account for a particular user/wallet for a particualr `Group`.
|
||||
#
|
||||
class Account(AddressableAccount):
|
||||
@staticmethod
|
||||
def __sum_neg(dataframe: pandas.DataFrame, name: str) -> Decimal:
|
||||
return typing.cast(Decimal, dataframe.loc[dataframe[name] < 0, name].sum())
|
||||
|
||||
@staticmethod
|
||||
def __sum_pos(dataframe: pandas.DataFrame, name: str) -> Decimal:
|
||||
return typing.cast(Decimal, dataframe.loc[dataframe[name] > 0, name].sum())
|
||||
|
||||
def __init__(self, account_info: AccountInfo, version: Version,
|
||||
meta_data: Metadata, group_name: str, group_address: PublicKey, owner: PublicKey,
|
||||
info: str, shared_quote: AccountSlot,
|
||||
|
@ -370,6 +379,300 @@ class Account(AddressableAccount):
|
|||
raise Exception(f"Could not find AccountBasketItem in Account {self.address} at index {spot_market_index}.")
|
||||
item_to_update.spot_open_orders = spot_open_orders
|
||||
|
||||
def to_dataframe(self, group: Group, all_spot_open_orders: typing.Dict[str, OpenOrders], cache: Cache) -> pandas.DataFrame:
|
||||
asset_data = []
|
||||
for slot in self.slots:
|
||||
market_cache: typing.Optional[MarketCache] = group.market_cache_from_cache_or_none(
|
||||
cache, slot.base_instrument)
|
||||
price: InstrumentValue = group.token_price_from_cache(cache, slot.base_instrument)
|
||||
|
||||
spot_open_orders: typing.Optional[OpenOrders] = None
|
||||
spot_health_base: Decimal = Decimal(0)
|
||||
spot_health_quote: Decimal = Decimal(0)
|
||||
spot_bids_base_net: Decimal = Decimal(0)
|
||||
spot_asks_base_net: Decimal = Decimal(0)
|
||||
if slot.spot_open_orders is not None:
|
||||
spot_open_orders = all_spot_open_orders[str(slot.spot_open_orders)]
|
||||
if spot_open_orders is None:
|
||||
raise Exception(f"OpenOrders address {slot.spot_open_orders} at index {slot.index} not loaded.")
|
||||
|
||||
# base total if all bids were executed
|
||||
spot_bids_base_net = slot.net_value.value + \
|
||||
(spot_open_orders.quote_token_locked / price.value) + spot_open_orders.base_token_total
|
||||
|
||||
# base total if all asks were executed
|
||||
spot_asks_base_net = slot.net_value.value + spot_open_orders.base_token_free
|
||||
|
||||
if abs(spot_bids_base_net) > abs(spot_asks_base_net):
|
||||
spot_health_base = spot_bids_base_net
|
||||
spot_health_quote = spot_open_orders.quote_token_free
|
||||
else:
|
||||
spot_health_base = spot_asks_base_net
|
||||
spot_health_quote = (spot_open_orders.base_token_locked * price.value) + \
|
||||
spot_open_orders.quote_token_total
|
||||
|
||||
# From Daffy in Discord 2021-11-23: https://discord.com/channels/791995070613159966/857699200279773204/912705017767677982
|
||||
# --
|
||||
# There's a long_funding field on the PerpMarketCache which holds the current native USDC per
|
||||
# base position accrued. The long_settled_funding stores the last time funding was settled for
|
||||
# this particular user. So the funding owed is
|
||||
# (PerpMarketCache.long_funding - PerpAccount.long_settled_funding) * PerpAccount.base_position
|
||||
# if base position greater than 0 (i.e. long)
|
||||
#
|
||||
# And we use short_funding if base_position < 0
|
||||
#
|
||||
# The long_funding field in PerpMarketCache changes across time according to the
|
||||
# update_funding() function. If orderbook is above index price, then long_funding and
|
||||
# short_funding both increase.
|
||||
#
|
||||
# Usually long_funding and short_funding will be the same unless there was a socialized loss
|
||||
# event. IF you have negative equity and insurance fund is empty, then half of the negative
|
||||
# equity goes to longs and half goes to shorts. The way that's done is by increasing
|
||||
# long_funding and decreasing short_funding by same amount.
|
||||
#
|
||||
# But unless there's a socialized loss, long_funding == short_funding
|
||||
# --
|
||||
perp_position: Decimal = Decimal(0)
|
||||
perp_notional_position: Decimal = Decimal(0)
|
||||
perp_value: Decimal = Decimal(0)
|
||||
perp_health_base: Decimal = Decimal(0)
|
||||
perp_health_quote: Decimal = Decimal(0)
|
||||
unsettled_funding: Decimal = Decimal(0)
|
||||
perp_health_base_value: Decimal = Decimal(0)
|
||||
perp_asset: Decimal = Decimal(0)
|
||||
perp_liability: Decimal = Decimal(0)
|
||||
perp_current_value: Decimal = Decimal(0)
|
||||
if slot.perp_account is not None and not slot.perp_account.empty and market_cache is not None:
|
||||
perp_market: typing.Optional[GroupSlotPerpMarket] = group.perp_markets_by_index[slot.index]
|
||||
if perp_market is None:
|
||||
raise Exception(f"Could not find perp market in Group at index {slot.index}.")
|
||||
|
||||
perp_position = slot.perp_account.lot_size_converter.base_size_lots_to_number(
|
||||
slot.perp_account.base_position)
|
||||
perp_notional_position = perp_position * price.value
|
||||
perp_value = slot.perp_account.quote_position_raw
|
||||
cached_perp_market: typing.Optional[PerpMarketCache] = market_cache.perp_market
|
||||
if cached_perp_market is None:
|
||||
raise Exception(f"Could not find perp market in Cache at index {slot.index}.")
|
||||
|
||||
unsettled_funding = slot.perp_account.unsettled_funding(cached_perp_market)
|
||||
bids_quantity = slot.perp_account.lot_size_converter.base_size_lots_to_number(
|
||||
slot.perp_account.bids_quantity)
|
||||
asks_quantity = slot.perp_account.lot_size_converter.base_size_lots_to_number(
|
||||
slot.perp_account.asks_quantity)
|
||||
taker_quote = slot.perp_account.lot_size_converter.quote_size_lots_to_number(
|
||||
slot.perp_account.taker_quote)
|
||||
|
||||
perp_bids_base_net: Decimal = perp_position + bids_quantity
|
||||
perp_asks_base_net: Decimal = perp_position - asks_quantity
|
||||
|
||||
perp_asset = slot.perp_account.asset_value(cached_perp_market, price.value)
|
||||
perp_liability = slot.perp_account.liability_value(cached_perp_market, price.value)
|
||||
perp_current_value = slot.perp_account.current_value(cached_perp_market, price.value)
|
||||
|
||||
quote_pos = slot.perp_account.quote_position / (10 ** self.shared_quote_token.decimals)
|
||||
if abs(perp_bids_base_net) > abs(perp_asks_base_net):
|
||||
perp_health_base = perp_bids_base_net
|
||||
perp_health_quote = (quote_pos + unsettled_funding) + \
|
||||
taker_quote - (bids_quantity * price.value)
|
||||
else:
|
||||
perp_health_base = perp_asks_base_net
|
||||
perp_health_quote = (quote_pos + unsettled_funding) + \
|
||||
taker_quote + (asks_quantity * price.value)
|
||||
perp_health_base_value = perp_health_base * price.value
|
||||
|
||||
group_slot: typing.Optional[GroupSlot] = None
|
||||
if market_cache is not None:
|
||||
group_slot = group.slot_by_instrument(slot.base_instrument)
|
||||
|
||||
spot_init_asset_weight: Decimal = Decimal(0)
|
||||
spot_maint_asset_weight: Decimal = Decimal(0)
|
||||
spot_init_liab_weight: Decimal = Decimal(0)
|
||||
spot_maint_liab_weight: Decimal = Decimal(0)
|
||||
if group_slot is not None and group_slot.spot_market is not None:
|
||||
spot_init_asset_weight = group_slot.spot_market.init_asset_weight
|
||||
spot_maint_asset_weight = group_slot.spot_market.maint_asset_weight
|
||||
spot_init_liab_weight = group_slot.spot_market.init_liab_weight
|
||||
spot_maint_liab_weight = group_slot.spot_market.maint_liab_weight
|
||||
elif slot.base_instrument == self.shared_quote_token:
|
||||
spot_init_asset_weight = Decimal(1)
|
||||
spot_maint_asset_weight = Decimal(1)
|
||||
spot_init_liab_weight = Decimal(1)
|
||||
spot_maint_liab_weight = Decimal(1)
|
||||
|
||||
perp_init_asset_weight: Decimal = Decimal(0)
|
||||
perp_maint_asset_weight: Decimal = Decimal(0)
|
||||
perp_init_liab_weight: Decimal = Decimal(0)
|
||||
perp_maint_liab_weight: Decimal = Decimal(0)
|
||||
if group_slot is not None and group_slot.perp_market is not None:
|
||||
perp_init_asset_weight = group_slot.perp_market.init_asset_weight
|
||||
perp_maint_asset_weight = group_slot.perp_market.maint_asset_weight
|
||||
perp_init_liab_weight = group_slot.perp_market.init_liab_weight
|
||||
perp_maint_liab_weight = group_slot.perp_market.maint_liab_weight
|
||||
elif slot.base_instrument == self.shared_quote_token:
|
||||
perp_init_asset_weight = Decimal(1)
|
||||
perp_maint_asset_weight = Decimal(1)
|
||||
perp_init_liab_weight = Decimal(1)
|
||||
perp_maint_liab_weight = Decimal(1)
|
||||
|
||||
base_open_unsettled: Decimal = Decimal(0)
|
||||
base_open_locked: Decimal = Decimal(0)
|
||||
base_open_total: Decimal = Decimal(0)
|
||||
quote_open_unsettled: Decimal = Decimal(0)
|
||||
quote_open_locked: Decimal = Decimal(0)
|
||||
if spot_open_orders is not None:
|
||||
base_open_unsettled = spot_open_orders.base_token_free
|
||||
base_open_locked = spot_open_orders.base_token_locked
|
||||
base_open_total = spot_open_orders.base_token_total
|
||||
quote_open_unsettled = (spot_open_orders.quote_token_free
|
||||
+ spot_open_orders.referrer_rebate_accrued)
|
||||
quote_open_locked = spot_open_orders.quote_token_locked
|
||||
base_total: Decimal = slot.deposit.value - slot.borrow.value + base_open_total
|
||||
base_total_value: Decimal = base_total * price.value
|
||||
spot_init_value: Decimal
|
||||
spot_maint_value: Decimal
|
||||
if base_total_value >= 0:
|
||||
spot_init_value = base_total_value * spot_init_asset_weight
|
||||
spot_maint_value = base_total_value * spot_maint_asset_weight
|
||||
else:
|
||||
spot_init_value = base_total_value * spot_init_liab_weight
|
||||
spot_maint_value = base_total_value * spot_maint_liab_weight
|
||||
perp_init_value: Decimal
|
||||
perp_maint_value: Decimal
|
||||
if perp_health_base >= 0:
|
||||
perp_init_value = perp_notional_position * perp_init_asset_weight
|
||||
perp_maint_value = perp_notional_position * perp_maint_asset_weight
|
||||
perp_init_health_base_value = perp_health_base_value * perp_init_asset_weight
|
||||
perp_maint_health_base_value = perp_health_base_value * perp_maint_asset_weight
|
||||
else:
|
||||
perp_init_value = perp_notional_position * perp_init_liab_weight
|
||||
perp_maint_value = perp_notional_position * perp_maint_liab_weight
|
||||
perp_init_health_base_value = perp_health_base_value * perp_init_liab_weight
|
||||
perp_maint_health_base_value = perp_health_base_value * perp_maint_liab_weight
|
||||
data = {
|
||||
"Name": slot.base_instrument.name,
|
||||
"Symbol": slot.base_instrument.symbol,
|
||||
"Spot": base_total,
|
||||
"SpotDeposit": slot.deposit.value,
|
||||
"SpotBorrow": slot.borrow.value,
|
||||
"SpotValue": base_total_value,
|
||||
"SpotInitValue": spot_init_value,
|
||||
"SpotMaintValue": spot_maint_value,
|
||||
"PerpInitValue": perp_init_value,
|
||||
"PerpMaintValue": perp_maint_value,
|
||||
"BaseUnsettled": base_open_unsettled,
|
||||
"BaseLocked": base_open_locked,
|
||||
"QuoteUnsettled": quote_open_unsettled,
|
||||
"QuoteLocked": quote_open_locked,
|
||||
"PerpPositionSize": perp_position,
|
||||
"PerpNotionalPositionSize": perp_notional_position,
|
||||
"PerpValue": perp_value,
|
||||
"UnsettledFunding": unsettled_funding,
|
||||
"SpotInitAssetWeight": spot_init_asset_weight,
|
||||
"SpotMaintAssetWeight": spot_maint_asset_weight,
|
||||
"SpotInitLiabilityWeight": spot_init_liab_weight,
|
||||
"SpotMaintLiabilityWeight": spot_maint_liab_weight,
|
||||
"PerpInitAssetWeight": perp_init_asset_weight,
|
||||
"PerpMaintAssetWeight": perp_maint_asset_weight,
|
||||
"PerpInitLiabilityWeight": perp_init_liab_weight,
|
||||
"PerpMaintLiabilityWeight": perp_maint_liab_weight,
|
||||
"SpotHealthBase": spot_health_base,
|
||||
"SpotHealthQuote": spot_health_quote,
|
||||
"PerpHealthBase": perp_health_base,
|
||||
"PerpHealthBaseValue": perp_health_base_value,
|
||||
"PerpInitHealthBaseValue": perp_init_health_base_value,
|
||||
"PerpMaintHealthBaseValue": perp_maint_health_base_value,
|
||||
"PerpHealthQuote": perp_health_quote,
|
||||
"PerpAsset": perp_asset,
|
||||
"PerpLiability": perp_liability,
|
||||
"PerpCurrentValue": perp_current_value,
|
||||
}
|
||||
asset_data += [data]
|
||||
frame: pandas.DataFrame = pandas.DataFrame(asset_data)
|
||||
return frame
|
||||
|
||||
def weighted_assets(self, frame: pandas.DataFrame, weighting_name: str = "", include_unsettled_quote: bool = False) -> typing.Tuple[Decimal, Decimal]:
|
||||
non_quote = frame.loc[frame["Symbol"] != self.shared_quote_token.symbol]
|
||||
quote = frame.loc[frame["Symbol"] == self.shared_quote_token.symbol, "SpotValue"].sum()
|
||||
quote += frame["PerpHealthQuote"].sum()
|
||||
|
||||
assets = Decimal(0)
|
||||
liabilities = Decimal(0)
|
||||
if quote > 0:
|
||||
assets = quote
|
||||
else:
|
||||
liabilities = quote
|
||||
|
||||
if include_unsettled_quote:
|
||||
assets += frame["QuoteUnsettled"].sum()
|
||||
|
||||
spot_value_key = f"Spot{weighting_name}Value"
|
||||
perp_value_key = f"Perp{weighting_name}HealthBaseValue"
|
||||
|
||||
liabilities += Account.__sum_neg(non_quote, spot_value_key) + Account.__sum_neg(non_quote, perp_value_key)
|
||||
assets += Account.__sum_pos(non_quote, spot_value_key) + Account.__sum_pos(non_quote, perp_value_key)
|
||||
|
||||
return assets, liabilities
|
||||
|
||||
def unweighted_assets(self, frame: pandas.DataFrame) -> typing.Tuple[Decimal, Decimal]:
|
||||
non_quote = frame.loc[frame["Symbol"] != self.shared_quote_token.symbol]
|
||||
quote = frame.loc[frame["Symbol"] == self.shared_quote_token.symbol, "SpotValue"].sum()
|
||||
|
||||
assets = Decimal(0)
|
||||
liabilities = Decimal(0)
|
||||
if quote > 0:
|
||||
assets = quote
|
||||
else:
|
||||
liabilities = quote
|
||||
|
||||
liabilities += Account.__sum_neg(non_quote, "SpotValue") + non_quote['PerpLiability'].sum()
|
||||
|
||||
assets += Account.__sum_pos(non_quote, "SpotValue") + \
|
||||
non_quote['PerpAsset'].sum() + \
|
||||
Account.__sum_pos(non_quote, "QuoteUnsettled")
|
||||
|
||||
return assets, liabilities
|
||||
|
||||
def init_health(self, frame: pandas.DataFrame) -> Decimal:
|
||||
assets, liabilities = self.weighted_assets(frame, "Init", include_unsettled_quote=False)
|
||||
return assets + liabilities
|
||||
|
||||
def maint_health(self, frame: pandas.DataFrame) -> Decimal:
|
||||
assets, liabilities = self.weighted_assets(frame, "Maint", include_unsettled_quote=False)
|
||||
return assets + liabilities
|
||||
|
||||
def init_health_ratio(self, frame: pandas.DataFrame) -> Decimal:
|
||||
assets, liabilities = self.weighted_assets(frame, "Init", include_unsettled_quote=False)
|
||||
if liabilities == 0:
|
||||
return Decimal(100)
|
||||
|
||||
return ((assets / -liabilities) - 1) * 100
|
||||
|
||||
def maint_health_ratio(self, frame: pandas.DataFrame) -> Decimal:
|
||||
assets, liabilities = self.weighted_assets(frame, "Maint", include_unsettled_quote=False)
|
||||
if liabilities == 0:
|
||||
return Decimal(100)
|
||||
|
||||
return ((assets / -liabilities) - 1) * 100
|
||||
|
||||
def total_value(self, frame: pandas.DataFrame) -> Decimal:
|
||||
assets, liabilities = self.unweighted_assets(frame)
|
||||
|
||||
return assets + liabilities
|
||||
|
||||
def is_liquidatable(self, frame: pandas.DataFrame) -> bool:
|
||||
if self.being_liquidated and self.init_health(frame) < 0:
|
||||
return True
|
||||
elif self.init_health(frame) < 0:
|
||||
return True
|
||||
return False
|
||||
|
||||
def leverage(self, frame: pandas.DataFrame) -> Decimal:
|
||||
assets, liabilities = self.unweighted_assets(frame)
|
||||
if assets <= 0:
|
||||
return Decimal(0)
|
||||
return -liabilities / (assets + liabilities)
|
||||
|
||||
def __str__(self) -> str:
|
||||
info = f"'{self.info}'" if self.info else "(un-named)"
|
||||
shared_quote: str = f"{self.shared_quote}".replace("\n", "\n ")
|
||||
|
|
|
@ -293,9 +293,13 @@ class Group(AddressableAccount):
|
|||
raise Exception(f"Cannot find base token or perp market info for index {index}")
|
||||
perp_market = market_lookup.find_by_address(perp_market_info.address)
|
||||
if perp_market is None:
|
||||
logging.warning(f"Group cannot find base token or perp market for index {index}")
|
||||
else:
|
||||
base_instrument = perp_market.base
|
||||
in_slots += [False]
|
||||
logging.warning(
|
||||
f"Group cannot find base token or perp market for index {index} - {perp_market_info}")
|
||||
continue
|
||||
|
||||
base_instrument = perp_market.base
|
||||
|
||||
if perp_market_info is not None:
|
||||
perp_lot_size_converter = LotSizeConverter(
|
||||
base_instrument, perp_market_info.base_lot_size, quote_token_bank.token, perp_market_info.quote_lot_size)
|
||||
|
@ -391,11 +395,19 @@ class Group(AddressableAccount):
|
|||
market_cache: MarketCache = self.market_cache_from_cache(cache, token)
|
||||
return market_cache.perp_market
|
||||
|
||||
def market_cache_from_cache(self, cache: Cache, instrument: Instrument) -> MarketCache:
|
||||
slot: GroupSlot = self.slot_by_instrument(instrument)
|
||||
def market_cache_from_cache_or_none(self, cache: Cache, instrument: Instrument) -> typing.Optional[MarketCache]:
|
||||
slot: typing.Optional[GroupSlot] = self.slot_by_instrument_or_none(instrument)
|
||||
if slot is None:
|
||||
return None
|
||||
instrument_index: int = slot.index
|
||||
return cache.market_cache_for_index(instrument_index)
|
||||
|
||||
def market_cache_from_cache(self, cache: Cache, instrument: Instrument) -> MarketCache:
|
||||
market_cache: typing.Optional[MarketCache] = self.market_cache_from_cache_or_none(cache, instrument)
|
||||
if market_cache is not None:
|
||||
return market_cache
|
||||
raise Exception(f"Could not find market cache for instrument {instrument.symbol}")
|
||||
|
||||
def fetch_cache(self, context: Context) -> Cache:
|
||||
return Cache.load(context, self.cache)
|
||||
|
||||
|
|
|
@ -35,10 +35,17 @@ class LotSizeConverter():
|
|||
def tick_size(self) -> Decimal:
|
||||
return self.price_lots_to_number(Decimal(1))
|
||||
|
||||
def price_lots_to_number(self, price_lots: Decimal) -> Decimal:
|
||||
def adjust_to_base_decimals(self, value: Decimal) -> Decimal:
|
||||
adjusted = 10 ** (self.base.decimals - self.quote.decimals)
|
||||
return value * adjusted
|
||||
|
||||
def adjust_to_quote_decimals(self, value: Decimal) -> Decimal:
|
||||
adjusted = 10 ** (self.quote.decimals - self.base.decimals)
|
||||
return value * adjusted
|
||||
|
||||
def price_lots_to_number(self, price_lots: Decimal) -> Decimal:
|
||||
lots_to_native = self.quote_lot_size / self.base_lot_size
|
||||
return (price_lots * lots_to_native) * adjusted
|
||||
return self.adjust_to_base_decimals(price_lots * lots_to_native)
|
||||
|
||||
def price_number_to_lots(self, price: Decimal) -> int:
|
||||
base_factor: Decimal = 10 ** self.base.decimals
|
||||
|
|
|
@ -77,6 +77,7 @@ class OpenOrders(AddressableAccount):
|
|||
base_token_total: Decimal = layout.base_token_total / base_divisor
|
||||
quote_token_free: Decimal = layout.quote_token_free / quote_divisor
|
||||
quote_token_total: Decimal = layout.quote_token_total / quote_divisor
|
||||
referrer_rebate_accrued: Decimal = layout.referrer_rebate_accrued / quote_divisor
|
||||
|
||||
placed_orders: typing.Sequence[PlacedOrder] = []
|
||||
if account_flags.initialized:
|
||||
|
@ -84,7 +85,7 @@ class OpenOrders(AddressableAccount):
|
|||
layout.free_slot_bits, layout.is_bid_bits, layout.orders, layout.client_ids)
|
||||
return OpenOrders(account_info, Version.UNSPECIFIED, program_address, account_flags, layout.market,
|
||||
layout.owner, base_token_free, base_token_total, quote_token_free,
|
||||
quote_token_total, placed_orders, layout.referrer_rebate_accrued)
|
||||
quote_token_total, placed_orders, referrer_rebate_accrued)
|
||||
|
||||
@staticmethod
|
||||
def parse(account_info: AccountInfo, base_decimals: Decimal, quote_decimals: Decimal) -> "OpenOrders":
|
||||
|
@ -148,7 +149,7 @@ class OpenOrders(AddressableAccount):
|
|||
Owner: {self.owner}
|
||||
Base Token: {self.base_token_free:,.8f} of {self.base_token_total:,.8f}
|
||||
Quote Token: {self.quote_token_free:,.8f} of {self.quote_token_total:,.8f}
|
||||
Referrer Rebate Accrued: {self.referrer_rebate_accrued}
|
||||
Referrer Rebate Accrued: {self.referrer_rebate_accrued:,.8f}
|
||||
Orders:
|
||||
{placed_orders}
|
||||
»"""
|
||||
|
|
|
@ -77,42 +77,52 @@ class PerpAccount:
|
|||
return False
|
||||
|
||||
def unsettled_funding(self, perp_market_cache: PerpMarketCache) -> Decimal:
|
||||
if self.base_position < 0:
|
||||
return self.base_position * (perp_market_cache.short_funding - self.short_settled_funding)
|
||||
base_position: Decimal = self.base_position
|
||||
unsettled: Decimal
|
||||
if base_position < 0:
|
||||
unsettled = base_position * (perp_market_cache.short_funding - self.short_settled_funding)
|
||||
else:
|
||||
return self.base_position * (perp_market_cache.long_funding - self.long_settled_funding)
|
||||
unsettled = base_position * (perp_market_cache.long_funding - self.long_settled_funding)
|
||||
return - self.lot_size_converter.quote.shift_to_decimals(unsettled)
|
||||
|
||||
def asset_value(self, perp_market_cache: PerpMarketCache, price: Decimal) -> Decimal:
|
||||
base_position: Decimal = self.lot_size_converter.adjust_to_quote_decimals(self.base_position)
|
||||
value: Decimal = Decimal(0)
|
||||
if self.base_position > 0:
|
||||
value = self.base_position * self.lot_size_converter.base_lot_size * price
|
||||
|
||||
quote_position: Decimal = self.quote_position
|
||||
if self.base_position > 0:
|
||||
quote_position -= (perp_market_cache.long_funding - self.long_settled_funding) * self.base_position
|
||||
elif self.base_position < 0:
|
||||
quote_position -= (perp_market_cache.short_funding - self.short_settled_funding) * self.base_position
|
||||
if base_position > 0:
|
||||
value = base_position * self.lot_size_converter.base_lot_size * price
|
||||
value = self.lot_size_converter.quote.shift_to_decimals(value)
|
||||
|
||||
quote_position: Decimal = self.lot_size_converter.quote.shift_to_decimals(self.quote_position)
|
||||
quote_position += self.unsettled_funding(perp_market_cache)
|
||||
if quote_position > 0:
|
||||
value += quote_position
|
||||
|
||||
return self.lot_size_converter.quote.shift_to_decimals(value)
|
||||
return value
|
||||
|
||||
def liability_value(self, perp_market_cache: PerpMarketCache, price: Decimal) -> Decimal:
|
||||
base_position: Decimal = self.lot_size_converter.adjust_to_quote_decimals(self.base_position)
|
||||
value: Decimal = Decimal(0)
|
||||
if self.base_position < 0:
|
||||
value = self.base_position * self.lot_size_converter.base_lot_size * price
|
||||
|
||||
quote_position: Decimal = self.quote_position
|
||||
if self.base_position > 0:
|
||||
quote_position -= (perp_market_cache.long_funding - self.long_settled_funding) * self.base_position
|
||||
elif self.base_position < 0:
|
||||
quote_position -= (perp_market_cache.short_funding - self.short_settled_funding) * self.base_position
|
||||
if base_position < 0:
|
||||
value = base_position * self.lot_size_converter.base_lot_size * price
|
||||
value = self.lot_size_converter.quote.shift_to_decimals(value)
|
||||
|
||||
quote_position: Decimal = self.lot_size_converter.quote.shift_to_decimals(self.quote_position)
|
||||
quote_position += self.unsettled_funding(perp_market_cache)
|
||||
if quote_position < 0:
|
||||
value += quote_position
|
||||
|
||||
return self.lot_size_converter.quote.shift_to_decimals(-value)
|
||||
return value
|
||||
|
||||
def current_value(self, perp_market_cache: PerpMarketCache, price: Decimal) -> Decimal:
|
||||
base_position: Decimal = self.lot_size_converter.adjust_to_quote_decimals(self.base_position)
|
||||
value: Decimal = base_position * self.lot_size_converter.base_lot_size * price
|
||||
|
||||
quote_position: Decimal = self.lot_size_converter.quote.shift_to_decimals(self.quote_position)
|
||||
quote_position += self.unsettled_funding(perp_market_cache)
|
||||
|
||||
value += quote_position
|
||||
|
||||
return self.lot_size_converter.quote.shift_to_decimals(value)
|
||||
|
||||
def __str__(self) -> str:
|
||||
if self.empty:
|
||||
|
|
|
@ -25,30 +25,6 @@ def test_1deposit() -> None:
|
|||
assert health == Decimal("37904.2600000591928892771752953600134")
|
||||
|
||||
|
||||
def test_perp_account_no_spot_openorders() -> None:
|
||||
context = fake_context()
|
||||
group, cache, account, open_orders = load_data_from_directory("tests/testdata/perp_account_no_spot_openorders")
|
||||
|
||||
actual = HealthCalculator(context, HealthType.INITIAL)
|
||||
health = actual.calculate(account, open_orders, group, cache)
|
||||
|
||||
# Typescript says: 341025333625.51856223547208912805
|
||||
# TODO: This is significantly different from Typescript answer
|
||||
assert health == Decimal("7036880.69722812395986194177339495613")
|
||||
|
||||
|
||||
def test_perp_account_no_spot_openorders_unhealthy() -> None:
|
||||
context = fake_context()
|
||||
group, cache, account, open_orders = load_data_from_directory(
|
||||
"tests/testdata/perp_account_no_spot_openorders_unhealthy")
|
||||
|
||||
actual = HealthCalculator(context, HealthType.INITIAL)
|
||||
health = actual.calculate(account, open_orders, group, cache)
|
||||
# Typescript says: -848086876487.04950427436299875694
|
||||
# TODO: This is significantly different from Typescript answer
|
||||
assert health == Decimal("1100318.49506000114695611699892507857")
|
||||
|
||||
|
||||
def test_account1() -> None:
|
||||
context = fake_context()
|
||||
group, cache, account, open_orders = load_data_from_directory("tests/testdata/account1")
|
||||
|
@ -69,3 +45,26 @@ def test_account2() -> None:
|
|||
# Typescript says: 7516159604.84918334545095675026
|
||||
# TODO: This is slightly different from Typescript answer
|
||||
assert health == Decimal("-34471.8822627460347363357247598728190")
|
||||
|
||||
|
||||
def test_account3() -> None:
|
||||
context = fake_context()
|
||||
group, cache, account, open_orders = load_data_from_directory("tests/testdata/account3")
|
||||
|
||||
actual = HealthCalculator(context, HealthType.INITIAL)
|
||||
health = actual.calculate(account, open_orders, group, cache)
|
||||
|
||||
# Typescript says: 341025333625.51856223547208912805
|
||||
# TODO: This is significantly different from Typescript answer
|
||||
assert health == Decimal("7036880.69722812395986194177339495613")
|
||||
|
||||
|
||||
def test_account4() -> None:
|
||||
context = fake_context()
|
||||
group, cache, account, open_orders = load_data_from_directory("tests/testdata/account4")
|
||||
|
||||
actual = HealthCalculator(context, HealthType.INITIAL)
|
||||
health = actual.calculate(account, open_orders, group, cache)
|
||||
# Typescript says: -848086876487.04950427436299875694
|
||||
# TODO: This is significantly different from Typescript answer
|
||||
assert health == Decimal("1100318.49506000114695611699892507857")
|
||||
|
|
|
@ -9,9 +9,13 @@ def load_group(filename: str) -> mango.Group:
|
|||
account_info: mango.AccountInfo = mango.AccountInfo.load_json(filename)
|
||||
mainnet_token_lookup: mango.InstrumentLookup = mango.IdsJsonTokenLookup("mainnet", "mainnet.1")
|
||||
devnet_token_lookup: mango.InstrumentLookup = mango.IdsJsonTokenLookup("devnet", "devnet.2")
|
||||
devnet_non_spl_instrument_lookup: mango.InstrumentLookup = mango.NonSPLInstrumentLookup.load(
|
||||
mango.NonSPLInstrumentLookup.DefaultDevnetDataFilepath)
|
||||
instrument_lookup: mango.InstrumentLookup = mango.CompoundInstrumentLookup(
|
||||
[mainnet_token_lookup, devnet_token_lookup])
|
||||
market_lookup: mango.MarketLookup = mango.NullMarketLookup()
|
||||
[mainnet_token_lookup, devnet_token_lookup, devnet_non_spl_instrument_lookup])
|
||||
mainnet_market_lookup: mango.MarketLookup = mango.IdsJsonMarketLookup("mainnet", instrument_lookup)
|
||||
devnet_market_lookup: mango.MarketLookup = mango.IdsJsonMarketLookup("devnet", instrument_lookup)
|
||||
market_lookup: mango.MarketLookup = mango.CompoundMarketLookup([mainnet_market_lookup, devnet_market_lookup])
|
||||
return mango.Group.parse(account_info, "devnet.2", instrument_lookup, market_lookup)
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import pytest
|
||||
|
||||
from .context import mango
|
||||
from .data import load_data_from_directory
|
||||
from .fakes import fake_account_info, fake_seeded_public_key, fake_token_bank, fake_instrument, fake_instrument_value, fake_perp_account, fake_token
|
||||
|
||||
from decimal import Decimal
|
||||
|
@ -214,3 +215,64 @@ def test_slot_lookups() -> None:
|
|||
assert actual.slot_by_instrument(fake_instrument("slot3")) == slots[2]
|
||||
with pytest.raises(Exception):
|
||||
assert actual.slot_by_instrument(fake_instrument())
|
||||
|
||||
|
||||
def test_loaded_account_slot_lookups() -> None:
|
||||
group, cache, account, open_orders = load_data_from_directory("tests/testdata/account5")
|
||||
assert len(account.slots) == 14
|
||||
|
||||
# « GroupSlot[0] « Token [MNGO] 'MNGO' [Bb9bsTQa1bGEtQ5KagGkvSHyuLqDWumFUcRqFusFNJWC (6 decimals)] »
|
||||
assert account.slots_by_index[0] is not None
|
||||
assert account.slots_by_index[0].base_instrument.symbol == "MNGO"
|
||||
|
||||
# « GroupSlot[1] « Token [BTC] 'BTC' [3UNBZ6o52WTWwjac2kPUb4FyodhU1vFkRJheu1Sh2TvU (6 decimals)] »
|
||||
assert account.slots_by_index[1] is not None
|
||||
assert account.slots_by_index[1].base_instrument.symbol == "BTC"
|
||||
|
||||
# « GroupSlot[2] « Token [ETH] 'ETH' [Cu84KB3tDL6SbFgToHMLYVDJJXdJjenNzSKikeAvzmkA (6 decimals)] »
|
||||
assert account.slots_by_index[2] is not None
|
||||
assert account.slots_by_index[2].base_instrument.symbol == "ETH"
|
||||
|
||||
# « GroupSlot[3] « Token [SOL] 'SOL' [So11111111111111111111111111111111111111112 (9 decimals)] »
|
||||
assert account.slots_by_index[3] is not None
|
||||
assert account.slots_by_index[3].base_instrument.symbol == "SOL"
|
||||
|
||||
# « GroupSlot[4] « Token [SRM] 'SRM' [AvtB6w9xboLwA145E221vhof5TddhqsChYcx7Fy3xVMH (6 decimals)] »
|
||||
assert account.slots_by_index[4] is not None
|
||||
assert account.slots_by_index[4].base_instrument.symbol == "SRM"
|
||||
|
||||
# « GroupSlot[5] « Token [RAY] 'RAY' [3YFQ7UYJ7sNGpXTKBxM3bYLVxKpzVudXAe4gLExh5b3n (6 decimals)] »
|
||||
assert account.slots_by_index[5] is not None
|
||||
assert account.slots_by_index[5].base_instrument.symbol == "RAY"
|
||||
|
||||
# « GroupSlot[6] « Token [USDT] 'USDT' [DAwBSXe6w9g37wdE2tCrFbho3QHKZi4PjuBytQCULap2 (6 decimals)] »
|
||||
assert account.slots_by_index[6] is not None
|
||||
assert account.slots_by_index[6].base_instrument.symbol == "USDT"
|
||||
|
||||
# « GroupSlot[7] « Instrument [ADA] 'Cardano' »
|
||||
assert account.slots_by_index[7] is not None
|
||||
assert account.slots_by_index[7].base_instrument.symbol == "ADA"
|
||||
|
||||
# « GroupSlot[8] « Token [FTT] 'FTT' [Fxh4bpZnRCnpg2vcH11ttmSTDSEeC5qWbPRZNZWnRnqY (6 decimals)] »
|
||||
assert account.slots_by_index[8] is not None
|
||||
assert account.slots_by_index[8].base_instrument.symbol == "FTT"
|
||||
|
||||
# « GroupSlot[9] « Instrument [AVAX] 'Avalanche' »
|
||||
assert account.slots_by_index[9] is not None
|
||||
assert account.slots_by_index[9].base_instrument.symbol == "AVAX"
|
||||
|
||||
# « GroupSlot[10] « Instrument [LUNA] 'Terra' »
|
||||
assert account.slots_by_index[10] is not None
|
||||
assert account.slots_by_index[10].base_instrument.symbol == "LUNA"
|
||||
|
||||
# « GroupSlot[11] « Instrument [BNB] 'Binance Coin' »
|
||||
assert account.slots_by_index[11] is not None
|
||||
assert account.slots_by_index[11].base_instrument.symbol == "BNB"
|
||||
|
||||
# « GroupSlot[12] « Instrument [MATIC] 'Polygon' »
|
||||
assert account.slots_by_index[12] is not None
|
||||
assert account.slots_by_index[12].base_instrument.symbol == "MATIC"
|
||||
assert account.slots_by_index[13] is None
|
||||
assert account.slots_by_index[14] is None
|
||||
assert account.slots_by_index[15] is not None
|
||||
assert account.slots_by_index[15].base_instrument.symbol == "USDC"
|
||||
|
|
|
@ -2,6 +2,7 @@ import pytest
|
|||
import typing
|
||||
|
||||
from .context import mango
|
||||
from .data import load_group
|
||||
from .fakes import fake_account_info, fake_seeded_public_key, fake_token_bank, fake_instrument
|
||||
|
||||
from decimal import Decimal
|
||||
|
@ -195,3 +196,62 @@ def test_slot_lookups() -> None:
|
|||
assert actual.slot_by_instrument(fake_instrument("slot3")) == slot3
|
||||
with pytest.raises(Exception):
|
||||
assert actual.slot_by_instrument(fake_instrument())
|
||||
|
||||
|
||||
def test_loaded_group_slot_lookups() -> None:
|
||||
group = load_group("tests/testdata/account5/group.json")
|
||||
assert len(group.slots) == 13
|
||||
|
||||
# « GroupSlot[0] « Token [MNGO] 'MNGO' [Bb9bsTQa1bGEtQ5KagGkvSHyuLqDWumFUcRqFusFNJWC (6 decimals)] »
|
||||
assert group.slots_by_index[0] is not None
|
||||
assert group.slots_by_index[0].base_instrument.symbol == "MNGO"
|
||||
|
||||
# « GroupSlot[1] « Token [BTC] 'BTC' [3UNBZ6o52WTWwjac2kPUb4FyodhU1vFkRJheu1Sh2TvU (6 decimals)] »
|
||||
assert group.slots_by_index[1] is not None
|
||||
assert group.slots_by_index[1].base_instrument.symbol == "BTC"
|
||||
|
||||
# « GroupSlot[2] « Token [ETH] 'ETH' [Cu84KB3tDL6SbFgToHMLYVDJJXdJjenNzSKikeAvzmkA (6 decimals)] »
|
||||
assert group.slots_by_index[2] is not None
|
||||
assert group.slots_by_index[2].base_instrument.symbol == "ETH"
|
||||
|
||||
# « GroupSlot[3] « Token [SOL] 'SOL' [So11111111111111111111111111111111111111112 (9 decimals)] »
|
||||
assert group.slots_by_index[3] is not None
|
||||
assert group.slots_by_index[3].base_instrument.symbol == "SOL"
|
||||
|
||||
# « GroupSlot[4] « Token [SRM] 'SRM' [AvtB6w9xboLwA145E221vhof5TddhqsChYcx7Fy3xVMH (6 decimals)] »
|
||||
assert group.slots_by_index[4] is not None
|
||||
assert group.slots_by_index[4].base_instrument.symbol == "SRM"
|
||||
|
||||
# « GroupSlot[5] « Token [RAY] 'RAY' [3YFQ7UYJ7sNGpXTKBxM3bYLVxKpzVudXAe4gLExh5b3n (6 decimals)] »
|
||||
assert group.slots_by_index[5] is not None
|
||||
assert group.slots_by_index[5].base_instrument.symbol == "RAY"
|
||||
|
||||
# « GroupSlot[6] « Token [USDT] 'USDT' [DAwBSXe6w9g37wdE2tCrFbho3QHKZi4PjuBytQCULap2 (6 decimals)] »
|
||||
assert group.slots_by_index[6] is not None
|
||||
assert group.slots_by_index[6].base_instrument.symbol == "USDT"
|
||||
|
||||
# « GroupSlot[7] « Instrument [ADA] 'Cardano' »
|
||||
assert group.slots_by_index[7] is not None
|
||||
assert group.slots_by_index[7].base_instrument.symbol == "ADA"
|
||||
|
||||
# « GroupSlot[8] « Token [FTT] 'FTT' [Fxh4bpZnRCnpg2vcH11ttmSTDSEeC5qWbPRZNZWnRnqY (6 decimals)] »
|
||||
assert group.slots_by_index[8] is not None
|
||||
assert group.slots_by_index[8].base_instrument.symbol == "FTT"
|
||||
|
||||
# « GroupSlot[9] « Instrument [AVAX] 'Avalanche' »
|
||||
assert group.slots_by_index[9] is not None
|
||||
assert group.slots_by_index[9].base_instrument.symbol == "AVAX"
|
||||
|
||||
# « GroupSlot[10] « Instrument [LUNA] 'Terra' »
|
||||
assert group.slots_by_index[10] is not None
|
||||
assert group.slots_by_index[10].base_instrument.symbol == "LUNA"
|
||||
|
||||
# « GroupSlot[11] « Instrument [BNB] 'Binance Coin' »
|
||||
assert group.slots_by_index[11] is not None
|
||||
assert group.slots_by_index[11].base_instrument.symbol == "BNB"
|
||||
|
||||
# « GroupSlot[12] « Instrument [MATIC] 'Polygon' »
|
||||
assert group.slots_by_index[12] is not None
|
||||
assert group.slots_by_index[12].base_instrument.symbol == "MATIC"
|
||||
assert group.slots_by_index[13] is None
|
||||
assert group.slots_by_index[14] is None
|
||||
|
|
|
@ -0,0 +1,203 @@
|
|||
from .data import load_data_from_directory
|
||||
|
||||
from decimal import Decimal
|
||||
|
||||
|
||||
def test_empty() -> None:
|
||||
group, cache, account, open_orders = load_data_from_directory("tests/testdata/empty")
|
||||
frame = account.to_dataframe(group, open_orders, cache)
|
||||
|
||||
# Typescript says: 0
|
||||
assert account.init_health(frame) == Decimal("0")
|
||||
|
||||
# Typescript says: 0
|
||||
assert account.maint_health(frame) == Decimal("0")
|
||||
|
||||
# Typescript says: 100
|
||||
assert account.init_health_ratio(frame) == Decimal("100")
|
||||
|
||||
# Typescript says: 100
|
||||
assert account.maint_health_ratio(frame) == Decimal("100")
|
||||
|
||||
# Typescript says: 0
|
||||
assert account.total_value(frame) == Decimal("0")
|
||||
|
||||
# Typescript says: 0
|
||||
assert account.leverage(frame) == Decimal("0")
|
||||
|
||||
assert not account.is_liquidatable(frame)
|
||||
|
||||
|
||||
def test_1deposit() -> None:
|
||||
group, cache, account, open_orders = load_data_from_directory("tests/testdata/1deposit")
|
||||
frame = account.to_dataframe(group, open_orders, cache)
|
||||
|
||||
# Typescript says: 37904260000.05905822642118252475
|
||||
assert account.init_health(frame) == Decimal("37904.2600000591928892771752953600134")
|
||||
|
||||
# Typescript says: 42642292500.06652466908819931746
|
||||
assert account.maint_health(frame) == Decimal("42642.2925000665920004368222072800150")
|
||||
|
||||
# Typescript says: 100
|
||||
assert account.init_health_ratio(frame) == Decimal("100")
|
||||
|
||||
# Typescript says: 100
|
||||
assert account.maint_health_ratio(frame) == Decimal("100")
|
||||
|
||||
# Typescript says: 47380.32499999999999928946
|
||||
assert account.total_value(frame) == Decimal("47380.3250000739911115964691192000167")
|
||||
|
||||
# Typescript says: 0
|
||||
assert account.leverage(frame) == Decimal("0")
|
||||
|
||||
assert not account.is_liquidatable(frame)
|
||||
|
||||
|
||||
def test_account1() -> None:
|
||||
group, cache, account, open_orders = load_data_from_directory("tests/testdata/account1")
|
||||
frame = account.to_dataframe(group, open_orders, cache)
|
||||
|
||||
# Typescript says: 454884281.15520619643754685058
|
||||
assert account.init_health(frame) == Decimal("454.88428115521887496581258174978975")
|
||||
|
||||
# Typescript says: 901472688.63722587052636470162
|
||||
assert account.maint_health(frame) == Decimal("901.47268863723220971375597908220329")
|
||||
|
||||
# Typescript says: 10.48860467608925262084
|
||||
assert account.init_health_ratio(frame) == Decimal("10.4886046760897514671034971997305770")
|
||||
|
||||
# Typescript says: 20.785925232226531989
|
||||
assert account.maint_health_ratio(frame) == Decimal("20.7859252322269328739250898812969450")
|
||||
|
||||
# Typescript says: 1348.25066158888197520582
|
||||
assert account.total_value(frame) == Decimal("1348.25066711924554446169937641461683")
|
||||
|
||||
# Typescript says: 3.21671490144456129201
|
||||
assert account.leverage(frame) == Decimal("3.21671488765457268128834463982425497")
|
||||
|
||||
assert not account.is_liquidatable(frame)
|
||||
|
||||
|
||||
def test_account2() -> None:
|
||||
group, cache, account, open_orders = load_data_from_directory("tests/testdata/account2")
|
||||
frame = account.to_dataframe(group, open_orders, cache)
|
||||
|
||||
# Typescript says: 7516159604.84918334545095675026
|
||||
assert account.init_health(frame) == Decimal("7516.1596048492430563556697582309637")
|
||||
|
||||
# Typescript says: 9618709877.45119083596852505025
|
||||
assert account.maint_health(frame) == Decimal("9618.7098774512206992595893853316522")
|
||||
|
||||
# Typescript says: 24.80680004365716229131
|
||||
assert account.init_health_ratio(frame) == Decimal("24.8068000436574936267384623925241840")
|
||||
|
||||
# Typescript says: 31.74618756817508824497
|
||||
assert account.maint_health_ratio(frame) == Decimal("31.7461875681752057505441268626950890")
|
||||
|
||||
# Typescript says: 11721.35669142618275273549
|
||||
assert account.total_value(frame) == Decimal("11721.3566920531983421635090124323407")
|
||||
|
||||
# Typescript says: 3.56338611204225585993
|
||||
assert account.leverage(frame) == Decimal("3.56338611185164025806595342485346312")
|
||||
|
||||
assert not account.is_liquidatable(frame)
|
||||
|
||||
|
||||
def test_account3() -> None:
|
||||
group, cache, account, open_orders = load_data_from_directory("tests/testdata/account3")
|
||||
frame = account.to_dataframe(group, open_orders, cache)
|
||||
|
||||
# Typescript says: 341025333625.51856223547208912805
|
||||
assert account.init_health(frame) == Decimal("341025.33362550396263557255539801613")
|
||||
|
||||
# Typescript says: 683477170424.20340250929429970483
|
||||
assert account.maint_health(frame) == Decimal("683477.17042418393637609525383421613")
|
||||
|
||||
# Typescript says: 4.52652018845647319267
|
||||
assert account.init_health_ratio(frame) == Decimal("4.52652018845639596719637165673707200")
|
||||
|
||||
# Typescript says: 9.50397353076404272088
|
||||
assert account.maint_health_ratio(frame) == Decimal("9.50397353076384339420572268801026600")
|
||||
|
||||
# Typescript says: 1025929.00722205438034961844
|
||||
assert account.total_value(frame) == Decimal("1025929.00722286391011661795227041613")
|
||||
|
||||
# Typescript says: 6.50157472788435697453
|
||||
assert account.leverage(frame) == Decimal("6.50157472787922998475118662978475117")
|
||||
|
||||
assert not account.is_liquidatable(frame)
|
||||
|
||||
|
||||
def test_account4() -> None:
|
||||
group, cache, account, open_orders = load_data_from_directory("tests/testdata/account4")
|
||||
frame = account.to_dataframe(group, open_orders, cache)
|
||||
|
||||
# Typescript says: -848086876487.04950427436299875694
|
||||
assert account.init_health(frame) == Decimal("-848086.87648706716344229365643382143")
|
||||
|
||||
# Typescript says: -433869053006.07361789143756070075
|
||||
assert account.maint_health(frame) == Decimal("-433869.05300609716344867811565222143")
|
||||
|
||||
# Typescript says: -9.30655353087566084014
|
||||
assert account.init_health_ratio(frame) == Decimal("-9.30655353087574422134411842983207950")
|
||||
|
||||
# Typescript says: -4.98781798472691662028
|
||||
assert account.maint_health_ratio(frame) == Decimal("-4.98781798472697013664621930744313090")
|
||||
|
||||
# Typescript says: -19651.22952604663374742699
|
||||
assert account.total_value(frame) == Decimal("-19651.22952512716345506257487062143")
|
||||
|
||||
# Typescript says: -421.56937094643044972031
|
||||
assert account.leverage(frame) == Decimal("-421.569370966155451390856326152441566")
|
||||
|
||||
assert account.is_liquidatable(frame)
|
||||
|
||||
|
||||
def test_account5() -> None:
|
||||
group, cache, account, open_orders = load_data_from_directory("tests/testdata/account5")
|
||||
frame = account.to_dataframe(group, open_orders, cache)
|
||||
|
||||
# Typescript says: 15144959918141.09175135195858530324
|
||||
assert account.init_health(frame) == Decimal("15144959.9164410924496111317578727438")
|
||||
|
||||
# Typescript says: 15361719060997.68276021614036608298
|
||||
assert account.maint_health(frame) == Decimal("15361719.0592976820704356689151633723")
|
||||
|
||||
# Typescript says: 878.88913077823325181726
|
||||
assert account.init_health_ratio(frame) == Decimal("878.88913067957806527629904156619986")
|
||||
|
||||
# Typescript says: 946.44498820888003365326
|
||||
assert account.maint_health_ratio(frame) == Decimal("946.444988104139788226922265421512950")
|
||||
|
||||
# Typescript says: 15578478.17337437202354522015
|
||||
assert account.total_value(frame) == Decimal("15578478.2038542716912602060724540009")
|
||||
|
||||
# Typescript says: 0.09884076560217636143
|
||||
assert account.leverage(frame) == Decimal("0.0988407635236814851193291170841739152")
|
||||
|
||||
assert not account.is_liquidatable(frame)
|
||||
|
||||
|
||||
def test_account6() -> None:
|
||||
group, cache, account, open_orders = load_data_from_directory("tests/testdata/account6")
|
||||
frame = account.to_dataframe(group, open_orders, cache)
|
||||
|
||||
# Typescript says: 14480970069238.33686487450164648294
|
||||
assert account.init_health(frame) == Decimal("14480970.0634253312566073701425189089")
|
||||
|
||||
# Typescript says: 15030566251990.17026082618337312624
|
||||
assert account.maint_health(frame) == Decimal("15030566.2461771615291113644851708626")
|
||||
|
||||
# Typescript says: 215.03167137712999590349
|
||||
assert account.init_health_ratio(frame) == Decimal("215.031671290810990079530587432245126")
|
||||
|
||||
# Typescript says: 236.77769605824430243501
|
||||
assert account.maint_health_ratio(frame) == Decimal("236.777695966671229330674244231095279")
|
||||
|
||||
# Typescript says: 15580162.40781940827396567784
|
||||
assert account.total_value(frame) == Decimal("15580162.4347419918016153588278228163")
|
||||
|
||||
# Typescript says: 0.07913870989902704878
|
||||
assert account.leverage(frame) == Decimal("0.0791387081247153498553556005902933099")
|
||||
|
||||
assert not account.is_liquidatable(frame)
|
Before Width: | Height: | Size: 111 KiB After Width: | Height: | Size: 111 KiB |
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"address": "8mFQbdXsFXt3R3cu3oSNS3bDZRwJRP18vyzd9J278J9z",
|
||||
"executable": false,
|
||||
"lamports": "12082560",
|
||||
"owner": "4skJ85cdxQAFVKbcGgfun8iZPL7BadVYXG3kGEGkufqA",
|
||||
"rent_epoch": "243",
|
||||
"data": [
|
||||
"BwABAAAAAABlGeJYFzcAAAAAAAAAAAAA0NvSYQAAAAB+arx0kxjYuAAAAAAAAAAA0NvSYQAAAACSOgFNhF39DgAAAAAAAAAA0NvSYQAAAACtwJDVrSwAAAAAAAAAAAAA0NvSYQAAAACO5PIf0r8DAAAAAAAAAAAA0NvSYQAAAAAAAAAAAAABAAAAAAAAAAAA0NvSYQAAAADHuriNBgABAAAAAAAAAAAA0NvSYQAAAADKoUW2810BAAAAAAAAAAAA0NvSYQAAAABd3EYDeAMoAAAAAAAAAAAA0NvSYQAAAABqFE+LgxwAAAAAAAAAAAAA0NvSYQAAAAC9e2tToe8AAAAAAAAAAAAA0NvSYQAAAACTh4Va00wFAAAAAAAAAAAA0NvSYQAAAACMpBxNZwYAAAAAAAAAAAAA0NvSYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACr/bgr9pWKcg8AAAAAAAAAfW/KTOt5fn4PAAAAAAAAANDb0mEAAAAAYZZhSQrgaEIPAAAAAAAAADdFDYM84p1EDwAAAAAAAADQ29JhAAAAAIUYCms10rh3EAAAAAAAAABjeR6HoOFslhAAAAAAAAAA0NvSYQAAAACN6Klk1bUJWg8AAAAAAAAAsOB5MgF2tmQPAAAAAAAAANDb0mEAAAAA2JIjqa0IQEIPAAAAAAAAAEODgb9UekRCDwAAAAAAAADQ29JhAAAAADReISl/WkBCDwAAAAAAAAAsEmw4065AQg8AAAAAAAAA0NvSYQAAAAADJd1j+JAZRA8AAAAAAAAAV7iai6ZVnkQPAAAAAAAAANDb0mEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADssTaSyHEBCDwAAAAAAAAAP2SfBW5xPQg8AAAAAAAAA0NvSYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgTGPoWvFwQw8AAAAAAAAAhfEwf8vCB0gPAAAAAAAAANDb0mEAAAAA2UCudSuTs976/////////9lArnUrk7Pe+v/////////Q29JhAAAAAHyXYGjVpjHDAgAAAAAAAAC8QAFoi7CH3wEAAAAAAAAA0NvSYQAAAABQGTn1zyDwfe//////////UBk59c8g8H3v/////////9Db0mEAAAAA13/fY15IeV71/////////5MV9jBit0i88v/////////Q29JhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPqbMtP2S19s9P/////////01TffyJFd1/P/////////0NvSYQAAAAANm/JrQVRTu/f/////////DZvya0FUU7v3/////////9Db0mEAAAAABnxCgzEAYu0BAAAAAAAAAAZ8QoMxAGLtAQAAAAAAAADQ29JhAAAAAHJjA10cH88P9/////////9yYwNdHB/PD/f/////////0NvSYQAAAADHIR5z5iUwjf//////////xyEec+YlMI3//////////9Db0mEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQ29JhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"base64"
|
||||
]
|
||||
}
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"address": "5NaBydPDJuVAixVkANhWEA4AiAdNgBqeB2AySeHJMdUv",
|
||||
"executable": false,
|
||||
"lamports": "23357760",
|
||||
"owner": "DESVgJVGajEgKGXhb6XmqDHGz3VjdgP7rEVESBgxmroY",
|
||||
"rent_epoch": "243",
|
||||
"data": [
|
||||
"c2VydW0FAAAAAAAAAG935T/Ftgtcs97HgRQ9EVj/Sc85XrjWzZmKjQcBCOm3pzAQMOpaoJNf9hiwuhkibj8A6O127ngUxXLBL5pgo4EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgAAAAAAAABwYWRkaW5n",
|
||||
"base64"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"address": "FhNicR8YxjaMjH3r1BEh5V11JxHH7sbkjBL6tnAu3hYr",
|
||||
"executable": false,
|
||||
"lamports": "23357760",
|
||||
"owner": "DESVgJVGajEgKGXhb6XmqDHGz3VjdgP7rEVESBgxmroY",
|
||||
"rent_epoch": "243",
|
||||
"data": [
|
||||
"c2VydW0FAAAAAAAAALnCC44pRlRHQf0W2V86OCqGpUdAZOolaykWYZjqdoIupzAQMOpaoJNf9hiwuhkibj8A6O127ngUxXLBL5pgo4EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAMAAAAAAABwYWRkaW5n",
|
||||
"base64"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"address": "5AEiYQLPZEBUj85tTXp38bkb8tkoJTYSnGoL3qDi4DpG",
|
||||
"executable": false,
|
||||
"lamports": "23357760",
|
||||
"owner": "DESVgJVGajEgKGXhb6XmqDHGz3VjdgP7rEVESBgxmroY",
|
||||
"rent_epoch": "243",
|
||||
"data": [
|
||||
"c2VydW0FAAAAAAAAAJ+j/J672SbA52cHeipr43T2cbnh+ZSLAbp5qE72JRKppzAQMOpaoJNf9hiwuhkibj8A6O127ngUxXLBL5pgo4EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/gIAAAAAAABwYWRkaW5n",
|
||||
"base64"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"address": "GzmCp2ke9AQJTvUJ9MJD1hJLvyqBhmBgSsP3iMsHvEuV",
|
||||
"executable": false,
|
||||
"lamports": "23357760",
|
||||
"owner": "DESVgJVGajEgKGXhb6XmqDHGz3VjdgP7rEVESBgxmroY",
|
||||
"rent_epoch": "243",
|
||||
"data": [
|
||||
"c2VydW0FAAAAAAAAAEmnaoE/owmoOSrNJAggDkGSNpQEzcFKVtGs7saLSwrOpzAQMOpaoJNf9hiwuhkibj8A6O127ngUxXLBL5pgo4EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwYWRkaW5n",
|
||||
"base64"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"address": "8HtU9HRZcrBZaFL1Rs7tVuFJsKMPs37SAwTNx5Co95Xv",
|
||||
"executable": false,
|
||||
"lamports": "23357760",
|
||||
"owner": "DESVgJVGajEgKGXhb6XmqDHGz3VjdgP7rEVESBgxmroY",
|
||||
"rent_epoch": "243",
|
||||
"data": [
|
||||
"c2VydW0FAAAAAAAAAK4JIye+t4Cls/eN9rrSY18YDyeJzUpHfCer2IpoHZl0pzAQMOpaoJNf9hiwuhkibj8A6O127ngUxXLBL5pgo4EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwYWRkaW5n",
|
||||
"base64"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
#! /usr/bin/env bash
|
||||
|
||||
export CLUSTER_NAME=devnet
|
||||
show-account-info --address Ec2enZyoC4nGpEfu2sUNAa2nUGJHWxoUWYSEJ2hNTWTA --filename group.json
|
||||
show-account-info --address 8mFQbdXsFXt3R3cu3oSNS3bDZRwJRP18vyzd9J278J9z --filename cache.json
|
||||
show-account-info --address 5NaBydPDJuVAixVkANhWEA4AiAdNgBqeB2AySeHJMdUv --filename openorders0.json
|
||||
show-account-info --address FhNicR8YxjaMjH3r1BEh5V11JxHH7sbkjBL6tnAu3hYr --filename openorders1.json
|
||||
show-account-info --address 5AEiYQLPZEBUj85tTXp38bkb8tkoJTYSnGoL3qDi4DpG --filename openorders2.json
|
||||
show-account-info --address GzmCp2ke9AQJTvUJ9MJD1hJLvyqBhmBgSsP3iMsHvEuV --filename openorders3.json
|
||||
show-account-info --address 8HtU9HRZcrBZaFL1Rs7tVuFJsKMPs37SAwTNx5Co95Xv --filename openorders8.json
|
||||
|
||||
# Devnet perp marketmaker
|
||||
show-account-info --address DRUZRfLQtki4ZYvRXhi5yGmyqCf6iMfTzxtBpxo6rbHu --filename account.json
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"address": "8mFQbdXsFXt3R3cu3oSNS3bDZRwJRP18vyzd9J278J9z",
|
||||
"executable": false,
|
||||
"lamports": "12082560",
|
||||
"owner": "4skJ85cdxQAFVKbcGgfun8iZPL7BadVYXG3kGEGkufqA",
|
||||
"rent_epoch": "245",
|
||||
"data": [
|
||||
"BwABAAAAAAA51sVtNDQAAAAAAAAAAAAAetbWYQAAAAC6SQwCK6cSpwAAAAAAAAAAetbWYQAAAAAD54wo7b0LDQAAAAAAAAAAetbWYQAAAACJsyJqoiUAAAAAAAAAAAAAetbWYQAAAACMKO0NvjADAAAAAAAAAAAAetbWYQAAAAAAAAAAAAABAAAAAAAAAAAAetbWYQAAAAA4RUdy+f8AAAAAAAAAAAAAetbWYQAAAAAW2c73UzMBAAAAAAAAAAAAetbWYQAAAAC6uI0G8PYlAAAAAAAAAAAAetbWYQAAAADg21FrfBcAAAAAAAAAAAAAetbWYQAAAADqZYJDor8AAAAAAAAAAAAAetbWYQAAAACTGARWDp0EAAAAAAAAAAAAetbWYQAAAACo1vBkXwUAAAAAAAAAAAAAetbWYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACr/bgr9pWKcg8AAAAAAAAAfW/KTOt5fn4PAAAAAAAAAHzW1mEAAAAAvttQwWyYbUIPAAAAAAAAAFjMse7KwtdEDwAAAAAAAAB81tZhAAAAAB7PdKQvQCabEAAAAAAAAAALpm+fDGBXvRAAAAAAAAAAfNbWYQAAAAAe9g7LkpKaWg8AAAAAAAAA5kD52dq2+GUPAAAAAAAAAHzW1mEAAAAAFssqHa4IQEIPAAAAAAAAANmR0TdBjERCDwAAAAAAAAB81tZhAAAAADReISl/WkBCDwAAAAAAAAAsEmw4065AQg8AAAAAAAAAfNbWYQAAAAAzoyaapZMZRA8AAAAAAAAA8VB1z9AOoUQPAAAAAAAAAHzW1mEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHGAaS20IkBCDwAAAAAAAAD5L/jri35SQg8AAAAAAAAAfNbWYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFwTPIWihxQw8AAAAAAAAAsGCNQusXFEgPAAAAAAAAAHzW1mEAAAAAqRjqbTY671n6/////////6kY6m02Ou9Z+v////////981tZhAAAAAMbbFM+yhJtpAgAAAAAAAAAGhbXOaI7xhQEAAAAAAAAAfNbWYQAAAAALGiWHGZdqee//////////CxolhxmXannv/////////3zW1mEAAAAAOVnTA79l3hL2//////////Xu6dDC1K1w8/////////981tZhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMSDJcxswx9s9P////////++vSrYPgke1/P/////////fNbWYQAAAABngWsBSRigu/f/////////Z4FrAUkYoLv3/////////3zW1mEAAAAAKlBZ4XgRAe4BAAAAAAAAACpQWeF4EQHuAQAAAAAAAAB81tZhAAAAACv805m29/X69v////////8r/NOZtvf1+vb/////////fNbWYQAAAADHIR5z5iUwjf//////////xyEec+YlMI3//////////3zW1mEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB61tZhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"base64"
|
||||
]
|
||||
}
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"address": "5NaBydPDJuVAixVkANhWEA4AiAdNgBqeB2AySeHJMdUv",
|
||||
"executable": false,
|
||||
"lamports": "23357760",
|
||||
"owner": "DESVgJVGajEgKGXhb6XmqDHGz3VjdgP7rEVESBgxmroY",
|
||||
"rent_epoch": "245",
|
||||
"data": [
|
||||
"c2VydW0FAAAAAAAAAG935T/Ftgtcs97HgRQ9EVj/Sc85XrjWzZmKjQcBCOm3pzAQMOpaoJNf9hiwuhkibj8A6O127ngUxXLBL5pgo4EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgAAAAAAAABwYWRkaW5n",
|
||||
"base64"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"address": "FhNicR8YxjaMjH3r1BEh5V11JxHH7sbkjBL6tnAu3hYr",
|
||||
"executable": false,
|
||||
"lamports": "23357760",
|
||||
"owner": "DESVgJVGajEgKGXhb6XmqDHGz3VjdgP7rEVESBgxmroY",
|
||||
"rent_epoch": "245",
|
||||
"data": [
|
||||
"c2VydW0FAAAAAAAAALnCC44pRlRHQf0W2V86OCqGpUdAZOolaykWYZjqdoIupzAQMOpaoJNf9hiwuhkibj8A6O127ngUxXLBL5pgo4EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8hMAAAAAAABwYWRkaW5n",
|
||||
"base64"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"address": "5AEiYQLPZEBUj85tTXp38bkb8tkoJTYSnGoL3qDi4DpG",
|
||||
"executable": false,
|
||||
"lamports": "23357760",
|
||||
"owner": "DESVgJVGajEgKGXhb6XmqDHGz3VjdgP7rEVESBgxmroY",
|
||||
"rent_epoch": "245",
|
||||
"data": [
|
||||
"c2VydW0FAAAAAAAAAJ+j/J672SbA52cHeipr43T2cbnh+ZSLAbp5qE72JRKppzAQMOpaoJNf9hiwuhkibj8A6O127ngUxXLBL5pgo4EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmQIAAAAAAABwYWRkaW5n",
|
||||
"base64"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"address": "GzmCp2ke9AQJTvUJ9MJD1hJLvyqBhmBgSsP3iMsHvEuV",
|
||||
"executable": false,
|
||||
"lamports": "23357760",
|
||||
"owner": "DESVgJVGajEgKGXhb6XmqDHGz3VjdgP7rEVESBgxmroY",
|
||||
"rent_epoch": "245",
|
||||
"data": [
|
||||
"c2VydW0FAAAAAAAAAEmnaoE/owmoOSrNJAggDkGSNpQEzcFKVtGs7saLSwrOpzAQMOpaoJNf9hiwuhkibj8A6O127ngUxXLBL5pgo4EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7///////////////////8BAAAAAAAAAAAAAAAAAAAAyJfD///////hWgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN2TUvfgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwYWRkaW5n",
|
||||
"base64"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"address": "8HtU9HRZcrBZaFL1Rs7tVuFJsKMPs37SAwTNx5Co95Xv",
|
||||
"executable": false,
|
||||
"lamports": "23357760",
|
||||
"owner": "DESVgJVGajEgKGXhb6XmqDHGz3VjdgP7rEVESBgxmroY",
|
||||
"rent_epoch": "245",
|
||||
"data": [
|
||||
"c2VydW0FAAAAAAAAAK4JIye+t4Cls/eN9rrSY18YDyeJzUpHfCer2IpoHZl0pzAQMOpaoJNf9hiwuhkibj8A6O127ngUxXLBL5pgo4EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwYWRkaW5n",
|
||||
"base64"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
#! /usr/bin/env bash
|
||||
|
||||
export CLUSTER_NAME=devnet
|
||||
show-account-info --address Ec2enZyoC4nGpEfu2sUNAa2nUGJHWxoUWYSEJ2hNTWTA --filename group.json
|
||||
show-account-info --address 8mFQbdXsFXt3R3cu3oSNS3bDZRwJRP18vyzd9J278J9z --filename cache.json
|
||||
show-account-info --address 5NaBydPDJuVAixVkANhWEA4AiAdNgBqeB2AySeHJMdUv --filename openorders0.json
|
||||
show-account-info --address FhNicR8YxjaMjH3r1BEh5V11JxHH7sbkjBL6tnAu3hYr --filename openorders1.json
|
||||
show-account-info --address 5AEiYQLPZEBUj85tTXp38bkb8tkoJTYSnGoL3qDi4DpG --filename openorders2.json
|
||||
show-account-info --address GzmCp2ke9AQJTvUJ9MJD1hJLvyqBhmBgSsP3iMsHvEuV --filename openorders3.json
|
||||
show-account-info --address 8HtU9HRZcrBZaFL1Rs7tVuFJsKMPs37SAwTNx5Co95Xv --filename openorders8.json
|
||||
|
||||
# Devnet perp marketmaker
|
||||
show-account-info --address DRUZRfLQtki4ZYvRXhi5yGmyqCf6iMfTzxtBpxo6rbHu --filename account.json
|
Loading…
Reference in New Issue