Kit de développement Tron / USDT-TRC20 .NET / C # 【TronTool.NET】

Le kit de développement TronTool.Net convient pour ajouter rapidement la prise en charge des actifs numériques Tron / USDT-TRC20 aux applications .Net / C #, c'est-à-dire qu'il prend en charge les scénarios d'application à l'aide de son propre nœud de chaîne de blocs Tron et prend également en charge les services basés sur les services d'API publics officiels de Tron Scénarios de déploiement légers. Adresse officielle de téléchargement: TronTool.NET .

1. Présentation du kit de développement

Le kit de développement TronTool.Net comprend principalement les fonctionnalités suivantes:

  • Prise en charge des transactions Trx natives de la blockchain Tron
  • Prend en charge les contrats intelligents Tron et les jetons TRC20, tels que USDT-TRC20, etc.
  • Prise en charge de la signature hors ligne des transactions pour éviter la divulgation des clés privées
  • Emballage complet d'API de nœud Tron, prenant en charge les API fournies par des nœuds complets, des nœuds Solidity et des nœuds d'événements
  • Prend en charge l'utilisation de ses propres nœuds ou de nœuds tiers, tels que les nœuds publics officiellement fournis par Tron

La version actuelle du kit de développement TronTool.Net est 1.0.0, et les principales classes / interfaces et relations sont illustrées dans la figure suivante:

Insérez la description de l'image ici

La liste principale des fichiers de code du kit de développement TronTool.Net est la suivante:

Fichier de code La description
TronTool.sln Fichier de configuration de la solution TronTool
TronTool / Répertoire de code de projet de la bibliothèque TronTool
TronTool / TronTool.csproj Fichier de configuration du projet TronTool
TronTool / Address.cs Classe de représentation d'adresse Tron
TronTool / Contract.cs Classe d'emballage de contrat intelligent Tron
TronTool / Credential.cs Classe d'identité Tron blockchain, utilisée pour la signature de transaction
TronTool / NodeClient.cs Classe d'encapsulation de protocole de nœud Tron
TronTool / Trc20.cs Classe d'emballage de contrat intelligent Tron TRC20
TronTool / TronApi.cs Client multi-nœuds Tron
TronTool / TronKit.cs Classe d'entrée du kit de développement Tron
TronTool / Api / Répertoire de définition du type de données de l'API Tron
Démo / Répertoire de code de projet de démonstration
Démo / Demo.csproj Fichier de configuration du projet de démonstration
Démo / Program.cs Fichier d'entrée du code de démonstration
Démo / NewAddressDemo.cs Code de démonstration pour créer une nouvelle adresse de blockchain Tron
Démo / TrxDemo.cs Code de démonstration, transaction de transfert Trx et demande de solde
Démo / Trc20Demo.cs Code de démonstration, transfert de jeton Trc20, demande de solde et surveillance des événements

2. Utilisez un exemple de code

2.1 Créer une nouvelle adresse

Demo/NewAddressDemo.csDémontré comment utiliser TronTool.Net pour créer une nouvelle adresse Tron et comment importer une clé privée existante pour recalculer l'adresse.

Les résultats sont les suivants:

Insérez la description de l'image ici

2.2 Transfert Trx et demande de solde

Demo/TrxDemo.csDémontré comment utiliser TronTool.Net pour vérifier le solde TRX et effectuer des transferts TRX.

Les résultats sont les suivants:

Insérez la description de l'image ici

2.3 Transfert de jeton Trc20, interrogation de solde et surveillance des événements

Demo/Trc20Demo.csDémonstration de l'utilisation de TronTool.Net pour le transfert de jetons, la demande de solde et la surveillance des événements.

Les résultats sont les suivants:

Insérez la description de l'image ici

2 使用 使用 TronKit

TronKit est l'entrée du kit de développement. L'utilisation de cette classe permet d'implémenter rapidement les fonctions suivantes:

  • Demande de transfert et de solde TRX
  • Transfert de jeton TRC20, autorisation, demande de solde, etc.

2.1 Instancier TronKit

L'instanciation de TronKit doit transmettre l' TronApiobjet et l' Credentialobjet. Ces deux paramètres encapsulent l'API fournie par le nœud Tron et les informations d'identité de l'utilisateur pour la signature de la transaction.

Par exemple, le code suivant crée une instance TronKit connectée à la chaîne principale Tron et utilise la clé privée spécifiée pour signer la transaction:

//using TronTool;

TronKit kit = new TronKit(
  TronApi.MainNet(),                                       //接入主链
  Credential.FromPrivateKey("87c12d....d435")              //使用指定私钥
);

2.2 Transfert Trx et demande de solde

Utilisez la SendTrx()méthode de TronKit pour le transfert Trx, par exemple, envoyez 1000 TRX:

//using TronTool;
//using TronTool.Api;

String to = "TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx";             //转账目标地址
long amount = 1000000000;                                     //转账金额,单位:SUN
TransactionResult ret = kit.SendTrx(to,amount);               //提交Trx转账交易
Console.WriteLine($"tx id: {ret.txId}");                      //显示交易ID    
Console.WriteLine($"tx state: {ret.state}");                  //显示交易结果              

Remarque: vous devez convertir l'unité de quantité en SUN, 1 TRX = 1000000 SUN.

Utilisez la GetTrxBalance()méthode pour interroger le solde Trx de l'adresse spécifiée, par exemple:

String addr = "TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx";            //要查询的Tron地址
long balance = kit.GetTrxBlanace(addr);                        //查询Trx余额,单位:SUN
Console.WriteLine($"balance: {balane}");                       //显示余额             

2.3 Transfert de jeton TRC20

Utilisez la Trc20()méthode de l' objet TronKit pour obtenir une instance du contrat de jeton TRC20 spécifié, puis appelez la Transfer()méthode du contrat pour transférer le jeton TRC20. Par exemple, le code suivant spécifie 13,15,300 unités minimum de jetons USDT-TRC20 à transférer entre les adresses, soit
1,3153 USDT:

//using TronTool;
//using TronTool.Api;

String to = "TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx";                 //转账目标地址
BigInteger value = new BigInteger(1315300);                       //转账Trc20代币数量
String contractAddress = "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t";    //USDT-TRC20代币合约的部署地址
Trc20 usdt = kit.Trc20(contractAddress);                          //创建Trc20代币合约实例
TransactionResult ret = usdt.Transfer(to,value);                  //转账Trc20代币
Console.WriteLine($"tx id: {ret.txId}");                          //显示转账交易ID
Console.WriteLine($"tx state: {ret.state}");                      //显示转账交易结果

2.4 Demande de solde de jeton TRC20

Utilisez la Trc20()méthode de l' objet TronKit pour obtenir l'instance de contrat de jeton TRC20 spécifiée, puis appelez la BalanceOf()méthode de contrat pour interroger le solde de jetons TRC20 de l'adresse spécifiée. Par exemple, le code suivant interroge le solde du jeton USDT de l'adresse spécifiée:

//using TronTool;
//using TronTool.Api;

Trc20 usdt = kit.Trc20("TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t");        //创建USDT-TRC20代币合约实例
BigInteger balance = usdt.BalanceOf("TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx");  //查询Trc20代币余额
Console.WriteLine($"balance: {balance}");                            //显示代币余额

2.5 Requête d'événement de jeton TRC20

Utilisez la Trc20()méthode de l' objet TronKit pour obtenir l'instance de contrat de jeton TRC20 spécifiée, puis appelez la GetEvents()méthode contract pour interroger l'événement déclencheur du contrat spécifié.

Par exemple, pour interroger les événements du contrat de jeton USDT au cours des 10 dernières secondes:

//using TronTool;

Trc20 usdt = kit.Trc20("TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t");        //创建Trc20代币合约实例
long since = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() - 10000; //计算检查时间点
ContractEvent[] events = usdt.events(since);                         //提取合约事件
foreach(ContractEvent e in events){
  Console.WriteLine($"event name: {e.eventName}");                   //显示事件名称
  Console.WriteLine($"block height: {e.blockNumber}");               //显示事件触发的区块高度
}

3. Identité de la blockchain Tron et représentation d'adresse

Dans le kit de développement TronTool.Net, Credentialune identité d'utilisateur dans la blockchain Tron est utilisée pour caractériser Addressune adresse dans la blockchain Tron. La différence entre les deux est que Credential contient les informations de clé privée de l'utilisateur, qui peuvent être utilisées pour signer des transactions et doivent donc être protégées, tandis que Address est une information qui peut être divulguée.

Utilisez les méthodes statiques de la classe Credential pour Create()créer un nouveau compte. Par exemple, le code suivant crée un nouveau compte et affiche sa clé privée, sa clé publique et son adresse:

//using TronTool;

Credential c = Credential.Create();                           //创建新账号
Console.WriteLine($"private key: {c.GetPrivateKey()}");       //显示私钥
Console.WriteLine($"public key: {c.GetPublicKey()}");         //显示公钥
Console.WriteLine($"address: {c.GetAddress()}");              //显示地址      

Vous pouvez utiliser une méthode statique pour FromPrivateKey()importer une clé privée existante afin d'instancier un Credential. Par exemple, le code suivant importe la clé privée existante et affiche l'adresse:

//using TronTool;

Credential c = Credential.FromPrivateKey("7889...023a");      //导入已有私钥
Console.WriteLine($"address: {c.GetAddress()}");              //显示相应地址

Dans la blockchain Tron, les adresses ont deux représentations: hexadécimales et base58. Par exemple, voici deux représentations de la même adresse:

  • base58 : TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx
  • Hexadécimal: 412539EF4F3EB733C105A957EEBB20FD60AD8C9A43

La classe Address contient la logique de codec correspondante, qui peut instancier Address avec différentes formes d'adresses. Par exemple:

//using TronTool;

Address a1 = Address.FromBase58("TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx");
Console.WriteLine(a1.hex);       //输出:412539EF4F3EB733C105A957EEBB20FD60AD8C9A43

Address a2 = Address.FromHex("412539EF4F3EB733C105A957EEBB20FD60AD8C9A43");
Console.WriteLine(a2.base58);    //输出:TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx

Parfois, il suffit de convertir simplement l'adresse entre base 58 et hexadécimal. À ce stade, l'
objet Adresse intermédiaire n'est pas nécessaire et les méthodes statiques Encode () et Decode () peuvent être utilisées directement.
Par exemple:

//using TronTool;

String a1 = Address.Decode("TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx");
Console.WriteLine(a1);         //输出:412539EF4F3EB733C105A957EEBB20FD60AD8C9A43

String a2 = Address.Encode("412539EF4F3EB733C105A957EEBB20FD60AD8C9A43");
Console.WriteLine(a2);         //输出:TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx

4. Utilisez TronApi pour accéder à l'API du nœud Tron

Utilisez TronApi pour accéder aux différentes API de nœuds de Tron. TronApi regroupe les API fournies par plusieurs nœuds Tron, telles que les API des nœuds complets tron, des nœuds de solidité et des nœuds de service d'événements.

Lors de l'instanciation de TronApi, vous pouvez spécifier différentes URL de connexion pour différents types de nœuds Tron, par exemple:

//using TronTool;

TronApi api = new TronApi(
  "https://api.trongrid.io",       //全节点URL
  "https://api.trongrid.io",       //合约节点URL
  "https://api.trongrid.io"        //事件节点URL
);

Lorsque les URL des trois nœuds ci-dessus sont identiques, elles peuvent être abrégées en:

TronAPi api = new TronApi("https://api.trongrid.io");

Si vous utilisez le nœud TronGrid officiellement fourni par Tron, vous pouvez utiliser directement les deux fonctions statiques fournies par TronApi MainNet()et vous TestNet()connecter respectivement à la chaîne principale et à la chaîne de test shasta.

Par exemple, le code suivant est équivalent:

TronApi api = new TronApi("https://api.trongrid.io");
TronApi api = TronApi.MainNet();                 //与上面等效

TronApi api = new TronApi("https://api.shasta.trongrid.io");
TronApi api = TronApi.TestNet();                 //与上面等效

TronApi encapsule un sous-ensemble des API fournies par les nœuds officiels de Tron, qui peuvent être utilisées pour interagir avec la blockchain Tron. Par exemple, pour interroger le solde TRX d'un compte spécifié, vous pouvez utiliser l'interface getaccount du nœud Tron, qui correspond à la GetAccount()méthode de TronApi :

//using TronTool;

Account account = api.GetAccount("TEgM5CPeqow...7vcBgVkD4tP");  //查询账户信息
Console.WriteLine($"balance: {account.balance}");               //显示账户余额      

TronApi s'appuie sur NodeCllient pour accéder à l'API de nœud de Tron. Donc, si vous avez besoin de prendre en charge plus d'extensions de l'API du nœud TronApi Tron, reportez-vous au code existant TronApi et le nœud combiné de l'API TRON fournit des informations techniques pour la mise en œuvre.


Adresse de téléchargement de TronTool.NET: http://sc.hubwiz.com/codebag/tron-dotnet-lib/

Je suppose que tu aimes

Origine blog.csdn.net/shebao3333/article/details/108062202
conseillé
Classement