Skip to content

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 timeout
  • transactionHash - Transaction hash as a felt.Felt

Returns

  • *TxnStatusResult - Transaction status information
  • error - 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)