🌊Liquidity Provider Token 介绍与解析

什么是 LP Token?

当您在 UTXOSwap 上提供流动性时,将会获得作为流动性提供证明的 Liquidity Provider Token(以下简称 LP Token)。

每个流动性池创建时会同时生成对应的独立 LP Token。这些代币遵循 xUDT 标准,可以像其他 xUDT 代币一样进行转移。然而,由于 LP Token 在参数(args)结构上略大于普通 xUDT 代币,它会占用更多的 capacity。

circle-info

虽然所有 LP Token 在 LP Token Info 中的 Symbol 名称相同,但不同流动性池的 LP Token 的 args 字段是不同的,使每个代币独一无二,因此这些 LP Token 实际上是不同的代币,无法进行合并。

circle-info

需要注意的是,转移或销毁 LP Token 相当于转移或销毁用户在 UTXOSwap 上的流动性资产。

因此,虽然从技术上可以将 LP Token 当作普通的 xUDT Token 来操作,但我们并不推荐为 LP Token 提供与其他 xUDT Token 相同的操作界面。

如果确实需要提供这类操作功能,务必清晰地告知用户操作的潜在风险,以防止用户资产的损失。

LP Token 的格式

LP_token 的 Type Script 格式如下:

LP_token Type Script
    code_hash: xudt_type_code_hash
    hash_type: xudt_type_hash_type
    args: pool_type_hash|0x40000000_u32.to_le_bytes()

args 字段中,0x40000000_u32.to_le_bytes() 表示这是一个 xUDT 标志位,使用 owner 模式的 output_type。该值占用 4 字节。因此,整个 LP Token 的 Type Script 的长度比标准 xUDT 的 65 字节多出 4 字节,总长为 69 字节。

LP Token 的创建

当创建流动性池时,会同时生成 LP Token 及 LP Token Info Cell,交易结构大致如下:

Pool Cell 中 data 对应的 pool info 的 molecule 如下:

Pool Cell 的 pool type script 格式如下:

LP Token 的解析

方案1: 通过 Pool Cell 进行解析

  1. 定位 Pool Cell:首先通过 LP Token 的 pool_type_hash 定位对应的 Pool Cell。

  2. 解析 Pool Info:反序列化 Pool Cell 中的 data 部分,解析出 asset_x_type_hashasset_y_type_hash

  3. 查询资产符号:通过解析得到的类型哈希(type hash),查询 Asset X 和 Asset Y 的代币符号。

  4. 记录 LP Token:将 LP Token 标记为 Asset X/Asset Y LP,以反映 LP Token 代表的资产组合。

方案2: 通过 LP Token 的创建交易进行解析

  1. 追溯创建交易:找到创建 LP Token 和 LP Token Info Cell 的初始交易。

  2. 解析交易输出:从该交易中解析出涉及的 AssetX 和 AssetY 信息。

  3. 查询资产符号:同样,查询和记录 AssetX 和 AssetY 的代币符号。

  4. 记录 LP Token:将 LP Token 标记为 Asset X/Asset Y LP,以反映 LP Token 代表的资产组合。

方案 1 依赖于链上现存的数据结构,适用于动态查询,能够实时反映当前状态。这种方法对于需要实时数据的应用场景更为合适。

方案 2 则是一种静态分析方法,依赖于交易历史,适用于历史数据分析和在特定时间点的状态复现。

链上部署信息

主网部署信息:

测试网部署信息:

Last updated