Confusion about documentation: What's the purpose of "Deploy New Token"? (vs DIP20, etc.)

The part “Deploy New Token” in the docs confuses me. It says “This tutorial will guide you step-by-step to deploy your own token to the IC”, but I thought we only recently have agreed upon an ERC-20-like token standard for the IC. Other than that, all/most current apps on the IC use one of the community-built token implementations like DIP20 or EXT. At least that’s what I’m seeing. So what does this tutorial actually achieve? Why would someone deploy a custom token mimicking ICP¹? Would be nice if someone could provide some context on this :slight_smile:

¹ that’s basically what’s happening there, right?

1 Like

I’m not very close to the whole standards debate, but the one that was Motion Proposal’d as a standard is ICRC-1 in this proposal. The ledger is (will be?) supporting this standard, so I think it’s not unreasonable to deploy your own ledger if you create your own token.

1 Like

Thank you! Well, I thought the ledger basically is the token - in the sense that the token is described by a token standard, reflected by an interface, exposed by a canister running on the IC and keeping track of balances (plus some other things). If I deploy a token of any given standard, I’m always creating a ledger, right? That’s why this tutorial confuses me because I don’t see the point in making a copy of ICP with an identical interface and call it “MyToken”. I hope this makes sense.

The reason why I’m pointing at this tutorial is that it makes me think I must be missing something important about how tokens work on the IC (and others might run into this as well).

This matches my understanding.

Making a copy and renaming to MyToken means that you created a new currency that gets tracked in your ledger. This doesn’t really have a ‘point’ by itself, but once the MyTokens can be used/spent/traded/??? for something which ICP cannot then you suddenly have a reason for it. (Not necessarily a good reason, but a reason none the less)

Having an identical interface means that already existing tooling can easily switch to use your own token/currency.


Hi Karin, nice to meet you! Sorry for the late answer. FYI my team is developing the ICP Ledger and wrote that documentation page.

I’m part of the Ledger&Tokenization working group. We haven’t agreed on an ERC-20-like token standard yet. There is an open proposal under the name ICRC-2 by Psychedelic to add ERC-20-like interface to ICRC tokens but it needs to be voted.

Most apps support ICP too.

The ICP Ledger is used for other tokens too, e.g. OGY. The guide exists because the ICP Ledger is by far the most tested Ledger on the IC and offers a Rosetta node to integrate the token with off-chain services such as CEXs.

Moreover, the ICP Ledger will soon implement the ICRC-1 interface meaning that eventually it will be possible to upgrade those Ledgers to support the working group standard itself.

We want to change the guide to the one to deploy a ICRC-1 Token at some point but it’s not clear if we can do it right now as we don’t have a rosetta node (yet) for that Ledger.

I hope this helps.


Thank you Mario, this helps! One last question regarding Rosetta though. The docs say:

You can set up a Rosetta API-compliant node to interact with the Internet Computer and exchange Internet Computer Protocol (ICP) tokens.

Clarification: This is only needed when working with services outside of the IC like CEXs, right?

Yes, that’s right @karim


Hi, I wanted to give a quick update about this topic. We have a new tutorial on to deploy an ICRC Token using our new Ledger . This is the same Ledger that is used by the SNS and ckBTC and supports ICRC-1 and it will soon support ICRC-2.