GetMessagesStatus
Gets the status of messages sent from Ethereum (L1) to Starknet (L2) by a specific L1 transaction.
Note: This method will be renamed to MessagesStatus in a future version to align with the Starknet RPC specification.
Method Signature
func (provider *Provider) GetMessagesStatus(ctx context.Context, transactionHash NumAsHex) ([]MessageStatus, error)Parameters
ctx- Context for request cancellation and timeouttransactionHash- The Ethereum (L1) transaction hash that sent messages to Starknet
Returns
[]MessageStatus- Array of message status informationerror- Error if the request fails
Usage Example
package main
import (
"context"
"encoding/json"
"fmt"
"log"
"os"
"github.com/NethermindEth/starknet.go/rpc"
)
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)
}
// Note: This requires an L1 Ethereum transaction hash that sent messages to Starknet
// Most regular Starknet transactions don't have associated L1 messages
// Using a placeholder - you'd need a real L1->L2 message transaction (e.g., from StarkGate bridge)
l1TxHashStr := "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
// Convert to NumAsHex
var l1TxHash rpc.NumAsHex
l1TxHash = rpc.NumAsHex(l1TxHashStr)
// Get messages status
messagesStatus, err := client.GetMessagesStatus(ctx, l1TxHash)
if err != nil {
fmt.Printf("GetMessagesStatus error: %v\n", err)
fmt.Println("\nNote: MessagesStatus is for L1->L2 messaging.")
fmt.Println("It requires an Ethereum transaction hash that sent messages to Starknet.")
fmt.Println("Regular Starknet transactions will return an error.")
return
}
// Pretty print the result (only reached with valid L1->L2 message transaction)
statusJSON, err := json.MarshalIndent(messagesStatus, "", " ")
if err != nil {
log.Fatal("Failed to marshal status:", err)
}
fmt.Printf("Messages status:\n%s\n", statusJSON)
}Expected Output
GetMessagesStatus error: 29 Transaction hash not found
Note: MessagesStatus is for L1->L2 messaging.
It requires an Ethereum transaction hash that sent messages to Starknet.
Regular Starknet transactions will return an error.Error Handling
messagesStatus, err := client.GetMessagesStatus(ctx, l1TxHash)
if err != nil {
// Handle error - likely "Transaction hash not found" if not an L1->L2 message
return err
}
