Understanding Soulbound NFTs
A Soulbound NFT is a type of non-fungible token that is permanently tied to a specific wallet and cannot be transferred or sold to another user. This concept is inspired by "soulbound" items in video games, which remain bound to the original owner and cannot be traded.
If you're encountering issues while attempting to transfer your NFT, it's possible that the NFT is soulbound.
How to Determine if an NFT is Soulbound
💡 This process requires a basic understanding of Solidity, programming logic, or the ability to leverage AI tools for analysis.
Step 1: Locate the Contract Address
Each NFT is governed by a smart contract on the blockchain. You will need to find the contract address of the NFT collection.
Example
BADMAD ROBOTS BOX [zkEVM]:0x8941CDad6Fdb8198DC5cccC09b95AeF2E596f4f6
Step 2: Review the Smart Contract on Explorer
Step 3: Analyze Transfer-Related Functions
Look for functions in the smart contract that control token transfers. You can use AI tools or manually search for functions that may restrict transfers.
Example Code Snippet
function _beforeTokenTransfer(address from, address to, uint256 tokenId, uint256 quantity) internal override {
require(
secondary_sales_status || from == address(0) || hasRole(TOKEN_DISTRIBUTOR, from),
"Secondary sales closed"
);
super._beforeTokenTransfer(from, to, tokenId, quantity);
}
Step 4: Evaluate Transfer Conditions
In the above example, the following conditions determine whether a transfer is allowed:
-
secondary_sales_status
must betrue
-
The sender (
from
) must be the0
address (minting scenario) -
The sender must have the
TOKEN_DISTRIBUTOR
role
If none of these conditions are met, all user transfers are disabled, making the NFT soulbound.
Step 5: Confirm Using Read Functions
You can check the contract’s read functions to verify the values of parameters like secondary_sales_status
. If this value is false
, user transfers are likely disabled.
Known Partner Collections with Soulbound NFTs on zkEVM
Here are some known collections with soulbound restrictions:
-
BADMAD ROBOTS BOX:
0x8941CDad6Fdb8198DC5cccC09b95AeF2E596f4f6
-
IR2SBT1155 (IR2SBT):
0x6C48490daE1083EEd0827943A08B6C0a8380570a
-
Overtake POP:
0xf289B7a941EaD265eA189FC7D452119A8f497Ed7
Conclusion
If you discover that your NFT is soulbound, this is an intentional design choice by the project’s developers. These NFTs are meant to remain in the original wallet indefinitely. If you have further questions, check the project's official documentation or reach out to their support team for clarification.