How it Works
CIP-68
We are exploring concepts intiailly laid out in Cardano Improvement Proposal 68
About Inline Datum
Inline datum is stored in UTxOs on the Cardano blockchain. It can be queried via GraphQL and displayed in applications. Inline datum is more than just "mutable metadata", it can also be validated against with Plutus.
About Reference Validators
Inline datum can be added to a UTxO at any Cardano address. This includes regular wallet addresses, multi-sig addresses, Plutus validator addresses, and even unspendable addresses. The implications are different for each, and present options from which developers can choose.
Outlining Process for Mesh Integration
- Minting the token pair
- mintBoth
- add ref token to existing contrib -- must be same policy id
- add contrib token to existing ref -- must be same policy id
- Naming Conventions:
// grab demo code here
const contribToken = wallet.getPolicyIdAssets(contribTokenPolicyId)
const _contribHex = contribToken.unit.substring(62);
const refToken = contribToken.unit.substring(0, 56) + "313030" + _contribHex;
// Asset.unit: <policyId><REF | CONTRIB><tokenName>
// For ref instance - maybe we can configure REF and CONTRIB values?
our goal is to make it easy to find Reference Token given a Contrib Token. There are some options for parameters
Variables
- useContribToken hook: when Contributor Token is connected, a hook could be configured to automatically grab the associated datum. What does it expect about where to look for this datum?
- referenceTokenAddress
- naming convention details
- ...?
- useContribToken hook: when Contributor Token is connected, a hook could be configured to automatically grab the associated datum. What does it expect about where to look for this datum?
Rules for Changing: What are the rules for changing the datum with the ref token?
Outside of Mesh
1. Immutable? Has value: accessible to validator
2. Arbitrary Address: signing keys can be used to change the datum
3. Contract: customized validation ruleSchema for datum
- CIP-68 compliance -- boilerplate in Mesh
- Options for experimentation
What doesn't work yet
Potential Changes
What is the best way to associate a contributor-token from a reference-token?
- Testing Code
- Writing our proposals