UNI-V3-POS

Ethereum ERC-721 NFT 浏览链

0xc36442b4a4522e871399cd717abdd847ab11fe88

Proxy 实现合约: 0xc36442b4a4522e871399cd717abdd847ab11fe88

Solidity v0.7.6+commit.7338295f

Non-fungible token collection.

🤖
通过你的 AI 查询此合约
引用: univ3-nftmanager-eth 0xc36442b4a4522e871399cd717abdd847ab11fe88
示例提示词: "Tell me the current state of univ3-nftmanager-eth"
还没有接入 AI?→ mcp.smarts.md · 浏览链

管理与风险

谁能修改规则?

Detected upgradeable and mintable controls from the verified ABI.

Upgradeable Mintable

当前控制

Implementation
0xc36442b4a4522e871399cd717abdd847ab11fe88 ↗ Etherscan → smarts proxy

概览

读取函数
17
写入函数
21
事件
6

读取函数

Block #25,494,292 · 53s ago
DOMAIN_SEPARATOR() view → 0x24ea63bbfcb16de2524c7c24322b6cbc39cb2d08881bce770af4771e6b1ad117

The domain separator used in the permit signature

返回值

名称 类型 描述
bytes32 The domain seperator used in encoding of permit signature
PERMIT_TYPEHASH() view → 0x49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad

The permit typehash used in the permit signature

返回值

名称 类型 描述
bytes32 The typehash for the permit
WETH9() view → 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2

Returns the address of the WETH9 token used by this NonfungiblePositionManager.✨ AI

返回值

名称 类型 描述
address Returns the address of WETH9
balanceOf(owner: address) view

Returns the number of NFTs owned by the given address.✨ AI

开发者: Returns the number of tokens in ``owner``'s account.

参数

名称 类型 描述
owner address Address whose NFT balance will be returned.✨ AI

返回值

名称 类型 描述
uint256 The number of NFTs owned by the address.✨ AI
baseURI() pure

Return the base URI used to construct each token's metadata URI.✨ AI

开发者: Returns the base URI set via {_setBaseURI}. This will be automatically added as a prefix in {tokenURI} to each token's URI, or to the token ID if no specific URI is set for that token ID.

返回值

名称 类型 描述
string The base URI string prefixed to token IDs to form each token's metadata URI.✨ AI
factory() view → 0x1f98431c8ad98523631ae4a59f267346ea31f984

The contract that deployed the pool, which must adhere to the IUniswapV3Factory interface

返回值

名称 类型 描述
address The contract address
getApproved(tokenId: uint256) view

Return the address approved to transfer the specified NFT token.✨ AI

开发者: Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.

参数

名称 类型 描述
tokenId uint256 ID of the NFT to query approval for.✨ AI

返回值

名称 类型 描述
address The address approved to transfer the NFT, or the zero address if no approval exists.✨ AI
isApprovedForAll(owner: address, operator: address) view

Check whether an operator is approved to manage all tokens owned by the given owner.✨ AI

开发者: Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}

参数

名称 类型 描述
owner address Address of the token owner.✨ AI
operator address Address being queried for approval to manage owner's tokens.✨ AI

返回值

名称 类型 描述
bool True if operator is approved to manage all of owner's NFTs; otherwise false.✨ AI
name() view → Uniswap V3 Positions NFT-V1

Returns the name of the ERC-721 token used to identify position NFTs.✨ AI

开发者: Returns the token collection name.

返回值

名称 类型 描述
string The ERC-721 token name string for the NonfungiblePositionManager NFTs.✨ AI
ownerOf(tokenId: uint256) view

Returns the owner address of the NFT with the given tokenId.✨ AI

开发者: Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.

参数

名称 类型 描述
tokenId uint256 ID of the NFT to query.✨ AI

返回值

名称 类型 描述
address Address that currently owns the specified tokenId.✨ AI
positions(tokenId: uint256) view

Returns the position information associated with a given token ID.

开发者: Throws if the token ID is not valid.

参数

名称 类型 描述
tokenId uint256 The ID of the token that represents the position

返回值

名称 类型 描述
nonce uint96 nonce The nonce for permits
operator address operator The address that is approved for spending
token0 address token0 The address of the token0 for a specific pool
token1 address token1 The address of the token1 for a specific pool
fee uint24 fee The fee associated with the pool
tickLower int24 tickLower The lower end of the tick range for the position
tickUpper int24 tickUpper The higher end of the tick range for the position
liquidity uint128 liquidity The liquidity of the position
feeGrowthInside0LastX128 uint256 feeGrowthInside0LastX128 The fee growth of token0 as of the last action on the individual position
feeGrowthInside1LastX128 uint256 feeGrowthInside1LastX128 The fee growth of token1 as of the last action on the individual position
tokensOwed0 uint128 tokensOwed0 The uncollected amount of token0 owed to the position as of the last computation
tokensOwed1 uint128 tokensOwed1 The uncollected amount of token1 owed to the position as of the last computation
supportsInterface(interfaceId: bytes4) view

Report whether the contract implements the interface specified by the provided ERC-165 interfaceId.✨ AI

开发者: Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.

参数

名称 类型 描述
interfaceId bytes4 The ERC-165 interface identifier (4-byte selector) to query.✨ AI

返回值

名称 类型 描述
bool True if the contract implements the interface with the given ID, otherwise false.✨ AI
symbol() view → UNI-V3-POS

Returns the ERC-721 token symbol that identifies this NonfungiblePositionManager NFT collection.✨ AI

开发者: Returns the token collection symbol.

返回值

名称 类型 描述
string The token symbol string for this NFT collection.✨ AI
tokenByIndex(index: uint256) view

Returns the token ID at the given index in the full NFT collection.✨ AI

开发者: Returns a token ID at a given `index` of all the tokens stored by the contract. Use along with {totalSupply} to enumerate all tokens.

参数

名称 类型 描述
index uint256 Zero-based index into the collection of all minted tokens.✨ AI

返回值

名称 类型 描述
uint256 The token ID (uint256) stored at the specified index.✨ AI
tokenOfOwnerByIndex(owner: address, index: uint256) view

Returns the token ID owned by an address at a specific index.✨ AI

开发者: Returns a token ID owned by `owner` at a given `index` of its token list. Use along with {balanceOf} to enumerate all of ``owner``'s tokens.

参数

名称 类型 描述
owner address Address whose tokens are being queried.✨ AI
index uint256 Zero-based index into the owner's list of tokens.✨ AI

返回值

名称 类型 描述
uint256 The uint256 token ID at the given owner index.✨ AI
tokenURI(tokenId: uint256) view

Produces the URI describing a particular token ID for a position manager

开发者: Note this URI may be a data: URI with the JSON contents directly inlined

参数

名称 类型 描述
tokenId uint256 The ID of the token for which to produce a description, which may not be valid

返回值

名称 类型 描述
string The URI of the ERC721-compliant metadata
totalSupply() view → 1,195,097

Returns the total number of NFT positions tracked by the contract.✨ AI

开发者: Returns the total amount of tokens stored by the contract.

返回值

名称 类型 描述
uint256 Total number of tokens currently tracked by the contract (ERC-721 total supply).✨ AI

写入函数

approve(to: address, tokenId: uint256) nonpayable

Approve an address to transfer the specified NFT tokenId on the caller's behalf.✨ AI

开发者: Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.

参数

名称 类型 描述
to address Address that will be allowed to transfer the token.✨ AI
tokenId uint256 Identifier of the NFT to grant transfer approval for.✨ AI
burn(tokenId: uint256) payable

Burns a token ID, which deletes it from the NFT contract. The token must have 0 liquidity and all tokens must be collected first.

参数

名称 类型 描述
tokenId uint256 The ID of the token that is being burned
collect(params: tuple) payable

Collects up to a maximum amount of fees owed to a specific position to the recipient

参数

名称 类型 描述
params tuple tokenId The ID of the NFT for which tokens are being collected, recipient The account that should receive the tokens, amount0Max The maximum amount of token0 to collect, amount1Max The maximum amount of token1 to collect

返回值

名称 类型 描述
amount0 uint256 amount0 The amount of fees collected in token0
amount1 uint256 amount1 The amount of fees collected in token1
createAndInitializePoolIfNecessary(token0: address, token1: address, fee: uint24, sqrtPriceX96: uint160) payable

Creates a new pool if it does not exist, then initializes if not initialized

开发者: This method can be bundled with others via IMulticall for the first action (e.g. mint) performed against a pool

参数

名称 类型 描述
token0 address The contract address of token0 of the pool
token1 address The contract address of token1 of the pool
fee uint24 The fee amount of the v3 pool for the specified token pair
sqrtPriceX96 uint160 The initial square root price of the pool as a Q64.96 value

返回值

名称 类型 描述
pool address pool Returns the pool address based on the pair of tokens and fee, will return the newly created pool address if necessary
decreaseLiquidity(params: tuple) payable

Decreases the amount of liquidity in a position and accounts it to the position

参数

名称 类型 描述
params tuple tokenId The ID of the token for which liquidity is being decreased, amount The amount by which liquidity will be decreased, amount0Min The minimum amount of token0 that should be accounted for the burned liquidity, amount1Min The minimum amount of token1 that should be accounted for the burned liquidity, deadline The time by which the transaction must be included to effect the change

返回值

名称 类型 描述
amount0 uint256 amount0 The amount of token0 accounted to the position's tokens owed
amount1 uint256 amount1 The amount of token1 accounted to the position's tokens owed
increaseLiquidity(params: tuple) payable

Increases the amount of liquidity in a position, with tokens paid by the `msg.sender`

参数

名称 类型 描述
params tuple tokenId The ID of the token for which liquidity is being increased, amount0Desired The desired amount of token0 to be spent, amount1Desired The desired amount of token1 to be spent, amount0Min The minimum amount of token0 to spend, which serves as a slippage check, amount1Min The minimum amount of token1 to spend, which serves as a slippage check, deadline The time by which the transaction must be included to effect the change

返回值

名称 类型 描述
liquidity uint128 liquidity The new liquidity amount as a result of the increase
amount0 uint256 amount0 The amount of token0 to acheive resulting liquidity
amount1 uint256 amount1 The amount of token1 to acheive resulting liquidity
mint(params: tuple) payable

Creates a new position wrapped in a NFT

开发者: Call this when the pool does exist and is initialized. Note that if the pool is created but not initialized a method does not exist, i.e. the pool is assumed to be initialized.

参数

名称 类型 描述
params tuple The params necessary to mint a position, encoded as `MintParams` in calldata

返回值

名称 类型 描述
tokenId uint256 tokenId The ID of the token that represents the minted position
liquidity uint128 liquidity The amount of liquidity for this position
amount0 uint256 amount0 The amount of token0
amount1 uint256 amount1 The amount of token1
multicall(data: bytes[]) payable

Call multiple functions in the current contract and return the data from all of them if they all succeed

开发者: The `msg.value` should not be trusted for any method callable from multicall.

参数

名称 类型 描述
data bytes[] The encoded function data for each of the calls to make to this contract

返回值

名称 类型 描述
results bytes[] results The results from each of the calls passed in via data
permit(spender: address, tokenId: uint256, deadline: uint256, v: uint8, r: bytes32, s: bytes32) payable

Approve of a specific token ID for spending by spender via signature

参数

名称 类型 描述
spender address The account that is being approved
tokenId uint256 The ID of the token that is being approved for spending
deadline uint256 The deadline timestamp by which the call must be mined for the approve to work
v uint8 Must produce valid secp256k1 signature from the holder along with `r` and `s`
r bytes32 Must produce valid secp256k1 signature from the holder along with `v` and `s`
s bytes32 Must produce valid secp256k1 signature from the holder along with `r` and `v`
refundETH() payable

Refunds any ETH balance held by this contract to the `msg.sender`

开发者: Useful for bundling with mint or increase liquidity that uses ether, or exact output swaps that use ether for the input amount
safeTransferFrom(from: address, to: address, tokenId: uint256) nonpayable

Safely transfers the NFT tokenId from from to to, invoking onERC721Received on the recipient if it is a contract.✨ AI

开发者: Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.

参数

名称 类型 描述
from address Current owner address initiating the transfer.✨ AI
to address Recipient address to receive the NFT.✨ AI
tokenId uint256 Identifier of the NFT to transfer.✨ AI
safeTransferFrom(from: address, to: address, tokenId: uint256, _data: bytes) nonpayable

Safely transfers the NFT tokenId from from to to, invoking onERC721Received on the recipient if it is a contract.✨ AI

开发者: Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.

参数

名称 类型 描述
from address Current owner address initiating the transfer.✨ AI
to address Recipient address to receive the NFT.✨ AI
tokenId uint256 Identifier of the NFT to transfer.✨ AI
_data bytes Additional data forwarded to onERC721Received if recipient is a contract.✨ AI
selfPermit(token: address, value: uint256, deadline: uint256, v: uint8, r: bytes32, s: bytes32) payable

Permits this contract to spend a given token from `msg.sender`

开发者: The `owner` is always msg.sender and the `spender` is always address(this).

参数

名称 类型 描述
token address The address of the token spent
value uint256 The amount that can be spent of token
deadline uint256 A timestamp, the current blocktime must be less than or equal to this timestamp
v uint8 Must produce valid secp256k1 signature from the holder along with `r` and `s`
r bytes32 Must produce valid secp256k1 signature from the holder along with `v` and `s`
s bytes32 Must produce valid secp256k1 signature from the holder along with `r` and `v`
selfPermitAllowed(token: address, nonce: uint256, expiry: uint256, v: uint8, r: bytes32, s: bytes32) payable

Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter

开发者: The `owner` is always msg.sender and the `spender` is always address(this)

参数

名称 类型 描述
token address The address of the token spent
nonce uint256 The current nonce of the owner
expiry uint256 The timestamp at which the permit is no longer valid
v uint8 Must produce valid secp256k1 signature from the holder along with `r` and `s`
r bytes32 Must produce valid secp256k1 signature from the holder along with `v` and `s`
s bytes32 Must produce valid secp256k1 signature from the holder along with `r` and `v`
selfPermitAllowedIfNecessary(token: address, nonce: uint256, expiry: uint256, v: uint8, r: bytes32, s: bytes32) payable

Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter

开发者: The `owner` is always msg.sender and the `spender` is always address(this) Can be used instead of #selfPermitAllowed to prevent calls from failing due to a frontrun of a call to #selfPermitAllowed.

参数

名称 类型 描述
token address The address of the token spent
nonce uint256 The current nonce of the owner
expiry uint256 The timestamp at which the permit is no longer valid
v uint8 Must produce valid secp256k1 signature from the holder along with `r` and `s`
r bytes32 Must produce valid secp256k1 signature from the holder along with `v` and `s`
s bytes32 Must produce valid secp256k1 signature from the holder along with `r` and `v`
selfPermitIfNecessary(token: address, value: uint256, deadline: uint256, v: uint8, r: bytes32, s: bytes32) payable

Permits this contract to spend a given token from `msg.sender`

开发者: The `owner` is always msg.sender and the `spender` is always address(this). Can be used instead of #selfPermit to prevent calls from failing due to a frontrun of a call to #selfPermit

参数

名称 类型 描述
token address The address of the token spent
value uint256 The amount that can be spent of token
deadline uint256 A timestamp, the current blocktime must be less than or equal to this timestamp
v uint8 Must produce valid secp256k1 signature from the holder along with `r` and `s`
r bytes32 Must produce valid secp256k1 signature from the holder along with `v` and `s`
s bytes32 Must produce valid secp256k1 signature from the holder along with `r` and `v`
setApprovalForAll(operator: address, approved: bool) nonpayable

Allow or revoke an operator to manage all NFTs owned by the caller.✨ AI

开发者: Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event.

参数

名称 类型 描述
operator address Address to grant or revoke permission to manage all caller-owned NFTs.✨ AI
approved bool True to grant operator approval, false to revoke it.✨ AI
sweepToken(token: address, amountMinimum: uint256, recipient: address) payable

Transfers the full amount of a token held by this contract to recipient

开发者: The amountMinimum parameter prevents malicious contracts from stealing the token from users

参数

名称 类型 描述
token address The contract address of the token which will be transferred to `recipient`
amountMinimum uint256 The minimum amount of token required for a transfer
recipient address The destination address of the token
transferFrom(from: address, to: address, tokenId: uint256) nonpayable

Transfer a position NFT from one address to another.✨ AI

开发者: Transfers `tokenId` token from `from` to `to`. WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.

参数

名称 类型 描述
from address Current owner or approved operator address of the token.✨ AI
to address Recipient address that will receive ownership of the token.✨ AI
tokenId uint256 Identifier of the NonfungiblePositionManager NFT to transfer.✨ AI
uniswapV3MintCallback(amount0Owed: uint256, amount1Owed: uint256, data: bytes) nonpayable

Called to `msg.sender` after minting liquidity to a position from IUniswapV3Pool#mint.

开发者: In the implementation you must pay the pool tokens owed for the minted liquidity. The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory.

参数

名称 类型 描述
amount0Owed uint256 The amount of token0 due to the pool for the minted liquidity
amount1Owed uint256 The amount of token1 due to the pool for the minted liquidity
data bytes Any data passed through by the caller via the IUniswapV3PoolActions#mint call
unwrapWETH9(amountMinimum: uint256, recipient: address) payable

Unwraps the contract's WETH9 balance and sends it to recipient as ETH.

开发者: The amountMinimum parameter prevents malicious contracts from stealing WETH9 from users.

参数

名称 类型 描述
amountMinimum uint256 The minimum amount of WETH9 to unwrap
recipient address The address receiving ETH

事件

Approval(owner: address, approved: address, tokenId: uint256)
名称 类型 已索引 描述
owner address
approved address
tokenId uint256
ApprovalForAll(owner: address, operator: address, approved: bool)
名称 类型 已索引 描述
owner address
operator address
approved bool
Collect(tokenId: uint256, recipient: address, amount0: uint256, amount1: uint256)

Emitted when tokens are collected for a position NFT

名称 类型 已索引 描述
tokenId uint256 The ID of the token for which underlying tokens were collected
recipient address The address of the account that received the collected tokens
amount0 uint256 The amount of token0 owed to the position that was collected
amount1 uint256 The amount of token1 owed to the position that was collected
DecreaseLiquidity(tokenId: uint256, liquidity: uint128, amount0: uint256, amount1: uint256)

Emitted when liquidity is decreased for a position NFT

名称 类型 已索引 描述
tokenId uint256 The ID of the token for which liquidity was decreased
liquidity uint128 The amount by which liquidity for the NFT position was decreased
amount0 uint256 The amount of token0 that was accounted for the decrease in liquidity
amount1 uint256 The amount of token1 that was accounted for the decrease in liquidity
IncreaseLiquidity(tokenId: uint256, liquidity: uint128, amount0: uint256, amount1: uint256)

Emitted when liquidity is increased for a position NFT

名称 类型 已索引 描述
tokenId uint256 The ID of the token for which liquidity was increased
liquidity uint128 The amount by which liquidity for the NFT position was increased
amount0 uint256 The amount of token0 that was paid for the increase in liquidity
amount1 uint256 The amount of token1 that was paid for the increase in liquidity
Transfer(from: address, to: address, tokenId: uint256)
名称 类型 已索引 描述
from address
to address
tokenId uint256