gno icon indicating copy to clipboard operation
gno copied to clipboard

RFC: Coin vs Token

Open leohhhn opened this issue 1 year ago • 5 comments

Description

I am bringing this up after a conversation with @moul, discussing Effective Gno #1000. Essentially, the issue is how we refer and differentiate the following concepts: tokens, created by following the GRC20 (ERC20) spec, and tokens, issued by the native banker, which are (going to be) IBC-transferrable.

I propose that we call banker-issued ones (native) Coins, and GRC20/721 Tokens. Why?

  • We use std.Coin & std.Coins throughout the codebase,
  • Coins are unique by two factors: they can be issued by the banker, and can be IBC transferrable,
  • Tokens are a well-known term, and people usually associate them with the GRC20/721 standard (ie (non) fungible tokens).

If we don't do this, and still refer to Coins as tokens, we will end up with a weird & possibly confusing situation:

  • Native tokens = coins (in and outside of code).
  • (non-native/normal/...) Tokens = GRC20/721s.

The opposing point for this proposal is the fact that the Cosmos ecosystem uses the term native tokens, for ATOM, and other chains, ie like here. The way to match Cosmos would be to change Coins to Tokens in code & in the current docs.

What do you think?

leohhhn avatar Feb 02 '24 10:02 leohhhn

The "T" in "GNOT" means token, right? Is this also possibly confusing?

jefft0 avatar Feb 02 '24 11:02 jefft0

Just some thoughts: personally, when the word "native" is used, being it with "coins" or "tokens", I always understand that this is about the "layer 0". "Coins" vs "tokens", in general, doesn't seem much different to me, but a convention with "native coins" and "tokens" it does. The key part / word here is "native".

irreverentsimplicity avatar Feb 03 '24 06:02 irreverentsimplicity

We'll merge the current effective gno (#1000) like this, and take time to decide, and then open a PR with the final decision.

moul avatar Feb 08 '24 11:02 moul

I don't have a strong preference here; personally I see that the word "token" could easily encapsulate both, especially that with the "wrapping" system the two are essentially interchangeable, and then use "GRC20" and "Native" to specify them where needed.

thehowl avatar Feb 08 '24 12:02 thehowl

Talking with @jaekwon, it seems that making the naming distinction between Coin & tokens is a good choice. The docs already reflect this, and I can make a PR to edit this in Effective Gno.

cc @moul

leohhhn avatar Feb 27 '24 20:02 leohhhn