NFT Encapsulation on the Bitshares blockchain
Why would anyone bother encapsulating an NFT on the Bitshares blockchain?
In the previous blog post regarding the gamification of NFTs, the concept of randomizing the contents or view of an NFT based on fill order data was introduced; if you were to roll a desirable outcome you may want to sell it to someone else on the BTS DEX without changing the fill order based view/stats.
Encapsulation of an NFT on the BTS DEX is the workaround for this issue, it lets you sell the NFT in its frozen desired state for someone else to remove from the capsule and consume in the metaverse.
This is similar to placing a rare trading card in a protective sleeve so as to maintain the state and valuation of the card.
How to encapsulate your NFT
Before performing these steps on the production Bitshares network, you should try out the steps in the testnet environment so as to avoid mistakes and save yourself unnecessary fees.
First purchase a life-time membership on the Bitshares DEX so as to reduce the financial burden of the encapsulation process.
Within the Bitshares wallet, open the navigation menu, click
assets to navigate to the Bitshares asset issuance page where you'll be issuing your own asset for trade on the BTS DEX.
So smash that
create asset button and let's get started!
If you plan to perform this for multiple NFT, pick an primary asset name which will work well with sub-asset names (e.g. this gallery created
NFTEA so it could issue
NFTEA.BALANCE at a reduced rate).
Suggested NFT capsule settings: (non-exhaustive)
SYMBOL: example_asset.example_subasset Maximum supply: 1 Number of decimal points: 0 SmartCoin: True (We're creating a smartcoin) --- Description: Contains asset 'x.y', has roll: xyz, has view: abc... (describe the contents) --- Feed lifetime in minutes: 999999999 minimum number of feeds: 1 delay: 0 percent offset: 0 max force settle volume: 100 Short backing asset: Encapsulated NFT (the asset name of the NFT you wish to encapsulate)
Suggested permissions to set:
Enable market fee: false Require holders to be white-listed: false Asset owner may transfer asset back to himself: false Asset owner must approve all transfers: false Disable force settling: false Allow asset owner to force a global settling: false Disable confidential transactions: false Allow witnesses to provide feeds: false Allow committee members to provide feeds: false
NOTE: Buyers beware! If the flag
Asset owner may transfer asset back to himself is set to true, the asset could be rug pulled from the purchaser, so I'd suggest avoiding any encapsulated NFTs which have this set to true.
Once this is created, configure one of your own Bitshares accounts as a price feed publisher, then manually publish a price of 1 NFT per capsule asset by navigating to the asset's page then to
asset actions and finally
publish feed and completing the feed publishing form; this enables the smartcoin to be borrowed with a single whole NFT.
Once this price feed is live, navigate back to the asset:nft market, scroll down to the sell asset section and click the
borrow button; enter a debt of 1 capsule, with collateral of 1 NFT, with a ratio of 1 then click
Your NFT has now been encapsulated and can be actively traded on the BTS DEX without introducing new
fill order data to the contained NFT, maintaining its state for the purchaser.
Can you avoid having your NFT encapsulated?
At the moment it's not possible to prevent the encapsulation of an NFT, there are limitations to how deep it can be encapsulated however if you're interested in preventing your NFTS being encapsulated you should check out the proposed BSIP-0045.
BSIP-0045 proposes to introduce an optional flag to prevent an asset being used as a smartcoin's collateral, this would prevent NFTs being encapsulated.