Add atto namespace and CAIP-2 specification#178
Add atto namespace and CAIP-2 specification#178rotilho wants to merge 4 commits intoChainAgnostic:mainfrom
atto namespace and CAIP-2 specification#178Conversation
atto/README.md
Outdated
| ## Governance | ||
|
|
||
| This namespace tracks the Atto protocol and its network identifiers as defined by the Atto ecosystem maintainers. | ||
| Future CAIP profiles for Atto should follow this namespace to document account IDs, asset IDs, and other ecosystem-specific conventions. |
There was a problem hiding this comment.
Actually, this^ part is implicit-- if your namespace PR gets accepted, any future PRs extending or updating it are assumed to recognize your "first write wins" for conflict resolution 😅 . Usually, this section is for adding links to help the editors confirm if the ecosystem itself passed an improvement proposal, hard fork, etc when a later contributor wants to update it!
For instance, I saw this section, which is probably worth linking to from this section, but maybe also link to whatever github or other public forum concrete protocol updates are discussed in? That way, if a future contributor wants to update your PR, we can check to validate any claims about community governance decisions that happened in the interim.
There was a problem hiding this comment.
Right! :D
Rewrote this section and linked more resources in the References section
atto/caip2.md
Outdated
| - `live` — Atto mainnet | ||
| - `beta` — Atto public beta / test network | ||
| - `dev` — Atto development network | ||
| - `local` — local or private development network |
There was a problem hiding this comment.
Does this work like localhost? I.e., dev is an actual network that I can write to and someone else will be able to reference, but local is assumed to be ephemeral and not published anywhere? it might be worth making this a little more explicit, as very few CAIP-2 profiles include this kind of "reserve word" with distinct semantics!
There was a problem hiding this comment.
Yep, exactly. local is meant to be ephemeral and local-only. We use it for local development, integration tests, and benchmarks; a fresh genesis is created on startup. dev, on the other hand, refers to an actual shared network that others can use.
Let me reword it to make that more explicit.
|
|
||
| Implementations MUST treat the namespace component as exactly `atto`. | ||
| Implementations SHOULD treat the reference component as lowercase. | ||
| Unknown future references within the `atto` namespace SHOULD be rejected unless explicitly supported by the implementation. |
There was a problem hiding this comment.
Does this mean the same private key will be able to sign for the same address on different chainIds, i.e., that it has an EVM-style replay vulnerability if a transaction is valid on multiple chains?
If so, you might want a MUST not a SHOULD here (and a warning about replays and using a given key on multiple networks!) 😅
There was a problem hiding this comment.
Yes, the same private key can be used to control the same address across different chain. However, transactions include the network ID in the signed payload so a transaction signed for one chain is not valid on another and cannot be replayed across chains.
bumblefudge
left a comment
There was a problem hiding this comment.
Left two comments where optional clarifications might help, but otherwise good to go!
This PR proposes a new
attonamespace for the Atto ecosystem and adds an initial CAIP-2 profile for Atto chain identifiers.Why this should be its own namespace: