区块链:交易系统开发指南
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第2章 公有链及其API接口

2.1 BTC

2.1.1 BTC公有链的特点

在最早的区块链1.0时代,没有账户的概念,用户余额是从各自在区块链上所有未花费交易输出(UTXO)计算得来的。采用PoW共识机制,依赖机器进行哈希运算来获取记账权,无法避免矿池算力集中的问题。

2.1.2 BTC公有链API接口

BTC公有链的主要接口有创建钱包账户、查询账户余额、交易、查询交易信息、查询当前区块交易记录、查询区块信息。下面通过JSONRpc请求方式进行讲解。

1.创建钱包账户

接口:http:// + access_key+ ":" + secret_key+ "@" + ip + ":" + port POST

接口参数如表2-1所示。

表2-1

提交参数详情,如表2-2所示。

表2-2

提交的数据如下:

    {
        "method": "getnewaddress",
        "params": "[weiqingwei@126.com]"
    }

结果如下:

    {
        "result": "1D49jJv3o2xvVv4DLxV9N7tEPUY4RcYDTy",
    }

返回的结果信息如表2-3所示。

表2-3

2.查询账户余额

接口:http:// + username+ ":" + pass+ "@" + ip + ":" + port POST

接口参数如表2-4所示。

表2-4

提交参数详情,如表2-5所示。

表2-5

提交的数据如下:

    {
        "method": "getbalance",
        "params": "[]"
    }

结果如下:

    {
        "result": "1.0000000000",
    }

返回的结果信息如表2-6所示。

表2-6

3.交易

接口:http:// + + ":" + pass+ "@" + ip + ":" + port POST

接口参数如表2-7所示。

表2-7

提交参数详情,如表2-8所示。

表2-8

提交的数据如下:

    {
        "method": "sendtoaddress",
        "params": "["1D49jJv3o2xvVv4DLxV9N7tEPUY4RcYDTy",1.0000000000]"
    }

结果如下:

    {
        "result": "1C3111148F01A21A5BA1B50E30D716ED1CAB4F7C5
    1A36D1D106590B351A5E77C"
    }

返回的结果信息如表2-9所示。

表2-9

4.查询交易信息

接口:http://ip + ":" + port POST

提交参数详情,如表2-10所示。

表2-10

提交的数据如下:

    {
        "method": "gettransaction",
        "params": "[1C3111148F01A21A5BA1B50E30D716ED1CAB4F7C5
    1A36D1D106590B351A5E77C]"
    }

结果如下:

    {
        "amount": 0,
        "fee": 0,
        "blockindex": 179123,
        "details": [{
              "fee": 0,
              "amount": 0.01000000,
              "blockindex": 179123,
              "category": "receive",
              "confirmations": 0,
              "address": "1APSgU92VV77GB2YMNNMMYz7Sock5gMgV1",
              "txid": "5031738bc1f797e5e0f8b782989111d751064
    96c5dedea50d96e2ed1dc88190d",
              "block": 1327599863,
              "blockhash": "000000000000079bae4b877ad3810f03db249
    a6f239c2b69c18d44c141c470ee"
          },
          {
              "fee": 0,
              "amount": 0.00100000,
              "blockindex": 179123,
              "category": "send",
              "confirmations": 0,
              "address": "15CDCKBLsvX3nZ3krMYNse6FkRcuMD1rmU",
              "txid": "5031738bc1f797e5e0f8b782989111d75106
    496c5dedea50d96e2ed1dc88190d",
              "block": 1327599863,
              "blockhash": "000000000000079bae4b877ad3810f03d
    b249a6f239c2b69c18d44c141c470ee"
          }
        ],
        "confirmations": 15767,
        "txid": "5031738bc1f797e5e0f8b782989111d751
    06496c5dedea50d96e2ed1dc88190d",
        "block": 1327599863,
        "blockhash": "000000000000079bae4b877ad3810f03d
    b249a6f239c2b69c18d44c141c470ee"
    }

返回的结果信息如表2-11所示。

表2-11

5.查询当前区块的交易记录

接口:http://ip + ":" + port POST

提交参数详情,如表2-12所示。

表2-12

提交的数据如下:

    {
        "method": "gettransaction",
        "params": "[00000000000003438e8c67500f34dd32bb1b
    f0d251a5c230c407641961c85b41]"
    }

结果如下:

    {
        "lastblock": "00000000000009133d70c6282279bfc5fadfea07
    e27543445a199fe6ef84b51b",
        "transactions": [{
          "fee": 0.01000000,
          "amount": 1,
          "blockindex": 171984,
          "category": "receive",
          "confirmations": 0,
          "address": "1A8JiWcwvpY7tAopUkSnGuEYHmzGYfZPiq",
          "txid": "90992bc8ebff9774cfc91738863602010dab
    9ab2f5b0841cc4922786a2029725",
          "block": 1323486876,
          "blockhash": "00000000000003438e8c67500f34dd32bb1b
    f0d251a5c230c407641961c85b41",
          "account": "My Wallet"
        }]
    }

返回的结果信息:类似于交易接口,这里不再赘述。

6.查询区块信息

接口:http://ip + ":" + port POST

提交参数详情,如表2-13所示。

表2-13

提交的数据如下:

    {
        "tx": [
          "4a5e1e4baab89f3a32518a88c31bc87f618f7667
    3e2cc77ab2127b7afdeda33b"
      ],
      "time": 1231006505,
      "height": 0,
      "nonce": 2083236893,
      "hash": "000000000019d6689c085ae165831e934ff76
    3ae46a2a6c172b3f1b60a8ce26f",
      "bits": 486604799,
      "difficulty": 1,
      "merkleroot": "4a5e1e4baab89f3a32518a88c31bc87f618f7667
    3e2cc77ab2127b7afdeda33b",
      "version": 1,
      "size": 285
    }

返回的结果信息如表2-14所示。

表2-14