usdt代币地址是什么,usdt代币

  

  1.开发套件概述。TronTool。Go开发套件适用于快速提升Tron/USDT-TRC20数字资产对Go应用的支持能力,即支持使用自有Tron区块链节点的应用场景和基于Tron官方公共API服务的轻量级部署场景。官方下载地址:http://sc.hubwiz.com/codebag/tron-go-lib/.   

  

  TronTool。Go开发套件主要包含以下功能:   

  

  Tron区块链原生Trx交易支持Tron智能合约和TRC20令牌,如USDT-TRC20,支持交易离线签名,避免泄露带有私钥的完整Tron节点API包,支持所有节点、坚固性节点和事件节点提供的API,支持使用自有节点或第三方节点。比如TronTool。Go开发包是Tron官方提供的公共节点,在Go 1.13,开发,目前版本为1.0.0。主要的数据类型和关系如下图所示:   

  

     

  

  TronTool的主要代码文件列表。Go开发包如官网描述所示:http://sc.hubwiz.com/codebag/tron-go-lib/.   

  

  2.使用示例代码进入trontool目录并运行示例代码。   

  

  2.1创建新地址示例代码addressdemo.go演示了如何创建新地址,或者导入现有的私钥。   

  

  执行以下命令来运行示例代码:   

  

  rundemo/addressdemo.go的执行结果如下:   

  

     

  

  2.2 TRX转账和余额查询示例代码trxdemo.go演示了如何进行TRX转账并查询指定Tron账户的TRX余额。   

  

  执行以下命令来运行示例代码:   

  

  rundemo/trxdemo.go的执行结果如下:   

  

     

  

  2.3 Trc20 token转账及余额查询示例代码TRC20demo.go演示了如何查询指定的Trc20 token并进行转账。   

  

  执行以下命令来运行示例代码:   

  

  rundemo/trc20demo.go的执行结果如下:   

  

     

  

  2.4 TRC20令牌事件查询示例代码trc20eventdemo.go演示了如何查询指定TRC20令牌的事件。   

  

  执行以下命令来运行示例代码:   

  

  运行demo/trc20event demo.go结果如下:   

  

     

  

  3.使用TronKitTronKit是开发包的入口。使用这个类,可以快速实现以下功能:   

  

  Trx转账及余额查询Trc20代币转账、授权、余额查询等。3.1 TronKitTronKit的实例化需要传入的TronApi对象和Credential对象,它们封装了Tron节点提供的Api和签署交易的用户的身份信息。   

  

  例如,下面的代码创建一个TronKit实例,该实例访问TronKit主链并用指定的私钥对事务进行签名:   

  

  //导入' tron tool/tron '凭证,_ 3360=tron . hexkeytocredidential(' 8d 914…71 eb5f ')//导入私钥tron kit=tron . newtron kit(tron . mainnettron API(),//访问主链凭证,//使用指定的身份)3.2 TRX转账和余额查询使用tron kit的sendTRX()方法来转账Trx,例如发送1000 TRX:   

  

  //import ' fmt '//import ' tron tool/tron ' to 3360=' tdn 3 QY 85 jft 3 rwgyatjrnmrwrmwkn 8 qqx '//转账目的地址var amount int 64=100000000//转账金额,单位:SUNret,_ :   

= kit.SendTrx(to,amount) //提交Trx转账交易fmt.Printf("tx id: %s\n", ret.TxId) //显示交易ID fmt.Printf("tx state: %b\n", ret.State) //显示交易提交结果注意:需要将金额单位转换为SUN,1 TRX = 1000000 SUN。

  

使用getTrxBalance()方法查询指定地址的TRX余额,例如:

  

addr := "TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx" //要查询的Tron地址balance := kit.GetTrxBlanace(addr) //查询Trx余额,单位:SUNfmt.Printf("balance: %d\n",balance) //显示余额3.3 TRC20代币转账使用TronKit对象的Trc20()方法获取指定TRC20代币合约实例,然后调用合约 的transfer()方法进行TRC20代币转账。

  

例如,下面的代码在指定地址间转账1315300个最小单位的TRC20-USDT代币, 即1.3153 USDT:

  

//import "trontool/tron"//import "math/big"to := "TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx" //转账目标地址value := big.NewInt(1315300) //转账Trc20代币数量contractAddress := "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t" //USDT代币地址usdt, _ := kit.Trc20(contractAddress) //创建Trc20代币合约实例ret,_ := usdt.Transfer(to, value) //转账Trc20代币fmt.Printf("tx id: %s\n",ret.txId) //显示转账交易IDfmt.Printf("tx state: %b\n",ret.state) //显示转账交易结果3.4 TRC20代币余额查询使用TronKit对象的Trc20()方法获取指定TRC20代币合约实例,然后调用合约 的BalanceOf()方法查询指定地址的TRC20代币余额。

  

例如,下面的代码查询指定地址的USDT代币余额:

  

//import "trontool/tron"//impot "math/big"usdt,_ := kit.Trc20("TR7NhqjeK…zgjLj6t") //创建USDT-TRC20代币实例balance,_ := usdt.BalanceOf("TDN3Q…8qwqx") //查询Trc20代币余额fmt.Printf("balance: %s\n",balance) //显示代币余额3.5 TRC20代币事件查询使用TronKit对象的Trc20()方法获取指定TRC20代币合约实例,然后调用 合约的GetEvents()方法查询指定合约触发事件。

  

例如查询USDT代币合约最近10秒的事件:

  

//import "trontool/tron"//import "time"//import "fmt"usdt,_ := kit.Trc20("TR7Nhqje…zgjLj6t") //创建Trc20代币合约实例since := time.Now().Unix()*1000 - 10000 //计算检查时间点events,_ := usdt.GetEvents(since) //提取合约事件for _,event := range events { fmt.Printf("event name: %s\n",e.EventName) //显示事件名称 fmt.Printf("block height: %d\n",e.BlockNumber) //显示事件触发区块高度}4、Tron区块链身份与地址表示在开发包中,使用Credential表征Tron区块链中的一个用户身份,它 与地址的区别在于, Credential包含了用户的私钥信息,可以用来 签名交易,而地址则是可以公开的信息。

  

4.1 创建新账号身份使用tron包的NewCredential()方法创建新账户。例如,下面的代码创建一个 新的账户并显示其私钥、公钥和地址:

  

//import "fmt"//import "trontool/tron"c,_ := tron.NewCredential() //创建新身份fmt.Printf("private key: %s\n",c. PrivateKeyHex()); //显示私钥fmt.Printf("public key: %s\n",c. PublicKeyHex()); //显示公钥fmt.Printf("address: %s\n",c.AddressBase58()); //显示地址需要指出的是,对于任何新创建的账号,Tron要求向其注入0.1 TRX进行 激活后才可以使用。具体说明请参考How to create an account。

  

4.2 使用已有的私钥创建身份可以使用包方法HexKeyToCredential()导入已有的私钥来实例化Credential。

  

例如下面的代码导入已有私钥并显示地址:

  

//Import "fmt"//import "trontool/tron"c,_ := tron.HexKeyToCredential("7889...023a") //导入已有私钥fmt.Printf("address: %s\n",c. AddressBase58()) //显示相应地址4.3 Tron地址的两种表示在Tron区块链中,地址有两种表示:16进制和base58表示,例如 下面是同一个地址的两种表示:

  

base58:TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx16进制: 412539EF4F3EB733C105A957EEBB20FD60AD8C9A43tron包中提供了相应的编解码方法,可以在两种格式之间进行转化。例如:

  

//import "fmt"//import "trontool/tron"a1,_ := tron.DecodeBase58Address("TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx");fmt.Println(a1) //输出:412539EF4F3EB733C105A957EEBB20FD60AD8C9A43a2,_ := := tron.EncodeHexAddress("412539EF4F3EB733C105A957EEBB20FD60AD8C9A43")fmt.Println(a2) //输出:TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx5、使用TronApi使用TronApi实例访问Tron的各种节点API。TronApi聚合了多种Tron节点 提供的API,例如tron全节点、solidity节点和事件服务节点的API。

  

5.1 TronApi的实例化实例化TronApi时,可以分别为不同类型的Tron节点指定不同的连接URL,例如:

  

//import "trontool/tron"tronApi := tron.NewTronApi( "https://api.trongrid.io", //全节点URL "https://api.trongrid.io", //合约节点URL "https://api.trongrid.io", //事件节点URL)如果用的是Tron官方提供的TronGrid节点,那么可以直接使用tron包提供的 两个方法分别接入主链和shasta测试链:

  

MainNetTronApi():接入主链TestNetTronApi():接入shasta测试链例如,下面的代码是等效的:

  

urlM := "https://api.trongrid.io"tronApiM1 := tron.NewTronApi( urlM, urlM, urlM)tronApiM2 := Tron.MainNetTronApi() //与上面等效urlT := "https://api.shasta.trongrid.io"tronApiT1 = tron.NewTronApi(urlT, urlT, urlT)tronApiT2 =tron.TestNetTronApi() //与上面等效5.2 访问多节点APITronApi封装了Tron官方多种节点提供的API的一个子集,提供了常用的访问 Tron区块链的API的封装。

  

例如查询指定账户的TRX余额,可以利用Tron节点的getaccount接口,这对应 于TronApi中的getAccount()方法:

  

//import "fmt"//import "trontool/tron"account,_ := tronApi.getAccount("TEgM5CPeqow...7vcBgVkD4tP") //查询账户信息fmt.Printf("balance: %d\n", account.Balance) //显示账户余额5.3 扩展TronAPiTronApi依赖于NodeCllient访问Tron的节点API。因此如果需要扩展TronApi使其 支持更多的Tron节点API,可参考TronApi的现有代码并结合TRON提供的节点API的 技术资料进行实现。

相关文章