Accounts
These functions are used to retrieve specific on-chain accounts (State, PerpMarket, SpotMarket, etc.)
Example
drift_client= DriftClient.from_config(config, provider)
# get sol market info
sol_market_index = 0
sol_market = await get_perp_market_account(drift_client.program, sol_market_index)
print(
sol_market.amm.sqrt_k,
sol_market.amm.base_asset_amount_long,
sol_market.amm.base_asset_amount_short,
)
# get usdc spot market info
usdc_spot_market_index = 0
usdc_market = await get_spot_market_account(drift_client.program, usdc_spot_market_index)
print(
usdc.market_index,
usdc.deposit_balance,
usdc.borrow_balance,
)
accounts
MarketUpdateCallback = Callable[[str, DataAndSlot[Union[PerpMarketAccount, SpotMarketAccount]]], Awaitable[None]]
module-attribute
UpdateCallback = Callable[[str, DataAndSlot[UserAccount]], Awaitable[None]]
module-attribute
BufferAndSlot
dataclass
Source code in src/driftpy/accounts/types.py
35 36 37 38 | |
buffer
instance-attribute
slot
instance-attribute
__init__(slot, buffer)
DataAndSlot
dataclass
Bases: Generic[T]
Source code in src/driftpy/accounts/types.py
22 23 24 25 | |
data
instance-attribute
slot
instance-attribute
__init__(slot, data)
DriftClientAccountSubscriber
Source code in src/driftpy/accounts/types.py
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | |
fetch()
abstractmethod
async
Source code in src/driftpy/accounts/types.py
70 71 72 | |
get_market_accounts_and_slots()
abstractmethod
Source code in src/driftpy/accounts/types.py
96 97 98 | |
get_oracle_price_data_and_slot(oracle)
abstractmethod
Source code in src/driftpy/accounts/types.py
90 91 92 93 94 | |
get_perp_market_and_slot(market_index)
abstractmethod
Source code in src/driftpy/accounts/types.py
78 79 80 81 82 | |
get_spot_market_accounts_and_slots()
abstractmethod
Source code in src/driftpy/accounts/types.py
100 101 102 103 104 | |
get_spot_market_and_slot(market_index)
abstractmethod
Source code in src/driftpy/accounts/types.py
84 85 86 87 88 | |
get_state_account_and_slot()
abstractmethod
Source code in src/driftpy/accounts/types.py
74 75 76 | |
subscribe()
abstractmethod
async
Source code in src/driftpy/accounts/types.py
62 63 64 | |
unsubscribe()
abstractmethod
Source code in src/driftpy/accounts/types.py
66 67 68 | |
FullOracleWrapper
dataclass
Source code in src/driftpy/accounts/types.py
28 29 30 31 32 | |
oracle_price_data_and_slot
instance-attribute
oracle_source
instance-attribute
pubkey
instance-attribute
__init__(pubkey, oracle_source, oracle_price_data_and_slot)
GrpcProgramAccountOptions
dataclass
Source code in src/driftpy/accounts/types.py
48 49 50 51 | |
commitment
instance-attribute
filters
instance-attribute
__init__(filters, commitment)
InsuranceFundStakeAccount
dataclass
Source code in src/driftpy/types.py
1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 | |
authority
instance-attribute
cost_basis
instance-attribute
if_base
instance-attribute
if_shares
instance-attribute
last_valid_ts
instance-attribute
last_withdraw_request_shares
instance-attribute
last_withdraw_request_ts
instance-attribute
last_withdraw_request_value
instance-attribute
market_index
instance-attribute
padding = field(default_factory=(lambda: [0] * 14))
class-attribute
instance-attribute
__init__(authority, if_shares, last_withdraw_request_shares, if_base, last_valid_ts, last_withdraw_request_value, last_withdraw_request_ts, cost_basis, market_index, padding=(lambda: [0] * 14)())
OraclePriceData
dataclass
Source code in src/driftpy/types.py
1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 | |
confidence
instance-attribute
has_sufficient_number_of_data_points
instance-attribute
price
instance-attribute
slot
instance-attribute
twap
instance-attribute
twap_confidence
instance-attribute
__init__(price, slot, confidence, twap, twap_confidence, has_sufficient_number_of_data_points)
default()
staticmethod
Source code in src/driftpy/types.py
1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 | |
OracleSource
Source code in src/driftpy/types.py
257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 | |
Prelaunch = constructor()
class-attribute
instance-attribute
Pyth = constructor()
class-attribute
instance-attribute
Pyth1K = constructor()
class-attribute
instance-attribute
Pyth1KPull = constructor()
class-attribute
instance-attribute
Pyth1M = constructor()
class-attribute
instance-attribute
Pyth1MPull = constructor()
class-attribute
instance-attribute
PythLazer = constructor()
class-attribute
instance-attribute
PythLazer1K = constructor()
class-attribute
instance-attribute
PythLazer1M = constructor()
class-attribute
instance-attribute
PythLazerStableCoin = constructor()
class-attribute
instance-attribute
PythPull = constructor()
class-attribute
instance-attribute
PythStableCoin = constructor()
class-attribute
instance-attribute
PythStableCoinPull = constructor()
class-attribute
instance-attribute
QuoteAsset = constructor()
class-attribute
instance-attribute
Switchboard = constructor()
class-attribute
instance-attribute
SwitchboardOnDemand = constructor()
class-attribute
instance-attribute
PerpMarketAccount
dataclass
Source code in src/driftpy/types.py
749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 | |
amm
instance-attribute
contract_tier
instance-attribute
contract_type
instance-attribute
expiry_price
instance-attribute
expiry_ts
instance-attribute
fee_adjustment
instance-attribute
fuel_boost_maker
instance-attribute
fuel_boost_position
instance-attribute
fuel_boost_taker
instance-attribute
high_leverage_margin_ratio_initial
instance-attribute
high_leverage_margin_ratio_maintenance
instance-attribute
if_liquidation_fee
instance-attribute
imf_factor
instance-attribute
insurance_claim
instance-attribute
liquidator_fee
instance-attribute
margin_ratio_initial
instance-attribute
margin_ratio_maintenance
instance-attribute
market_index
instance-attribute
name
instance-attribute
next_curve_record_id
instance-attribute
next_fill_record_id
instance-attribute
next_funding_rate_record_id
instance-attribute
number_of_users
instance-attribute
number_of_users_with_base
instance-attribute
padding = field(default_factory=(lambda: [0] * 38))
class-attribute
instance-attribute
paused_operations
instance-attribute
pnl_pool
instance-attribute
pool_id
instance-attribute
pubkey
instance-attribute
quote_spot_market_index
instance-attribute
status
instance-attribute
unrealized_pnl_imf_factor
instance-attribute
unrealized_pnl_initial_asset_weight
instance-attribute
unrealized_pnl_maintenance_asset_weight
instance-attribute
unrealized_pnl_max_imbalance
instance-attribute
__init__(pubkey, amm, pnl_pool, name, insurance_claim, unrealized_pnl_max_imbalance, expiry_ts, expiry_price, next_fill_record_id, next_funding_rate_record_id, next_curve_record_id, imf_factor, unrealized_pnl_imf_factor, liquidator_fee, if_liquidation_fee, margin_ratio_initial, margin_ratio_maintenance, unrealized_pnl_initial_asset_weight, unrealized_pnl_maintenance_asset_weight, number_of_users_with_base, number_of_users, market_index, status, contract_type, contract_tier, paused_operations, quote_spot_market_index, fee_adjustment, fuel_boost_taker, fuel_boost_maker, fuel_boost_position, pool_id, high_leverage_margin_ratio_initial, high_leverage_margin_ratio_maintenance, padding=(lambda: [0] * 38)())
SpotMarketAccount
dataclass
Source code in src/driftpy/types.py
813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 | |
asset_tier
instance-attribute
borrow_balance
instance-attribute
borrow_token_twap
instance-attribute
cumulative_borrow_interest
instance-attribute
cumulative_deposit_interest
instance-attribute
decimals
instance-attribute
deposit_balance
instance-attribute
deposit_token_twap
instance-attribute
expiry_ts
instance-attribute
fee_adjustment
instance-attribute
flash_loan_amount = None
class-attribute
instance-attribute
flash_loan_initial_token_amount = None
class-attribute
instance-attribute
fuel_boost_borrows = None
class-attribute
instance-attribute
fuel_boost_deposits = None
class-attribute
instance-attribute
fuel_boost_insurance = None
class-attribute
instance-attribute
fuel_boost_maker = None
class-attribute
instance-attribute
fuel_boost_taker = None
class-attribute
instance-attribute
historical_index_data
instance-attribute
historical_oracle_data
instance-attribute
if_liquidation_fee
instance-attribute
if_paused_operations
instance-attribute
imf_factor
instance-attribute
initial_asset_weight
instance-attribute
initial_liability_weight
instance-attribute
insurance_fund
instance-attribute
last_interest_ts
instance-attribute
last_twap_ts
instance-attribute
liquidator_fee
instance-attribute
maintenance_asset_weight
instance-attribute
maintenance_liability_weight
instance-attribute
market_index
instance-attribute
max_borrow_rate
instance-attribute
max_position_size
instance-attribute
max_token_borrows_fraction
instance-attribute
max_token_deposits
instance-attribute
min_borrow_rate = None
class-attribute
instance-attribute
min_order_size
instance-attribute
mint
instance-attribute
name
instance-attribute
next_deposit_record_id
instance-attribute
next_fill_record_id
instance-attribute
optimal_borrow_rate
instance-attribute
optimal_utilization
instance-attribute
oracle
instance-attribute
oracle_source
instance-attribute
order_step_size
instance-attribute
order_tick_size
instance-attribute
orders_enabled
instance-attribute
padding = field(default_factory=(lambda: [0] * 42))
class-attribute
instance-attribute
paused_operations
instance-attribute
pubkey
instance-attribute
revenue_pool
instance-attribute
scale_initial_asset_weight_start = None
class-attribute
instance-attribute
spot_fee_pool
instance-attribute
status
instance-attribute
total_quote_social_loss
instance-attribute
total_social_loss
instance-attribute
total_spot_fee
instance-attribute
total_swap_fee = None
class-attribute
instance-attribute
utilization_twap
instance-attribute
vault
instance-attribute
withdraw_guard_threshold
instance-attribute
__init__(pubkey, oracle, mint, vault, name, historical_oracle_data, historical_index_data, revenue_pool, spot_fee_pool, insurance_fund, total_spot_fee, deposit_balance, borrow_balance, cumulative_deposit_interest, cumulative_borrow_interest, total_social_loss, total_quote_social_loss, withdraw_guard_threshold, max_token_deposits, deposit_token_twap, borrow_token_twap, utilization_twap, last_interest_ts, last_twap_ts, expiry_ts, order_step_size, order_tick_size, min_order_size, max_position_size, next_fill_record_id, next_deposit_record_id, initial_asset_weight, maintenance_asset_weight, initial_liability_weight, maintenance_liability_weight, imf_factor, liquidator_fee, if_liquidation_fee, optimal_utilization, optimal_borrow_rate, max_borrow_rate, decimals, market_index, orders_enabled, oracle_source, status, asset_tier, paused_operations, if_paused_operations, fee_adjustment, max_token_borrows_fraction, flash_loan_amount=None, flash_loan_initial_token_amount=None, total_swap_fee=None, scale_initial_asset_weight_start=None, min_borrow_rate=None, fuel_boost_deposits=None, fuel_boost_borrows=None, fuel_boost_taker=None, fuel_boost_maker=None, fuel_boost_insurance=None, padding=(lambda: [0] * 42)())
StateAccount
dataclass
Source code in src/driftpy/types.py
879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 | |
admin
instance-attribute
default_market_order_time_in_force
instance-attribute
default_spot_auction_duration
instance-attribute
discount_mint
instance-attribute
exchange_status
instance-attribute
initial_pct_to_liquidate
instance-attribute
liquidation_duration
instance-attribute
liquidation_margin_buffer_ratio
instance-attribute
lp_cooldown_time
instance-attribute
max_number_of_sub_accounts
instance-attribute
min_perp_auction_duration
instance-attribute
number_of_authorities
instance-attribute
number_of_markets
instance-attribute
number_of_spot_markets
instance-attribute
number_of_sub_accounts
instance-attribute
oracle_guard_rails
instance-attribute
padding = field(default_factory=(lambda: [0] * 10))
class-attribute
instance-attribute
perp_fee_structure
instance-attribute
settlement_duration
instance-attribute
signer
instance-attribute
signer_nonce
instance-attribute
spot_fee_structure
instance-attribute
srm_vault
instance-attribute
whitelist_mint
instance-attribute
__init__(admin, whitelist_mint, discount_mint, signer, srm_vault, perp_fee_structure, spot_fee_structure, oracle_guard_rails, number_of_authorities, number_of_sub_accounts, lp_cooldown_time, liquidation_margin_buffer_ratio, settlement_duration, number_of_markets, number_of_spot_markets, signer_nonce, min_perp_auction_duration, default_market_order_time_in_force, default_spot_auction_duration, exchange_status, liquidation_duration, initial_pct_to_liquidate, max_number_of_sub_accounts, padding=(lambda: [0] * 10)())
UserAccount
dataclass
Source code in src/driftpy/types.py
926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 | |
authority
instance-attribute
cumulative_perp_funding
instance-attribute
cumulative_spot_fees
instance-attribute
delegate
instance-attribute
has_open_auction
instance-attribute
has_open_order
instance-attribute
idle
instance-attribute
is_margin_trading_enabled
instance-attribute
last_active_slot
instance-attribute
last_add_perp_lp_shares_ts
instance-attribute
last_fuel_bonus_update_ts
instance-attribute
liquidation_margin_freed
instance-attribute
margin_mode
instance-attribute
max_margin_ratio
instance-attribute
name
instance-attribute
next_liquidation_id
instance-attribute
next_order_id
instance-attribute
open_auctions
instance-attribute
open_orders
instance-attribute
orders
instance-attribute
padding = field(default_factory=(lambda: [0] * 15))
class-attribute
instance-attribute
perp_positions
instance-attribute
pool_id
instance-attribute
settled_perp_pnl
instance-attribute
spot_positions
instance-attribute
status
instance-attribute
sub_account_id
instance-attribute
total_deposits
instance-attribute
total_social_loss
instance-attribute
total_withdraws
instance-attribute
__init__(authority, delegate, name, spot_positions, perp_positions, orders, last_add_perp_lp_shares_ts, total_deposits, total_withdraws, total_social_loss, settled_perp_pnl, cumulative_spot_fees, cumulative_perp_funding, liquidation_margin_freed, last_active_slot, next_order_id, max_margin_ratio, next_liquidation_id, sub_account_id, status, is_margin_trading_enabled, idle, open_orders, has_open_order, open_auctions, has_open_auction, margin_mode, pool_id, last_fuel_bonus_update_ts, padding=(lambda: [0] * 15)())
UserAccountSubscriber
Source code in src/driftpy/accounts/types.py
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | |
fetch()
abstractmethod
async
Source code in src/driftpy/accounts/types.py
116 117 118 | |
get_user_account_and_slot()
abstractmethod
Source code in src/driftpy/accounts/types.py
123 124 125 | |
subscribe()
abstractmethod
async
Source code in src/driftpy/accounts/types.py
108 109 110 | |
unsubscribe()
abstractmethod
Source code in src/driftpy/accounts/types.py
112 113 114 | |
update_data(data)
async
Source code in src/driftpy/accounts/types.py
120 121 | |
UserStatsAccount
dataclass
Source code in src/driftpy/types.py
976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 | |
authority
instance-attribute
disable_update_perp_bid_ask_twap
instance-attribute
fees
instance-attribute
filler_volume30d
instance-attribute
fuel_borrows = 0
class-attribute
instance-attribute
fuel_deposits = 0
class-attribute
instance-attribute
fuel_insurance = 0
class-attribute
instance-attribute
fuel_maker = 0
class-attribute
instance-attribute
fuel_overflow_status = 0
class-attribute
instance-attribute
fuel_positions = 0
class-attribute
instance-attribute
fuel_taker = 0
class-attribute
instance-attribute
if_staked_gov_token_amount = 0
class-attribute
instance-attribute
if_staked_quote_asset_amount
instance-attribute
is_referrer
instance-attribute
last_filler_volume30d_ts
instance-attribute
last_fuel_if_bonus_update_ts = 0
class-attribute
instance-attribute
last_maker_volume30d_ts
instance-attribute
last_taker_volume30d_ts
instance-attribute
maker_volume30d
instance-attribute
next_epoch_ts
instance-attribute
number_of_sub_accounts
instance-attribute
number_of_sub_accounts_created
instance-attribute
padding = field(default_factory=(lambda: [0] * 12))
class-attribute
instance-attribute
referrer
instance-attribute
taker_volume30d
instance-attribute
__init__(authority, referrer, fees, next_epoch_ts, maker_volume30d, taker_volume30d, filler_volume30d, last_maker_volume30d_ts, last_taker_volume30d_ts, last_filler_volume30d_ts, if_staked_quote_asset_amount, number_of_sub_accounts, number_of_sub_accounts_created, is_referrer, disable_update_perp_bid_ask_twap, fuel_overflow_status=0, fuel_insurance=0, fuel_deposits=0, fuel_borrows=0, fuel_positions=0, fuel_taker=0, fuel_maker=0, if_staked_gov_token_amount=0, last_fuel_if_bonus_update_ts=0, padding=(lambda: [0] * 12)())
UserStatsAccountSubscriber
Source code in src/driftpy/accounts/types.py
128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 | |
fetch()
abstractmethod
async
Source code in src/driftpy/accounts/types.py
137 138 139 | |
get_user_stats_account_and_slot()
abstractmethod
Source code in src/driftpy/accounts/types.py
141 142 143 144 145 | |
subscribe()
abstractmethod
async
Source code in src/driftpy/accounts/types.py
129 130 131 | |
unsubscribe()
abstractmethod
Source code in src/driftpy/accounts/types.py
133 134 135 | |
WebsocketProgramAccountOptions
dataclass
Source code in src/driftpy/accounts/types.py
41 42 43 44 45 | |
commitment
instance-attribute
encoding
instance-attribute
filters
instance-attribute
__init__(filters, commitment, encoding)
get_account_data_and_slot(address, program, commitment=Commitment('processed'), decode=None)
async
Source code in src/driftpy/accounts/get_accounts.py
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | |
get_all_perp_market_accounts(program)
async
Source code in src/driftpy/accounts/get_accounts.py
121 122 | |
get_all_spot_market_accounts(program)
async
Source code in src/driftpy/accounts/get_accounts.py
140 141 | |
get_if_stake_account(program, authority, spot_market_index)
async
Source code in src/driftpy/accounts/get_accounts.py
70 71 72 73 74 75 76 77 | |
get_insurance_fund_stake_public_key(program_id, authority, spot_market_index)
Source code in src/driftpy/addresses.py
26 27 28 29 30 31 32 33 34 | |
get_perp_market_account(program, market_index)
async
Source code in src/driftpy/accounts/get_accounts.py
115 116 117 118 | |
get_perp_market_account_and_slot(program, market_index)
async
Source code in src/driftpy/accounts/get_accounts.py
106 107 108 109 110 111 112 | |
get_perp_market_public_key(program_id, market_index)
Source code in src/driftpy/addresses.py
8 9 10 11 12 13 14 | |
get_protected_maker_mode_config_public_key(program_id)
Source code in src/driftpy/addresses.py
148 149 | |
get_protected_maker_mode_stats(program)
async
Source code in src/driftpy/accounts/get_accounts.py
144 145 146 147 148 149 150 151 | |
get_spot_market_account(program, spot_market_index)
async
Source code in src/driftpy/accounts/get_accounts.py
134 135 136 137 | |
get_spot_market_account_and_slot(program, spot_market_index)
async
Source code in src/driftpy/accounts/get_accounts.py
125 126 127 128 129 130 131 | |
get_spot_market_public_key(program_id, spot_market_index)
Source code in src/driftpy/addresses.py
37 38 39 40 41 42 43 | |
get_state_account(program)
async
Source code in src/driftpy/accounts/get_accounts.py
66 67 | |
get_state_account_and_slot(program)
async
Source code in src/driftpy/accounts/get_accounts.py
61 62 63 | |
get_state_public_key(program_id)
Source code in src/driftpy/addresses.py
64 65 66 67 | |
get_user_account(program, user_public_key)
async
Source code in src/driftpy/accounts/get_accounts.py
99 100 101 102 103 | |
get_user_account_and_slot(program, user_public_key)
async
Source code in src/driftpy/accounts/get_accounts.py
92 93 94 95 96 | |
get_user_stats_account(program, authority)
async
Source code in src/driftpy/accounts/get_accounts.py
80 81 82 83 84 85 86 87 88 89 | |
get_user_stats_account_public_key(program_id, authority)
Source code in src/driftpy/addresses.py
76 77 78 79 80 | |