Ejemplos de uso
Esta sección contiene ejemplos de cómo puede usarse Token Transfer Processor en la lógica de tu aplicación
Requisitos previos
Tienes un módulo go existente en el directorio actual o crea un nuevo módulo localmente para este ejercicio de ejemplo.
go mod init example/ttp_processor
Incluye el SDK de Stellar Ingest en el módulo de tu aplicación Go que contiene el Procesador de Transferencias de Token.
go get github.com/stellar/go-stellar-sdk@latest
go mod tidy
Código auxiliar
Esta sección contiene algo de código auxiliar que se usará en todos los ejemplos.
package main
import (
"context"
"fmt"
"github.com/stellar/go-stellar-sdk/ingest/ledgerbackend"
"github.com/stellar/go-stellar-sdk/processors/token_transfer"
"github.com/stellar/go-stellar-sdk/support/log"
"github.com/stellar/go-stellar-sdk/xdr"
"google.golang.org/protobuf/encoding/protojson"
)
func panicIf(err error) {
if err != nil {
panic(err)
}
}
// fetchLedgerFromRPC retrieves a ledger using RPCLedgerBackend
func fetchLedgerFromRPC(ledgerSeq uint32) xdr.LedgerCloseMeta {
ctx := context.Background()
// Using a publicly hosted RPC instance
endpoint := "https://mainnet.sorobanrpc.com"
// Configure the RPC Ledger Backend
backend := ledgerbackend.NewRPCLedgerBackend(ledgerbackend.RPCLedgerBackendOptions{
RPCServerURL: endpoint,
})
defer backend.Close()
// Prepare an unbounded range starting from the latest ledger
if err := backend.PrepareRange(ctx, ledgerbackend.BoundedRange(ledgerSeq, ledgerSeq)); err != nil {
log.Fatalf("Failed to prepare range: %v", err)
}
ledger, err := backend.GetLedger(ctx, ledgerSeq)
panicIf(err)
return ledger
}
func printProtoEvent(event *token_transfer.TokenTransferEvent) {
jsonBytes, _ := protojson.MarshalOptions{
Multiline: true,
EmitDefaultValues: true,
Indent: " ",
}.Marshal(event)
fmt.Printf("### Event Type : %v\n", event.GetEventType())
fmt.Println(string(jsonBytes))
}