跳到主要内容

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(具体包路径随版本变化)。模式:

  1. 从网络拉 enclave 公钥。
  2. 生成临时 X25519 密钥对。
  3. 用派生共享密钥的 Deoxys-II 加密 calldata。
  4. 封装到 CBOR 信封。
  5. 签名并按标准以太坊交易发送,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 测试网、走加密路径
}

下一步