본문으로 건너뛰기

범위 변환기

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_idFullRangeConvertorV2에 승인해야 합니다.

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을 사용합니다.
countryCodeLocker가 지원하는 국가 또는 지역 코드.
feeNameLocker 수수료 옵션 이름. 기본값은 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.

amount0RefundMinamount1RefundMin은 최소 환불량입니다. 최대 슬리피지나 최대 손실을 뜻하지 않습니다.

msg.value

feeName이 선택한 고정 수수료가 네이티브 토큰을 사용하면 msg.value는 해당 옵션의 flatFee와 정확히 같아야 합니다.

현재 Converter는 ERC20 고정 수수료를 지급할 수 없습니다. flatFeeToken != address(0)이고 flatFee > 0인 옵션은 사용할 수 없습니다.

반환값

반환값설명
newLockId새로 생성된 Locker Lock ID.
amountLiquidity0새 전체 범위 유동성에 실제 사용된 token0 수량.
amountLiquidity1새 전체 범위 유동성에 실제 사용된 token1 수량.
refund0dustRecipient에 반환된 token0 수량.
refund1dustRecipient에 반환된 token1 수량.

원본 NFT가 이미 전체 범위라면 컨트랙트는 재발행을 건너뛰고 직접 락합니다. 이 경우 유동성 수량과 환불 수량은 모두 0을 반환합니다.

getRangeAndMaxTick

function getRangeAndMaxTick(
INonfungiblePositionManager nftPositionManager,
uint256 nftId
) external view returns (
bool isFullRange,
int24 maxTick
);
매개변수 또는 반환값설명
nftPositionManagerNFT가 속한 Position Manager.
nftId조회할 NFT ID.
isFullRangeNFT가 이미 전체 범위 포지션인지 여부.
maxTick현재 수수료 티어에서 사용할 수 있는 최대 Tick. 전체 범위는 [-maxTick, maxTick]입니다.

tickSpacingToMaxTick

function tickSpacingToMaxTick(
int24 tickSpacing
) external pure returns (int24 maxTick);
매개변수 또는 반환값설명
tickSpacingPool 수수료 티어의 Tick 간격.
maxTick해당 Tick 간격에서 사용할 수 있는 최대 Tick.