Avata 帮助文档-测试
  1. 底层链 SDK 文档
Avata 帮助文档-测试
  • Avata 平台文档
    • 平台介绍
      • 平台简介
      • 核心功能
      • 基础术语
      • 平台服务
        • 文昌链极速网
        • 文昌链存证服务
        • 文昌链域名服务
        • 第三方支付服务
    • 用户指南
      • 接入流程
      • AVATA API 接入说明
      • AVATA API 最佳实践
      • 费用说明
    • 常见问题
      • AVATA 平台 NFT 元数据规范
      • Avata 测试项目如何充值能量值
      • Avata 技术社区使用指南
      • 原生 NFT 和原生 MT 区别
      • operation_id 的作用
      • AVATA API & 底层链 SDK 如何选择
      • 如何开具发票
      • 申请平台合作协议
      • 网信办备案填报指南
      • 变更认证主体流程说明
      • 更多问题 >>
  • AVATA API 文档
    • AVATA API 文档
      • 接入说明
        • 网关鉴权签名示例
        • 交易结果异步回调通知
      • AVATA v3 API 文档
        • API 版本简介
        • 链账户接口
          • 创建链账户
          • 批量创建链账户
          • 查询链账户
        • 原生模块
          • 关于原生模块
          • NFT 接口
            • 创建 NFT 类别
            • 转让 NFT 类别
            • 查询 NFT 类别
            • 查询 NFT 类别详情
            • 发行 NFT
            • 转让 NFT
            • 编辑 NFT
            • 销毁 NFT
            • 查询 NFT
            • 查询 NFT 详情
            • 查询 NFT 操作记录
          • MT 接口
            • 创建 MT 类别
            • 查询 MT 类别
            • 查询 MT 类别详情
            • 转让 MT 类别
            • 发行 MT
            • 增发 MT
            • 转让 MT
            • 编辑 MT
            • 销毁 MT
            • 查询 MT
            • 查询 MT 详情
            • 查询 MT 操作记录
            • 查询 MT 余额
          • 区块链存证接口
            • 数字作品存证接口
          • 查询链账户操作记录
          • 查询上链交易结果
          • 查询枚举值列表
        • 智能合约模块
          • 关于智能合约模块
          • NFT 接口
            • 创建 NFT 类别
            • 转让 NFT 类别
            • 查询 NFT 类别
            • 查询 NFT 类别详情
            • 发行 NFT
            • 转让 NFT
            • 编辑 NFT
            • 销毁 NFT
            • 查询 NFT
            • 查询 NFT 详情
            • 查询 NFT 操作记录
          • 合约服务接口
            • Avata API 合约服务使用说明
            • 调用合约
            • 查询合约
          • Web3 域名服务接口
            • 注册域名
            • 转让域名
            • 查询域名
            • 查询用户域名
            • 设置域名解析
            • 查询域名解析
            • 设置域名反向解析
            • 查询域名反向解析
            • 续购域名
          • 查询链账户操作记录
          • 查询上链交易结果
          • 查询枚举值列表
        • 购买能量值接口
          • 购买能量值
          • 批量购买能量值
          • 查询能量值购买结果
          • 查询能量值购买结果列表
        • 钱包服务接口
          • 创建钱包用户
          • 更新钱包用户
          • 查询钱包用户信息
          • 认证钱包用户
      • AVATA v2 API 文档
        • API 版本简介
        • 链账户接口
          • 创建链账户
          • 批量创建链账户
          • 查询链账户
          • 查询链账户操作记录
        • NFT 接口
          • NFT/MT 元数据规范
          • 创建NFT类别
          • 查询NFT类别
          • 查询NFT类别详情
          • 转让NFT类别
          • 发行 NFT
          • 转让 NFT
          • 编辑 NFT
          • 销毁 NFT
          • 查询 NFT
          • 查询 NFT 详情
          • 查询 NFT 操作记录
        • web3域名服务接口
          • 注册域名
          • 转让域名
          • 查询域名
          • 查询用户域名
        • 合约服务接口
          • Avata API 合约服务使用说明
          • 调用合约
          • 查询合约
        • 购买能量值接口
          • 购买能量值
          • 批量购买能量值
          • 查询能量值购买结果
          • 查询能量值购买结果列表
        • 区块链存证接口
          • 数字作品存证接口
        • 钱包服务接口
          • 创建钱包用户
          • 更新钱包用户
          • 查询钱包用户信息
          • 认证钱包用户
        • 查询交易结果接口
          • 查询上链交易结果
      • AVATA v1 API 文档
        • API 版本简介
        • 链账户接口
          • 创建链账户
          • 批量创建链账户
          • 查询链账户
          • 查询链账户操作记录
        • NFT 接口
          • 创建 NFT 类别
          • 查询 NFT 类别
          • 查询 NFT 类别详情
          • 转让 NFT 类别
          • 发行 NFT
          • 转让 NFT
          • 编辑 NFT
          • 销毁 NFT
          • 批量发行 NFT
          • 批量转让 NFT
          • 批量编辑 NFT
          • 批量销毁 NFT
          • 查询 NFT
          • 查询 NFT 详情
          • 查询 NFT 操作记录
        • MT 接口
          • 创建 MT 类别
          • 查询 MT 类别
          • 查询 MT 类别详情
          • 转让 MT 类别
          • 增发 MT
          • 发行 MT
          • 转让 MT
          • 编辑 MT
          • 销毁 MT
          • 查询 MT
          • 查询 MT 操作记录
          • 查询 MT 余额
          • 查询 MT 详情
        • 区块链存证接口
          • 数字作品存证接口
        • 购买能量值接口
          • 购买能量值
          • 批量购买能量值
          • 查询能量值购买结果
          • 查询能量值购买结果列表
        • 查询交易结果接口
          • 查询上链交易结果
          • 查询上链交易排队状态
  • AVATA SDK 文档
    • AVATA SDK 文档
      • AVATA v3 SDK 文档
        • Go 语言
        • JAVA 语言
      • AVATA v1 SDK 文档
        • Go 语言
        • JAVA 语言
        • PHP 语言
  • 底层链 SDK 文档
    • 底层链 SDK 文档
      • 底层链介绍
      • 底层链 API 接入说明
      • Go 语言接入教程
      • JAVA 语言接入教程
      • 文昌链最佳实践建议
  1. 底层链 SDK 文档

Go 语言接入教程

1. 引入依赖#

replace (
	github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.2-alpha.regen.4
	github.com/tendermint/tendermint => github.com/bianjieai/tendermint v0.34.1-irita-210113
	github.com/prometheus/common => github.com/prometheus/common v0.26.0
)

require (
	github.com/irisnet/core-sdk-go v0.0.0-20220720085949-4d825adb8054
	github.com/irisnet/irismod-sdk-go v0.0.0-20220825063058-6bf8e60b42c8
	github.com/bianjieai/iritamod-sdk-go v0.0.0-20220708032705-9e8e301da3a8
	github.com/stretchr/testify v1.7.0
	google.golang.org/grpc v1.40.0
)

2. 下载demo项目#

下载链接:opb-sdk-go
提示
以上 1 和 2 任选一个即可
推荐直接引入依赖的方式。

3. 接入信息配置#

1.
测试链配置
var (
	wsAddress   = ""
	rpcAddress  = "http://testnet.bianjie.ai:26657"
	grpcAddress = "testnet.bianjie.ai:9090"
	chainID     = "testing"
	tlsServiceName = "grpcs.testnet.bianjie.ai"

	algo             = "sm2"
	projectId        = "TestProjectID"
	projectKey       = "TestProjectKey"
	chainAccountAddr = "TestChainAccountAddress"
	name             = ""
	password         = ""
	mnemonic         = ""
)
备注
测试环境不在提供测试链,如果您想进行测试,请创建链账户后,私聊 技术支持,提供创建的链账户和助记词 进行能量值充值后,在进行测试。
2.
生产链配置
var (
	wsAddress   = "{{根据项目参数进行填写}}"
	rpcAddress  = "{{根据项目参数进行填写}}"
	grpcAddress = "{{根据项目参数进行填写}}"
	chainID     = "{{根据项目参数进行填写}}"
	tlsServiceName = "{{填写grpcAddress值}}"

	algo             = "sm2"
	projectId        = "{{根据项目参数进行填写}}"
	projectKey       = "{{根据项目参数进行填写}}"
	chainAccountAddr = "填写您的链账户"
	name             = ""
	password         = ""
	mnemonic         = ""
)

4. 初始化 opb 客户端#

//能量值费用:「创建NFT/MT类别」、「发行NFT/MT」为 40 万能量值(等值人民币:0.1元),其他交易类型为 20 万能量值(等值人民币:0.05元)
fee, _ := types.ParseDecCoins("400000ugas") 
// 初始化 SDK 配置
options := []types.Option{
        types.AlgoOption(algo),
        types.KeyDAOOption(store.NewMemory(nil)),
        types.FeeOption(fee),
        types.TimeoutOption(10),
        types.CachedOption(true),
        types.WSAddrOption(wsAddress),
}
cfg, err := types.NewClientConfig(rpcAddress, grpcAddress, chainID, options...)
if err != nil {
        panic(err)
}

// 初始化 OPB 网关账号(测试网环境设置为 nil 即可)
// 开启 TLS 连接
// 若服务器要求使用安全链接,此处应设为true,后面需要填写tlsServiceName
//若此处设为false可能导致请求出现长时间不响应的情况
// 若开启 TLS 连接,则必须设置验证证书的主机名
authToken := model.NewAuthToken(projectId, projectKey, chainAccountAddr)
if err :=  authToken.SetRequireTransportSecurity(false, ""); err != nil {
        fmt.Println(fmt.Errorf("开启TLS失败: %s", err.Error()))
        return
}

// 创建 OPB 客户端
client := opb.NewClient(cfg, &authToken)

// 导入私钥
address, err := client.Key.Recover(name, password, mnemonic)
if err != nil {
        fmt.Println(fmt.Errorf("导入私钥失败: %s", err.Error()))
        return
}
fmt.Println("address:", address)

5. 初始化交易信息体#

// 初始化 Tx 基础参数
baseTx := types.BaseTx{
        From:     name,       // 对应上面导入的私钥名称
        Password: password,   // 对应上面导入的私钥密码
        Gas:      400000,     // 单笔交易消耗的能量值
        Memo:     "",         // Tx 备注
        Mode:     types.Sync, // Tx 广播模式
}
提示
交易体中的 广播模式推荐使用同步模式
详情请参考:https://forum.avata.bianjie.ai/t/topic/101

💡
完成以上操作,已经完成接入操作。
部分功能说明请参考后面内容。

6. 详细操作功能#

创建离线链账户:
address,mnemonic,err:=client.key.add(name,password)

查询交易结果(根据交易哈希查询):
result,err:=client.BaseClient.QueryTx(tx_hash)

代付授权(用于离线链账户上链):
basic := &feegrant.BasicAllowance{
        SpendLimit: atom,        //授权额度
        Expiration: &threeHours, //过期时间
}
//链账户地址在这里需要转换一下
granter, _ = types.AccAddressFromBech32(address)
grantee, _ = types.AccAddressFromBech32(address)
// 授权
result, err := client.Feegrant.GrantAllowance(granter, grantee, basic, baseTx)
上一页
底层链 API 接入说明
下一页
JAVA 语言接入教程
Built with