Skip to content

Config 模块

模块路径: coinfair_clmm::config

Config 模块负责全局配置管理,包括协议权限、费用领取权限、池子创建权限和协议费率等。

View 方法(只读)

get_global_config

获取完整的协议配置信息。

move
#[view]
public fun get_global_config(): (address, address, address, u64, bool)

返回: (address, address, address, u64, bool) - (协议权限, 费用领取权限, 池子创建权限, 协议费率, 是否暂停)


get_protocol_authority

获取协议权限地址。

move
#[view]
public fun get_protocol_authority(): address

返回: address - 协议权限地址


get_protocol_fee_claim_authority

获取协议费用领取权限地址。

move
#[view]
public fun get_protocol_fee_claim_authority(): address

返回: address - 协议费用领取权限地址


get_pool_create_authority

获取池子创建权限地址。

move
#[view]
public fun get_pool_create_authority(): address

返回: address - 池子创建权限地址(如果是 @0x0 则任何人都可以创建池子)


is_protocol_paused

获取协议是否暂停。

move
#[view]
public fun is_protocol_paused(): bool

返回: bool - 协议是否暂停


get_protocol_pending_authority

获取待转移的协议权限地址。

move
#[view]
public fun get_protocol_pending_authority(): address

返回: address - 待转移的协议权限地址


get_max_protocol_fee_rate

获取最大协议费率。

move
#[view]
public fun get_max_protocol_fee_rate(): u64

返回: u64 - 最大协议费率(4000 = 40%)


Public 方法(可写)

initialize

初始化全局配置。

move
public fun initialize(account: &signer)

参数:

  • account: &signer - 部署账户

说明: 合约部署时自动调用,初始化全局配置


transfer_protocol_authority

转移协议权限。

move
public fun transfer_protocol_authority(
    account: &signer,
    protocol_authority: address
)

参数:

  • account: &signer - 当前协议权限账户
  • protocol_authority: address - 新的协议权限地址

事件: 触发 TransferAuthEvent

说明: 需要新权限接受才能完成转移


accept_protocol_authority

接受协议权限。

move
public fun accept_protocol_authority(account: &signer)

参数:

  • account: &signer - 新的协议权限账户

事件: 触发 AcceptAuthEvent


update_protocol_fee_claim_authority

更新协议费用领取权限。

move
public fun update_protocol_fee_claim_authority(
    account: &signer,
    protocol_fee_claim_authority: address
)

参数:

  • account: &signer - 协议权限账户
  • protocol_fee_claim_authority: address - 新的费用领取权限地址

事件: 触发 UpdateClaimAuthEvent


update_pool_create_authority

更新池子创建权限。

move
public fun update_pool_create_authority(
    account: &signer,
    pool_create_authority: address
)

参数:

  • account: &signer - 协议权限账户
  • pool_create_authority: address - 新的池子创建权限地址(@0x0表示任何人都可以创建)

事件: 触发 UpdatePoolCreateEvent


update_protocol_fee_rate

更新协议费率。

move
public fun update_protocol_fee_rate(
    account: &signer,
    protocol_fee_rate: u64
)

参数:

  • account: &signer - 协议权限账户
  • protocol_fee_rate: u64 - 新的协议费率

限制: 费率不能超过 MAX_PROTOCOL_FEE_RATE (4000)

事件: 触发 UpdateFeeRateEvent

错误码:

  • EINVALID_PROTOCOL_FEE_RATE = 3: 无效的协议费率

pause

暂停整个协议。

move
public fun pause(account: &signer)

参数:

  • account: &signer - 协议权限账户

说明: 暂停后所有池子操作都会被阻止


unpause

恢复协议。

move
public fun unpause(account: &signer)

参数:

  • account: &signer - 协议权限账户

init_clmm_acl

初始化CLMM访问控制列表。

move
public fun init_clmm_acl(account: &signer)

参数:

  • account: &signer - 初始化账户

前置条件: 必须是部署账户


add_role

添加角色。

move
public fun add_role(
    account: &signer,
    member: address,
    role: u8
)

参数:

  • account: &signer - 协议权限账户
  • member: address - 成员地址
  • role: u8 - 角色值
    • 1: 设置位置NFT URI的角色
    • 2: 重置初始fifrt价格的角色

前置条件: 必须是协议权限账户

错误码:

  • EINVALID_ACL_ROLE = 5: 无效的ACL角色

remove_role

移除角色。

move
public fun remove_role(
    account: &signer,
    member: address,
    role: u8
)

参数:

  • account: &signer - 协议权限账户
  • member: address - 成员地址
  • role: u8 - 角色值

前置条件: 必须是协议权限账户


数据结构

GlobalConfig

CLMM池的全局配置。

move
struct GlobalConfig has key {
    protocol_authority: address,              // 协议权限地址
    protocol_pending_authority: address,      // 待转移的协议权限地址
    protocol_fee_claim_authority: address,    // 协议费用领取权限地址
    pool_create_authority: address,           // 池子创建权限地址(@0x0表示任何人都可以创建)
    protocol_fee_rate: u64,                   // 协议费率
    creator_fee_rate: u64,                    // 创建者费率
    referrer_fee_rate: u64,                   // 推荐者费率
    is_pause: bool                            // 协议是否暂停
}

使用示例

TypeScript 示例

typescript
// 1. 获取全局配置
const config = await view('config::get_global_config', []);
console.log('Protocol authority:', config[0]);
console.log('Protocol fee rate:', config[3]);
console.log('Is paused:', config[4]);

// 2. 检查协议是否暂停
const isPaused = await view('config::is_protocol_paused', []);

// 3. 获取协议权限
const protocolAuthority = await view('config::get_protocol_authority', []);

// 4. 转移协议权限
await entry('clmm_router::transfer_protocol_authority', [
  protocolAuthority,
  newAuthorityAddress
]);

// 5. 接受协议权限
await entry('clmm_router::accept_protocol_authority', [newAuthority]);

// 6. 更新协议费率
await entry('clmm_router::update_protocol_fee_rate', [
  protocolAuthority,
  newFeeRate
]);