Les différents types de tokens Ethereum
Acheter Ethereum (ETH)
Partenaire Bitpanda
Si vous avez étudié Ethereum et son fonctionnement, que vous vous êtes renseigné sur ce qu'est une ICO ou encore fouillé les descriptions de crypto-monnaies sur Coinmarketcap, vous avez sûrement lu la description de certains tokens, appelés token ERC-XX. Mais qu'est ce qu'ERC ? Et que signifient les nombres qui suivent ? Existe t-il différents types de jetons sur Ethereum ?
Que veut dire ERC ?
Tout d'abord, qu'est ce qu'un token ?
Dans l’écosystème Ethereum, ce n'est ni plus ni moins qu'un smart-contract qui répond à un cahier des charges. En effet de manière générale le travail réalisé sur Ethereum est voué à être partagé, réutilisé et développé dans un esprit de collaboration avec toute la communauté. Afin qu'il y ait collaboration, il vaut mieux s'entendre dès le début à quoi va ressembler tels ou tels outils, surtout en programmation. Mais ce n'est pas seulement un outil réutilisable par chacun pour s'en approprier le contenu et l'utiliser dans ses projet.
Le ERC qui précède l'identifiant du token en question signifie "Request for Comments". Ce sont des documents numérotés qui décrivent les méthodes de fonctionnements des protocoles internet ou de matériels informatiques. Ce ne sont pas forcément des standards utilisés partout dans le monde, mais tous sont documentés et publiés par l'Internet Engineering Task Force.
Les principaux types de tokens Ethereum :
ERC-20 :
Très clairement le token le plus utilisé dans l’écosystème Ethereum, notamment dans les ICO.
Le token ERC-20 permet de créer une crypto-monnaie, de l'intégrer sur des exchanges et de proposer une ICO contre de l'Ether de façon très simple.
Son architecture est très simpliste, et contient seulement quelques fonctions :
totalSupply() public view returns (uint256 totalSupply)
#Fonction permettant d'obtenir le nombre de tokens existants.
balanceOf(address _owner) public view returns (uint256 balance)
#Fonction retournant le nombre de tokens qu'une adresse possède.
transfer(address _to, uint256 _value) public returns (bool success)
#Fonction permettant à un utilisateur d'envoyer des tokens à une adresse, en précisant le nombre de tokens a envoyer.
transferFrom(address _from, address _to, uint256 _value) public returns (bool success)
#Fonction qui va mettre en place le transfert d'un certains nombres de tokens entre deux adresses.
approve(address _spender, uint256 _value) public returns (bool success)
#Une fonction particulière, qui va autoriser un autre utilisateur de prendre un certains nombre de tokens sur cette adresse.
allowance(address _owner, address _spender) public view returns (uint256 remaining)
#Fonction liée à celle de dessus, qui envoie à l'adresse ciblée des fonds tant que c'est autorisé par approve() plus haut.
Une fois ces fonctions misent en place, un token de type ERC-20 peut interagir avec la plupart des smart-contracts Ethereum.
ERC-721 :
Vous vous souvenez de Crypto Kitties ? Les chats que la communautés crypto s'arrachaient contre des ethers étaient en réalité des tokens ERC-721 !
Cela peut être déroutant, car chaque Kitties étaient uniques, loin de l'idée des nombreux tokens identiques. C'est justement là la particularité des tokens de type ERC-721, c'est de permettre la création de tokens non fongibles. Ce type de token permet la création de jeux, comme Crypto Kitties ou Zombie Battleground, CryptoCup mais également la tokenisation d’œuvres d'art ou de champs, de bâtiments. En voici sa structure :
event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId)
event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);
event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);
#Ces événements permettent d’afficher des informations lors de modifications, transfert de token par exemple.
function balanceOf(address _owner) external view returns (uint256);
Fonction qui retournera tous les tokens qui appartiennent à un utilisateur précis.
function ownerOf(uint256 _tokenId) external view returns (address);
#Permet d’obtenir le propriétaire d’un token spécifique.
function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable;
function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable;
function transferFrom(address _from, address _to, uint256 _tokenId) external payable;
#Ces dernières fonctions permettent de définir ou non quelles adresses sont capable de réaliser des transfert de NTFs (Non Fungibles Tokens).
#
# Ces trois fonctions permettent de réaliser un transfert de propriété d’un token spécifique, avec quelques particularités, l’envoie de données ou non, ou encore la vérification que l’adresse à qui le token va être envoyé est capable de le récupérer, afin d'éviter de perdre ce dernier.
function approve(address _approved, uint256 _tokenId) external payable;
function setApprovalForAll(address _operator, bool _approved) external;
function getApproved(uint256 _tokenId) external view returns (address);
function isApprovedForAll(address _owner, address _operator) external view returns (bool);
Vous pouvez retrouver plus d'informations sur le token ERC-721 sur le site de ce dernier. (http://erc721.org)
D'autres types de tokens Ethereum
ERC-223 :
Ce token est une évolution du token ERC-20. En effet malgré la popularité de ce dernier, il possède de nombreuses failles, tant de sécurités que de maladresse, par exemple la pertes de tokens si ils sont envoyés sur un contrat qui n’était pas destiné à en recevoir. Egalement, il est optimisé pour utiliser moins de gas lors des transactions.
Malgré tous ses avantages, il n'est pas encore un standard et reste à l’état de proposition. En effet aucun projet d’envergure ne l’utilise, et des modifications devraient être réalisées pour que les exchange puissent l'accueillir.
ERC-827 :
Le token ERC-827 se définit comme une extension du token ERC-20. D'abord c’est dans sa programmation un “enfant” du token ERC-20, c’est à dire qu’il va récupérer les caractéristiques de ce dernier avant d’ajouter ses fonctions propres.
Il apporte de nouvelles fonctionnalités sur trois fonctions, approve, transfer, transferFrom, afin de permettre de transférer non seulement l’échanges de tokens mais de données de tout type également, par exemple des photos ou vidéos, des documents.
ERC-948 :
Ce token est basé sur le concept de l'abonnement, on peut s’abonner à Netflix ou votre streamer favoris, on pourra s’abonner à des services décentralisés à l’aide de ce type de tokens. Mais il y a encore des questionnements sans réponse pour l’instant, notamment sur la volatilité des tokens, mais également du prix des transactions en gas, sur des longues périodes d'abonnements, l'utilisateur pourrait se retrouver avec une facture complètement différente.
Nous avons fait le tour des différents types de tokens Ethereum les plus répandus, mais il en existent beaucoup plus, sous forme de concepts ou de prototypes, à l’avenir d’autres types de tokens deviendront des standards, vous pouvez retrouver les propositions sur ce site d’ethereum.
Vous vous posez d'autres questions ? Nous avons peut-être déjà la réponse dans notre Foire Aux Questions.
Si ce n'est pas le cas n'hésitez pas à la poster en commentaire !
Hello, super article ! Ca serait possible de rajouter les ERC1155 ?