Go SDK API Reference
The Go SDK package is github.com/layer-3/nitrolite/sdk/go. It wraps Nitronode v1 RPC methods and ChannelHub settlement helpers in typed Go methods.
App-Builder Methods
These are the methods most builders use in normal applications.
Channel State
client.Deposit(ctx, blockchainID, asset, amount) // (*core.State, error)
client.Withdraw(ctx, blockchainID, asset, amount) // (*core.State, error)
client.Transfer(ctx, recipientWallet, asset, amount) // (*core.State, error)
client.CloseHomeChannel(ctx, asset) // (*core.State, error)
client.Acknowledge(ctx, asset) // (*core.State, error)
Use Checkpoint when the latest prepared state needs on-chain settlement.
Settlement
client.Checkpoint(ctx, asset) // (string, error)
client.Challenge(ctx, state) // (string, error)
client.ApproveToken(ctx, chainID, asset, amount) // (string, error)
client.GetOnChainBalance(ctx, chainID, asset, wallet) // (decimal.Decimal, error)
Checkpoint routes by transition type and channel status:
| Latest state | Effect |
|---|---|
| Void channel plus deposit state | Creates the channel and locks funds. |
| Deposit or withdrawal state | Checkpoints and applies the fund movement. |
| Finalize state | Closes the channel. |
Node and Asset Discovery
client.Ping(ctx)
client.GetConfig(ctx)
client.GetBlockchains(ctx)
client.GetAssets(ctx, &blockchainID)
client.SetHomeBlockchain(asset, chainID)
User and Channel Queries
client.GetBalances(ctx, wallet)
client.GetTransactions(ctx, wallet, opts)
client.GetHomeChannel(ctx, wallet, asset)
client.GetEscrowChannel(ctx, escrowChannelID)
client.GetLatestState(ctx, wallet, asset, onlySigned)
GetEscrowChannel is a query helper. Escrow operation guides are not public app-builder docs yet.
App Registry and Sessions
apps, meta, err := client.GetApps(ctx, &sdk.GetAppsOptions{
AppID: &appID,
OwnerWallet: &wallet,
})
err := client.RegisterApp(ctx, "my-app", `{"name":"My App"}`, false)
sessions, meta, err := client.GetAppSessions(ctx, opts)
def, err := client.GetAppDefinition(ctx, appSessionID)
sessionID, version, status, err := client.CreateAppSession(ctx, def, data, sigs)
nodeSig, err := client.SubmitAppSessionDeposit(ctx, update, sigs, asset, amount)
err := client.SubmitAppState(ctx, update, sigs)
batchID, err := client.RebalanceAppSessions(ctx, signedUpdates)
Apps are responsible for collecting quorum signatures before calling CreateAppSession, SubmitAppSessionDeposit, or SubmitAppState.
Session Keys
App Sessions
state := app.AppSessionKeyStateV1{
UserAddress: client.GetUserAddress(),
SessionKey: "0xSessionKey...",
Version: 1,
ApplicationIDs: []string{"app1"},
AppSessionIDs: []string{},
ExpiresAt: time.Now().Add(24 * time.Hour),
}
sig, err := client.SignSessionKeyState(state)
state.UserSig = sig
err = client.SubmitAppSessionKeyState(ctx, state)
states, err := client.GetLastAppKeyStates(ctx, userAddress, nil)
Channels
state := core.ChannelSessionKeyStateV1{
UserAddress: client.GetUserAddress(),
SessionKey: "0xSessionKey...",
Version: 1,
Assets: []string{"yellow"},
ExpiresAt: time.Now().Add(24 * time.Hour),
}
sig, err := client.SignChannelSessionKeyState(state)
state.UserSig = sig
err = client.SubmitChannelSessionKeyState(ctx, state)
states, err := client.GetLastChannelKeyStates(ctx, userAddress, nil)
Utilities
client.Close()
client.WaitCh()
client.SignState(state)
client.GetUserAddress()
Common Types
core.State
core.Channel
core.Transition
core.Transaction
core.Asset
core.Blockchain
core.ChannelSessionKeyStateV1
app.AppV1
app.AppInfoV1
app.AppSessionInfoV1
app.AppDefinitionV1
app.AppStateUpdateV1
app.AppSessionKeyStateV1