Build an NFT post-condition
Create post-conditions for NFT transfers to ensure specific tokens are or aren't transferred
import { Pc, Cl } from '@stacks/transactions';// Ensure a specific NFT will be sentconst sendPC = Pc.principal("ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM").willSendAsset().nft('ST1HTBVD3JG9C05J7HBJTHGR0GGW7KXW28M5JS8QE.cool-nfts::nft-token', Cl.uint(42));// Ensure a specific NFT will NOT be sentconst keepPC = Pc.principal("ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM").willNotSendAsset().nft('ST1HTBVD3JG9C05J7HBJTHGR0GGW7KXW28M5JS8QE.cool-nfts::nft-token', Cl.uint(1));
Use cases
- Protecting valuable NFTs from accidental transfers
- Ensuring specific NFTs are transferred in marketplace transactions
- Safeguarding NFT collections during contract interactions
Key concepts
NFT post-conditions use the .nft()
method which requires:
- Asset identifier: Contract address + asset name with
::
separator - Token ID: The specific NFT ID as a Clarity value (using
Cl.uint()
)