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
//filename: go.mod
require (
// This currently points to a RC release of Protocol-23.
// Please update it to use the latest stable version once P23 is released to pubnet.
github.com/stellar/go horizonclient-v23.0.0-rc
)
Opcionalmente, puedes ejecutar go mod tidy
en tu base de código para obtener la última versión del paquete ingest.
Código auxiliar
Esta sección contiene algo de código auxiliar que se usará en todos los ejemplos.
- Go
package main
import (
"context"
"fmt"
"github.com/stellar/go/ingest/ledgerbackend"
"github.com/stellar/go/processors/token_transfer"
"github.com/stellar/go/support/log"
"github.com/stellar/go/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))
}