-
Notifications
You must be signed in to change notification settings - Fork 120
[ARC-62 ] Add ARC-82 URI discoverability #336
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
I want to propose:
I think @SudoWeezy as well had something similar (using box refs for Asset URLs) in mind for asset mutability beyond ARC 19. I can provide a rapid ref implementation if you are interested @cusma. |
|
@emg110 thanks for taking the time to make a proposal. IIUC, this is a new general way of declaring mutable ASA metadata, which requires deploying App and Boxes. Is yet another standard that Explorers and Wallets need to adopt (and it's a bit convoluted IMHO). I'm trying to achieve an ASA:App biding just using ASA (no ancillary external registry, like App boxes). I'd like to be able to just add a "method" optional query parameter on the App ID, following existing URI standards (like ARC-82 does), so something like: |
|
@emg110, following up on ARC-79, it could be a solution, but the ARC specifies a transaction rather than an "entity" on the ledger to point to. IIUC ARC-79 mandates:
So something like:
Does not conform to the specification. @SudoWeezy I think the problem is that ARC-82 specifies how to "query an entity" from the Ledger, while ARC-79 defines how to "interact with an entity" on the Ledger. I'm operating in a middle grey area between the two (since I need to point to the entity, specifying a generic interaction). |
This almost conforms to ARC79
You can replace |
|
@SudoWeezy right! The |
I think they can be omitted if they are not needed when you call the app. |
The args are needed because the are in the method signature (which does not admit "optional" args). The problem is that I can not specify the value of the args at ASA creation time (since it's equal to the ASA ID). We can specify this in the specs (e.g., the value of the |
We can use a template approach like args=<asa_is>. The issue we will face is the max size of the URI is only 96. If we can avoid naming the method and just read the value from the box(or global) it could be solved with something like this: |
|
In my opinion, relying on Boxes, GlobalVar, etc., to publish metadata on-chain is not in scope for this ARC since it starts resembling a dedicated ARC to publish an AppSpec on-chain. Imagine an ASA that relies on a single App ID supporting different ARCs, for example, a Smart ASA (ARC-20) that exposes an ARC-62 getter for its circulating supply. Off-chain metadata (e.g., ARC-3) would look like this: {
//...
"properties": {
//...
"arc-20": {
"application-id": 123
},
"arc-62": {
"application-id": 123
}
}
//...
}Then, clients will use the ARC-20 and ARC-62 AppSpecs. I assume that clients like wallets and explorers already have the AppSpecs on their side. The on-chain case is not different, we just need to formalize this on-chain: "This ASA ID is linked to this App ID, which implements ARC-62" (I don't care about how the client got the AppSpec).
|
|
I’m closing this PR due to a lack of agreement. The scope of the proposal was an additional method to declare the ASA-AppID relationship on chain, to avoid external dependency on IPFS, which is suboptimal since it forces explorers, wallets, and clients in general to rely on external infrastructure (with maintenance, costs, and latency). I DO think we still need a better way to declare simple information like the ASA-AppID relationship without IPFS (ARC-3, ARC-19) and Indexer (ARC-69). This becomes even more crucial considering the work @joe-p proposes in #341. My proposal would still use an ARC-82 URI on the ASA to point to the App unless there are better options. I want to push this discussion forward in the Developer Council before re-opening a PR. |
Following the feedback of the Developer Council, given the finalization of ARC-82, the spec has been updated with a Circulating Supply App discovery method based directly on ASA URL, as:
Deployed example.
This approach improves the responsiveness of the client's discovery process, as it needs just Algod (and not the Indexer or IPFS, which may introduce delay, resulting in bad UX).
I'm still thinking if an "ARC specific" prefix should be added to provide more clarity in the discovery, as-in:Tests, deployment, and examples have been updated to reflect the new spec.