범위 변환기
FullRangeConvertorV2
FullRangeConvertorV2는 V3 좁은 범위 포지션을 전체 범위 포지션으로 변환하고 같은 트랜잭션에서 새 포지션을 BDexV3LiquidityLocker에 락합니다.
convertToFullRangeAndLock
function convertToFullRangeAndLock(
LockParams lockParams,
SlippageChecks slippageParams
) external payable returns (
uint256 newLockId,
uint256 amountLiquidity0,
uint256 amountLiquidity1,
uint256 refund0,
uint256 refund1
);
호출 전에 NFT Owner는 lockParams.nft_id를 FullRangeConvertorV2에 승인해야 합니다.
lockParams
struct LockParams {
INonfungiblePositionManager nftPositionManager;
uint256 nft_id;
address dustRecipient;
address owner;
address additionalCollector;
address collectAddress;
uint256 unlockDate;
uint16 countryCode;
string feeName;
bytes[] r;
}
| 매개변수 | 설명 |
|---|---|
nftPositionManager | 원본 포지션 NFT의 Position Manager(BDEX)이며 Locker 허용 목록에 있어야 합니다. |
nft_id | 변환하고 락할 NFT ID. |
dustRecipient | 새 유동성에 사용되지 않은 token0/token1과 락 시 초기 수집분을 받는 주소. |
owner | 새 락의 Owner. |
additionalCollector | 추가로 수수료를 수집할 수 있는 선택 주소. |
collectAddress | 자동 수수료 수집 수령 주소이며 0 주소를 사용할 수 없습니다. |
unlockDate | 초 단위의 미래 잠금 해제 시각. 영구 락에는 ETERNAL_LOCK을 사용합니다. |
countryCode | Locker가 지원하는 국가 또는 지역 코드. |
feeName | Locker 수수료 옵션 이름. 기본값은 DEFAULT입니다. |
r | 동적 수수료 서명 매개변수. 사용하지 않으면 빈 배열 []을 전달합니다. |
slippageParams
struct SlippageChecks {
uint256 amount0LiquidityMin;
uint256 amount1LiquidityMin;
uint256 amount0RefundMin;
uint256 amount1RefundMin;
}
| 매개변수 | 설명 |
|---|---|
amount0LiquidityMin | 전체 범위 NFT 발행에 사용할 token0 최소 수량. 좁은 범위 변환 시 0보다 커야 합니다. |
amount1LiquidityMin | 전체 범위 NFT 발행에 사용할 token1 최소 수량. 좁은 범위 변환 시 0보다 커야 합니다. |
amount0RefundMin | 변환 후 dustRecipient에 반환할 token0 최소 수량. 일반적으로 0. |
amount1RefundMin | 변환 후 dustRecipient에 반환할 token1 최소 수량. 일반적으로 0. |
amount0RefundMin과 amount1RefundMin은 최소 환불량입니다. 최대 슬리피지나 최대 손실을 뜻하지 않습니다.
msg.value
feeName이 선택한 고정 수수료가 네이티브 토큰을 사용하면 msg.value는 해당 옵션의 flatFee와 정확히 같아야 합니다.
현재 Converter는 ERC20 고정 수수료를 지급할 수 없습니다. flatFeeToken != address(0)이고 flatFee > 0인 옵션은 사용할 수 없습니다.
반환값
| 반환값 | 설명 |
|---|---|
newLockId | 새로 생성된 Locker Lock ID. |
amountLiquidity0 | 새 전체 범위 유동성에 실제 사용된 token0 수량. |
amountLiquidity1 | 새 전체 범위 유동성에 실제 사용된 token1 수량. |
refund0 | dustRecipient에 반환된 token0 수량. |
refund1 | dustRecipient에 반환된 token1 수량. |
원본 NFT가 이미 전체 범위라면 컨트랙트는 재발행을 건너뛰고 직접 락합니다. 이 경우 유동성 수량과 환불 수량은 모두 0을 반환합니다.
getRangeAndMaxTick
function getRangeAndMaxTick(
INonfungiblePositionManager nftPositionManager,
uint256 nftId
) external view returns (
bool isFullRange,
int24 maxTick
);
| 매개변수 또는 반환값 | 설명 |
|---|---|
nftPositionManager | NFT가 속한 Position Manager. |
nftId | 조회할 NFT ID. |
isFullRange | NFT가 이미 전체 범위 포지션인지 여부. |
maxTick | 현재 수수료 티어에서 사용할 수 있는 최대 Tick. 전체 범위는 [-maxTick, maxTick]입니다. |
tickSpacingToMaxTick
function tickSpacingToMaxTick(
int24 tickSpacing
) external pure returns (int24 maxTick);
| 매개변수 또는 반환값 | 설명 |
|---|---|
tickSpacing | Pool 수수료 티어의 Tick 간격. |
maxTick | 해당 Tick 간격에서 사용할 수 있는 최대 Tick. |