This standard aims to enhance user experiences and trust by standardizing a mechanism for defining, validating, and sharing curated lists of Stellar assets, while ensuring ease of integration for wallets and applications across the Stellar network.
Dependencies MotivationWhile some Stellar-based platforms offer curated asset lists, there is a need for a universal approach for creating and sharing comprehensive, community-driven asset lists. This proposal presents a methodology to facilitate the creation, endorsement, and consumption of such curated lists, augmenting consumer trust while simplifying asset integrations across ecosystem applications and services. This generalized approach not only increases interface decentralization, eliminating the requirement of vendor-locked asset lists, but also provide means for feedback and collaboration with the entire Stellar community.
SpecificationSAL is a specification for lists of asset metadata that can be used by any Stellar applications and services which rely on externally curated asset catalogs published by trusted providers. Any organization can create, maintain, and publish an asset list following the guidelines outlined in this standard. Inclusion of any particular asset in a list should not be considered as endorsement or recommendation of any kind.
List FormatAssets metadata is published in a JSON format with the following structure:
In order to be considered valid, an asset list must validate against this JSON schema.
List PublicationA list providers can advertise the existence of curated asset lists through their SEP-1 stellar.toml file. TOKEN_LISTS section represented as an array, containing URLs of published lists.
Here:
The version field should be updated every time the list changes, following a short semantic versioning format:
Fields name and provider should be immutable to facilitate the matching logic for consumer applications.
HostingAsset lists should be published over HTTPS protocol in JSON format following the structure described above. In case of HTTPS, the list can be a static file or a dynamically generated server response with CORS HTTP header, with application/json content type, and served from the domain (or a subdomain) which hosts the stellar.toml file itself.
CORS response header example:
The size of any individual list should not exceed 200KB. If providers want to advertise more assets, they can maintain several separate asset lists for this purpose.
Consumer UXUser-focused consumer applications should provide an option of selecting one or more asset lists in the interface, preferably using checkboxes, multiselect, or another similar UX controls. To provide relevant context for a user, an application must display information from at least name and provider fields in such a checklist, with an option to show more details about selected assets.
ComposabilityWhen several asset lists selected in a consumer application, the interface should display assets from all of them. Potentially, this may result in collisions if similar assets are present in different lists (e.g. with the same name). To resolve possible contradictions, the contract field or the combination of code+issuer fields should be treated as a unique ID of an asset. Consumer applications must utilize this approach to avoid displaying duplicate assets in the assets list. It's up to the developers how to resolve collision of other properties for assets found in multiple asset lists.
Design RationaleGiven the extensive nature of asset lists and limitations of TOML format, JSON was utilized for its capacity and ubiquity, ensuring detailed asset specifications without breaching size constraints. To decouple list references from data, asset lists are advertised in the stellar.toml file to facilitate accessible integration and compatibility with existing Stellar standards. This decoupling also provides additional flexibility for the provider: asset lists can be either stored as static JSON files or dynamically generated on the server.
Due to unique asset structures and the Soroban/Classic duality, the SAL is tailored to Stellar technical aspects, diverging from standards existing for other blockchain, like Ethereum’s TokenLists.
This standard aims to find the balance between providing relevant asset information and minimizing transferred data size, which is especially important in case of mobile browsers. The decision to allow publication of more than one SAL in stellar.toml aims to provide means for lists segmentation by categories, as well as dealing with size limitations.
Additional asset information can be fetched from the stellar.toml file hosted on the domain specified in the asset description. The comment field facilitates the transparent sharing of supplementary information regarding assets communicated by the list provider, enhancing user awareness and engagement.
The decision to allow hosting icons on both HTTPS and IPFS protocols contributes to higher hosting versatility and fault tolerance for asset logos.
List versioning allows downstream applications to refresh asset information obtained from the list only when it changes.
Users can submit their feedback, report bad actors or request addition of new assets by contacting the provider via the communication channel specified in the feedback field.
General interface recommendations laid out in "Composability" and "Consumer UX" sections intended to at least partially unify user experience of asset lists across ecosystem wallets following best practices gathered from prior experience.
Security ConcernsAllowing users to unrestrictedly connect arbitrary asset lists in the application interface is potentially dangerous because bad actors can carry on attacks to spoof legitimate assets by mimicking asset name and logo. Therefore, application developer should either depend only on several trustworthy providers or utilize the community-maintained repository of curated asset lists.
Displaying the assets.comment contents in the interface might confuse end-users and, depending on the context, can be regarded as endorsements. So it's up to the application developers whether to show these comments to end users.
--
You received this message because you are subscribed to the Google Groups "Stellar Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to stellar-dev...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/stellar-dev/1cf99f63-e8d9-44da-ad81-9f2632587366n%40googlegroups.com.