3 个稳定版本
1.2.1 | 2024年3月26日 |
---|---|
1.2.0 | 2023年11月27日 |
1.1.1 | 2023年7月20日 |
#9 在 #astroport 中
735 每月下载次数
在 4 个crate中(通过 cw-it)使用
260KB
5.5K SLoC
Astroport 路由器
路由合约包含逻辑,以促进 Terra 原生币和 Astroport 币的多跳交换。
操作断言
对于每次交换,合约检查结果代币是否是请求的代币,以及接收的金额是否超过最低接收金额。
InstantiateMsg
使用 Astroport 工厂合约地址初始化合约。
{
"astroport_factory": "terra..."
}
ExecuteMsg
receive
CW20 接收消息。
{
"receive": {
"sender": "terra...",
"amount": "123",
"msg": "<base64_encoded_json_string>"
}
}
execute_swap_operation
将一种代币兑换成另一种代币。 single 指定此交换是单一的还是多跳路线的一部分。此消息为内部使用。
示例
交换 UST => mABNB
{
"execute_swap_operation": {
"operation": {
"astro_swap": {
"offer_asset_info": {
"native_token": {
"denom": "uusd"
}
},
"ask_asset_info": {
"token": {
"contract_addr": "terra..."
}
}
}
},
"to": "terra...",
"max_spread": "0.05",
"single": false
}
}
execute_swap_operations
执行原生币和 Astroport 币的多跳交换操作。交换逐个执行,最后交换将返回请求代币。此函数是公开的(任何人都可以调用)。合约在所有路线处理完毕后,在响应数据中设置总 'return_amount'。有关更多信息,请参阅 SwapResponseData
类型。注意:响应数据仅在多跳交换的第一个代币是原生代币时才有意义。否则,cw20::send 消息将重置响应数据。
示例
交换 KRT => UST => mABNB
{
"execute_swap_operations": {
"operations": [
{
"native_swap":{
"offer_denom":"ukrw",
"ask_denom":"uusd"
}
},
{
"astro_swap": {
"offer_asset_info": {
"native_token": {
"denom": "uusd"
}
},
"ask_asset_info": {
"token": {
"contract_addr": "terra..."
}
}
}
}
],
"minimum_receive": "123",
"to": "terra...",
"max_spread": "0.05"
}
}
assert_minimum_receive
检查请求代币的数量是否超过 minimum_receive
。此消息为内部使用。
{
"assert_minimum_receive": {
"asset_info": {
"token": {
"contract_addr": "terra..."
}
},
"prev_balance": "123",
"minimum_receive": "123",
"receiver": "terra..."
}
}
QueryMsg
以下详细说明了所有查询消息。为每个查询响应定义了一个自定义结构。
config
返回路由合约的一般配置。
{
"config": {}
}
simulate_swap_operations
模拟多跳交换操作。示例
- KRT => UST => mABNB
{
"simulate_swap_operations" : {
"offer_amount": "123",
"operations": [
{
"native_swap": {
"offer_denom": "ukrw",
"ask_denom": "uusd"
}
},
{
"astro_swap": {
"offer_asset_info": {
"native_token": {
"denom": "uusd"
}
},
"ask_asset_info": {
"token": {
"contract_addr": "terra..."
}
}
}
}
]
}
}
- mABNB => UST => KRT
{
"simulate_swap_operations" : {
"offer_amount": "123",
"operations": [
{
"native_swap": {
"offer_denom": "uusd",
"ask_denom": "ukrw"
}
},
{
"astro_swap": {
"offer_asset_info": {
"token": {
"contract_addr": "terra..."
}
},
"ask_asset_info": {
"native_token": {
"denom": "uusd"
}
}
}
}
]
}
}
依赖项
~4.5–6.5MB
~138K SLoC