Skip to main content
The Go SDK is designed for server-side/backend applications. It handles request signing and provides typed access to the Dfns API. You can find the repository here.

Installation

go get github.com/dfns/dfns-sdk-go/v2

Quick start

1. Read-only operations

For read-only operations (listing wallets, fetching balances, etc.), you only need an auth token:
package main

import (
    "context"
    "fmt"
    "log"

    dfns "github.com/dfns/dfns-sdk-go/v2"
)

func main() {
    client, err := dfns.NewClient(dfns.Options{
        AuthToken: "your-auth-token",
    })
    if err != nil {
        log.Fatal(err)
    }

    wallets, err := client.Wallets.ListWallets(context.Background(), nil)
    if err != nil {
        log.Fatal(err)
    }
    for _, w := range wallets.Items {
        address := ""
        if w.Address != nil {
            address = *w.Address
        }
        fmt.Printf("%s: %s %s\n", w.ID, w.Network, address)
    }
}
For a quick test you can get your login token (short-lived) from the Dfns Dashboard under Settings > Personal Access Tokens.

2. Signing requests

State-changing operations (creating wallets, signing transactions, etc.) require cryptographic request signing:
package main

import (
    "context"
    "fmt"
    "log"
    "os"

    dfns "github.com/dfns/dfns-sdk-go/v2"
    "github.com/dfns/dfns-sdk-go/v2/signer"
    "github.com/dfns/dfns-sdk-go/v2/wallets"
)

func main() {
    privateKeyPEM, err := os.ReadFile("private_key.pem")
    if err != nil {
        log.Fatal(err)
    }

    keySigner, err := signer.NewKeySigner(
        "cr-...",                  // credential ID
        string(privateKeyPEM),     // PEM-encoded private key
    )
    if err != nil {
        log.Fatal(err)
    }

    client, err := dfns.NewClient(dfns.Options{
        AuthToken: "your-auth-token",
        Signer:    keySigner,
    })
    if err != nil {
        log.Fatal(err)
    }

    wallet, err := client.Wallets.CreateWallet(context.Background(), wallets.CreateWalletRequest{
        Network: "EthereumSepolia",
    })
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("Created wallet: %s\n", wallet.ID)
}

Next steps

Last modified on March 13, 2026