Recently, the topic of standardization came up again in different, application-related, contexts.
@vveiln pointed out that this doesn’t belong in the RM specs and that it might deserve a separate section in the specs.anoma.net page (or wherever else it makes sense).
This thread aims to collect and list these standardization topics to eventually create such a section/page.
Data Fields Relevant for Standardization
Standards might emerge everywhere where arbitrary, application-related data can be stored. This includes
- Resource Data
label
value
- Action data
application data
inAction
being also part of the logic proof public inputsapplication inputs
being part of the logic proof private inputs
A standard can require specific data to be in one or multiple of the above-mentioned storage locations. For example, an ownership-related standard might require the ExternalIdentity
of the owner of resource r
to be stored in the Resource.value
field and a corresponding signature of the owner in the transaction.action.appData[tag]
related to r
.
As mentioned in the related forum post (see Standardization of Resource data (Label
and Value
) and to allow multiple standardized and non-standardized data next to each other, label
and value
should, IMO, be required to be maps in the specs @vveiln @cwgoes.
Examples for Resource Data Standards
Standards of Resource.label
data could be related to:
- Symbol / name / description (e.g., to be displayed in a UI)
- Supply type (e.g., fixed/unbound/capped supply)
- Origin/ originator identity of the resource (e.g., issuer in case of a token)
- Intent formats
- Compliance with other standards (that can be in- or external to Anoma, i.e., from other ecosystems such as Cosmos, Ethereum, Solana, etc.)
Standards of Resource.value
data could be related to:
- Owner / ownership-related information
- Time dependence (e.g., expiry date in a coupon or intent resource)
Examples for Action Data Standards
Standards related to action.applicationData
(and LogicInstance.applicationData[tag]
) could be related to:
- Authorization (e.g., ownership-related signatures)
- Foreign function interface (FFI) calls (see the EVM protocol adapter post and @vveiln’s response within)
Standards related to LogicWitness.applicationInputs
could be related to:
- authorization
- nullification?