美文网首页
Libra JSON-RPC接口

Libra JSON-RPC接口

作者: yangzming | 来源:发表于2020-11-18 09:29 被阅读0次

JSON-RPC接口规范

1. 概述

Libra客户端API基于JSON-RPC协议。该规范定义了客户端API端点和类型,并提供了使用示例。目前官方实现的Java、Go、Python SDK均基于JSON-RPC接口实现。

已发布的稳定的方法列表(除非特别说明,该方法需要所有参数):

  • submit(data: string) -> void
  • get_transactions(start_version: unsigned_int64, limit: unsigned_int64, include_events: boolean) -> List<Transaction>
  • get_account(account: string) -> Account
  • get_account_transaction(account: string, sequence_number: unsigned_int64, include_events: boolean) -> List<Transaction>
  • get_account_transactions(account: string, start: unsigned_int64, limit: unsigned_int64, include_events: boolean) -> Transaction
  • get_metadata(version: unsigned_int64) -> Metadata
  • get_events(key: string, start: unsigned_int64, limit: unsigned_int64) -> List<Event>
  • get_currencies() -> List<CurrencyInfo>

2. 官方客户端SDK

[Go] (https://github.com/libra/libra-client-sdk-go)
[Java] (https://github.com/libra/libra-client-sdk-java)
[Python] (https://github.com/libra/libra-client-sdk-python)

3. JSON-RPC规范

JSON-RPC是一种无状态、轻量级远程过程调用(RPC)协议。更多细节请参考JSON-RPC规范。

3.1 Libra扩展

JSON-RPC响应对象通过以下字段进行扩展:

字段 类型 意义
libra_chain_id unsigned int8 网络链id,例如,测试网络链id是2
libra_ledger_version unsigned int64 服务端最新的账本版本号
libra_ledger_timestampusec unsigned int64 服务端最新的账本时间戳(微秒级)

可以使用此信息来验证网络中节点的活动/状态:如果时间戳或版本是旧的,这意味着请求命中了一个完整的节点,而不是最新的。

示例:

{
  "id": 1,
  "jsonrpc": "2.0",
  "libra_chain_id": 2,
  "libra_ledger_timestampusec": 1596680521771648,
  "libra_ledger_version": 3253133,
  "result": {
    "timestamp": 1596680521771648,
    "version": 3253133
  }
}

3.2 批处理请求

JSON-RPC协议允许对请求进行批处理。可以将任意数量的请求(默认情况下最多20个)合并成单个批处理并提交给服务器。这些请求将在单个请求上下文中一起处理。

3.3 错误

如果在请求期间发生错误,它们将在error对象中返回,如:https://www.jsonrpc.org/specification#error_object中定义的那样。对于任何无效的请求或参数请求,将返回一个带有人类可读信息的标准错误代码和消息。

代码 意义
-32600 标准的非法请求错误
-32601 方法未找到或者未指定
-32602 参数无效
-32604 格式无效

除非下面特别提到,Libra JSON-RPC对于一般的服务器端错误将返回默认的错误代码-32000。在“message”和“data”字段中可能会返回更多的信息,但这并不能保证。

3.4 版本

我们使用URI版本控制来版本化我们的API,当前版本是v1。例如,要命中testnet,服务器url是:https://testnet.libra.org/v1。你可以查看api更新日志(https://github.com/libra/libra/blob/master/json-rpc/API-CHANGELOG.md)了解更多关于API的变化。

4. 跨域支持

跨域支持是内嵌。

允许:

  • 源(Origin): any
  • 请求方法: POST
  • 请求头: content-type

5. 接口列表

5.1 submit方法

描述

将已签名的交易提交到一个完整的节点。

参数

名字 类型 描述
data string 已签名的交易数据 - LCS序列化的LibraSignedTransaction类型

创建“data”参数的步骤:

  1. 创建RawTransaction

  2. 创建签名消息:

    i. "LIBRA::RawTransaction"字符串的SHA3哈希字节

    ii. "RawTransaction" LCS序列号字节

    iii. 合并以上两个字节

  3. 使用Ed25519和账户私钥签名消息

  4. 创建SignedTransaction

  5. 序列化SignedTransaction为字节,然后将十六进制编码字符串作为已签名交易的data参数。

更多信息请参考:Crypto Spec

返回值

Null - 成功

注意:

  • 虽然提交无效的交易会立即返回错误,但是提交成功并不意味着交易将被成功执行。
  • 客户端应该使用发送方帐户地址和RawTransaction的sequence_number调用get_account_transaction ,以确定交易是否被执行。
  • 提交交易但尚未执行之后,调用get_account_transaction将返回null。
  • 如果get_account_transaction返回一个交易,客户端应该验证Transaction#signature == SignedTransaction签名,因为有可能有另一个交易以相同的帐户序列号提交了。
  • 在确认交易是提交的SignedTransaction之后,客户端应该通过检查[Transaction#vm_status] == "executed"确认交易已成功执行;任何其他vm_status都意味着执行失败。vm_status可能包含一些信息,以便客户端了解发生了什么错误。
  • 在Libra中没有部分执行,因此交易要么完全有效,要么根本没有效果。
  • 有可能一个交易在成功提交后不能执行,因此你不能通过get_account_transaction方法找到它。为了避免无休止的等待,客户端应该设置一个合理的交易到期时间戳(RawTransaction#expiration_timestamp_secs),客户端可以继续尝试get_account_transaction,并在响应中使用交易到期时间戳检查libra_ledger_timestampusec。如果传递了到期时间戳,交易将不会被执行,因此客户端可以安全地用新的到期时间戳重新构造交易并再次提交。

错误

交易过程中的错误由不同的错误代码表示:

代码 描述
-32000 默认的服务端错误
-32001 虚拟机验证(validation)错误
-32002 虚拟机校验(verification)错误
-32003 虚拟机不变量违背错误
-32004 虚拟机反序列化错误
-32005 虚拟机执行错误
-32006 虚拟机未知错误
-32007 内存池错误:不合法的序列号
-32008 内存池已满错误
-32009 内存池错误:帐户达到每个帐户的最大容量限制
-32010 内存池错误:无效更新(只gas价格上涨被允许)
-32011 内存池错误:交易没有通过虚拟机验证
-32012 未知错误

示例

// Request: submits a transaction whose hex-encoded LCS byte representation is in params
curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"submit","params":["1668F6BE25668C1A17CD8CAF6B8D2F25370000000000000001E101A11CEB0B010000000701000202020403061004160205181D0735610896011000000001010000020001000003020301010004010300010501060C0108000506080005030A020A020005060C05030A020A020109000C4C696272614163636F756E741257697468647261774361706162696C6974791B657874726163745F77697468647261775F6361706162696C697479087061795F66726F6D1B726573746F72655F77697468647261775F6361706162696C69747900000000000000000000000000000001010104010C0B0011000C050E050A010A020B030B0438000B05110202010700000000000000000000000000000001034C4252034C4252000403262E691EC8C7E3E23470D8C3EE26E1A70140420F00000000000400040040420F00000000000000000000000000034C425200E8764817000000020020F549A91FB9989883FB4D38B463308F3EA82074FB39EA74DAE61F62E11BF55D25405CD26F114183C44874DD3F861E0AD24B8E5D8B8C1CAA1B79C7E641C664AE3FD645E4310237A0DC046046DEFBE27C4F15CAAB55A76BBAC15E92B444431232DE0C"],"id": 1}' https://testnet.libra.org/v1

// Response, for successful transaction submission
{
  "id":1,
  "jsonrpc":"2.0",
  "libra_chain_id":2,
  "libra_ledger_timestampusec":1596736351198722,
  "libra_ledger_version":3475232,
  "result":null
}

5.2 get_transactions方法

描述

获取区块链上的交易。

参数

名字 类型 描述
start_version unsigned int64 从这个查询的交易版本开始
limit unsigned int64 限制返回的交易数,最大值为1000
include_events boolean 如果设置为true,也会为每个交易获取事件(events)

返回值

交易( Transaction)对象数组

如果include_events为false,交易对象中的events字段将是一个空数组。

示例

// Request: fetches 10 transactions since version 100000
curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"get_transactions","params":[100000, 10, false],"id":1}' https://testnet.libra.org/v1

// Response
{
  "id": 1,
  "jsonrpc": "2.0",
  "libra_chain_id": 2,
  "libra_ledger_timestampusec": 1596694433936687,
  "libra_ledger_version": 3308663,
  "result": [
    {
      "events": [],
      "gas_used": 100000000,
      "hash": "1dfa3ff87be2aa21e990324a4b70d300621f81bfb48621a74136a23c4a68b7a7",
      "transaction": {
        "timestamp_usecs": 1596085070813591,
        "type": "blockmetadata"
      },
      "version": 100000,
      "vm_status": "executed"
    },
    {
      "events": [],
      "gas_used": 100000000,
      "hash": "c1e1e8316eae3bbc0f13f8d9616591edd83adfb6fa7c8fcfbc51398e770114ef",
      "transaction": {
        "timestamp_usecs": 1596085071054623,
        "type": "blockmetadata"
      },
      "version": 100001,
      "vm_status": "executed"
    },
    {
      "events": [],
      "gas_used": 175,
      "hash": "4b31f147fd659ca68fa1382d700901e0b987d2358b421132b7a7bb2ac4542fce",
      "transaction": {
        "chain_id": 2,
        "expiration_timestamp_secs": 1596085170,
        "gas_currency": "LBR",
        "gas_unit_price": 0,
        "max_gas_amount": 1000000,
        "public_key": "86f38df4199842f3bfe0dcd003aaf739f9cddd2845b2c5a3318b1878d56b0eb8",
        "script": {
          "amount": 100000,
          "currency": "LBR",
          "metadata": "",
          "metadata_signature": "",
          "receiver": "2ce4a93c05ba7ac8e6e94736731b3ddd",
          "type": "peer_to_peer_transaction"
        },
        "script_hash": "61749d43d8f10940be6944df85ddf13f0f8fb830269c601f481cc5ee3de731c8",
        "sender": "c778574753e789661d8223bc1940fae3",
        "sequence_number": 16,
        "signature": "b66d72e3f20034b03d805c3652062a5921aabd3d01f08f9977f08ae5fc7c77694e852cfbe8e9c53c2bb1d4d268042892bf480481cf330713694777f1226fa208",
        "signature_scheme": "Scheme::Ed25519",
        "type": "user"
      },
      "version": 100002,
      "vm_status": { "type": "executed" }
    },
    ....
  ]
}

5.3 get_account方法

描述

获取给定帐户地址的最新帐户信息。

参数

名字 类型 描述
account string 十六进制编码的账户地址

返回值

Account - 如果账户存在

Null - 如果账户不存在

示例

// Request: fetches account for account address "1668f6be25668c1a17cd8caf6b8d2f25"
curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"get_account","params":["1668f6be25668c1a17cd8caf6b8d2f25"],"id":1}' https://testnet.libra.org/v1

// Response
{
   "libra_chain_id" : 2,
   "jsonrpc" : "2.0",
   "libra_ledger_timestampusec" : 1597084681499780,
   "result" : {
      "delegated_key_rotation_capability" : false,
      "received_events_key" : "00000000000000001668f6be25668c1a17cd8caf6b8d2f25",
      "authentication_key" : "d939b0214b484bf4d71d08d0247b755a1668f6be25668c1a17cd8caf6b8d2f25",
      "balances" : [
         {
            "amount" : 2194000000,
            "currency" : "LBR"
         }
      ],
      "sequence_number" : 11,
      "delegated_withdrawal_capability" : false,
      "sent_events_key" : "01000000000000001668f6be25668c1a17cd8caf6b8d2f25",
      "is_frozen" : false,
      "role" : {
        "type": parent_vasp",
        "num_children" : 0,
        "base_url" : "https://libra.org",
        "human_name" : "testnet",
        "compliance_key" : "b7a3c12dc0c8c748ab07525b701122b88bd78f600c76342d27f25e5f92444cde",
        "expiration_time" : 18446744073709551615
      }
   },
   "id" : 1,
   "libra_ledger_version" : 1303433
}

// Sample Response for non-existent account
{
  "id": 1,
  "jsonrpc": "2.0",
  "libra_chain_id": 2,
  "libra_ledger_timestampusec": 1596694171246702,
  "libra_ledger_version": 3307614,
  "result": null
}

5.4 get_account_transaction方法

描述

获取由给定序列号的帐户发送的交易。

参数

名字 类型 描述
account string 十六进制编码的账户地址
sequence unsigned int64 账户的序列号
include_events boolean 如果设置为true,也会为每个交易获取事件(events)

返回值

Transaction - 如果交易存在

Null - 如果交易不存在

示例

// Request: fetches transaction for account address "1668f6be25668c1a17cd8caf6b8d2f25" and sequence number 0, with including events associated with this transaction
curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"get_account_transaction","params":["1668f6be25668c1a17cd8caf6b8d2f25", 0, true],"id":1}' https://testnet.libra.org/v1

// Response
{
  "id": 1,
  "jsonrpc": "2.0",
  "libra_chain_id": 2,
  "libra_ledger_timestampusec": 1596694618402871,
  "libra_ledger_version": 3309406,
  "result": {
    "events": [
      {
        "data": {
          "amount": {
            "amount": 1000000,
            "currency": "LBR"
          },
          "metadata": "",
          "receiver": "262e691ec8c7e3e23470d8c3ee26e1a7",
          "sender": "1668f6be25668c1a17cd8caf6b8d2f25",
          "type": "sentpayment"
        },
        "key": "01000000000000001668f6be25668c1a17cd8caf6b8d2f25",
        "sequence_number": 0,
        "transaction_version": 106548
      },
      {
        "data": {
          "amount": {
            "amount": 1000000,
            "currency": "LBR"
          },
          "metadata": "",
          "receiver": "262e691ec8c7e3e23470d8c3ee26e1a7",
          "sender": "1668f6be25668c1a17cd8caf6b8d2f25",
          "type": "receivedpayment"
        },
        "key": "0000000000000000262e691ec8c7e3e23470d8c3ee26e1a7",
        "sequence_number": 1,
        "transaction_version": 106548
      }
    ],
    "gas_used": 175,
    "hash": "0fa27a781a9086e80a870851ea4f1b14090fb8b5bd9933e27447ab806443e08e",
    "transaction": {
      "chain_id": 2,
      "expiration_timestamp_secs": 100000000000,
      "gas_currency": "LBR",
      "gas_unit_price": 0,
      "max_gas_amount": 1000000,
      "public_key": "f549a91fb9989883fb4d38b463308f3ea82074fb39ea74dae61f62e11bf55d25",
      "script": {
        "amount": 1000000,
        "currency": "LBR",
        "metadata": "",
        "metadata_signature": "",
        "receiver": "262e691ec8c7e3e23470d8c3ee26e1a7",
        "type": "peer_to_peer_transaction"
      },
      "script_hash": "61749d43d8f10940be6944df85ddf13f0f8fb830269c601f481cc5ee3de731c8",
      "sender": "1668f6be25668c1a17cd8caf6b8d2f25",
      "sequence_number": 0,
      "signature": "a181a036ba68fcd25a7ba9f3895caf720af7aee4bf86c4d798050a1101e75f71ccd891158c8fa0bf349bbb66fb0ba50b29b6fb29822dc04071aff831735e6402",
      "signature_scheme": "Scheme::Ed25519",
      "type": "user"
    },
    "version": 106548,
    "vm_status": { "type": "executed" }
  }
}

5.5 get_account_transactions方法

描述

获取该帐户发送的所有交易。

参数

名字 类型 描述
account string 十六进制编码的账户地址
start unsigned int64 查询开始的账户序列号
limit unsigned int64 返回的最大的交易数
include_events boolean 如果设置为true,也会为每个交易获取事件(events)

返回值

交易对象数组

如果include_events为false,交易对象中的events字段将是一个空数组。

示例

// Request: fetches transaction for account address "0xc1fda0ec67c1b87bfb9e883e2080e530", starting sequence number 0, limit 100, without including events associated with this transaction
curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"get_account_transactions","params":["c1fda0ec67c1b87bfb9e883e2080e530", 0, 100, false],"id":1}'

// Response
{
    "id":1,
    "jsonrpc":"2.0",
    "result": [{
        "events":[],
        "gas_used":0,
        "transaction":{
            "expiration_timestamp_secs":1590680747,
            "gas_unit_price":0,
            "max_gas_amount":1000000,
            "public_key":"500a9002995e1af93bbdaf977385ed507b174bb3dc6936efd72612d56198a19d",
            "script":{
                "amount":10000000,
                "auth_key_prefix":"6484f428e88bba93de5053e051acb6ec",
                "metadata":"",
                "metadata_signature":"",
                "receiver":"4ac94d88e90acd4cf0294e898e421e94",
                "type":"peer_to_peer_transaction"
            },
            "script_hash":"c8bc3dda60e9662965b3223c22e3d3e3e7b6f698cf1a6930a449eb99daa35e7c",
            "sender":"c1fda0ec67c1b87bfb9e883e2080e530",
            "sequence_number":0,
            "signature":"fe335285e5d87db25f86041d033414bfdf77ddae6f0dfbdc65ff4f5965ff810ef9c85ce00ede0820ce0cf5903f9ab3e93fa6e49bbf770aba9b083a985361fa01",
            "signature_scheme":"Scheme::Ed25519",
            "type":"user"
        },
        "version":4433485,
        "vm_status": { "type": "executed" }
    }]
}

5.6 get_metadata方法

描述

获取区块链/账本的元数据。

参数

名字 类型 描述
version unsigned int64 交易版本,这个参数是可选的,默认是服务端最新的交易版本号

返回值

元数据(Metadata)

注意:字段script_hash_allow_list, module_publishing_allowedlibra_version只在没有提供版本参数时返回(注意,在最新的测试中,这几个字段没有参数时也会返回)。

示例

{
    "libra_chain_id": 2,
    "libra_ledger_version": 13119449,
    "libra_ledger_timestampusec": 1605522793895276,
    "jsonrpc": "2.0",
    "id": 1,
    "result": {
        "accumulator_root_hash": "3047573383a853d719dc056c56496ce3fd95a947f7267f7c0a9e07b7b62083a6",
        "chain_id": 2,
        "libra_version": 1,
        "module_publishing_allowed": false,
        "script_hash_allow_list": [
            "6d9d309c5cc6df4c7082817eb657904781b06b2071552ae762806fce3b623463",
            "570b8627a80ded5704775fc18060d58af396bb72565952fb0920221cc21ea9d1",
            "19ea57b5051d34306353cc335baedbc022d28055cd6d76238a107ba433295930",
            "a801d467df10ac00de027bc427637db66e8afc84a4bb94761b526016cb20a5ef",
            "8f019b20740269011c05d8348cc7501bed64c7d56b8726eb8f4e21a01bd2eb4c",
            "18da4e8c53fed321d58770e6c3f455848935cdc26153c3b41c166995787cff1d",
            "5de6edd4b881622c4f7bc3bb9f2a1f98eeb8ca8483ad4e8dda3691c6bc5cbf32",
            "bef38e6ed5ad51f0d060a4e194e4c8379cc6dfb60492c671a885f6752733866b",
            "04ec5aec7f5cf5ea55e29cd65542134a7f4bb3c18421fecf00e5102dfe2d7efb",
            "afabc7c4a2fd7b54734881f7e760e7d798cd93411839c20860a57e02eebd3893",
            "ae693591b0d7169f4a68da27859fc055053b317c81836d6ef66a1418b1e9db5b",
            "1a2c5cd660de7217f513bdfaa9c36bef8f384d018f128e7ddbb37dbb21f9b38f",
            "387dce4a1f3421a369de8a48c070e7aa8e1e587ecadcf35fe254d3d8df0382b8",
            "ff9e545db9c3546d892de6c6716d0a45929a721a14d478da3d689900eb16a394",
            "61749d43d8f10940be6944df85ddf13f0f8fb830269c601f481cc5ee3de731c8",
            "d01cd5656905ab073fefc899eb4af0c158ad3775d17f5d9731e5b5b040d52cfd",
            "dfcfe1d8eb8e7a9dc1038b5d9d015c09c9e38ec6af310de7d5592de359092486",
            "2b124c549e828df9bc38c6d45779d155f973116f077d8f0faa92c4d25389a4c1",
            "c46e0e6d7579033024c73242b9a031d0d602f46222a79d1c86afcc07a1bbe59d",
            "6aa259be3a3f160a5d0d089fdf14d70a3579d23b34bad2ae1dee50f52275ed9c",
            "4820a09dae6cbfc9a77a060a919ad5913f91e6d52a75430c0672b44f241b70cc",
            "8a1a527d4bf4b4993d525f1c1458235b47c26582762c6ac59cbc3162a0555499",
            "157f747315d3cbf7695f6892b1aee3fb493d7fa231dd545fe5f173920b30e657",
            "b4e23670c081e09e5da9f3c26aa31f84da8beab55ab299cfdddf64769551ed76",
            "6adcf90ce474223545e2c204c1b48fab4ce28693a1d9bf51fb0f06d687d22a3f",
            "ccf81752586ce59142e3625dd4aa7463f1e7167812f7de0ac82a924a0638284b",
            "b33b71a6e98a50d8f41f00af92feec4fd77ede12d3ceb5052e53c6291920620d",
            "7b7d7e02addc3dc14210d1db2baf17779b443b6dc9b70daf88cf4673d458f429",
            "27d5e5756fd287f2c3e90bba57cfc82674b7d9890d9e65e4619b81fe6aa1d6c8",
            "0e9dceaf3a66b076acb0ddd29041ddea4316716da26c88fdd55dad5fd862a3e3",
            "b3a8003b1ebeafab289e75f8adec0f4fe80f7f220c01143173b0caf3b467fa6a",
            "8e756eee24336712dcd5d03e20f2b97db7b1f74e26f077d41ba02175874dfd84",
            "431c979535f701b76bfb0c4b51f35d4893dd30d4dd52bdf2f31c7002c0067369",
            "ffbf8a2b64b711e61376c525a96b4206c791fc050e09a56c12d1ec187ad598ad"
        ],
        "timestamp": 1605522793895276,
        "version": 13119449
    }
}

5.7 get_events方法

描述

获取给定事件流的事件。

参数

名字 类型 描述
key string 一个事件流全局唯一的标识符
start unsigned int64 事件开始的序列号
limit unsigned int64 获取事件的最大数量

注意:

  1. 对于sentpaymentreceivedpayment事件,调用get_account来获取给定用户帐户的事件流的事件键。
  2. 对于与货币相关的事件,调用get_currencies获取事件键(例如:与LBR兑换汇率改变的事件键)。

返回值

返回事件对象(Event)的数组。

示例

//Request: get events associated with receivedpayment event stream key "00000000000000001668f6be25668c1a17cd8caf6b8d2f25" for account "1668f6be25668c1a17cd8caf6b8d2f25"
curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"get_events","params": ["00000000000000001668f6be25668c1a17cd8caf6b8d2f25", 0, 10], "id":1}' https://testnet.libra.org/v1

//Response
{
  "id": 1,
  "jsonrpc": "2.0",
  "libra_chain_id": 2,
  "libra_ledger_timestampusec": 1596694876315159,
  "libra_ledger_version": 3310435,
  "result": [
    {
      "data": {
        "amount": {
          "amount": 100000000,
          "currency": "LBR"
        },
        "metadata": "",
        "receiver": "1668f6be25668c1a17cd8caf6b8d2f25",
        "sender": "000000000000000000000000000000dd",
        "type": "receivedpayment"
      },
      "key": "00000000000000001668f6be25668c1a17cd8caf6b8d2f25",
      "sequence_number": 0,
      "transaction_version": 106495
    },
    {
      "data": {
        "amount": {
          "amount": 100000000,
          "currency": "LBR"
        },
        "metadata": "",
        "receiver": "1668f6be25668c1a17cd8caf6b8d2f25",
        "sender": "000000000000000000000000000000dd",
        "type": "receivedpayment"
      },
      "key": "00000000000000001668f6be25668c1a17cd8caf6b8d2f25",
      "sequence_number": 1,
      "transaction_version": 106564
    },
    {
      "data": {
        "amount": {
          "amount": 100000000,
          "currency": "LBR"
        },
        "metadata": "",
        "receiver": "1668f6be25668c1a17cd8caf6b8d2f25",
        "sender": "000000000000000000000000000000dd",
        "type": "receivedpayment"
      },
      "key": "00000000000000001668f6be25668c1a17cd8caf6b8d2f25",
      "sequence_number": 2,
      "transaction_version": 106608
    },
    {
      "data": {
        "amount": {
          "amount": 100000000,
          "currency": "LBR"
        },
        "metadata": "",
        "receiver": "1668f6be25668c1a17cd8caf6b8d2f25",
        "sender": "000000000000000000000000000000dd",
        "type": "receivedpayment"
      },
      "key": "00000000000000001668f6be25668c1a17cd8caf6b8d2f25",
      "sequence_number": 3,
      "transaction_version": 107186
    },
    {
      "data": {
        "amount": {
          "amount": 100000000,
          "currency": "LBR"
        },
        "metadata": "",
        "receiver": "1668f6be25668c1a17cd8caf6b8d2f25",
        "sender": "000000000000000000000000000000dd",
        "type": "receivedpayment"
      },
      "key": "00000000000000001668f6be25668c1a17cd8caf6b8d2f25",
      "sequence_number": 4,
      "transaction_version": 107271
    },
    {
      "data": {
        "amount": {
          "amount": 100000000,
          "currency": "LBR"
        },
        "metadata": "",
        "receiver": "1668f6be25668c1a17cd8caf6b8d2f25",
        "sender": "000000000000000000000000000000dd",
        "type": "receivedpayment"
      },
      "key": "00000000000000001668f6be25668c1a17cd8caf6b8d2f25",
      "sequence_number": 5,
      "transaction_version": 107333
    },
    {
      "data": {
        "amount": {
          "amount": 100000000,
          "currency": "LBR"
        },
        "metadata": "",
        "receiver": "1668f6be25668c1a17cd8caf6b8d2f25",
        "sender": "000000000000000000000000000000dd",
        "type": "receivedpayment"
      },
      "key": "00000000000000001668f6be25668c1a17cd8caf6b8d2f25",
      "sequence_number": 6,
      "transaction_version": 783134
    },
    {
      "data": {
        "amount": {
          "amount": 100000000,
          "currency": "LBR"
        },
        "metadata": "",
        "receiver": "1668f6be25668c1a17cd8caf6b8d2f25",
        "sender": "000000000000000000000000000000dd",
        "type": "receivedpayment"
      },
      "key": "00000000000000001668f6be25668c1a17cd8caf6b8d2f25",
      "sequence_number": 7,
      "transaction_version": 783282
    },
    {
      "data": {
        "amount": {
          "amount": 100000000,
          "currency": "LBR"
        },
        "metadata": "",
        "receiver": "1668f6be25668c1a17cd8caf6b8d2f25",
        "sender": "000000000000000000000000000000dd",
        "type": "receivedpayment"
      },
      "key": "00000000000000001668f6be25668c1a17cd8caf6b8d2f25",
      "sequence_number": 8,
      "transaction_version": 783378
    },
    {
      "data": {
        "amount": {
          "amount": 100000000,
          "currency": "LBR"
        },
        "metadata": "",
        "receiver": "1668f6be25668c1a17cd8caf6b8d2f25",
        "sender": "000000000000000000000000000000dd",
        "type": "receivedpayment"
      },
      "key": "00000000000000001668f6be25668c1a17cd8caf6b8d2f25",
      "sequence_number": 9,
      "transaction_version": 2371067
    }
  ]
}

5.8 get_currencies方法

描述

获得Libra区块链支持的各种货币的信息。

参数

返回值

返回CurrencyInfo对象的数组。

示例

// Request: fetches currencies supported by the system
curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"get_currencies","params":[],"id":1}' https://testnet.libra.org/v1

// Response
{
  "id": 1,
  "jsonrpc": "2.0",
  "libra_chain_id": 2,
  "libra_ledger_timestampusec": 1596680410015647,
  "libra_ledger_version": 3252698,
  "result": [
    {
      "burn_events_key": "02000000000000000000000000000000000000000a550c18",
      "cancel_burn_events_key": "04000000000000000000000000000000000000000a550c18",
      "code": "Coin1",
      "exchange_rate_update_events_key": "05000000000000000000000000000000000000000a550c18",
      "fractional_part": 100,
      "mint_events_key": "01000000000000000000000000000000000000000a550c18",
      "preburn_events_key": "03000000000000000000000000000000000000000a550c18",
      "scaling_factor": 1000000,
      "to_lbr_exchange_rate": 0.5
    },
    {
      "burn_events_key": "0c000000000000000000000000000000000000000a550c18",
      "cancel_burn_events_key": "0e000000000000000000000000000000000000000a550c18",
      "code": "LBR",
      "exchange_rate_update_events_key": "0f000000000000000000000000000000000000000a550c18",
      "fractional_part": 1000,
      "mint_events_key": "0b000000000000000000000000000000000000000a550c18",
      "preburn_events_key": "0d000000000000000000000000000000000000000a550c18",
      "scaling_factor": 1000000,
      "to_lbr_exchange_rate": 1
    }
  ]
}

相关文章

网友评论

      本文标题:Libra JSON-RPC接口

      本文链接:https://www.haomeiwen.com/subject/avvqiktx.html