Skip to content
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

Feat: add chain-specific addresses properties #11

Open
wants to merge 19 commits into
base: main
Choose a base branch
from

Conversation

Joxess
Copy link
Collaborator

@Joxess Joxess commented Feb 11, 2025

This is the first PR that serves as a conversation starter to discuss properties for chain-specific addresses.

Address #19 too

@Joxess Joxess changed the title Feat: add chain-specific properties Feat: add chain-specific addresses properties Feb 11, 2025
@Joxess Joxess added task A Project task and removed task A Project task labels Feb 11, 2025
@Joxess Joxess linked an issue Feb 11, 2025 that may be closed by this pull request
4 tasks
PROPERTIES.md Outdated
3. **User Interface**
- Clear chain identification
- Separation of concerns between human readability and machine addresses
- Error prevention
Copy link
Collaborator

Choose a reason for hiding this comment

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

we could separate this into machine errors (eg: a wallet mis-resolving a name and sending funds to the wrong address/chain), which would not fit into this category, and 'user error' (eg: unicode homoglyph attacks, users not manually validating wallet output because it's too long) which would fit into this category

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Added! let me know wdyt


The existing approaches to chain-specific addresses represent an evolution in thinking about cross-chain identification rather than competing solutions. Some standards builds upon lessons learned from previous implementations while other targets other aspects or they could built on top of.

| **Feature** | ERC-3770 | CAIP-10 | ERC-7828 |
Copy link
Collaborator

Choose a reason for hiding this comment

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

should we add a column for ENSIP-11?

| **Human Readability** | Medium | Medium | High |
| **Technical Compatibility** | EVM only (but extensible) | All chains | EVM focus with non-EVM support |
| **Implementation Flexibility** | Limited | High | High |
| **ENS Support** | “No” | “No” | Yes |
Copy link
Collaborator

Choose a reason for hiding this comment

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

should this mean it supports ENS, or it requires ENS? does it make sense to make it two separate rows (coupled to ENS and augmented by ENS)?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I modified that field as "required | optional"

| --- | --- | --- | --- |
| **Format Example** | `chain:address` | `chain_id:chain_reference:address` | `address:chain.eth` or `[email protected]` |
| **Human Readability** | Medium | Medium | High |
| **Technical Compatibility** | EVM only (but extensible) | All chains | EVM focus with non-EVM support |
Copy link
Collaborator

Choose a reason for hiding this comment

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

ERC-7828 as-is does not support non-evm chains, as it does not use CAIP-10 or antyhing similar to represent non-evm chains, and the 'address' field is coupled to evm address' length and valid characters

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

There is an intention to support non-EVM chains. Since the ERC isn't finalized yet, I think it's better to state their intention to do so rather than claim it as a current feature, will do

| **Feature** | ERC-3770 | CAIP-10 | ERC-7828 |
| --- | --- | --- | --- |
| **Format Example** | `chain:address` | `chain_id:chain_reference:address` | `address:chain.eth` or `[email protected]` |
| **Human Readability** | Medium | Medium | High |
Copy link
Collaborator

Choose a reason for hiding this comment

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

ERC-7828 readability can go from 'high' if human-readable names are used in all fields, to lower than both ERC-3770 and CAIP-10 as it is a longer string with more complex syntax and more info

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Improved!

| **Implementation Flexibility** | Limited | High | High |
| **ENS Support** | “No” | “No” | Yes |
| **DID Compatibility** | No | Yes | Optional |
| **Checksum Support** | Yes | No | Yes |
Copy link
Collaborator

Choose a reason for hiding this comment

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

ERC-3770 does not include any checksum-ing other than ERC-55. Specifically, you could mistype anything in the chain name and have the checksum still be valid. I propose we set it to 'incomplete'

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

This is great, added

| **ENS Support** | “No” | “No” | Yes |
| **DID Compatibility** | No | Yes | Optional |
| **Checksum Support** | Yes | No | Yes |
| **Relies on centralized lists** | Yes (referencing github.com/ethereum-lists/chains) | No | Yes (requires ERC-7785 aka onchain registry) |
Copy link
Collaborator

Choose a reason for hiding this comment

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

which part of the ERC-7828 would you consider centralized? the EF-to-rollup.eth subdomain handover?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Improved to be more generic on if/what type of list they would relies on

Copy link
Collaborator

@0xteddybear 0xteddybear left a comment

Choose a reason for hiding this comment

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

looking good 😎

other than the minor corrections, I believe there are only two outstanding discussions:

  • should we define within this document the fact that addresses will have a machine-readable representation and a human-readable one? I find it somewhat constraining, but deciding it at this point also allows us to have more well-defined properties
  • wether we dive deep into w3c DID as part of this PR or we leave it for later.

| **Format Example** | `chain:address` | `chain_namespace:chain_reference:address` | `address:chain.eth` or `[email protected]` |
| **Human Readability (_best-case scenario_)** | Medium | Medium | High |
| **Technical Compatibility** | EVM only (but extensible) | All chains | EVM only (potential non-EVM support) |
| **ENS Integration** | Optional | Optional | Required |
| **DID Compatibility** | No | Yes | Optional |
Copy link
Collaborator

Choose a reason for hiding this comment

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

I don't understand how are the different standards compatible/not compatible with DID, could you elaborate? I suggest we otherwise delete/blank this line and leave it for a later PR on which we would also research the possibility of addresses complying with URL syntax

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I agree with going more deeper into DID afterwards

0xteddybear
0xteddybear previously approved these changes Feb 13, 2025
@vandan
Copy link
Collaborator

vandan commented Feb 20, 2025

Can we separate the problem into "cross-chain naming" and "cross-chain addressing" as suggested? That might allow us to make progress on the simpler foundational addressing aspect which doesn't need to go beyond machine readability as a Must-have.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: In progress
Development

Successfully merging this pull request may close these issues.

[Task] Define properties
3 participants