xUDT (RGB++) assets on CKB are similar with ERC20 assets on Ethereum, they lack protocol-level uniqueness constraints for token names. Considering the convention of the Bitcoin ecosystem, we need to introduce some standard regarding uniqueness and length.
Scope
The following conventions cover inscription info cell & unique cell, combining the two for processing. For example, they only allow one asset to use the same name among them.
These conventions only consider the Symbol and do not consider the Name field.
Only the first occurrence of a duplicate asset name on the chain is acknowledged; subsequent occurrences are marked as “duplicate”.
Case sensitivity is ignored during duplicate comparison, meaning “Seal” is considered the same as “SEAL”.
Any addition of invisible characters (including spaces) to the name, regardless of whether there are similar assets, is treated as a “duplicate”.
For wallets and exchanges, duplicate assets are directly hidden.
For browsers, “duplicate assets” are labeled as “Risk Asset - RGB++ incompatible”, while non-duplicate assets are labeled as “RGB++ Compatible”. In places where the aforementioned text is too long to display, symbols such as [!] and [+] are used for marking.
Letters
For exchanges, only the ASCII visible character subset is supported.
For wallets and browsers, the supported character range includes:
ASCII visible characters subset
A subset of emojis: to be determined
For assets that use unsupported characters, the asset name is uniformly displayed as “INVALID”.
Length range
Only assets with Symbol length of 4-5 characters are processed normally.
Assets falling outside this range are treated as “duplicate assets”.
Verification
There exists a whitelist that can override the above rules.
This whitelist is hosted on Cell Studio’s GitHub repository. Project owners submit their token information, which is reviewed and released after verification. Assets listed on the whitelist are prioritized and displayed regardless of the above rules. Other assets with the same name are automatically marked as “duplicate assets”.
As of now, there is no whitelist available.
Assets mark
Ecosystem apps should add label / mark for every asset to provide some critical information:
Issuance mark: L1 issue / L2 issue to identify where the coins are issued, on Bitcoin with rpgpp_lock or CKB with normal lock
Supply mark: Limited supply / Unlimited supply to identify whether a coin could be issued arbitrarily.
Perfection is an elusive concept, and there is no such thing as a perfect entity in this world. In fact, when you describe something as perfect, it may already have lost its perfection. Of course, there is also no such thing as a perfect design, and we always need to make trade-offs and compromises in the design process. Regarding the idea of differentiating between uppercase and lowercase letters, I believe it is a flawed approach. Imagine this: Turkey, tUrkey, tuRkey, turKey,… TURKEY. All possible combinations of uppercase and lowercase letters can be used, and if all these tokens appear in the trading market at the same time, it will undoubtedly complicate matters. Don’t you think so?
The community has developed the open-source project xudtlogos, which not only supports displaying logos but also allows users to upload xUDT information for Dapps to use. Currently, Dapps like Omiga and UTXOSwap are utilizing this project.
Hey @yixiu.ckbfans.bit, thank you for letting me know!! Have you tried reaching out to the Nervos Explorer folks?
At the moment feels like iCKB xUDT will have to support both meta standards, which is ok. On one side the one that you are proposing is the most straightforward and pretty similar to the original Uniswap token lists idea, when multiple lists created by different entities can coexist. On the other side I just finished coding the typescript utility for adopting the standard proposed in this RFC.