Skip to content

Add atto namespace and CAIP-2 specification#178

Open
rotilho wants to merge 4 commits intoChainAgnostic:mainfrom
rotilho:main
Open

Add atto namespace and CAIP-2 specification#178
rotilho wants to merge 4 commits intoChainAgnostic:mainfrom
rotilho:main

Conversation

@rotilho
Copy link
Copy Markdown

@rotilho rotilho commented Mar 18, 2026

This PR proposes a new atto namespace for the Atto ecosystem and adds an initial CAIP-2 profile for Atto chain identifiers.

Why this should be its own namespace:

  • Atto is a native layer-1 payment network, not an environment of an existing namespace.
  • It has a distinct account-chain model, native address format, native transaction format, and native proof-of-work validation rules.
  • Tools interacting with Atto need Atto-specific validation logic.

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.
Copy link
Copy Markdown
Collaborator

@bumblefudge bumblefudge Apr 1, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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!

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
Copy link
Copy Markdown
Collaborator

@bumblefudge bumblefudge Apr 1, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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!) 😅

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Source: https://atto.cash/docs/integration/advanced/protocol-offline-signing-reference#overview-of-atto-blocks

Copy link
Copy Markdown
Collaborator

@bumblefudge bumblefudge left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left two comments where optional clarifications might help, but otherwise good to go!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants