Documentation Index
Fetch the complete documentation index at: https://docs.dfns.co/llms.txt
Use this file to discover all available pages before exploring further.
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