TRC-20 La norme de jeton fongible sur Tron

LeeMaimaiLeeMaimai
/16 oct. 2025
TRC-20 La norme de jeton fongible sur Tron

Points clés

• TRC-20 est la norme de jeton fongible sur Tron, similaire à ERC-20 sur Ethereum.

• Les frais de transaction sont bas et la finalité est instantanée, ce qui favorise les paiements quotidiens.

• Les développeurs peuvent facilement porter des contrats d'Ethereum à Tron grâce à la compatibilité avec Solidity.

• La gestion des ressources (bande passante et énergie) est essentielle pour optimiser les coûts de transaction.

• La sécurité des contrats et des approbations est cruciale pour éviter les risques de phishing et d'échecs de transaction.



TRC-20 est la norme de jeton fongible de Tron, analogue à ERC-20 sur [Ethereum](https://onekey.so/blog/fr/ecosystem/what-is-ethereum/), et la colonne vertébrale de la plupart des stablecoins, jetons d'échange et actifs de paiement dans l'écosystème Tron. Avec des frais constamment bas, une finalité instantanée et une large base d'utilisateurs particuliers, Tron est devenu un lieu privilégié pour le transfert de valeur quotidien—en particulier pour les stablecoins—faisant de TRC-20 une primitive essentielle pour les développeurs comme pour les utilisateurs. Cet article explique le fonctionnement de la norme, ce qui la différencie et comment l'utiliser en toute sécurité en 2025.

## Qu'est-ce que TRC-20 ?

TRC-20 définit une interface minimale pour les jetons fongibles sur les contrats intelligents compatibles avec la Tron Virtual Machine (TVM). Il spécifie des fonctions de base comme `totalSupply`, `balanceOf`, `transfer`, `allowance`, et `transferFrom`, ainsi que des événements standard pour les transferts et les approbations. La spécification canonique est publiée sous la forme d'une proposition d'amélioration de Tron : [TIP-20 : Norme de jeton TRC-20](https://github.com/tronprotocol/tips/blob/master/tip-20.md).

Pour les développeurs, TRC-20 est familier si vous avez déjà développé sur [Ethereum](https://onekey.so/blog/fr/ecosystem/what-is-ethereum/) : Solidity est utilisé pour écrire les contrats, et la TVM maintient la compatibilité avec une grande partie de l'ensemble d'instructions de l'EVM. Vous pouvez en apprendre davantage sur la TVM et la pile de développement Tron dans la documentation officielle : [Tron Virtual Machine](https://developers.tron.network/docs/tron-vm).

## Pourquoi TRC-20 est important aujourd'hui

- Rail de stablecoin pour les paiements : L'USDT émis nativement sur Tron est largement utilisé pour les transferts et les règlements en raison de sa vitesse et de ses faibles coûts. Vous pouvez vérifier la distribution sur la chaîne sur la page de transparence de Tether : [Transparence Tether](https://tether.to/en/transparency).
- Modèle de coûts et débit : Le modèle de ressources de Tron (bande passante et énergie) maintient les coûts de transaction prévisibles et généralement bas, ce qui profite aux transferts fréquents et de petite taille. Voir les détails ici : [Modèle de ressources de Tron](https://developers.tron.network/docs/resource-model).
- Croissance et activité des utilisateurs : Tron a maintenu une activité quotidienne et des transferts de jetons élevés ; vous pouvez consulter les statistiques quasi en temps réel sur [TRONSCAN Analytics](https://tronscan.org/#/data/stats).

Note sur les changements du marché : Circle a mis fin au support de l'[USDC](https://onekey.so/blog/fr/ecosystem/what-is-usd-coin-usdc/) natif sur Tron en 2024 ; les équipes et les utilisateurs doivent en tenir compte lors du choix des rails de stablecoin. Référence : [Fin du support de l'USDC sur le réseau TRON (Circle)](https://www.circle.com/blog/usdc-on-tron-network-ends).

## Comparaison de TRC-20 à ERC-20

- Parité d'interface : TRC-20 reflète ERC-20 au niveau des fonctions/événements, ce qui facilite la portabilité des contrats.
- Environnement d'exécution : TVM vs EVM — la TVM de Tron est compatible avec Solidity, mais pas identique. Testez toujours les cas limites.
- Frais et ressources : Tron remplace le gaz par transaction par la bande passante et l'énergie. Les utilisateurs peuvent staker des TRX pour obtenir ces ressources ou payer à la demande. Les développeurs doivent concevoir l'UX en tenant compte de l'estimation des ressources. Voir : [Modèle de ressources](https://developers.tron.network/docs/resource-model).

## Le parcours du développeur : du contrat au mainnet

1. Concevez et implémentez votre contrat de jeton.
2. Testez localement dans un environnement compatible TVM.
3. Déployez en utilisant TronWeb ou des SDK similaires.
4. Vérifiez le contrat sur TRONSCAN et publiez vos métadonnées.
5. Développez les flux de transfert, d'autorisation et d'administration de manière réfléchie (rôles de mint/burn/propriétaire) pour atténuer les risques.

Ressources utiles :
- Documentation standard TRON : [TIP-20](https://github.com/tronprotocol/tips/blob/master/tip-20.md)
- Aperçu du SDK : [Introduction à TronWeb](https://developers.tron.network/docs/tronweb-introduction)
- Vérification de contrat : [Comment vérifier un contrat sur TRONSCAN](https://support.tronscan.org/hc/en-us/articles/900005666986-How-to-verify-contract)
- Explorer les jetons TRC-20 : [Répertoire des jetons TRONSCAN](https://tronscan.org/#/tokens/trc20)

### Exemple TRC-20 minimal (Solidity)

```solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

// Note : La TVM est compatible avec Solidity, mais toujours tester sur Tron.
// Ceci est un exemple minimal et omet les modèles de sécurité avancés.

[contract](https://onekey.so/blog/fr/ecosystem/what-is-a-smart-contract/) ExampleTRC20 {
    string public name = "Example Token";
    string public symbol = "EXM";
    uint8 public decimals = 6; // Les jetons Tron utilisent souvent 6 décimales
    uint256 public totalSupply;

    mapping(address => uint256) private _balance;
    mapping(address => mapping(address => uint256)) private _allowance;

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);

    constructor(uint256 initialSupply) {
        _mint(msg.sender, initialSupply);
    }

    function balanceOf(address account) external view returns (uint256) {
        return _balance[account];
    }

    function transfer(address to, uint256 amount) external returns (bool) {
        _transfer(msg.sender, to, amount);
        return true;
    }

    function allowance(address owner, address spender) external view returns (uint256) {
        return _allowance[owner][spender];
    }

    function approve(address spender, uint256 amount) external returns (bool) {
        _allowance[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(address from, address to, uint256 amount) external returns (bool) {
        uint256 allowed = _allowance[from][msg.sender];
        require(allowed >= amount, "Allowance exceeded");
        _allowance[from][msg.sender] = allowed - amount;
        _transfer(from, to, amount);
        return true;
    }

    // Mint/burn optionnels (être explicite sur le contrôle d'accès en production)
    function _mint(address to, uint256 amount) internal {
        totalSupply += amount;
        _balance[to] += amount;
        emit Transfer(address(0), to, amount);
    }

    function _burn(address from, uint256 amount) internal {
        require(_balance[from] >= amount, "Insufficient balance");
        _balance[from] -= amount;
        totalSupply -= amount;
        emit Transfer(from, address(0), amount);
    }

    function _transfer([address](https://onekey.so/blog/fr/ecosystem/what-is-a-crypto-wallet-address/) from, [address](https://onekey.so/blog/fr/ecosystem/what-is-a-crypto-wallet-address/) to, uint256 amount) internal {
        require(_balance[from] >= amount, "Insufficient balance");
        require(to != [address](https://onekey.so/blog/fr/ecosystem/what-is-a-crypto-wallet-address/)(0), "Invalid recipient");
        _balance[from] -= amount;
        _balance[to] += amount;
        emit Transfer(from, to, amount);
    }
}

Conseils :

  • De nombreux jetons Tron choisissent 6 décimales pour la parité UX avec l'USDT sur Tron.
  • Si vous implémentez des rôles privilégiés (propriétaire, pauseur, blacklist), documentez-les publiquement et envisagez la transparence on-chain via des événements.

Frais, bande passante et énergie : ce que les utilisateurs paient réellement

Le modèle de Tron accorde à chaque compte de la bande passante gratuite pour les petits transferts et utilise de l'énergie pour l'exécution des contrats. Les utilisateurs peuvent :

  • Staker des TRX pour obtenir de la bande passante/énergie, réduisant ainsi les coûts récurrents.
  • Payer par transaction lorsque les ressources sont insuffisantes.

Pour une vue technique plus approfondie, consultez le guide officiel : Modèle de ressources de Tron.

Implication UX pour les développeurs : Lors de l'envoi de transferts TRC-20 depuis des contrats (par exemple, des agrégateurs), tenez compte de l'énergie de l'appelant pour éviter les échecs dus à des ressources insuffisantes.

Stablecoins et paiements sur TRC-20

  • L'USDT sur Tron est l'une des configurations de stablecoin les plus utilisées pour les transferts transfrontaliers. Vérifiez l'émission et les réserves sur Transparence Tether.
  • Le support de l'USDC sur Tron a pris fin conformément à la mise à jour de la politique de Circle ; envisagez des alternatives pour les flux de règlement : Fin de l'USDC sur le réseau TRON.

Note de conception : Si votre application dépend de mint/burn de stablecoins ou de contrôles de conformité (par exemple, fonctions de gel), lisez la documentation de l'émetteur et le code du contrat pour comprendre les actions d'administration potentielles et leur effet sur vos utilisateurs.

Interopérabilité et ponts

De nombreux actifs atteignent Tron via des ponts inter-chaînes ou sont émis nativement en tant que TRC-20. Si votre produit repose sur des ponts, comprenez :

  • Le modèle de confiance du pont (validateurs, oracles, capacité de mise à niveau)
  • Les mécanismes de mint/burn ou les flux de verrouillage/déverrouillage
  • La vivacité et les frais de sortie/retrait

Pour la pile de ponts natifs de Tron entre Tron, Ethereum et BNB Chain, consultez BitTorrent Chain (BTTC) : Documentation BTTC.

Sécurité : pièges courants et comment les éviter

  • Approbations et phishing : Les dApps malveillantes peuvent demander des approbations illimitées. Encouragez les utilisateurs à accorder des autorisations minimales et à les examiner périodiquement dans leur portefeuille ou sur TRONSCAN. Un répertoire général se trouve ici : Jetons TRC-20 TRONSCAN.
  • Clés d'administration : Si votre TRC-20 dispose de fonctions de mint, burn, pause ou blacklist, divulguez la politique et utilisez le multi-signature pour la gestion des clés. Le multi-signature est pris en charge au niveau du protocole : Multi-signature Tron.
  • Vérification des contrats : Vérifiez le code source et faites correspondre les paramètres du compilateur afin que les auditeurs et les utilisateurs puissent inspecter la logique. Guide : Vérifier un contrat sur TRONSCAN.
  • Échecs de ressources : Les transactions peuvent échouer si l'expéditeur manque d'énergie/bande passante. Fournissez des surfaces d'erreur claires et des pré-vérifications dans votre dApp.

Expérience utilisateur du portefeuille et gestion des actifs

Pour les utilisateurs, l'expérience TRC-20 devrait être simple : la même adresse Tron reçoit des TRX et des jetons, et les transferts sont confirmés rapidement. Néanmoins, la protection des approbations, la garde des phrases de récupération et la confirmation des adresses des contrats de jetons sont essentielles.

Si vous conservez vous-même des actifs TRC-20 importants (par exemple, des soldes USDT pour le règlement), un portefeuille matériel peut réduire considérablement le risque de signature. OneKey sécurise les clés privées dans un élément sécurisé dédié, affiche des détails de transaction lisibles par l'homme sur l'appareil, et prend en charge nativement les jetons Tron et TRC-20—utile lorsque vous devez examiner les demandes d'approbation ou vérifier les adresses des destinataires avant d'autoriser les transferts.

Liste de contrôle des meilleures pratiques

Pour les utilisateurs :

  • Vérifiez le contrat du jeton sur TRONSCAN avant d'interagir.
  • Testez avec un petit transfert ; puis augmentez.
  • Minimisez les approbations de jetons et nettoyez-les périodiquement.
  • Envisagez de staker des TRX pour obtenir de l'énergie si vous effectuez des transactions fréquemment.

Pour les développeurs :

  • Gardez l'interface simple et prévisible ; évitez les comportements de jeton surprenants.
  • Documentez tous les pouvoirs d'administration et publiez une politique de sécurité.
  • Vérifiez les contrats et publiez des audits le cas échéant.
  • Surveillez l'activité de la chaîne et les frais ; fournissez une UX claire concernant l'utilisation des ressources.

Où aller ensuite

TRC-20 est devenu une norme pratique pour le transfert de valeur mondial sur Tron. Que vous déplaciez des fonds, construisiez des rails de paiement ou émettiez votre propre actif, comprendre la norme—et la coupler à une gestion sécurisée des clés—vous assurera le succès. Pour ceux qui détiennent des soldes importants, l'utilisation d'un portefeuille matériel comme OneKey pour signer les transactions et les approbations TRC-20 peut renforcer votre sécurité sans sacrifier la vitesse sur Tron.

Sécurisez votre parcours crypto avec OneKey

View details for Boutique OneKeyBoutique OneKey

Boutique OneKey

Le portefeuille matériel le plus avancé au monde.

View details for Télécharger l'applicationTélécharger l'application

Télécharger l'application

Alertes contre les arnaques. Toutes les pièces supportées.

View details for OneKey SifuOneKey Sifu

OneKey Sifu

Clarté Crypto—À un appel de distance.

Continuer à lire