Chain-specific addresses

I’ve seen this ERC come up for discussion every now and then since its creation. People seem to generally like it, which is unfortunate, because it is completely useless next to CAIP-10. To be clear, I don’t believe that 3770 is a bad or poorly conceived proposal on its own merits. Rather, I believe that a world where we adopt 3770 alongside or, horror of horrors, instead of CAIP-10 is simply worse in every way than if we all rally around CAIP-10.

The Ethereum ecosystem is increasingly multichain, and in need of a multichain address format. We can consider the problem from a technical and UX standpoint.

Obviously, having unambiguous addresses is desirable from a technical standpoint. 3770 and CAIP-10 are equivalent in this respect for Ethereum, but CAIP-10 is superior in that it can represent addresses from any protocol. As a developer, you may or may not care about this capability, but it doesn’t hurt you if it exists, so why not choose the more powerful option?

For the UX standpoint, let’s start by reviewing the 3770 Motivation (emphasis mine):

In [a multichain] context, addresses become ambiguous, as the same address may refer to an EOA on chain X or a smart contract on chain Y. This will eventually lead to Ethereum users losing funds due to human error. For example, users sending funds to a smart contract wallet address which was not deployed on a particular chain.

This implies that users will handle raw 3770 addresses, and perhaps use them to distinguish between addresses on different chains. However, we all know that raw addresses in the UI are considered harmful, which is why wallets and designers generally try to abstract them away using techniques like address books / petnames. Perhaps ovm:0xdeadbeef... (3770) is more readable than eip155:10:0xdeadbeef... (CAIP-10). But, once the UI knows which chain a particular address is associated with, it can display any conceivable user-friendly representation of that address. In other words: handling raw addresses in the UI is an antipattern, and the format doesn’t matter for UX purposes.

The likeliest way that users will continue to interact with addresses is copying them from location A (say, the dapp) and pasting them into B (say, the wallet). Here again the address format doesn’t matter so long as it’s unambiguous, and for the growing number of dapps and wallets with aspirations to facilitate use cases beyond the EVM ecosystem, CAIP-10 is again completely superior.

I commend the authors for their foresight in drafting this ERC, but urge them to withdraw 3770 and promote CAIP-10 instead.

2 Likes