7.3.3 武汉链(基于Ethereum)网关接入说明

  密钥算法

  武汉链(基于Ethereum)通过ECDSA(secp256k1)算法生成链账户地址以及公私钥。

  Chain ID

  武汉链Chain ID为5555。

  接入方式

  武汉链(基于Ethereum)目前支持JSON-RPC API和WebSocket两种方式接入,API文档参考:

  https://eth.wiki/json-rpc/API

  密钥模式

  支持密钥托管模式、发布公钥模式以及上传链账户地址模式。

  在发布公钥模式与上传链账户地址模式下,用户自己管理密钥,完全按照API文档发起交易。

  在密钥托管模式下,由于BSN需要代替用户对上链数据进行签名,所以eth_sendTransaction和eth_sendRawTransaction接口无法按照API文档中的报文格式提交交易,需要按照以下格式提交数据:

{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{
  "from": "0xa447c3acb0df24a053e9acab72da23b01ba560f0",
  "gas": "0x76c0",
  "gasPrice": "0x9184e72a000",
  "value": "0x9184e72a",
  "data": "0x608060405234801561001057600080fd5b5060c78061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c80636057361d146037578063b05784b8146062575b600080fd5b606060048036036020811015604b57600080fd5b8101908080359060200190929190505050607e565b005b60686088565b6040518082815260200191505060405180910390f35b8060008190555050565b6000805490509056fea26469706673582212208dea039245bf78c381278382d7056eef5083f7d243d8958817ef447e0a403bd064736f6c63430006060033"
}],"id":1}

  注:武汉链新建链账户不再支持密钥托管模式,原有的密钥托管模式下的链账户可正常使用。

  区块链浏览器:

  https://wuhanexplorer.bsnbase.com/

  网关地址规则:

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

  • RPC访问地址

  网关地址/api/[项目id]/[BsnAccount]/[Protocol];

  示例:

  https://opbningxia.bsngate.com:18602/api/7223ab9fd8ba4edbbcbba2824a646f41/rpc

  WebSocket 访问地址

  网关地址/api/[项目id]/[BsnAccount]/[Protocol];

  示例:

  wss://opbningxia.bsngate.com:18602/api/7223ab9fd8ba4edbbcbba2824a646f41/ws

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

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

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

7.3.1-1

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

7.3.2-4

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

7.3.2-2

  Protocol:开放链-协议(rpc,WebSocket)。

  合约语言

  武汉链(基于Ethereum)官方使用Solidity语言进行合约的开发。

  开发文档

  https://docs.soliditylang.org/en/latest/index.html

  开发实例:

  https://ethereum.org/zh/developers/docs/smart-contracts/

  示例:

  1) 获取块高(getBlockNumber)

  • 适用于密钥托管模式、发布公钥模式与上传链账户地址模式。

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

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

  请求报文:

{
    "jsonrpc": "2.0",
    "method": "eth_blockNumber",
    "params": [],
    "id": 1
}

  2) 发送交易(eth_sendTransaction)

  • 适用于密钥托管模式,且BSN代用户签名,只支持单个交易签名广播。

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

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

  请求报文:

{
    "jsonrpc": "2.0",
    "method": "eth_sendTransaction",
    "params": [
        {
            "from": "0x64cafADFac8864fE5711EfFec33477293113Af98",
            "to": "0x761b3d08A82F97d1010C7606988a5Aa122b1369D",
            "gas": "0xC350",
            "gasLimit": "0xC950",
            "gasPrice": "0xc1b720800",
            "value": "0x5"
        }
    ],
    "id": 123
}

  3) 发送交易(eth_sendRawTransaction)

  • 适用于发布公钥模式和上传链账户地址模式

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

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

  请求报文:

{
    "jsonrpc": "2.0",
    "method": "eth_sendRawTransaction",
    "params": [
        "0xf86c3d843b9aca008303345094761b3d08a82f97d1010c7606988a5aa18bb1369d888ac7230489e80000801ba078977d1b1707c9afc6bb0b07f8ebf6b56e1fa359c04a540c16ebffcd6339bda2a0230be97c3f5fd123de0e9a062c2ce8ec9fcffcdb864a84b9ba6f2383c126c9c8"
    ],
    "id": 2
}
Copyright 北京红枣科技有限公司

results matching ""

    No results matching ""

    results matching ""

      No results matching ""