Skip to content

Instantly share code, notes, and snippets.

@tserg
Created October 19, 2025 01:46
Show Gist options
  • Select an option

  • Save tserg/c572379b6e4dcb55aab3d3d684cef448 to your computer and use it in GitHub Desktop.

Select an option

Save tserg/c572379b6e4dcb55aab3d3d684cef448 to your computer and use it in GitHub Desktop.
Fetch information about a user's troves
// Addresses
// Abbot: 0x04d0bb0a4c40012384e7c419e6eb3c637b28e8363fb66958b60d90505b9c072f
// Frontend Data Provider (FDP): 0x023037703b187f6ff23b883624a0a9f266c9d44671e762048c70100c2f128ab9
// https://scarbs.xyz/packages/opus
// https://github.com/lindy-labs/opus_interfaces/blob/main/src/interfaces/abbot.cairo
// https://github.com/lindy-labs/opus_interfaces/blob/main/src/interfaces/frontend_data_provider.cairo
use opus::interfaces::{IAbbotDispatcher, IAbbotDispatcherTrait, IFrontendDataProvider, IFrontEndDataProviderTrait};
use opus::types::{ShrineAssetInfo, TroveAssetInfo, TroveInfo};
// https://scarbs.xyz/packages/wadray
use wadray::Wad;
const ABBOT: ContractAddress = 0x04d0bb0a4c40012384e7c419e6eb3c637b28e8363fb66958b60d90505b9c072f;
const FDP: ContractAddress = 0x023037703b187f6ff23b883624a0a9f266c9d44671e762048c70100c2f128ab9;
const SURVIVOR: ContractAddress = 0x042dd777885ad2c116be96d4d634abc90a26a790ffb5871e037dd5ae7d2ec86b;
let abbot = IAbbotDispatcher { contract_address: ABBOT };
let user: ContractAddress = 0xdeadbeef;
let mut user_troves: Span<u64> = abbot.get_user_trove_ids(user);
let fdp = IFrontendDataProvider { contract_address: FDP };
let trove_id: u64 = user_troves.pop_front().unwrap();
let trove_info: TroveInfo = fdp.get_trove_info(trove_id);
let mut deposited_survivor_tokens: u128 = Zero::zero();
let mut deposited_survivor_value: Wad = Zero::zero();
for trove_asset_info in trove_info.assets {
if trove_asset_info.shrine_asset_info.address == SURVIVOR {
deposited_survivor_value = trove_asset_info.value;
deposited_survivor_tokens = trove_asset_info.amount;
break;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment