Closed JacobADevore closed 1 year ago
This is a really nice AIP writeup! I have one question about how soul bound tokens are supposed to work: When do they become soul bound? Is it when the tokens are minted?
This is a really nice AIP writeup! I have one question about how soul bound tokens are supposed to work: When do they become soul bound? Is it when the tokens are minted?
Thank you Kevin, I am currently working with @areshand on the exact implementation.
0x3::token
is really gas heavy enough, why we should keep change that? I recommend an another approach: clone0x3::token
standard to be0x3::soulbound_token
, so you don't need do a verify for withdraw/deposit. https://github.com/aptos-foundation/AIPs/pull/16#issuecomment-1375266782
0x3::token
is really gas heavy enough, why we should keep change that? I recommend an another approach: clone0x3::token
standard to be0x3::soulbound_token
, so you don't need do a verify for withdraw/deposit. #16 (comment)
by doing separate module, you dont need to verify is it soulbound token or normal token, further to reduce the gas fee down. then we could simply to remove transfer function on soulbound token.
@JacobADevore I suggest renaming "Soulbound" to either "SignerBound" or "KeyBound" for the following reasons:
Understandably such a renaming may be met with some resistance given that the term "soulbound" has already achieved some amount of prominence, but it is still early enough to alter the trajectory of this norm into a more inclusive and contextually-meaningful term. To this end, I'd especially like to hear your thoughts on reason 1. Also, is it correct that the discussion in reason 4 raises a potentially-insuperable technical challenge?
Take a look at proposed AIP-11 and 20. This moves to an object model that allows for seamless soul bound and other functionality without core modifications to the framework. Curious if it is advantageous to continue down this path or to focus on putting our energy behind those. https://github.com/aptos-foundation/AIPs/pull/92/files
Closing out as this is addressed by TokenV2 / Token Objects / Digital Assets.
[AIP-5] Soulbound and Freezing Token Standard
This standard allows for the existence of soulbound NFTs and freezing tokens.
Motivation
Soulbound tokens have enormous potential in a wide variety of applications. However, with no standard, soulbound tokens are incompatible with the Aptos-Token standard. Consensus on a common standard is required to allow for broader ecosystem adoption, as well as to make it easier for application developers to build expressive applications on top of the standard.
This AIP (Aptos Improvement Proposal) envisions soulbound tokens as non-transferable NFTs that will unlock primitives such as robust proof of attendance, credentials, distributed governance rights, and much more. However, soulbound tokens must be distinguishable from Aptos-Tokens to provide this utility.
Benefits:
Requirements
Approach
Extend property map to have framework reserved keys
Reserve all keys with “##” for framework usage.
When adding keys to property_map, we need to check if the key starts with “##” and disallow adding or creating property_map with these keys.
We add a token package friend function for adding framework-reserved control flags
Note: after this change, the
property_map
will become a dedicated data structure for the token package.Annotate the token as soul bound
Extension
We can extend the approach to support general frozen tokens to token stores. For example, the token owner or creator wants to freeze the token to their token store after an expiration time. We can use
##freezing_type = 2
for the time-based freezing. we can introduce another system-reserved control flag to specify the timestamp##freezing_expiration_time
.Other Alternatives
Suggested Implementation Timeline
To be determined.
References
https://github.com/aptos-labs/aptos-core/tree/main/aptos-move/framework/aptos-token
https://github.com/aptos-foundation/AIPs
https://eips.ethereum.org/EIPS/eip-5633
https://eips.ethereum.org/EIPS/eip-5192
https://eips.ethereum.org/EIPS/eip-1155
https://eips.ethereum.org/EIPS/eip-721
https://eips.ethereum.org/EIPS/eip-165
--
Special thanks to Bo Wu.