7.3.1 文昌链(基于IRITA)网关接入说明

  密钥算法

  文昌链(基于IRITA)通过sm2算法生成链账户地址以及公私钥和助记词,具体可以参考SDK中提供的方法。

  Chain ID

  文昌链Chain ID为wenchangchain,EVM模块Chain ID为1223。

  接入方式

  文昌链(基于IRITA)支持RPC、REST、WebSocket及gRPC接口。

  EVM模块新增RPC,WebSocket接口。

  密钥模式

  支持密钥托管模式以及上传链账户模式,不支持非托管的SDK请求。在密钥托管模式下,用户无法直接通过SDK调用合约,但可以通过REST-API进行合约的部署与调用;

  注:文昌链新建链账户不再支持密钥托管模式,原有的密钥托管模式下的链账户可正常使用,另外原有的链账户只支持SM2算法,如若需使用新增的EVM模块,则需创建K1算法的链账户。

  区块链浏览器

  https://wenchangexplorer.bsnbase.com/

  网关地址规则

  若添加BsnAccount则认为是通过网关托管加签(密钥托管模式),若为非托管模式(上传链账户地址模式)则不需要添加。

  • REST访问地址为:

  网关地址/api/[项目id]/[BsnAccount]/rest/ {链上接口地址};

  如果使用项目key接入,需按照网关地址/api/[项目id]/[BsnAccount]/[Protocol]/ {链上接口地址}格式拼接请求地址,同时请求报文头header中增加x-api-key:{项目key值}。

  • RPC访问地址为:

  网关地址/api/[项目id]/[BsnAccount]/rpc/{链上接口地址};

  如果使用项目key接入,需按照网关地址/api/[项目id]/[BsnAccount]/[Protocol]/ {链上接口地址}格式拼接请求地址,同时请求报文头header中增加x-api-key:{项目key值}。

  • EVM RPC访问地址为:

  网址地址/api/[项目id]/[BsnAccount]/evmrpc/{链上接口地址};

  如果使用项目key接入,需按照网关地址/api/[项目id]/[BsnAccount]/[Protocol]/ {链上接口地址}格式拼接请求地址,同时请求报文头header中增加x-api-key:{项目key值}。

  注意:EVM RPC接口只适用于EVM合约模块,只支持K1账户。

  • WebSocket访问地址为:

  网关地址/api/[项目id]/ws/{链上接口地址};

  如果使用项目key接入,需按照网关地址/api/[项目id]/[Protocol]/ {链上接口地址}格式拼接请求地址,同时请求报文头header中增加x-api-key:{项目key值}。

  • EVM WebSocket地址为:

  网关地址/api/[项目id]/evmws/{链上接口地址};

  如果使用项目key接入,需按照网关地址/api/[项目id]/[Protocol]/ {链上接口地址}格式拼接请求地址,同时请求报文头header中增加x-api-key:{项目key值}。

  • gRPC访问地址为:

  opbningxia.bsngate.com:18603;

  项目ID与项目Key,在请求header中增加:

  { projectIdHeader:项目ID }

  { projectKeyHeader:项目Key }

  注:

  1、密钥托管模式下,BsnAccount必传,代表BSN网关进行签名,其他模式可不传,默认自己签名,网关只负责进行交易转发。

  2、使用gRPC接口时,需启用TLS证书认证,详情可参考最新版本的SDK:

  GO语言:https://github.com/bianjieai/opb-sdk-go

  Java语言:https://github.com/bianjieai/opb-sdk-java

  项目id:创建项目后生成的项目ID,见下图;

7.3.1-1

  项目id也可以从项目管理->操作->下载接入参数获取:

7.3.1-3

  BsnAccount:BSN链账户标识, 链账户管理->链账户详情页面可看到,如图:

7.3.1-2

  Protocol:开放链-协议(RPC,REST,WebSocket,gRPC)。

  合约语言

  • 文昌链(基于IRITA)官方使用Rust语言进行合约的开发。

  SDK

  开发文档

  开发实例

  示例

  1. RPC接口密钥托管模式广播交易:

  1)在密钥托管模式下,BSN会代替用户签署交易并广播交易,用户需按以下报文格式,将待签名的交易,转为base64格式字符串,提交给网关。

{
    "method": "broadcast_tx_commit", // 支持:broadcast_tx_commit、broadcast_tx_async、broadcast_tx_sync,3种方法
    "id": 1,
    "jsonrpc": "2.0",
    "params": {
        "tx": "待签名交易base64字符串"
    }
}

  接口地址:网关地址/api/{您的开放联盟链项目ID}/{BSN Account}/rpc

  若启用项目key则需要在HTTP Header中添加x-api-key请求头。

  请求报文:

{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "broadcast_tx_commit",
    "params": {
        "tx": "CpABCo0BChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEm0KKmlhYTE4bGE1a3lmNDhqbGtkbGc0eGZ3cDI4cXR1cnQwNzdhMDU4c2E4MxIqaWFhMThsYTVreWY0OGpsa2RsZzR4ZndwMjhxdHVydDA3N2EwNThzYTgzGhMKBnVpcml0YRIJMTAwMDAwMDAwEhgSFgoQCgZ1aXJpdGESBjQwMDAwMBDAmgw="
    }
}

  2)获取块高(abci_info)

  接口地址:网关地址/api/{您的开放联盟链项目ID}/rpc/abci_info

  若启用项目key则需要在HTTP Header中添加x-api-key请求头。

  2. REST接口

  用户执行上链交易操作,需先组装未签名报文,并进行签名广播(通过REST-API接口)。

  1) 合约调用

  a. 组装未签名报文

  • 托管非托管一致(wasm/contract/[合约地址])

  接口地址:网关地址/api/{您的开放联盟链项目ID}/rest/wasm/contract/{合约地址}

  若启用项目key则需要在HTTP Header中添加x-api-key请求头。

  请求报文:

{
    "base_req": {
        "from": "iaa1mmdl52vvtz26pjq27z38cw664zqm3r83ru103a",
        "memo": "Sent via Irita",
        "chain_id": "wenchangchain",
        "account_number": "0",
        "sequence": "10",
        "gas_adjustment": "1.2",
         "fees": [{
            "denom": "ugas",
            "amount": "400000"
        }],
        "simulate": false
    },
    "exec_msg": "vadadWx2sbmNlIjnjhmFkZJYTx3MiOiJpYWExbW1kbDUydnZ0ejI2cGpxMjd6MzhjdzY2NHpxbTNyODNydTUwBGXifX0="
}

  b. 广播交易(txs)

  • 密钥托管模式

  接口地址:网关地址/api/{您的开放联盟链项目ID}/{BSN Account}/rest/txs

  若启用项目key则需要在HTTP Header中添加x-api-key请求头。

  请求报文:(上一步返回的response作为请求报文,由网关进行签名)

{
    "type": "cosmos-sdk/StdTx",
    "value": {
        "msg": [
            {
                "type": "wasm/MsgExecuteContract",
                "value": {
                    "sender": "iaa1mmdl52vvtz26pjq27z38cw664zqm3r83ru103a",
                    "contract": "iaa17z0qt3fckutyw39yu53x8zfxa4wz7l3fnjhzd1",
                    "msg": {
                        "Balance": {
                            "address": "iaa1mmdl52vvtz26pjq27z38cw664zqm3r83ru103a"
                        }
                    },
                    "sent_funds": []
                }
            }
        ],
        "fee": {
            "amount": [
                {
                    "denom": "ugas",
                    "amount": "400000"
                }
            ],
            "gas": "400000"
        },
        "signatures": [],
        "memo": "Sent via Irita",
        "timeout_height": "0"
    }
}
  • 上传链账户模式

  接口地址:网关地址/api/{您的开放联盟链项目ID}/rest/txs

  若启用项目key则需要在HTTP Header中添加x-api-key请求头。

  请求报文:(用户自己签名过后的json)

{"mode":"block","tx":{"fee":{"amount":[{"amount":"400000","denom":"ugas"}],"gas":"400000"},"memo":"Sent via Irita","msg":[{"type":"wasm/MsgExecuteContract","value":{"msg":{"Balance":{"address":"iaa1mmdl52vvtz26pjq27z38cw664zqm3r83ru103a"}},"sender":"iaa1mmdl52vvtz26pjq27z38cw664zqm3r83ru103a","sent_funds":[],"contract":"iaa17z0qt3fckutyw39yu53x8zfxa4wz7l3fnjhzd1"}}],"signatures":[{"pub_key":{"type":"cosmos/PubKeySm2","value":"A1seg+6sdada8uAAb4PQLtikcOXxyWjMKdkg3M1U7S"},"signature":"KzEMdO67RhKvGkcje2YvFousOXjaCvSJRG7FMxosfuiULhdWhOLWbN0aFr1vbsvBofgEf4GI1kR+xOy4TqTNOg=="}]}}
Copyright 北京红枣科技有限公司

results matching ""

    No results matching ""

    results matching ""

      No results matching ""