This PR is work in progress and an RFR (Request for Review)
This contract and package comes from the ERC and EIP 5144 specifications for a Soul Bound Token for a non-fungible token that is attached to a Soul (an NFT), rather than an address.
I believe this specification should be introduced formally to Cosmwasm as it is a necessity for introducing DeSoc (decentralized society) projects into the Cosmos ecosystem.
This is just the base contract and other developers could build on top of this in order to add other functionalities, such as a recovery function that allows a third party to recover an SBT from a certain NFT (as discussed in the main Vitalik white paper).
Changes:
Removed all instances of transfer, approvals, revokes and operators, and burn, which includes queries, executes, and any related function.
Created a Soul struct which is the NFT that the SBT is bounded to rather than an address. Owner is now a Soul rather than an Addr.
Tests are changed to accomodate to the above changes and they all pass.
In order to be able to query through a Multi-index, a Soul has an implementation to get a key string in that form: {nft_address}_{token_id}
Tried to fix linting/warnings as much as possible.
This PR is work in progress and an RFR (Request for Review)
This contract and package comes from the ERC and EIP 5144 specifications for a Soul Bound Token for a non-fungible token that is attached to a Soul (an NFT), rather than an address. I believe this specification should be introduced formally to Cosmwasm as it is a necessity for introducing DeSoc (decentralized society) projects into the Cosmos ecosystem.
This is just the base contract and other developers could build on top of this in order to add other functionalities, such as a
recovery
function that allows a third party to recover an SBT from a certain NFT (as discussed in the main Vitalik white paper).Changes:
Soul
struct which is the NFT that the SBT is bounded to rather than an address. Owner is now aSoul
rather than anAddr
.{nft_address}_{token_id}