Skip to content

Client Examples

The client examples submodule provides examples of how to use the Starknet client.

Basic Examples

Creating a Client

package main
 
import (
    "fmt"
    "log"
    "time"
 
    "github.com/NethermindEth/starknet.go/client"
)
 
func main() {
    // Create a new client
    config := client.ClientConfig{
        NodeURL: "https://your-node-url",
        ChainID: "SN_MAIN",
        Timeout: 30 * time.Second,
    }
 
    client, err := client.NewClient(config)
    if err != nil {
        log.Fatal(err)
    }
 
    // Get the latest block
    block, err := client.GetLatestBlock()
    if err != nil {
        log.Fatal(err)
    }
 
    fmt.Printf("Latest block number: %d\n", block.Number)
}

Getting a Block

package main
 
import (
    "fmt"
    "log"
 
    "github.com/NethermindEth/starknet.go/client"
)
 
func main() {
    // Create a new client
    client, err := client.NewClient(client.ClientConfig{
        NodeURL: "https://your-node-url",
        ChainID: "SN_MAIN",
    })
    if err != nil {
        log.Fatal(err)
    }
 
    // Get a block by number
    block, err := client.GetBlockByNumber(1)
    if err != nil {
        log.Fatal(err)
    }
 
    fmt.Printf("Block hash: %s\n", block.Hash)
    fmt.Printf("Block number: %d\n", block.Number)
    fmt.Printf("Block timestamp: %d\n", block.Timestamp)
}

Getting a Transaction

package main
 
import (
    "fmt"
    "log"
 
    "github.com/NethermindEth/starknet.go/client"
)
 
func main() {
    // Create a new client
    client, err := client.NewClient(client.ClientConfig{
        NodeURL: "https://your-node-url",
        ChainID: "SN_MAIN",
    })
    if err != nil {
        log.Fatal(err)
    }
 
    // Get a transaction by hash
    tx, err := client.GetTransactionByHash("0x123...")
    if err != nil {
        log.Fatal(err)
    }
 
    fmt.Printf("Transaction type: %s\n", tx.Type)
    fmt.Printf("Transaction status: %s\n", tx.Status)
    fmt.Printf("Transaction hash: %s\n", tx.Hash)
}

Advanced Examples

Sending a Transaction

package main
 
import (
    "fmt"
    "log"
 
    "github.com/NethermindEth/starknet.go/client"
)
 
func main() {
    // Create a new client
    client, err := client.NewClient(client.ClientConfig{
        NodeURL: "https://your-node-url",
        ChainID: "SN_MAIN",
    })
    if err != nil {
        log.Fatal(err)
    }
 
    // Create a transaction
    tx := client.NewTransaction(
        "0x456...", // contract address
        "0x789...", // entry point selector
        []string{"0xabc..."}, // calldata
        "1000000000000000", // max fee
        "0x1", // version
        "0x1", // nonce
    )
 
    // Send the transaction
    txHash, err := client.SendTransaction(tx)
    if err != nil {
        log.Fatal(err)
    }
 
    fmt.Printf("Transaction sent with hash: %s\n", txHash)
}

Calling a Contract

package main
 
import (
    "fmt"
    "log"
 
    "github.com/NethermindEth/starknet.go/client"
)
 
func main() {
    // Create a new client
    client, err := client.NewClient(client.ClientConfig{
        NodeURL: "https://your-node-url",
        ChainID: "SN_MAIN",
    })
    if err != nil {
        log.Fatal(err)
    }
 
    // Call a contract
    result, err := client.CallContract(
        "0x456...", // contract address
        "0x789...", // entry point selector
        []string{"0xabc..."}, // calldata
    )
    if err != nil {
        log.Fatal(err)
    }
 
    fmt.Printf("Call result: %s\n", result)
}