The xAnchor Core contract receives messages from the foreign chain (via the xAnchor Bridge), and forwards them to the AddressProxy contract. If needed, it will initialize a copy of the AddressProxy contract for any foreign address that doesn’t have a corresponding proxy contract already deployed.
Copy pub struct InstantiateMsg {
pub address_proxy_code_id: u64,
pub owner: String,
pub overseer_address: String,
pub anc_gov_address: String,
}
Copy pub enum ExecuteMsg {
InitializeAddressProxy {
chain_id: u16,
address: Vec<u8>,
},
Receive(Cw20ReceiveMsg),
/// depositors
DepositStable {
sender_chain: u16,
sender_address: Vec<u8>,
},
/// borrowers
RepayStable {
sender_chain: u16,
sender_address: Vec<u8>,
},
/// unlock + withdraw collateral (withdraw and unlock on anchor are combined into a single op)
UnlockCollateral {
sender_chain: u16,
sender_address: Vec<u8>,
asset: Asset,
},
BorrowStable {
sender_chain: u16,
sender_address: Vec<u8>,
borrow_amount: Uint256,
},
ClaimRewards {
sender_chain: u16,
sender_address: Vec<u8>,
},
/// stuck assets
WithdrawAsset {
sender_chain: u16,
sender_address: Vec<u8>,
asset_info: AssetInfo,
},
/// support governance
StakeVotingTokens {
sender_chain: u16,
sender_address: Vec<u8>,
stake_amount: Uint256,
},
WithdrawVotingTokens {
sender_chain: u16,
sender_address: Vec<u8>,
unstake_amount: Uint256,
},
CastVote {
sender_chain: u16,
sender_address: Vec<u8>,
poll_id: u64,
vote: VoteOption,
amount: Uint128,
},
/// admin and internal
AddBridges {
bridges: Vec<String>,
},
UpdateConfig {
owner: Option<String>,
address_proxy_code_id: Option<u64>,
},
/// internal Only
ForwardDifferenceAndInitiateBridgeTransfer {
asset_info: AssetInfo,
to: String,
},
}