帮助文档
文档中心
开发者文档
  • AVATA API 文档
  • 底层链 SDK 文档
开发者社区
区块链浏览器
  • 文昌链网浏览器
  • 文昌链极速网
  • 文昌链-天舟
  • 文昌链-神舟
  • 文昌链-天和
关于文昌链
文档中心
开发者文档
  • AVATA API 文档
  • 底层链 SDK 文档
开发者社区
区块链浏览器
  • 文昌链网浏览器
  • 文昌链极速网
  • 文昌链-天舟
  • 文昌链-神舟
  • 文昌链-天和
关于文昌链
底层链 SDK 文档
底层链 SDK 文档
  1. 底层链 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)

扫码加入文昌链微信技术交流群

在这里,获得 Avata 使用上的任何帮助,快速上手让你的研测效率大幅提升

扫码添加小助手
上一页
底层链 API 接入说明
下一页
java 语言接入教程
Built with