Go SDK
Go SDK 面向后端服务、索引器、监控工具,以及其他需要与 OXN 交互的 Go 应用。它同时提供原始 JSON-RPC 访问与加密信封构造。
安装
go get github.com/oasisprotocol/oasis-sdk/client-sdk/go@latest
或加到 go.mod:
require (
github.com/oasisprotocol/oasis-sdk/client-sdk/go v0.13.0
)
基本连接
package main
import (
"context"
"fmt"
"github.com/ethereum/go-ethereum/ethclient"
)
func main() {
ctx := context.Background()
client, err := ethclient.DialContext(ctx, "https://rpc.bout.network")
if err != nil {
panic(err)
}
chainID, _ := client.ChainID(ctx)
fmt.Println("Chain ID:", chainID)
}
标准 go-ethereum 客户端对明文数据的只读操作有效。
发送加密交易
加密交易用 OXN Go 客户端 SDK 的 wrapper(具体包路径随版本变化)。模式:
- 从网络拉 enclave 公钥。
- 生成临时 X25519 密钥对。
- 用派生共享密钥的 Deoxys-II 加密 calldata。
- 封装到 CBOR 信封。
- 签名并按标准以太坊交易发送,
Data = envelope。
当前 wrapper API 参见 OXN Go SDK 的 readme。撰写时 Go SDK 暴露的辅助函数与 TypeScript wrapper 类似。
用例
代表用户操作的后端服务。 后端按用户请求签名交易。用类似 ethers 的 Go 签名模式。
索引器。 读链状态发出派生视图的服务。OXN 上,通用索引器只看到公开元数据(from / to / gas / hash)——加密合约状态对没有调用者会话密钥的索引器不可见。
交易机器人。 监视机会并提交交易的机器人。OXN 上 MEV 策略受限(calldata 加密);主要用例是明文(非机密)价格的套利。
监控 / 告警。 监视交易状态、gas 使用、验证人行为的服务。用标准 Go 工具链。
地址处理
Go SDK 提供原生(oxn1…)与 EVM(0x…)两种格式的辅助方法:
// 公钥的 Bech32 编码
nativeAddr, _ := oasis.NewNativeAddressFromPubkey(pubkey)
// 标准以太坊地址
evmAddr := crypto.PubkeyToAddress(pubkey)
测试
标准 Go 测试模式适用。集成测试打真实 OXN 端点,与 TypeScript 测试一样:
func TestSomeIntegration(t *testing.T) {
if testing.Short() {
t.Skip("integration test")
}
// 连 OXN 测试网、走加密路径
}
下一步
- Rust SDK——更高性能后端
- JSON-RPC API——原始协议参考