本文档详细介绍了 OKTC 区块链的 Go SDK,它提供了一系列功能模块,帮助开发者轻松实现账户管理、资产转移、质押投票、交易所以及链上治理等丰富的区块链操作。无论是新手还是资深开发者,都能通过本指南快速上手并构建强大的去中心化应用。
核心工具函数 (Utils)
工具函数集中于 exchain-go-sdk/utils 包内,为其他高级操作提供基础支持。
账户管理功能
创建随机密钥信息
通过指定的账户名称和密码,生成一套随机的密钥对(私钥、公钥和地址)。这是创建新账户的起点。
输入参数:
name: 账户名称 (string)passWd: 账户密码 (string)
通过助记词创建密钥信息
如果你已有一个助记词,可以使用此函数结合名称和密码,恢复或创建对应的密钥信息。
输入参数:
name: 账户名称 (string)passWd: 账户密码 (string)mnemonic: 助记词 (string)
通过私钥字符串创建密钥信息
直接使用现有的私钥字符串,为其设置名称和密码,生成完整的密钥信息对象。
输入参数:
name: 账户名称 (string)passWd: 账户密码 (string)privateKey: 账户私钥字符串 (string)
生成随机助记词
生成一组新的、随机的助记词,用于创建或恢复账户。
从助记词生成私钥
提供助记词,即可推导出对应的私钥。
输入参数:
mnemonic: 助记词 (string)
令牌工具函数
解析多重发送信息字符串
将特定格式的多重转账字符串解析为程序可处理的 TransferUnit 数组,为批量转账做准备。
输入参数:
str: 转账信息字符串,例如"addr1 1okt\naddr2 2okt"(string)
订单工具函数
从交易响应中过滤订单ID
在执行下单交易后,从返回的交易响应日志中提取出生成的订单ID。
输入参数:
txResp: 下单交易的响应对象指针 (*sdk.TxResponse)
认证模块 (Auth)
认证模块 (exchain-go-sdk/module/auth) 主要负责账户相关的查询操作。
查询操作
获取账户信息
根据账户的 bech32 编码地址,查询其在链上的详细状态信息,如账户编号、序列号等。
输入参数:
accAddrStr: bech32 编码的账户地址 (string)
令牌模块 (Token)
令牌模块 (exchain-go-sdk/module/token) 处理所有关于同质化代币的查询和交易。
查询操作
获取代币信息
根据代币符号或其创建者的地址,查询特定代币的详细信息,如总供应量、精度等。
输入参数:
ownerAddr: 代币创建者地址 (string)symbol: 代币符号 (string)
交易操作
转账代币
向另一个接收者地址转移指定数量的代币。
输入参数:
fromInfo: 发送方密钥信息 (keys.Info)passWd: 发送方密码 (string)memo: 交易备注 (string)accNum: 发送方链上账户编号 (uint64)seqNum: 发送方链上序列号 (uint64)toAddrStr: 接收方 bech32 地址 (string)coinsStr: 转账金额,例如"1024.1024okt"(string)
批量转账
一次性向多个接收者进行转账操作,提升效率。
输入参数:
transfers: 接收者与金额的数据结构集合 ([]types.TransferUnit)。可使用工具函数1.2.1构建。
发行新代币
在区块链上创建一种新的代币。
输入参数:
orgSymbol: 新代币的符号 (string)wholeName: 新代币的全称 (string)totalSupply: 新代币的总供应量 (string)tokenDesc: 代币描述 (string)mintable: 该代币是否可增发 (bool)
增发代币
作为代币所有者,增加该代币的总供应量。
输入参数:
coinsStr: 增发的金额,例如"1024.1024okt"(string)
销毁代币
通过燃烧自己持有的代币,减少该代币的总供应量。
输入参数:
coinsStr: 要销毁的金额,例如"1024.1024okt"(string)
修改代币信息
修改已发行代币的描述信息或全称。
输入参数:
symbol: 要修改的代币符号 (string)description: 新的代币描述 (string)wholeName: 新的代币全称 (string)isDescEdit: 是否修改描述 (bool)isWholeNameEdit: 是否修改全称 (bool)
👉 查看实时链上工具
质押模块 (Staking)
质押模块 (exchain-go-sdk/module/staking) 用于处理验证人、委托和代理相关的所有操作。
查询操作
获取所有验证人信息
查询网络中所有验证人的列表及其状态。
获取特定验证人信息
根据验证人操作地址查询其详细信息。
输入参数:
valAddrStr: bech32 编码的验证人地址 (string)
获取委托者详情信息
查询某个委托者的质押详情,包括其委托的验证人和份额。
输入参数:
delAddrStr: bech32 编码的委托者地址 (string)
交易操作
创建验证人
将账户注册为新的验证人节点,参与网络共识。
输入参数:
pubkeyStr: bech32 编码的验证人公钥 (string)moniker: 验证人名称 (string)identity: 验证人身份标识 (string)website: 验证人网站 (string)details: 验证人详细说明 (string)
编辑验证人描述信息
修改验证人的元数据信息。
输入参数:
moniker: 新的验证人名称 (string)identity: 新的身份标识 (string)website: 新的网站链接 (string)details: 新的详细说明 (string)
注销验证人
将验证人节点从网络中注销,并取回最小自质押金额。
质押代币
将 OKT 代币质押到委托账户,用于参与投票或委托。
输入参数:
coinsStr: 质押金额,例如"1024.1024okt"(string)
取回质押代币
从所有验证人处取回指定数量的质押代币及对应的份额。
输入参数:
coinsStr: 要取回的金额,例如"1024.1024okt"(string)
增加委托份额
向特定的一个或多个验证人增加委托份额。
输入参数:
valAddrsStr: 目标验证人地址集合 ([]string)
注册代理身份
将账户注册为代理,可以接收他人的投票委托。
注销代理身份
取消账户的代理身份。
绑定质押代币到代理
将质押的代币及其投票权委托给一个代理账户。
输入参数:
proxyAddrStr: 代理人的 bech32 地址 (string)
从代理解绑质押代币
取消对代理账户的委托,收回投票权。
常见问题 (FAQ)
Q: Go SDK 的主要用途是什么?
A: OKTC 的 Go SDK 为开发者提供了一套完整的工具包,用于与 OKTC 区块链进行交互。你可以用它来创建和管理账户、转移和发行资产、进行质押和投票、在去中心化交易所交易以及参与链上治理等。
Q: 如何开始使用 Go SDK 进行开发?
A: 首先需要配置 Go 开发环境,然后通过 go get 命令导入 SDK 库。从 GitHub 仓库获取示例代码是学习的最佳起点。核心是使用正确的模块路径(如 exchain-go-sdk/module/auth)来调用各类函数。
Q: 在进行交易时,accNum 和 seqNum 参数如何获取?
A: accNum(账户编号)和 seqNum(序列号)是防止重放攻击的关键参数。你需要先通过认证模块的查询接口 (Auth) 获取目标账户的当前信息。每次成功发送交易后,该账户的 seqNum 会自动递增。
Q: 如何处理交易中的金额字符串格式?
A: 金额字符串需要同时包含数量和代币符号,格式为 "数量符号",例如 "100.5okt"。请确保代币符号正确,且数量是有效的数字格式。
Q: 批量转账中的 TransferUnit 该如何构造?
A: 你可以直接构建 TransferUnit 结构体数组,也可以利用 SDK 工具函数 utils.ParseTransfersStr 将特定格式的字符串(如 "地址1 金额1\n地址2 金额2")解析为所需的数组结构,简化操作。
Q: 下单后如何确认订单是否成功?
A: 下单交易成功后,返回的 TxResponse 的日志中包含了生成的订单ID。建议使用订单工具函数 orderUtils.FilterOrderIDs 从响应中提取这些ID,然后使用订单查询接口根据订单ID查询其详细状态。