Skip to main content
即刻安装 Cobo WaaS Skill,在 Claude Code、Cursor 等 AI 开发环境中使用自然语言集成 WaaS API,显著提升开发效率 🚀

概述

本指南介绍如何开始使用 Cobo WaaS 2.0 Go SDK,它允许您使用 Go 编程语言将 WaaS 服务集成到您的现有 App 中。 要了解使用 WaaS API 所需的初始设置步骤,请参阅发送您的第一个 API 请求 您可以访问 GitHub 查看 SDK 的源代码。

前提条件

安装 SDK

  1. 如果您还没有,请创建一个 Go 项目。
  2. 在您项目的 go.mod 文件中,添加以下行:
    require github.com/CoboGlobal/cobo-waas2-go-sdk {VERSION}
    
    将 {VERSION} 替换为最新版本号,例如 v1.2.0。从 GitHub 仓库获取最新版本号。
  3. 在终端或您的 IDE 中运行 go mod tidy 命令以安装依赖项。
  4. 在您的 main.go 文件中,按如下方式导入 WaaS SDK:
    import (
        ...
        coboWaas2 "github.com/CoboGlobal/cobo-waas2-go-sdk/cobo_waas2"
        ...
    )
    

配置 API Key 和 HTTP Host

在您的 main.go 文件的主函数中,通过选择环境来配置 HTTP Host并提供您的 API Secret。 以下代码片段显示了开发环境的配置。
// 选择您使用的环境并注释掉另一行代码
ctx = context.WithValue(ctx, coboWaas2.ContextEnv, coboWaas2.DevEnv)
// ctx = context.WithValue(ctx, coboWaas2.ContextEnv, coboWaas2.ProdEnv)
ctx = context.WithValue(ctx, coboWaas2.ContextPortalSigner, crypto.Ed25519Signer{
    // 将 `<YOUR_API_SECRET>` 替换为您的 API Secret。
    Secret: "<YOUR_API_SECRET>",
})

示例代码

API 操作级别的文档和示例代码请参照 WaaS SDK GitHub 仓库内的 docs 文件夹。

列出支持的链

package main

import (
	"context"
	"encoding/json"
	"fmt"
	"os"

	coboWaas2 "github.com/CoboGlobal/cobo-waas2-go-sdk/cobo_waas2"
	"github.com/CoboGlobal/cobo-waas2-go-sdk/cobo_waas2/crypto"
)

func main() {

	// 指定钱包类型为全托管钱包。
	walletType := coboWaas2.WalletType("Custodial")
	// walletType, err := coboWaas2.NewWalletTypeFromValue("Custodial")

	// 指定钱包子类型为资产钱包。
	walletSubtype := coboWaas2.WalletSubtype("Asset")
	// walletSubType, err := coboWaas2.NewWalletSubtypeFromValue("Asset")

	// 使用分页参数如果需要
	limit := int32(10)
	before := ""
	after := ""

	configuration := coboWaas2.NewConfiguration()
	apiClient := coboWaas2.NewAPIClient(configuration)
	ctx := context.Background()
	// 选择您使用的环境并注释掉另一行代码。
	ctx = context.WithValue(ctx, coboWaas2.ContextEnv, coboWaas2.DevEnv)
	// ctx = context.WithValue(ctx, coboWaas2.ContextEnv, coboWaas2.ProdEnv)
	ctx = context.WithValue(ctx, coboWaas2.ContextPortalSigner, crypto.Ed25519Signer{
		// 将 `<YOUR_API_SECRET>` 替换为您的 API Secret。
		Secret: "<YOUR_API_SECRET>",
	})
	// 调用列出支持的链操作。
	req := apiClient.WalletsAPI.ListSupportedChains(ctx).WalletType(walletType).WalletSubtype(walletSubtype)
	if limit > 0 {
		req = req.Limit(limit)
	}
	if before != "" {
		req = req.Before(before)
	}
	if after != "" {
		req = req.After(after)
	}
	resp, r, err := req.Execute()
	if err != nil {
		fmt.Fprintf(os.Stderr, "Error when calling `WalletsAPI.ListSupportedChains``: %v\n", err)
		if apiErr, ok := err.(*coboWaas2.GenericOpenAPIError); ok {
			fmt.Fprintf(os.Stderr, "Error response: %s\n", string(apiErr.Body()))
		}
		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
	}
	// 处理来自 `ListSupportedChains` 的响应。
	respJson, _ := json.MarshalIndent(resp, "", " ")
	fmt.Fprintf(os.Stdout, "Response from `WalletsAPI.ListSupportedChains`: \n%s", string(respJson))
}

创建钱包

package main

import (
	"context"
	"encoding/json"
	"fmt"
	"os"

	coboWaas2 "github.com/CoboGlobal/cobo-waas2-go-sdk/cobo_waas2"
	"github.com/CoboGlobal/cobo-waas2-go-sdk/cobo_waas2/crypto"
)

func main() {
	// 指定要创建的钱包类型为全托管钱包。
	walletType, err := coboWaas2.NewWalletTypeFromValue("Custodial")
	if err != nil {
		fmt.Fprintf(os.Stderr, "Error when new `WalletType``: %v\n", err)
		return
	}
	// 指定要创建的钱包子类型为资产钱包。
	walletSubType, err := coboWaas2.NewWalletSubtypeFromValue("Asset")
	if err != nil {
		fmt.Fprintf(os.Stderr, "Error when new `WalletSubType``: %v\n", err)
		return
	}
	createWalletParams := coboWaas2.CreateWalletParams{
		CreateCustodialWalletParams: coboWaas2.NewCreateCustodialWalletParams(
			// 指定要创建的钱包名称。
			"我的 WaaS 2.0 钱包",
			*walletType,
			*walletSubType,
		)} 

	configuration := coboWaas2.NewConfiguration()
	apiClient := coboWaas2.NewAPIClient(configuration)
	ctx := context.Background()
	// 选择您使用的环境并注释掉另一行代码。
	ctx = context.WithValue(ctx, coboWaas2.ContextEnv, coboWaas2.DevEnv)
	// ctx = context.WithValue(ctx, coboWaas2.ContextEnv, coboWaas2.ProdEnv)
	ctx = context.WithValue(ctx, coboWaas2.ContextPortalSigner, crypto.Ed25519Signer{
		// 将 `<YOUR_API_SECRET>` 替换为您的 API Secret。
		Secret: "<YOUR_API_SECRET>",
	})
	// 调用创建钱包操作。
	resp, r, err := apiClient.WalletsAPI.CreateWallet(ctx).CreateWalletParams(createWalletParams).Execute()
	if err != nil {
		fmt.Fprintf(os.Stderr, "Error when calling `WalletsAPI.CreateWallet``: %v\n", err)
		if apiErr, ok := err.(*coboWaas2.GenericOpenAPIError); ok {
			fmt.Fprintf(os.Stderr, "Error response: %s\n", string(apiErr.Body()))
		}
		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
		return
	}
	// 处理来自 `CreateWallet` 的响应。
	respJson, _ := json.MarshalIndent(resp.GetActualInstance(), "", " ")
	fmt.Fprintf(os.Stdout, "Response from `WalletsAPI.CreateWallet`: \n%s", string(respJson))
}