GetTransactionStatus
Gets the status of a transaction, including finality and execution status.
Method Signature
func (provider *Provider) GetTransactionStatus(ctx context.Context, transactionHash *felt.Felt) (*TxnStatusResult, error)Parameters
ctx- Context for request cancellation and timeouttransactionHash- Transaction hash as a felt.Felt
Returns
*TxnStatusResult- Transaction status informationerror- Error if the request fails
Usage Example
package main
import (
"context"
"encoding/json"
"fmt"
"log"
"os"
"github.com/NethermindEth/starknet.go/rpc"
"github.com/NethermindEth/juno/core/felt"
)
func main() {
// Create RPC client
// Get RPC URL from environment variable
rpcURL := os.Getenv("STARKNET_RPC_URL")
if rpcURL == "" {
log.Fatal("STARKNET_RPC_URL not set in environment")
}
ctx := context.Background()
client, err := rpc.NewProvider(ctx, rpcURL)
if err != nil {
log.Fatal("Failed to create client:", err)
}
// Use a known successful transaction hash (invoke transaction)
txHashStr := "0x02b900ba6bfb6a7d256d34c5d3a895abbfa0805d23f80253958e101069700020"
txHash, err := new(felt.Felt).SetString(txHashStr)
if err != nil {
log.Fatal("Failed to parse transaction hash:", err)
}
// Get transaction status
status, err := client.GetTransactionStatus(ctx, txHash)
if err != nil {
log.Fatal("Failed to get transaction status:", err)
}
// Pretty print the status
statusJSON, err := json.MarshalIndent(status, "", " ")
if err != nil {
log.Fatal("Failed to marshal status:", err)
}
fmt.Printf("Transaction status:\n%s\n", statusJSON)
}Expected Output
{
"finality_status": "ACCEPTED_ON_L1",
"execution_status": "SUCCEEDED"
}This shows a successful transaction that has been accepted on L1 (fully finalized) with successful execution.
Error Handling
status, err := client.GetTransactionStatus(ctx, txHash)
if err != nil {
log.Printf("Error getting transaction status: %v", err)
return
}
fmt.Printf("Transaction status: Finality=%s, Execution=%s\n",
status.FinalityStatus, status.ExecutionStatus)
