Les nouveaux standards pour les tokens Ethereum
Crédits de l'image : @Ru_Must medium.com/@ru_must.
Salut à tous, en tant qu'utilisateur ( présumé ) d'Ethereum je suppose que vous connaissez ces fameux tokens ERC-20. Saviez-vous que d'autres types de tokens existent ou sont en développement ?
Nous allons regarder ces différents standards de tokens ensemble et voir ce qu'ils apportent de nouveau à l'écosystème d'Ethereum.
Avant tout saviez-vous ce que signifie ERC-20 ? Cela signifie Ethereum Request for Comments, en gros un ERC est une proposition de code en vue d'améliorer l'écosystème d'Ethereum. N'importe qui peut soumettre un ERC, les propositions seront ensuite revues par les pairs ( les autres développeurs Ethereum ). Un ERC est nommé selon son numéro dans la liste de tout les ERC, ERC-20 par exemple a été la 20ème proposition proposée.
Les tokens ERC-20 actuels
La page consacré aux ERC-20 sur le Wiki d'Ethereum : TheEthereum.Wiki.
En toute logique, nous commencerons cette article en parlant du standard ERC-20 qui permet de concevoir facilement des tokens échangeables.
La norme de tokens ERC-20 est de loin la plus répandue et la plus utilisée, environ 99% des tokens sur Ethereum sont des tokens ERC-20.
Ces tokens sont prévus pour répondre aux mêmes appels de fonctions, au niveau du code, afin d'être compatible avec les mêmes programmes/smart-contracts que les autres tokens ERC-20.
MyEtherWallet ou ForkDelta par exemple peuvent prendre en charge tout les tokens ERC-20 quelques que soit leurs fonctionnalités. Le code de base étant le même, les fonctions basiques marcheront quelques soit les ajouts.
Le code de base des tokens ERC-20 est le suivant :
// ----------------------------------------------------------------------------
// ERC Token Standard #20 Interface
// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md
// ----------------------------------------------------------------------------contract ERC20Interface {
function totalSupply() public constant returns (uint);
function balanceOf(address tokenOwner) public constant returns (uint balance);
function allowance(address tokenOwner, address spender) public constant returns (uint remaining);
function transfer(address to, uint tokens) public returns (bool success);
function approve(address spender, uint tokens) public returns (bool success);
function transferFrom(address from, address to, uint tokens) public returns (bool success);
event Transfer(address indexed from, address indexed to, uint tokens);
event Approval(address indexed tokenOwner, address indexed spender, uint tokens);}
Les tokens ERC-223, la version améliorée des ERC-20
Code source du standard ERC-223 : github.com.
Nous avons vu précedemment ce qu'était un token ERC-20, passons à l'une de ses amélioration : le tokens ERC-223. Avant tout je tiens à préciser que l'ERC-223 n'est pas encore un standard mais est encore en développement.
Tout d'abord ses particularités en font un token moins couteux en Gas pour les transferts, ce qui permettra de réduire largement les coûts pour les smarts-contracts utilisant massivement des ERC-20.
Une autre de ses fonctionnalités est l'impossibilité de l'envoyer vers une adresse Ethereum incompatible, ou même vers un smart-contract ne le prenant pas en charge. Par exemple le smart-contract du projet Golem reçoit de nombreux tokens ERC-20 qui seront à jamais bloqués sur le smart-contrat, comme vous pouvez le constater sur EtherScan.io.
Son défault par contre est le fait qu'une adaptation du code existant serait sûrement nécessaire pour que les exchanges puissent le prennent en charge. Au contraire MyEtherWallet ou MetaMask seraient eux directement compatibles avec ce genre de tokens.
Etant encore en développement il n'y a malheureusement pas encore de tokens connus basés sur cette norme de tokens.
Les ERC-721, les tokens non-fongibles
Code source du standard ERC-721 : github.com.
Les tokens ERC-721 sont un nouveau type de tokens assez différents des ERC 20 et 223, en effet il ne sont pas fongibles. La fongibilité me demanderez-vous ? Il s'agit en fait de l'identicité des tokens d'un même contrat. En gros un token d'OmiseGo sera toujours identique et non différenciable d'un autre token OmiseGo, tout les tokens OmiseGo sont donc égaux quelques soit leurs parcours.
Avec les tokens ERC-721, 2 tokens d'un même contrat peuvent avoir des caractèristiques totalement différentes. Cela peut notamment être très utile pour les tokens de type collectibles ou pour d'éventuels tokens représentants des biens immobiliers.
Un bon exemple de token ERC-721 en circulation pourrait être le token WePower. Ces tokens peuvent en effet représenter une période d'utilisation, une quantité ou même un type d’énergie différent et sont donc uniques.
Les tokens ERC-777, une version boosté d'ERC-20
Code source du standard ERC-777 : github.com.
Les tokens ERC-777 sont un autre type d'amélioration apporté au standard ERC-20.
Toute les applications supportant les ERC-20 supportent également les ERC-777 de base.
L'un de ses atouts concerne les smarts-contracts, grâce à l'ERC-777 il devient possible d'intéragir avec un smart-contract pour échanger un token en une seule transaction, contre deux avec l'ERC-20 ( une transaction pour la fonction Approve et une 2ème transaction pour la fonction Transfert From ). Pour ceux qui tradent sur les DEX du protocol 0x cela est très intéressant et améliore la rapidité des transferts via la division par deux du nombre de transactions nécessaires.
Tout comme l'ERC-223, l'ERC-777 est capable de rejeter les transferts de tokens incompatibles. Il y est même possible de mettre en place une liste noire et de rejeter les transferts des adresses y figurant, cela pourrait s'avérer très utile pour les ICO respectant les règles anti-blanchiments et mettant en place des KYC ( Know Your Customers ).
Les tokens ERC-1155, une amélioration de l'ERC-721
Code source du standard ERC-1155 : github.com.
Les tokens ERC-1155, crées par le co-fondateur de EnjinCoin, sont encore un autre type de tokens principalement destiné au secteur des jeux vidéos sur blockchain.
Il s'agit à la base d'une amélioration de l'ERC-721, ces derniers ayant permis aux utilisateurs de créer des tokens uniques via un smart-contract commun. Les tokens ERC-1155 combinent habilement le meilleurs des caractèristiques des ERC-20 et des ERC-721 en permettant aux développeurs de produire en masse un type de token spécifique ou même de créer des tokens avec des métadonnées uniques ne pouvant pas être répliqués. A côté de ça il reste tout à fait possible de créer des tokens complètements fongibles avec l'ERC-1155.
Cette nouvelle norme permet également le transfert de plusieurs tokens en même temps, jusqu'à 200 transferts peuvent être effectués en une seule transaction. De plus, ce système fonctionne aussi bien avec les éléments fongibles et qu'avec les non-fongibles.
Cette norme apporte donc de nombreuses améliorations qui pourraient se révéler particulièrement utiles pour les développeurs de jeux sur Ethereum.
EnjinCoin est d'ailleurs l'un des premiers projets à envisager d'utiliser ce nouveau standard.
Le mot de la fin
Voilà pour ce court résumé des différents types d'ERCs en ce qui concerne les tokens. Cette liste n'est pas exhaustive, étant donné que des ERCs se créent assez régulièrement.
Pour le moment, malgrès toute ces possibilités pour les tokens, l'ERC-20 domine largement le marché. Il faut dire que l'ERC-20 est relativement ancien et est donc éprouvé et totalement fiable.
Personnellement je vois bien les ERC-721 se développer rapidement grâce à leurs propriétés uniques. Ils permettent des choses qui étaient inimaginable de faire avec des ERC-20.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
post très utile, qui résume bien les évolutions.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Très belle explication. Je dois dire que je ne connaissais que les tokens ERC-20 qui sont effectivement les plus rependu et les plus "mis en avant". J'ignorais totalement l'existence des autres.
Encore une fois, je vais me coucher moins bête grâce à toi. Merci ;-)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Il faut dire que les tokens autres qu'ERC-20 sont encore très discret ! Le ERC-223 n'est encore que très peu utilisé, l'ERC-721 pareil, ..
Il faut le temps que tout l'écosystème ( wallets, exchanges, .. ) s'y adapte avant que les développeurs franchissent le cap. Tant qu'il n'y a pas un gros projet qui marche bien qui passe sur un autre standard qu'ERC20 j'imagine que les autres projets resteront frileux à l'idée de sauter le pas eux-même.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Ouep c'est un peu l'idée que je me fais aussi. De toute façon, par les temps qui court il ne fait pas bon de sortir la moindre innovation ou changement. Le marché n'est pas prêt pour de gros changement
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
A titre d'exemple pour le 223, je connais le COSS, si jamais ça tombe dans une future question de trivial pursuit :p
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Ah tiens je n'était même pas au courant que Coss utilisait déjà l'ERC-223 ^^
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Depuis janvier en fait :)
Le but etait de diminuer le coût de transfert en GAS des intérêts justement, et ça a baisser de 50%
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit