Kit de desarrollo Tron blockchain Go 【USDT-TRC20】

El kit de desarrollo TronTool.Go es adecuado para agregar rápidamente soporte para activos digitales Tron / USDT-TRC20 a aplicaciones Go, es decir, admite escenarios de aplicación utilizando su propio nodo de cadena de bloques Tron y también admite servicios API públicos oficiales Tron ligeros Escenario de implementación. Dirección de descarga oficial: TronTool para Golang .

1. Descripción general del kit de desarrollo

El kit de desarrollo TronTool.Go incluye principalmente las siguientes características:

  • Admite transacciones Trx nativas de blockchain de Tron
  • Admite contratos inteligentes de Tron y tokens TRC20, como USDT-TRC20, etc.
  • Admite la firma de transacciones fuera de línea para evitar la divulgación de claves privadas
  • Paquete completo de API de nodo Tron, compatible con API proporcionadas por nodos completos, nodos Solidity y nodos de eventos
  • Apoyar el uso de nodos propios o nodos de terceros, como nodos públicos proporcionados oficialmente por Tron

El kit de desarrollo TronTool.Go se desarrolla utilizando Go 1.13 , la versión actual es 1.0.0 y los principales tipos de datos y relaciones se muestran en la siguiente figura:

Inserte la descripción de la imagen aquí

La lista de archivos de código principal del kit de desarrollo TronTool.Go es la siguiente:

Archivo de código Descripción
trontool / tron ​​/ address.go Método de codificación y decodificación de direcciones Tron
trontool / tron ​​/ contract.go Clase de embalaje por contrato Tron
trontool / tron ​​/ credential.go Clase de identidad Tron
trontool / tron ​​/ nodeclient.go Clase de cliente del nodo Tron
trontool / tron ​​/ trc20.go Clase de embalaje por contrato TRC20
trontool / tron ​​/ tronapi.go Cliente Tron multinodo
trontool / tron ​​/ tronkit.go Clase de entrada TronKit
trontool / tron ​​/ types.go Tipos varios
trontool / api / account.go Estructura de datos de la API relacionada con la cuenta
trontool / api / apiresult.go Estructura API general
trontool / api / contract.go Estructura de datos de API relacionada con el contrato
trontool / api / contractevent.go Estructura de datos API relacionada con eventos contractuales
trontool / api / contracttransaction.go Estructura de datos API relacionada con transacciones contractuales
trontool / api / transaction.go Estructura de datos API relacionada con transacciones TRX
trontool / demo / addressdemo.go Demostración de direcciones de Tron
trontool / demo / trc20demo.go Demostración de transacciones y consultas TRC20
trontool / demo / trc20eventdemo.go Demostración de consulta de eventos TRC20
trontool / demo / trxdemo.go Demostración de transacción de transferencia y consulta de saldo de trx
trontool / go.mod Ir a los archivos de gestión del módulo
trontool / go.sum Ir a los archivos de gestión del módulo
manifestación/ Directorio de código del proyecto de demostración
demo / build.gradle Archivo de configuración de Gradle del proyecto de demostración
demo / src / main / java / demo / NewAddressDemo.java Código de demostración para crear una nueva dirección de cadena de bloques de Tron
demo / src / main / java / demo / TrxDemo.java Código de demostración, transacción de transferencia Trx y consulta de saldo
demo / src / main / java / demo / Trc20Demo.java Código de demostración, transferencia de token Trc20, consulta de saldo, monitoreo de eventos, etc.
build.gradle Archivo de configuración del proyecto raíz
settings.gradle Archivo de configuración del proyecto raíz

2. Usa código de muestra

Ingrese al trontooldirectorio para ejecutar el código de muestra.

2.1 Crear una nueva dirección

El código de muestra addressdemo.godemuestra cómo crear una nueva dirección o importar una clave privada existente.

Ejecute el siguiente comando para ejecutar el código de muestra:

go run demo/addressdemo.go

Los resultados son los siguientes:

Inserte la descripción de la imagen aquí

2.2 Transferencia TRX y consulta de saldo

El código de muestra trxdemo.godemuestra cómo consultar las transferencias Tron TRX especificadas y los saldos de cuenta TRX.

Ejecute el siguiente comando para ejecutar el código de muestra:

go run demo/trxdemo.go

Los resultados son los siguientes:

Inserte la descripción de la imagen aquí

2.3 Transferencia de tokens trc20 y consulta de saldo

El código de muestra trc20demo.godemuestra cómo consultar la información especificada en los tokens y transferencias TRC20.

Ejecute el siguiente comando para ejecutar el código de muestra:

go run demo/trc20demo.go

Los resultados son los siguientes:

Inserte la descripción de la imagen aquí

2.4 Consulta de evento de token TRC20

El código de muestra trc20eventdemo.godemuestra cómo consultar especifica el evento de tokens TRC20.

Ejecute el siguiente comando para ejecutar el código de muestra:

go run demo/trc20eventdemo.go

Los resultados son los siguientes:

Inserte la descripción de la imagen aquí

3 使用 使用 TronKit

TronKit es la entrada al kit de desarrollo. El uso de esta clase puede implementar rápidamente las siguientes funciones:

  • Transferencia trx y consulta de saldo
  • Transferencia de tokens trc20, autorización, consulta de saldo, etc.

3.1 Crear una instancia de TronKit

La instanciación de TronKit necesita pasar el TronApiobjeto y el Credentialobjeto. Estos dos parámetros encapsulan respectivamente la API proporcionada por el nodo Tron y la información de identidad del usuario para la firma de transacciones.

Por ejemplo, el siguiente código crea una instancia de TronKit conectada a la cadena principal de Tron y usa la clave privada especificada para firmar la transacción:

//import "trontool/tron"

credential, _ := tron.HexKeyToCredential("8D914…71EB5F")     //导入私钥
TronKit kit = tron.NewTronKit(
  Tron.MainNetTronApi(),                                     //接入主链
  credential,                                                //使用指定身份
)

3.2 Transferencia TRX y consulta de saldo

Utilice el sendTrx()método de TronKit para la transferencia de Trx, por ejemplo, envíe 1000 TRX:

//import "fmt"
//import "trontool/tron"

to := "TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx"            //转账目标地址
var amount  int64 = 1000000000                        //转账金额,单位:SUN
ret,_  := kit.SendTrx(to,amount)                      //提交Trx转账交易
fmt.Printf("tx id: %s\n", ret.TxId)                   //显示交易ID    
fmt.Printf("tx state: %b\n", ret.State)               //显示交易提交结果              

Nota: Necesita convertir la unidad de cantidad a SUN, 1 TRX = 1000000 SUN.

Utilice el getTrxBalance()método para consultar el saldo de TRX de la dirección especificada, por ejemplo:

addr := "TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx"        //要查询的Tron地址
balance := kit.GetTrxBlanace(addr)                   //查询Trx余额,单位:SUN
fmt.Printf("balance: %d\n",balance)                  //显示余额        

3.3 Transferencia de token TRC20

Utilice el Trc20()método del objeto TronKit para obtener una instancia del contrato de token TRC20 especificado y luego llame al transfer()método del contrato para transferir el token TRC20.

Por ejemplo, el siguiente código transfiere 13,15,300 unidades mínimas de tokens TRC20-USDT entre direcciones específicas, que es 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)                          //显示转账交易ID
fmt.Printf("tx state: %b\n",ret.state)                      //显示转账交易结果

3.4 Consulta de saldo del token TRC20

Utilice el Trc20()método del objeto TronKit para obtener la instancia de contrato del token TRC20 especificada y luego llame al BalanceOf()método del contrato para consultar el saldo del token TRC20 de la dirección especificada.

Por ejemplo, el siguiente código consulta el saldo del token USDT de la dirección especificada:

//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 Consulta de evento de token TRC20

Utilice el Trc20()método del objeto TronKit para obtener la instancia de contrato de token TRC20 especificada y luego llame al GetEvents()método de contrato para consultar el evento desencadenante del contrato especificado.

Por ejemplo, para consultar los eventos del contrato de token USDT en los últimos 10 segundos:

//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. Identidad de la cadena de bloques de Tron y representación de direcciones

En el kit de desarrollo, Credentialse usa la identidad de un usuario en la cadena de bloques de Tron para caracterizarlo. La diferencia con la dirección es que Credential contiene la información de la clave privada del usuario, que se puede usar para firmar transacciones, mientras que la dirección es información que se puede revelar.

4.1 Crear una nueva identidad de cuenta

Utilice el NewCredential()método del paquete tron para crear una nueva cuenta. Por ejemplo, el siguiente código crea una nueva cuenta y muestra su clave privada, clave pública y dirección:

//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());                   //显示地址      

Cabe señalar que para cualquier cuenta recién creada, Tron requiere que se inyecte 0.1 TRX para activarla antes de que pueda usarse. Para obtener instrucciones específicas, consulte Cómo crear una cuenta .

4.2 Utilice la clave privada existente para crear una identidad

Puede utilizar el método del paquete para HexKeyToCredential()importar la clave privada existente para crear una instancia de la Credencial.

Por ejemplo, el siguiente código importa la clave privada existente y muestra la dirección:

//Import "fmt"
//import "trontool/tron"

c,_ := tron.HexKeyToCredential("7889...023a")                   //导入已有私钥
fmt.Printf("address: %s\n",c. AddressBase58())                  //显示相应地址

4.3 Dos representaciones de la dirección de Tron

En la cadena de bloques de Tron, las direcciones tienen dos representaciones: representaciones hexadecimales y base58. Por ejemplo, las siguientes son dos representaciones de la misma dirección:

  • base58 : TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx
  • Hexadecimal: 412539EF4F3EB733C105A957EEBB20FD60AD8C9A43

Los métodos de codificación y decodificación correspondientes se proporcionan en el paquete tron, que se puede convertir entre los dos formatos. P.ej:

//import "fmt"
//import "trontool/tron"

a1,_  := tron.DecodeBase58Address("TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx");
fmt.Println(a1)                  //输出:412539EF4F3EB733C105A957EEBB20FD60AD8C9A43

a2,_ := := tron.EncodeHexAddress("412539EF4F3EB733C105A957EEBB20FD60AD8C9A43")
fmt.Println(a2)                  //输出:TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx

5. Utilice TronApi

Utilice TronApiejemplos para acceder a las distintas API de nodo de Tron. TronApi agrega las API proporcionadas por múltiples nodos de Tron, como las API de los nodos completos de tron, los nodos de solidez y los nodos de servicio de eventos.

5.1 Creación de instancias de TronApi

Al crear una instancia de TronApi, puede especificar diferentes URL de conexión para diferentes tipos de nodos de Tron, por ejemplo:

//import "trontool/tron"

tronApi := tron.NewTronApi(
  "https://api.trongrid.io",       //全节点URL
  "https://api.trongrid.io",       //合约节点URL
  "https://api.trongrid.io",       //事件节点URL
)

Si está utilizando el nodo TronGrid proporcionado oficialmente por Tron, puede utilizar directamente los dos métodos proporcionados por el paquete tron ​​para acceder a la cadena principal y la cadena de prueba shasta:

  • MainNetTronApi(): Acceso a la cadena principal
  • TestNetTronApi(): Acceso a la cadena de pruebas shasta

Por ejemplo, el siguiente código es equivalente:

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 Acceso a la API de varios nodos

TronApi encapsula un subconjunto de API proporcionadas por los nodos oficiales de Tron y proporciona encapsulación de las API de uso común para acceder a la cadena de bloques de Tron.

Por ejemplo, para consultar el saldo de TRX de una cuenta específica, puede usar la getaccountinterfaz del nodo Tron , que corresponde al getAccount()método en TronApi :

//import "fmt"
//import "trontool/tron"

account,_ := tronApi.getAccount("TEgM5CPeqow...7vcBgVkD4tP")  //查询账户信息
fmt.Printf("balance: %d\n", account.Balance)                     //显示账户余额      

5.3 Ampliar TronAPi

TronApi se basa en NodeCllient para acceder a la API de nodo de Tron. Por lo tanto, si necesita ampliar TronApi para admitir más API de nodo Tron, puede consultar el código existente de TronApi y combinarlo con los datos técnicos de la API de nodo proporcionada por TRON .


Descarga oficial del kit de desarrollo Tron blockchain Go: http://sc.hubwiz.com/codebag/tron-go-lib/

Supongo que te gusta

Origin blog.csdn.net/shebao3333/article/details/107850170
Recomendado
Clasificación