多普勒 V3 SDK 软件
用于与多普勒 V3 协议交互的 TypeScript SDK - 一个基于 Uniswap V3 的流动性启动协议.
特征
- 多普勒合同创建和管理的工厂互动
- 包括DERC20和本土ETH处理在内的托肯操作
- QQ 历史事件查询池和令牌
安装
# Using npm
npm install doppler-v3-sdk
# Using bun
bun add doppler-v3-sdk
核心概念
工厂相互作用
import { ReadFactory } from "doppler-v3-sdk";
const factory = new ReadFactory("0x...factoryAddress");
const assetData = await factory.getAssetData(tokenAddress);
const createEvents = await factory.getCreateEvents();
调试操作
// ERC20 Token
const derc20 = new ReadDerc20(tokenAddress);
const balance = await derc20.getBalanceOf(userAddress);
// Native ETH
const eth = new ReadEth();
const ethBalance = await eth.getBalanceOf(userAddress);
集合分析
const pool = new ReadUniswapV3Pool(poolAddress);
const [slot0, swapEvents] = await Promise.all([
pool.getSlot0(),
pool.getSwapEvents(),
]);
报价
const quoter = new ReadQuoter(quoterAddress);
const quote = await quoter.quoteExactInput({
params: {
tokenIn: "0x...",
tokenOut: "0x...",
amountIn: parseUnits("1", 18),
fee: 3000,
},
options: {
tokenDecimals: 18,
formatDecimals: 4,
},
});
关键部件
| 构成部分 | 说明 |
|---|---|
ReadFactory | 从多普勒气闸合同读取的接口 |
ReadWriteFactory | 写入多普勒气闸合同的接口 |
ReadDerc20 | DERC20 附带支持的象征性操作 |
ReadEth | 本地ETH 操作 |
ReadUniswapV3Pool | Uniswap V3 集合合同业务接口 |
ReadInitializer | UniswapV3 启动器合同接口 |
ReadQuoter | 精确引用定点引擎的价格 |
ReadMigrator | V4印花机合同与费用流的接口 |
实例
基本交换模拟
import { ReadQuoter, fixed } from "doppler-v3-sdk";
const quoter = new ReadQuoter("0x...quoterAddress");
const amountIn = fixed(1.5, 18); // 1.5 tokens with 18 decimals
const quote = await quoter.quoteExactInput(
{
tokenIn: "0x...",
tokenOut: "0x...",
amountIn: amountIn.toBigInt(),
fee: 3000,
},
{ tokenDecimals: 18, formatDecimals: 4 }
);
console.log(`Expected output: ${quote.formattedAmountOut}`);
注:关于执行互换,见多普勒-路由器 这里
Uniswap V3 集合数据查询
import { ReadUniswapV3Pool } from "doppler-v3-sdk";
const pool = new ReadUniswapV3Pool("0x...poolAddress");
const [slot0, liquidityEvents] = await Promise.all([
pool.getSlot0(),
pool.getMintEvents(),
]);
console.log(`Current price: ${slot0.sqrtPriceX96}`);
console.log(`${liquidityEvents.length} liquidity positions found`);
创建 V4 迁移和费用流的 V3 池
V3 SDK现在支持创建多普勒V3集合,这些集合可以以先进的收费流能力迁移到Uniswap V4. 这使得您可以在一段时间内向多个受益人发放交易费.
import {
ReadWriteFactory,
BeneficiaryData,
V4MigratorData,
WAD,
addresses
} from "doppler-v3-sdk";
// Step 1: Set up beneficiaries for fee streaming
// Shares must sum to exactly WAD (1e18)
const beneficiaries: BeneficiaryData[] = [
{
beneficiary: "0x...", // Treasury address
shares: WAD * 70n / 100n // 70% of fees
},
{
beneficiary: "0x...", // Development fund
shares: WAD * 20n / 100n // 20% of fees
},
{
beneficiary: "0x...", // Community rewards
shares: WAD * 10n / 100n // 10% of fees
}
];
// Step 2: Sort beneficiaries (required by the contract)
const factory = new ReadWriteFactory(
addresses.unichain.airlock,
addresses.unichain.bundler
);
const sortedBeneficiaries = factory.sortBeneficiaries(beneficiaries);
// Step 3: Configure the V4 migrator
const migratorConfig: V4MigratorData = {
fee: 3000, // 0.3% fee tier
tickSpacing: 60, // Tick spacing for the V4 pool
lockDuration: 365 * 24 * 60 * 60, // 1 year lock
beneficiaries: sortedBeneficiaries
};
// Step 4: Encode the migrator data (automatically includes 5% for airlock owner)
const encodedMigratorData = await factory.encodeV4MigratorData(migratorConfig);
// Or exclude the default beneficiary:
// const encodedMigratorData = await factory.encodeV4MigratorData(migratorConfig, false);
// Step 5: Create the pool with V4 migration configuration
const createParams = await factory.buildConfig({
integrator: "0x...",
userAddress: userAddress,
numeraire: addresses.unichain.weth,
contracts: {
tokenFactory: addresses.unichain.tokenFactory,
governanceFactory: addresses.unichain.governanceFactory,
poolInitializer: addresses.unichain.v3Initializer,
liquidityMigrator: addresses.unichain.liquidityMigrator, // V4 migrator
},
tokenConfig: {
name: "My Token",
symbol: "MTK",
tokenURI: "https://example.com/token-metadata.json"
},
// Pass the encoded migrator data
liquidityMigratorData: encodedMigratorData,
// ... other parameters
});
await factory.create(createParams);
查询 V4 移民国
部署后,您可以查询映射器配置 :
import { ReadMigrator } from "doppler-v3-sdk";
const migrator = new ReadMigrator(addresses.unichain.liquidityMigrator);
// Get the V4 pool configuration that will be created
const poolKey = await migrator.getAssetData(token0, token1);
console.log(`Fee tier: ${poolKey.fee}`);
console.log(`Tick spacing: ${poolKey.tickSpacing}`);
// Get important contract addresses
const locker = await migrator.locker(); // StreamableFeesLocker address
const poolManager = await migrator.poolManager(); // V4 PoolManager address
手续费
带有可流性FeesLocker的V4相机提供了几个优点:
- 多个受益人: 根据股份分配多个地址的费用
- 流动性: 在指定期限内锁定流动性
- 电流收费:受益人可以长期要求累积费用
- 无操作治理: 通过将接收者设置为 DEAD ADDES 来永久锁定流动性的选项
- 受助人:受益人可以更新其接收地址
许可证
这个项目根据麻省理工学院许可证颁发——见 自由主义 详细文件.