getTokenData returns the same data but is a deprecated alias of getNFT on the RPC side.
Option B: from mint result or carbon instance ID
If you already have the Carbon instance ID (from minting), build the address locally:
If you just minted the NFT, you can parse the result and use the returned Bytes32 address directly:
Step 2: Infuse NFTs (Carbon transfer)
For NFT infusion you must transfer the infused NFT instance(s) to the target NFT address. Carbon transfer uses carbon token IDs and carbon instance IDs (not the Phantasma NFT ID).
If you want to infuse multiple instances of the same token ID, use TxMsgTransferNonFungibleMulti. If you need multiple token IDs in a single transaction, use TxMsgCallMulti with TokenContract_Methods.TransferNonFungible (see token-deployment-frontend/src/lib/phantasma/infuse.ts).
Step 3: Infuse fungible tokens (Carbon transfer)
Fungible infusion is also a transfer to the target NFT address, but it uses TxMsgTransferFungible. amount is an integer in token base units.
Step 4: Verify infusion
getNFT returns an infusion list computed from balances at the target NFT address. For fungibles, key is the token ID and value is the amount. For NFTs, key is the token symbol and value is the infused NFT meta ID.
VM interop: Runtime.InfuseToken
If you need to infuse via the VM interop, use Runtime.InfuseToken with Phantasma IDs. nftId is the target NFT Phantasma ID and value is the infused NFT Phantasma ID.
Limitations (current behavior):
Currently, when the target token is an NFT, Runtime.InfuseToken only supports NFT infusion.
It does not currently support fungible infusion into an NFT. Use the Carbon transfer flow above for fungible infusion.
Runtime.TransferToken refuses to send NFTs to NFT addresses; NFT infusion must use Runtime.InfuseToken.