@alephium/web3 生成的绑定。当模块没有封装你需要的方法时,可以直接使用它们。
命名空间
import {
CpmmContracts, // TokenPair, TokenPairFactory, Router, ...
CpmmScripts, // SwapMinOut, SwapMaxIn, AddLiquidity, RemoveLiquidity, CreatePair, ...
ClmmContracts, // Pool, PoolFactory, PoolConfig, Position, PositionManager, DexAccount, DexAccountRoot, ...
ClmmScripts, // SwapWithoutAccount, SwapWithoutAccountWithFee, CreateLiquidPool, ...
StakingContracts, // XAlphToken, AlphUnstakeVault, RewardFeeCollector, DistributorVault, ...
loadCpmmDeployments,
loadClmmDeployments,
loadStakingDeployments
} from '@alephium/powfi-sdk'
生成的绑定使用全局的
@alephium/web3 node provider。Powfi.load 会自动注册它。如果同时运行多个 SDK 实例,请在希望绑定使用的那个实例上调用 powfi.setCurrentProviders()。示例:直接读取合约
import { addressFromContractId } from '@alephium/web3'
const poolId = powfi.clmm.getPoolId(tokenA, tokenB, 0n)
const pool = ClmmContracts.Pool.at(addressFromContractId(poolId))
const state = await pool.fetchState()
state.fields.slot0.sqrtPriceX96
state.fields.protocolFees
const { returns } = await pool.view.simulateSwap({
args: { amountSpecified: 10n ** 18n, zeroForOne: true, data: '', maxSteps: 500n }
})
部署
load*Deployments(networkId) 返回某个网络的部署记录,其中 contracts.<Name>.contractInstance 包含 contractId、address 和 groupIndex。
const d = loadClmmDeployments('mainnet')
d.contracts.PoolFactory.contractInstance.contractId
1.0.2 包含的合约(mainnet、testnet 和 devnet 相同):
| 包 | 已部署的合约 |
|---|---|
| CPMM | Router、TokenPair(模板)、TokenPairFactory |
| CLMM | PoolFactory、PositionManager、DexAccountRoot,以及模板 Pool、PoolConfig、Position、Tick、BitmapWord、DexAccount |
| 质押 | XAlphToken、AlphUnstakeVault(模板)、RewardFeeCollector、DistributorVault(模板)、ALPHLock |
合约地址
1.0.2 内置部署中的入口合约。模板合约未列出:池、仓位和金库都由模板创建,各自有独立地址。devnet 地址取决于你的本地部署。