Proposal: XDC prefixes End-game

Author: 0xbeny, Mohit, cryptoRREN, satz_tr

Context

Smart contracts are created using a human-readable programming language such as Solidity. When they are deployed or executed, it is compiled to a machine-readable format called bytecode. The Ethereum Virtual Machine, a decentralized application layer that operates as a runtime environment within a node’s client software, allows nodes to interpret bytecode. EVM-compatibility means a blockchain network uses this same method, allowing developers to easily participate in ecosystems that share this compatibility.

By allowing developers to leverage popular tools and libraries built with the Ethereum ecosystem, and easily port their smart contracts from other EVM-compatible blockchains. XDC network supports two main address prefixes which are the following:

1- xdc prefix (e.g. xdca124…bab): xdc is with XDC from the beginning(genesis).

2- 0x prefix (e.g. 0x123c…cca): In the last 2 years has been added due a high-demand from the community

We’ve heard this statement a lot of times before from XDC prefix OGs:

“xdc prefix is with XDC network from the genesis and it’s tied up with XDC identity.”

But, Having 2 prefixes at the same time, creates the below-mentioned conflicts:

  1. Human error for Both users and developers
  2. Wallets that use xdc prefix which is not compatible with Wallet connect.(link)
  3. Wasting hardware and resources to maintain xdc prefix compatible RPCs
  4. Tooling incompatibility in general
  5. Confusion on XDC explorers and new validators on what prefix to choose
  6. Tough for XDC team itself manage all repetitive queries
  7. New developers in 100% of times facing issue to get Faucet
  8. Mistakenly using the wrong prefix can cause failed transactions or incorrect address validation.
  9. Some dApps, wallets, or services might only support one prefix, leading to transaction failures or additional steps to convert between the two formats.

Sharing a few feedbacks from community:

  • Projects and developers trying to migrate from other EVM ecosystems to the XDC Network are often faced with an experience that is not as seamless as their experience should be.
  • This can cause projects to choose other communities or cause favorable integrations to reconsider applying their efforts to the XDC Network.
  • Blockchain itself is tough for new users to onboard, xdc prefix adds an extra barrier.

Action Plan

This proposal is aiming to choose 0x prefix for XDC Network as the first and only option for New and Existing:

  1. Wallets
  2. Toolings
  3. dApps
  4. CEXs
  5. Explorers
  6. Documentations

And keeping xdc prefix as legacy option.

After confirming this proposal by the community, XDC team should make a public announcement to this decision and help the existing toolings, dApps, CEXs to migrate to the new address prefix which is 0x.

With this change there is no need to change anything on the proposal level, the only effort is for encouraging anyone to use.

Would like to see our support for this proposal here this topic on the forum and bear with us to roll it out on XDCDAO.org.

This topic has been extensively discussed both internally and externally among community members, developers, and those supporting the network. I understand that enabling 0x support by adding the flag on RPC nodes, and the recent update where all nodes now support 0x, is a significant step towards meeting the community’s requests.

The reality is that a majority of developers are currently building on EVM-compatible chains. According to 2023 data:

  • EVM-based Developers (Solidity): Approximately 40%-50% of all blockchain developers are working on EVM-compatible platforms, primarily using Solidity or similar tools.
  • Non-EVM Developers: The remaining 50%-60% are distributed across other ecosystems like Solana, Cosmos, Polkadot, Cardano, Tezos, and others.

By adopting the 0x prefix, XDC Network can significantly enhance its appeal to developers, making it easier to migrate projects to the network. I believe transitioning to 0x as the default, while keeping XDC as the legacy prefix, will be well-received by developers building on XDC. Over time, the legacy XDC prefix could either fade out or continue to be used based on developer preference. However, this transition will simplify development on XDC and improve integration with widely used tools like MetaMask, which is trusted in the developer community for its security, ease of use, and up-to-date features.

2 Likes