Converter
The Converter contract is used to convert between wrapped bAsset tokens (wrapped tokens transferred to Terra via Wormhole bridge) and Anchor collateral bAsset tokens (token registered as Anchor collateral).
The existence of two bAsset tokens is due reward-accruing functionalities required for Anchor collateral tokens, which is not available on Wormhole wrapped tokens (automatically created by Wormhole bridge).
The Converter contract allows users to convert between the two tokens. Locking Wormhole wrapped tokens mints new Anchor collateral bAsset tokens in 1:1 ratio and vice versa.
Contract State
Config
Stores information about the contract configuration.
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct Config {
pub owner: CanonicalAddr,
pub anchor_token_address: Option<CanonicalAddr>,
pub wormhole_token_address: Option<CanonicalAddr>,
}
owner
CanonicalAddr
Address of contract owner
anchor_token_address
*
CanonicalAddr
Contract address of Wormhole wrapped token
wormhole_token_address
*
CanonicalAddr
Contract address of Anchor bAsset collateral token
* = not stored until value registered
InstantiateMsg
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct InstantiateMsg {
pub owner: String,
}
owner
String
Address of contract owner
ExecuteMsg
Receive
Receive
Can be called during a CW20 token transfer when the Mint contract is the recipient. Allows the token transfer to execute a Receive Hook as a subsequent action within the same transaction.
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ExecuteMsg {
Receive {
sender: String,
amount: Uint128,
msg: Binary,
}
}
sender
String
Sender of token transfer
amount
Uint128
Amount of tokens received
msg
Binary
Base64-encoded string of JSON of Receive Hook
RegisterTokens
Registers token contract addresses.
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ExecuteMsg {
RegisterTokens {
wormhole_token_address: String,
anchor_token_address: String,
},
}
wormhole_token_address
String
Contract address of Wormhole wrapped token
anchor_token_address
String
Contract address of Anchor bAsset collateral token
Receive Hooks
ConvertWormholeToAnchor
ConvertWormholeToAnchor
Converts Wormhole wrapped tokens to Anchor collateral bAsset tokens.
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum Cw20HookMsg {
ConvertWormholeToAnchor {}
}
ConvertAnchorToWormhole
ConvertAnchorToWormhole
Converts Anchor collateral bAsset tokens to Wormhole wrapped tokens.
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum Cw20HookMsg {
ConvertAnchorToWormhole {}
}
QueryMsg
Config
Config
Gets the contract configuration.
Request
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum QueryMsg {
Config {},
}
Response
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub struct ConfigResponse {
pub owner: String,
pub wormhole_token_address: Option<String>,
pub anchor_token_address: Option<String>,
}
owner
String
Address of contract owner
wormhole_token_address
*
String
Contract address of Wormhole wrapped token
anchor_token_address
*
String
Contract address of Anchor collateral token
* = optional
Last updated
Was this helpful?