Appearance
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
]);