6个版本 (稳定版)
新 1.8.1 | 2024年8月21日 |
---|---|
1.8.0 | 2024年6月20日 |
1.8.0-rc.2-tokenfactory | 2024年5月13日 |
1.8.0-rc.1-tokenfactory | 2024年4月22日 |
1.5.1 | 2023年7月20日 |
#14 in 魔法豆
503 次每月下载
在 9 个crate(6个直接)中使用
270KB
6K SLoC
Astroport工厂
工厂合约可以创建新的Astroport pair合约(和相关LP代币合约),并且作为所有pairs的目录。默认的pair类型是恒定产品和稳定swap,但治理可能决定添加任何实现的自定义池。
InstantiateMsg
实例化消息接受Astroport支持的代币类型的代币代码ID。它还接受收集治理费用的fee_address
,合约owner
,生成器合约地址和可以创建的初始pair类型。
{
"token_code_id": 123,
"fee_address": "terra...",
"owner": "terra...",
"generator_address": "terra...",
"pair_configs": [{
"code_id": 123,
"pair_type": {
"xyk": {}
},
"total_fee_bps": 100,
"maker_fee_bps": 10,
"is_disabled": false
}
]
}
ExecuteMsg
update_config
更新合约变量,即Astroport中使用的代币实现代码ID,收取治理费用的地址和生成器合约地址。
{
"update_config": {
"token_code_id": 123,
"fee_address": "terra...",
"generator_address": "terra..."
}
}
update_pair_config
此函数可用于
- 更新用于实例化特定类型的new pairs的代码ID
- 更改pair的费率结构
- 禁用pair类型,以便无法实例化其他pairs
请注意,所有字段都是可选的。
pair的费率结构如下设置
total_fee_bps
是每次swap收取的费率总额(以bps为单位)maker_fee_bps
是从total_fee_bps
中发送给治理的费率百分比。100% 是 10,000
以一个例子来说明,假设一个池子收取了30bps的费用(total_fee_bps
为30),而我们希望将1/3的费用用于治理。在这种情况下,maker_fee_bps
应该是3333,因为3333 / 10000 * 30 / 100 = 0.1%
{
"update_pair_config": {
"config": {
"code_id": 123,
"pair_type": {
"xyk": {}
},
"total_fee_bps": 100,
"maker_fee_bps": 10,
"is_disabled": false
}
}
}
create_pair
任何人都可以执行这个函数来创建一个Astroport对。 CreatePair
会创建一个Pair
合约和一个LP(流动性提供者)
代币合约。实例化对的账户必须指定他们想要的对类型以及为池子创建的资产。
自定义池类型可能还需要额外的参数,这些参数可以打包在init_params
中。
{
"create_pair": {
"pair_type": {
"xyk": {}
},
"asset_infos": [
{
"token": {
"contract_addr": "terra..."
}
},
{
"native_token": {
"denom": "uusd"
}
}
],
"init_params": "<base64_encoded_json_string: Optional binary serialised parameters for custom pool types>"
}
}
deregister
注销已注册的对。这允许其他人创建一个新的对(任何类型)来为不再有注册对的代币。这就是对如何“升级”的方法。
{
"deregister": {
"asset_infos": [
{
"token": {
"contract_address": "terra..."
}
},
{
"native_token": {
"denom": "uusd"
}
}
]
}
}
propose_new_owner
创建一个更改合约所有权的出价。出价的有效期由expires_in
变量设置。在expires_in
秒后,提案过期且无法再被接受。
{
"propose_new_owner": {
"owner": "terra...",
"expires_in": 1234567
}
}
drop_ownership_proposal
移除现有的更改合约所有者的出价。
{
"drop_ownership_proposal": {}
}
claim_ownership
用于声明合约所有权。
{
"claim_ownership": {}
}
QueryMsg
下面描述了所有查询消息。为每个查询响应定义了一个自定义结构。
config
返回通用工厂参数(所有者、代币代码ID、对类型配置)。
{
"config": {}
}
pair
返回关于特定对的信息。
{
"pair": {
"asset_infos": [
{
"token": {
"contract_address": "terra..."
}
},
{
"native_token": {
"denom": "uusd"
}
}
]
}
}
pairs
返回关于多个对的信息(结果分页)。函数从start_after
对开始返回对信息。函数返回最多limit
个对。
{
"pairs": {
"start_after": [
{
"token": {
"contract_address": "terra..."
}
},
{
"native_token": {
"denom": "uusd"
}
}
],
"limit": 10
}
}
fee_info
返回特定对类型的费用信息(total_fee_bps
和maker_fee_bps
)。
{
"pair_type": {
"xyk": {}
}
}
blacklisted_pair_types
返回一个包含被列入黑名单的对类型的向量。
{
"blacklisted_pair_types": {}
}
Dependencies
~15MB
~329K SLoC