💡
安顺链技术文档
  • 平台介绍
    • 简介
    • 架构设计
  • 开发指南
    • 快速入门
    • 最佳实践
      • 应用方数字资产集成开发最佳实践
      • 应用方最佳实践示例合约
    • 搭建网络环境
      • 节点接入安顺官方网络
    • 合约编写
      • 链上资产(NFT)合约示例
  • 开发参考
    • 开发工具
    • API
      • SDK 库
      • JSON-RPC API 参考
    • Geth 命令行选项
Powered by GitBook
On this page
  • 英文原文参考
  • Default Block 参数
  • 交易对象
  • API 方法
  • eth_accounts
  • eth_blockNumber
  • eth_call
  • eth_chainId
  • eth_coinbase
  • eth_estimateGas
  • eth_gasPrice
  • eth_getBalance
  • eth_getBlockByHash
  • eth_getBlockByNumber
  • eth_getBlockTransactionCountByHash
  • eth_getBlockTransactionCountByNumber
  • eth_getCode
  • eth_getFilterChanges
  • eth_getFilterLogs
  • eth_getLogs
  • eth_getStorageAt
  • eth_getTransactionByBlockHashAndIndex
  • eth_getTransactionByBlockNumberAndIndex
  • eth_getTransactionByHash
  • eth_getTransactionCount
  • eth_getTransactionReceipt
  • eth_newBlockFilter
  • eth_newFilter
  • eth_newPendingTransactionFilter
  • eth_sendRawTransaction
  • eth_sendTransaction
  • eth_sign
  • eth_signTransaction
  • eth_syncing
  • eth_uninstallFilter
  1. 开发参考
  2. API

JSON-RPC API 参考

PreviousSDK 库NextGeth 命令行选项

Last updated 1 year ago

同区块链进行通信的 API 都执行 规范。本文中列出的方法是所有 API 都支持的通用方法 ,你可以参阅 各自的文档来了解它们的其他用法。

英文原文参考

本文基于以太坊官方文档,原英文文档请参考 。

Default Block 参数

以下方法需额外使用 defaultBlock 参数:

当有能改变状态的请求时,最后传入的参数决定区块高度。

defaultBlock 参数有下列几种选项:

  • Quantity/Integer - 整数,区块编号

  • String "earliest" - 最早的块/创世块

  • String "latest" - 最新块

  • String "pending" - 正在处理的状态/交易

交易对象

不同类型的交易(transaction)有不同的对象.

  • Legacy 交易。EIP-2718 以前只有这种交易类型,包含以下字段:

    • from: Address - 20 字节 - 发起交易的地址

    • to: Address - (创建新合约时可选) 20 字节 - 接收交易的地址

    • gas: Quantity - (可选) 整数,供交易执行的 gas 数额。eth_call 不消耗 gas, 但执行某些交易会需要这个参数

    • gasPrice: Quantity - (可选)整数,已花费 gas 的 gas price

    • value: Quantity -(可选)整数,交易发送的数额

    • nonce: Quantity - (可选)整数,可使用同一个 nonce 值来覆盖你的挂起交易

  • AccessList 交易, EIP-2930: 除 legacy 交易的所有字段外还包含以下字段:

    • type: 0x1 - 交易类型,硬编码

    • accessList: List - 对象列表

      • address: Address - 20 字节 - 将被读取的地址

      • storageKeys: List - of 32 字节 - 将被读取的存储key

一些 RPC 调用中的交易对象还包含以下字段:

  • condition: Object - (可选)有条件的提交交易。可以是一个代表区块编号的整数 { block: 1 } 或者是以秒为单位的 UTC 时间戳 { time: 1491290692 } 或者是null。

API 方法

eth_accounts

返回客户端持有的地址列表。

参数

无

返回值

  • Array - 20 字节- 客户端持有的地址。

调用示例

请求正文:

curl --data '{"method":"eth_accounts","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

响应正文:

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": ["0x407d73d8a49eeb85d32cf465507dd71d507100c1"]
}

eth_blockNumber

返回最新块的编号。

参数

无

返回值

  • Quantity - 整数,客户端当前块编号。

调用示例

请求正文:

curl --data '{"method":"eth_blockNumber","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

响应正文:

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0x4b7" // 1207
}

eth_call

立刻执行一个新的消息调用,无需在区块链上创建交易。

参数

params: [{
  "from": "0x407d73d8a49eeb85d32cf465507dd71d507100c1",
  "to": "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b",
  "value": "0x186a0" // 100000
},
"latest"]

返回值

  • Data - 所执行合约的返回值。

调用示例

请求正文:

curl --data '{"method":"eth_call","params":[{"from":"0x407d73d8a49eeb85d32cf465507dd71d507100c1","to":"0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b","value":"0x186a0"},"latest"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

响应正文:

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0x"
}

eth_chainId

返回用于在最新的、累计工作量最多的块进行交易签名的 EIP155 链 ID,ID 不存在则返回空值。

参数

无

返回值

  • Quantity - EIP155 链 ID, ID 不存在则返回 null 。

调用示例

请求正文:

curl --data '{"method":"eth_chainId","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

响应正文:

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0x1"
}

eth_coinbase

返回客户端 coinbase 地址(矿工奖励接收地址)。

参数

无

返回

  • Address - 当前 coinbase 地址。

调用示例

请求正文:

curl --data '{"method":"eth_coinbase","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

响应正文:

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0x407d73d8a49eeb85d32cf465507dd71d507100c1"
}

eth_estimateGas

通过发起一个调用或交易估算该交易所需要的gas用量。该次交易不会写入区块链。

参数

返回值

  • Quantity - gas用量估算值。

调用示例

请求正文:

curl --data '{"method":"eth_estimateGas","params":[{ ... }],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

响应正文:

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0x5208" // 21000
}

eth_gasPrice

返回当前的gas价格,单位:wei。

参数

无

返回值

  • Quantity - 整数,以wei为单位的当前gas价格。

调用示例

请求正文:

curl --data '{"method":"eth_gasPrice","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

响应正文:

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0x9184e72a000" // 10000000000000
}

eth_getBalance

返回指定地址账户的余额。

参数

  1. Address - 20字节 - 要检查余额的地址。

params: ["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"]

返回值

  • Quantity - 整数,以wei为单位的余额。

调用示例

请求正文:

curl --data '{"method":"eth_getBalance","params":["0x407d73d8a49eeb85d32cf465507dd71d507100c1","latest"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

响应正文:

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0x0234c8a3397aab58"

eth_getBlockByHash

返回具有指定哈希的块。

参数

  1. Hash - 块哈希。

  2. Boolean - 为true 时返回完整的交易对象,为false 时仅返回交易哈希。

params: [
  "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331",
  true
]

返回值

Object - 匹配的块对象,如果未找到块则返回null ,结构如下:

  • number: Quantity - 块编号,挂起块为null

  • hash: Hash - 32 字节 - 块哈希,挂起块为null

  • parentHash: Hash - 32 字节 - 父块的哈希

  • nonce: Data - 8 字节 - 生成的 PoW 哈希,挂起块为null 。如共识为 PoA 则不返回此参数。

  • sha3Uncles: Data - 32 字节 - 块中 uncle 数据的SHA3哈希

  • logsBloom: Data - 256 字节 - 块日志的bloom过滤器,挂起块为null

  • transactionsRoot: Data - 32 字节 - 块中的交易 trie 树根节点

  • stateRoot: Data - 32 字节 - 块最终状态 trie 树的根节点

  • receiptsRoot: Data - 32 字节 - 块交易收据 trie 树的根节点

  • author: Address - 20 字节 - 块对应的矿工地址(挖矿奖励的接收账户)

  • miner: Address - 20 字节 - author对应的名字

  • difficulty: Quantity - 整数,出块难度

  • totalDifficulty: Quantity - 整数,截止到本块的链上总难度

  • extraData: Data - 块的其他数据

  • size: Quantity - 整数,本块字节数

  • gasLimit: Quantity - 本块允许的最大 gas 用量

  • gasUsed: Quantity - 本块中所有交易使用的总 gas 用量

  • timestamp: Quantity - 块 unix 时间戳

  • transactions: Array - 交易对象数组,或32字节长的交易哈希数组,取决于最后一个参数

  • uncles: Array - uncle 哈希数组

调用示例

请求正文:

curl --data '{"method":"eth_getBlockByHash","params":["0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331",true],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

响应正文:

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": {
    "number": "0x1b4", // 436
    "hash": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331",
    "parentHash": "0x9646252be9520f6e71339a8df9c55e4d7619deeb018d2a3f2d21fc165dde5eb5",
    "sealFields": [
      "0xe04d296d2460cfb8472af2c5fd05b5a214109c25688d3704aed5484f9a7792f2",
      "0x0000000000000042"
    ],
    "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
    "logsBloom": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331",
    "transactionsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
    "stateRoot": "0xd5855eb08b3387c0af375e9cdb6acfc05eb8f519e419b874b6ff2ffda7ed1dff",
    "miner": "0x4e65fda2159562a496f9f3522f89122a3088497a",
    "difficulty": "0x27f07", // 163591
    "totalDifficulty": "0x27f07", // 163591
    "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "size": "0x27f07", // 163591
    "gasLimit": "0x9f759", // 653145
    "minGasPrice": "0x9f759", // 653145
    "gasUsed": "0x9f759", // 653145
    "timestamp": "0x54e34e8e", // 1424182926
    "transactions": [{ ... }, { ... }, ...],
    "uncles": [
      "0x1606e5...",
      "0xd5145a9..."
    ]
  }
}

eth_getBlockByNumber

根据编号返回相应块的信息。

参数

  1. Boolean - 为true 时返回完整的交易对象,为false 时仅返回交易哈希。

params: [
  "0x1b4", // 436
  true
]

返回值

Object - 匹配的块对象,如果未找到块则返回null ,结构如下:

  • number: Quantity - 块编号,挂起块为null

  • hash: Hash - 32 字节 - 块哈希,挂起块为null

  • parentHash: Hash - 32 字节 - 父块的哈希

  • nonce: Data - 8 字节 - 生成的 PoW 哈希,挂起块为null 。如共识为 PoA 则不返回此参数。

  • sha3Uncles: Data - 32 字节 - 块中 uncle 数据的SHA3哈希

  • logsBloom: Data - 256 字节 - 块日志的bloom过滤器,挂起块为null

  • transactionsRoot: Data - 32 字节 - 块中的交易 trie 树根节点

  • stateRoot: Data - 32 字节 - 块最终状态 trie 树的根节点

  • receiptsRoot: Data - 32 字节 - 块交易收据 trie 树的根节点

  • author: Address - 20 字节 - 块对应的矿工地址(挖矿奖励的接收账户)

  • miner: Address - 20 字节 - author对应的名字

  • difficulty: Quantity - 整数,出块难度

  • totalDifficulty: Quantity - 整数,截止到本块的链上总难度

  • extraData: Data - 块的其他数据

  • size: Quantity - 整数,本块字节数

  • gasLimit: Quantity - 本块允许的最大 gas 用量

  • gasUsed: Quantity - 本块中所有交易使用的总 gas 用量

  • timestamp: Quantity - 块 unix 时间戳

  • transactions: Array - 交易对象数组,或32字节长的交易哈希数组,取决于最后一个参数

  • uncles: Array - uncle 哈希数组

调用示例

请求正文:

curl --data '{"method":"eth_getBlockByNumber","params":["0x1b4",true],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

响应正文:

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": {
    "number": "0x1b4", // 436
    "hash": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331",
    "parentHash": "0x9646252be9520f6e71339a8df9c55e4d7619deeb018d2a3f2d21fc165dde5eb5",
    "sealFields": [
      "0xe04d296d2460cfb8472af2c5fd05b5a214109c25688d3704aed5484f9a7792f2",
      "0x0000000000000042"
    ],
    "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
    "logsBloom": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331",
    "transactionsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
    "stateRoot": "0xd5855eb08b3387c0af375e9cdb6acfc05eb8f519e419b874b6ff2ffda7ed1dff",
    "miner": "0x4e65fda2159562a496f9f3522f89122a3088497a",
    "difficulty": "0x27f07", // 163591
    "totalDifficulty": "0x27f07", // 163591
    "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "size": "0x27f07", // 163591
    "gasLimit": "0x9f759", // 653145
    "minGasPrice": "0x9f759", // 653145
    "gasUsed": "0x9f759", // 653145
    "timestamp": "0x54e34e8e", // 1424182926
    "transactions": [{ ... }, { ... }, ...],
    "uncles": [
      "0x1606e5...",
      "0xd5145a9..."
    ]
  }
}

eth_getBlockTransactionCountByHash

根据块哈希值返回指定块内的交易数量。

参数

  1. Hash - 32 字节 - 块哈希。

params: ["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"]

返回值

  • Quantity - 整数,指定块内的交易数量

调用示例

请求正文:

curl --data '{"method":"eth_getBlockTransactionCountByHash","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

响应正文:

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0xb" // 11
}

eth_getBlockTransactionCountByNumber

根据块编号返回指定块内的交易数量。

参数

params: [
  "0xe8" // 232
]

返回值

  • Quantity - 整数,指定块内的交易数量。

调用示例

请求正文:

curl --data '{"method":"eth_getBlockTransactionCountByNumber","params":["0xe8"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

响应正文:

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0xa" // 10
}

eth_getCode

返回指定地址的代码。

参数

  1. Address - 20 字节 - 地址

params: [
  "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b",
  "0x2" // 2
]

返回值

  • Data - 指定地址的代码

调用示例

请求正文:

curl --data '{"method":"eth_getCode","params":["0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b","0x2"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

响应正文:

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0x600160008035811a818181146012578301005b601b6001356025565b8060005260206000f25b600060078202905091905056"
}

eth_getFilterChanges

轮询指定的过滤器,并返回自上次轮询之后新生成的日志数组。

参数

  1. Quantity - 过滤器编号

params: [
  "0x16" // 22
]

返回值

  • Array - 日志对象数组,如果没有新生成的日志,则返回空数组

调用示例

请求正文:

curl --data '{"method":"eth_getFilterChanges","params":["0x16"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

响应正文:

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": [
    {
      "logIndex": "0x1", // 1
      "blockNumber": "0x1b4", // 436
      "blockHash": "0x8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcfdf829c5a142f1fccd7d",
      "transactionHash": "0xdf829c5a142f1fccd7d8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcf",
      "transactionIndex": "0x0", // 0
      "address": "0x16c5785ac562ff41e2dcfdf829c5a142f1fccd7d",
      "data": "0x0000000000000000000000000000000000000000000000000000000000000000",
      "topics": ["0x59ebeb90bc63057b6515673c3ecf9438e5058bca0f92585014eced636878c9a5"]
    },
    ...
  ]
}

eth_getFilterLogs

返回指定编号过滤器中的全部日志。

参数

  1. Quantity - 过滤器编号

params: [
  "0x16" // 22
]

返回值

  • Array - 日志对象数组,如果没有日志,则返回空数组

调用示例

请求正文:

curl --data '{"method":"eth_getFilterLogs","params":["0x16"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

eth_getLogs

返回指定过滤器对象中的所有日志数组。

参数

params: [{
  "topics": ["0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b"]
}]

返回值

  • Array - 日志对象数组,如果没有新生成的日志,则返回空数组

调用示例

请求正文:

curl --data '{"method":"eth_getLogs","params":[{"topics":["0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b"]}],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

eth_getStorageAt

返回指定地址存储位置的值。

参数

  1. Address - 20 字节 - 存储地址

  2. Quantity - 整数,存储中的位置

params: [
  "0x407d73d8a49eeb85d32cf465507dd71d507100c1",
  "0x0", // 0
  "0x2" // 2
]

返回值

  • Data - 指定存储位置的值

调用示例

请求正文:

curl --data '{"method":"eth_getStorageAt","params":["0x407d73d8a49eeb85d32cf465507dd71d507100c1","0x0","0x2"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

响应正文:

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0x0000000000000000000000000000000000000000000000000000000000000003"
}

eth_getTransactionByBlockHashAndIndex

根据块哈希和交易索引序号返回交易信息。

参数

  1. Hash - 块哈希

  2. Quantity - 整数,交易在块内的索引序号

params: [
  "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331",
  "0x0" // 0
]

返回值

调用示例

请求正文:

curl --data '{"method":"eth_getTransactionByBlockHashAndIndex","params":["0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331","0x0"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

响应正文:

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": {
    "hash": "0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b",
    "nonce": "0x0", // 0
    "blockHash": "0xbeab0aa2411b7ab17f30a99d3cb9c6ef2fc5426d6ad6fd9e2a26a6aed1d1055b",
    "blockNumber": "0x15df", // 5599
    "transactionIndex": "0x1", // 1
    "from": "0x407d73d8a49eeb85d32cf465507dd71d507100c1",
    "to": "0x853f43d8a49eeb85d32cf465507dd71d507100c1",
    "value": "0x7f110", // 520464
    "gas": "0x7f110", // 520464
    "gasPrice": "0x09184e72a000",
    "input": "0x603880600c6000396000f300603880600c6000396000f3603880600c6000396000f360"
  }
}

eth_getTransactionByBlockNumberAndIndex

根据块编号和交易索引序号返回交易信息。

参数

  1. Quantity - 块内交易索引序号

params: [
  "0x29c", // 668
  "0x0" // 0
]

返回值

Object - 匹配的块对象,如果未找到块则返回null ,结构如下:

  • number: Quantity - 块编号,挂起块为null

  • hash: Hash - 32 字节 - 块哈希,挂起块为null

  • parentHash: Hash - 32 字节 - 父块的哈希

  • nonce: Data - 8 字节 - 生成的 PoW 哈希,挂起块为null 。如共识为 PoA 则不返回此参数。

  • sha3Uncles: Data - 32 字节 - 块中 uncle 数据的SHA3哈希

  • logsBloom: Data - 256 字节 - 块日志的bloom过滤器,挂起块为null

  • transactionsRoot: Data - 32 字节 - 块中的交易 trie 树根节点

  • stateRoot: Data - 32 字节 - 块最终状态 trie 树的根节点

  • receiptsRoot: Data - 32 字节 - 块交易收据 trie 树的根节点

  • author: Address - 20 字节 - 块对应的矿工地址(挖矿奖励的接收账户)

  • miner: Address - 20 字节 - author对应的名字

  • difficulty: Quantity - 整数,出块难度

  • totalDifficulty: Quantity - 整数,截止到本块的链上总难度

  • extraData: Data - 块的其他数据

  • size: Quantity - 整数,本块字节数

  • gasLimit: Quantity - 本块允许的最大 gas 用量

  • gasUsed: Quantity - 本块中所有交易使用的总 gas 用量

  • timestamp: Quantity - 块 unix 时间戳

  • transactions: Array - 交易对象数组,或32字节长的交易哈希数组,取决于最后一个参数

  • uncles: Array - uncle 哈希数组

调用示例

请求正文:

curl --data '{"method":"eth_getTransactionByBlockNumberAndIndex","params":["0x29c","0x0"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

响应正文:

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": {
    "number": "0x1b4", // 436
    "hash": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331",
    "parentHash": "0x9646252be9520f6e71339a8df9c55e4d7619deeb018d2a3f2d21fc165dde5eb5",
    "sealFields": [
      "0xe04d296d2460cfb8472af2c5fd05b5a214109c25688d3704aed5484f9a7792f2",
      "0x0000000000000042"
    ],
    "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
    "logsBloom": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331",
    "transactionsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
    "stateRoot": "0xd5855eb08b3387c0af375e9cdb6acfc05eb8f519e419b874b6ff2ffda7ed1dff",
    "miner": "0x4e65fda2159562a496f9f3522f89122a3088497a",
    "difficulty": "0x27f07", // 163591
    "totalDifficulty": "0x27f07", // 163591
    "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "size": "0x27f07", // 163591
    "gasLimit": "0x9f759", // 653145
    "minGasPrice": "0x9f759", // 653145
    "gasUsed": "0x9f759", // 653145
    "timestamp": "0x54e34e8e", // 1424182926
    "transactions": [{ ... }, { ... }, ...],
    "uncles": [
      "0x1606e5...",
      "0xd5145a9..."
    ]
  }
}

eth_getTransactionByHash

根据块编号和交易哈希返回交易信息。

参数

  1. Hash - 32 字节 - 交易哈希

params: ["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"]

返回值

调用示例

请求正文:

curl --data '{"method":"eth_getTransactionByHash","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

响应正文:

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": {
    "hash": "0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b",
    "nonce": "0x0", // 0
    "blockHash": "0xbeab0aa2411b7ab17f30a99d3cb9c6ef2fc5426d6ad6fd9e2a26a6aed1d1055b",
    "blockNumber": "0x15df", // 5599
    "transactionIndex": "0x1", // 1
    "from": "0x407d73d8a49eeb85d32cf465507dd71d507100c1",
    "to": "0x853f43d8a49eeb85d32cf465507dd71d507100c1",
    "value": "0x7f110", // 520464
    "gas": "0x7f110", // 520464
    "gasPrice": "0x09184e72a000",
    "input": "0x603880600c6000396000f300603880600c6000396000f3603880600c6000396000f360"
  }
}

eth_getTransactionCount

返回指定地址的发出资产交易数量。

参数

  1. Address - 20 字节- 地址

params: ["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "0x2"]

返回值

  • Quantity - 整数,从指定地址发出的交易数量

调用示例

请求正文:

curl --data '{"method":"eth_getTransactionCount","params":["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "0x2"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

响应正文:

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0x1" // 1
}

eth_getTransactionReceipt

根据交易哈希返回指定交易的收据。

挂起交易也有收据。

参数

  1. Hash - 交易哈希

params: ["0x444172bef57ad978655171a8af2cfd89baa02a97fcb773067aef7794d6913374"]

返回值

调用示例

请求正文:

curl --data '{"method":"eth_getTransactionReceipt","params":["0x444172bef57ad978655171a8af2cfd89baa02a97fcb773067aef7794d6913374"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

响应正文:

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": {
    "blockHash": "0x67c0303244ae4beeec329e0c66198e8db8938a94d15a366c7514626528abfc8c",
    "blockNumber": "0x6914b0",
    "contractAddress": "0x471a8bf3fd0dfbe20658a97155388cec674190bf", // or null, if none was created
    "from": "0xc931d93e97ab07fe42d923478ba2465f2",
    "to": null, // value is null because this example transaction is a contract creation
    "cumulativeGasUsed": "0x158e33",
    "gasUsed": "0xba2e6",
    "logs": [], // logs as returned by eth_getFilterLogs, etc.
    "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
    "status": "0x1",
    "transactionHash": "0x444172bef57ad978655171a8af2cfd89baa02a97fcb773067aef7794d6913374",
    "transactionIndex": "0x4"
  }
}

eth_newBlockFilter

参数

无

返回值

  • Quantity - 过滤器编号

调用示例

请求正文:

curl --data '{"method":"eth_newBlockFilter","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

响应正文:

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0x1" // 1
}

eth_newFilter

关于特定主题过滤器的说明:主题是顺序相关的。如果一个交易的日志有主题[A, B],那么将被 以下的主题过滤器匹配:

  • [] - 任何主题

  • [A] - 先匹配A主题

  • [null, B] - 先匹配其他主题,再匹配B主题

  • [A, B] - 先匹配A主题,再匹配B主题,最后匹配其他主题

  • [[A, B], [A, B]] - 先匹配A主题或B主题,再匹配A主题或B主题,最后匹配其他主题

参数

Object - 过滤器选项:

  • fromBlock: Quantity 或 Tag - (可选)(默认值:latest)。整数块编号,或'latest'表示最后挖出的块,'pending'或'earliest'表示未挖出的交易。

  • toBlock: Quantity or Tag - (可选)(默认值:latest)。整数块编号,或'latest'表示最后挖出的块,'pending'或'earliest'表示未挖出的交易。

  • address: Address - (可选)20 字节 - 合约地址或用于生成日志的一组地址

  • topics: Array - (可选)32 字节 - Data主题的数组。主题是顺序相关的。可以传入null来代表任意一个主题,或通过一个子数组传入多个主题。

  • limit: Quantity - (可选)最多获检索条目数(以最新的为准)。

params: [{
  "fromBlock": "0x1", // 1
  "toBlock": "0x2", // 2
  "address": "0x8888f1f195afa192cfee860698584c030f4c9db1",
  "topics": [
    "0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b", // This topic in first position
    null, // Any topic in second position
    [
      "0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b",
      "0x000000000000000000000000aff3454fce5edbc8cca8697c15331677e6ebccc"
    ] // Either topic of the two in third position
  ] // ... and anything after
}]

返回值

  • Quantity - 过滤器编号

调用示例

请求正文:

curl --data '{"method":"eth_newFilter","params":[{"fromBlock":"0x1","toBlock":"0x2","address":"0x8888f1f195afa192cfee860698584c030f4c9db1","topics":["0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b",null,["0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b","0x000000000000000000000000aff3454fce5edbc8cca8697c15331677e6ebccc"]]}],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

响应正文:

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0x1" // 1
}

eth_newPendingTransactionFilter

参数

无

返回值

  • Quantity - 过滤器编号

调用示例

请求正文:

curl --data '{"method":"eth_newPendingTransactionFilter","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

响应正文:

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0x1" // 1
}

eth_sendRawTransaction

为签名交易创建一个新的消息调用交易或合约。

注意:这个方法也叫 eth_submitTransaction

参数

  1. Data - 已签名的交易数据

params: ["0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"]

返回值

  • Hash - 32 字节 - 交易哈希,如果交易尚未生效则返回哈希为 0 。

调用示例

请求正文:

curl --data '{"method":"eth_sendRawTransaction","params":["0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

响应正文:

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"
}

eth_sendTransaction

创建一个新的消息调用交易,如果data字段中包含代码,则创建一个合约。

参数

params: [{
  "from": "0xb60e8dd61c5d32be8058bb8eb970870f07233155",
  "to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567",
  "gas": "0x76c0", // 30400
  "gasPrice": "0x9184e72a000", // 10000000000000
  "value": "0x9184e72a", // 2441406250
  "data": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"
}]

返回值

  • Hash - 32 字节 - 交易哈希,如果交易还未生效则返回 0 值哈希

调用示例

请求正文:

curl --data '{"method":"eth_sendTransaction","params":[{"from":"0xb60e8dd61c5d32be8058bb8eb970870f07233155","to":"0xd46e8dd67c5d32be8058bb8eb970870f07244567","gas":"0x76c0","gasPrice":"0x9184e72a000","value":"0x9184e72a","data":"0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"}],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

响应正文:

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"
}

eth_sign

使用如下公式计算以太坊签名:sign(keccak256("\x19Ethereum Signed Message:\n" + len(message) + message)))。

注意:进行签名的地址必须是解锁的。

参数

  1. Address - 20 字节 - 地址

  2. Data - 需要签名的数据哈希

params: [
  "0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826",
  "0x5363686f6f6c627573" // Schoolbus
]

返回值

  • Data - 已签名的数据

调用示例

请求正文:

curl --data '{"method":"eth_sign","params":["0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826","0x5363686f6f6c627573"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

响应正文:

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0xb1092cb5b23c2aa55e5b5787729c6be812509376de99a52bea2b41e5a5f8601c5641e74d01e4493c17bf1ef8b179c49362b2c721222128d58422a539310c6ecd1b"
}

eth_signTransaction

注意:签名的地址必须是解锁的

参数

返回值

Object - 已签名数据:

  • raw: Data - 签名并使用 RLP 编码的交易

调用示例

请求正文:

curl --data '{"method":"eth_signTransaction","params":[{ ... }],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

响应正文:

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": {
    "raw": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675",
    "tx": {
      "hash": "0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b",
      "nonce": "0x0", // 0
      "blockHash": "0xbeab0aa2411b7ab17f30a99d3cb9c6ef2fc5426d6ad6fd9e2a26a6aed1d1055b",
      "blockNumber": "0x15df", // 5599
      "transactionIndex": "0x1", // 1
      "from": "0x407d73d8a49eeb85d32cf465507dd71d507100c1",
      "to": "0x853f43d8a49eeb85d32cf465507dd71d507100c1",
      "value": "0x7f110", // 520464
      "gas": "0x7f110", // 520464
      "gasPrice": "0x09184e72a000",
      "input": "0x603880600c6000396000f300603880600c6000396000f3603880600c6000396000f360"
    }
  }
}

eth_syncing

返回一个描述同步状态的对象或false。

参数

无

返回值

Object - 同步状态对象,没有同步则为false。同步对象的结构如下:

  • startingBlock: Quantity - 导入开始的块(当同步达到此区块头时重置)

  • highestBlock: Quantity - 预估最高块

  • blockGap: Array - "first", "last"的数组,[first, last) 都不在链上

  • warpChunksAmount: Quantity - 以 chunk 为单位的快照总数

  • warpChunksProcessed: Quantity - 已处理的快照 chunk 总数

调用示例

请求正文:

curl --data '{"method":"eth_syncing","params":[],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

响应正文:

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": {
    "startingBlock": "0x384", // 900
    "currentBlock": "0x386", // 902
    "highestBlock": "0x454" // 1108
  } // Or `false` when not syncing
}

eth_uninstallFilter

参数

  1. Quantity - 过滤器编号

params: [
  "0xb" // 11
]

返回值

  • Boolean - 如果成功卸载则返回true ,否则返回false

调用示例

请求正文:

curl --data '{"method":"eth_uninstallFilter","params":["0xb"],"id":1,"jsonrpc":"2.0"}' -H "Content-Type: application/json" -X POST localhost:8545

响应正文:

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": true
}

data: Data -(可选) 4 字节- 根据编码后的参数得到的方法签名的哈希。详情请见 。

Object - Object - 详见。from 是可选的,不包含nonce字段。

Quantity 或 Tag - 整数(块编号),或字符串 'latest', 'earliest' 或 'pending'。详细请参考 。

Object - 详见。from 是可选的,不包含nonce字段。

Quantity 或 Tag - 整数(块编号),或字符串 'latest', 'earliest' 或 'pending'。详细请参考 。

Quantity 或 Tag - 整数(块编号),或字符串 'latest', 'earliest' 或 'pending'。详细请参考 。

Quantity 或 Tag - 整数(块编号),或字符串 'latest', 'earliest' 或 'pending'。详细请参考 。

Quantity 或 Tag - 整数(块编号),或字符串 'latest', 'earliest' 或 'pending'。详细请参考 。

Quantity 或 Tag - 整数(块编号),或字符串 'latest', 'earliest' 或 'pending'。详细请参考 。

Object - 过滤器对象,参考调用的参数

Quantity 或 Tag - 整数(块编号),或字符串 'latest', 'earliest' 或 'pending'。详细请参考 。

Object - , or null when no transaction

Quantity 或 Tag - 整数(块编号),或字符串 'latest', 'earliest' 或 'pending'。详细请参考 。

Object - , or null when no transaction was found.

Quantity 或 Tag - 整数(块编号),或字符串 'latest', 'earliest' 或 'pending'。详细请参考 。

Object -

在节点中创建一个过滤器,以便当新块生成时进行通知。要检查状态是否变化, 请调用。

基于给定的选项创建一个过滤器对象,接收状态变化时的通知(log)。要检查状态是否变化, 请调用。

在节点中创建一个过滤器,以便当产生挂起交易时进行通知。 要检查状态是否发生变化,请调用。

当创建合约时,在交易生效后,使用获取合约地址。

Object - 详见,包含可选的condition字段

当创建合约时,在交易生效后,使用调用获取合约地址。

在无需把交易发送到区块链网络的前提下对交易进行签名。后续可以使用 发送交易。

Object - 详见,包含可选的condition字段 ,参考。

tx: Object -

currentBlock: Quantity - 当前块,和 一样

卸载指定编号的过滤器。当不在需要监听时,总是需要执行该调用。另外,过滤器如果在一定时间内未接收到调用会自动超时。

JSON-RPC
API
OpenEthereum JSONRPC
eth_estimateGas
eth_getBalance
eth_getCode
eth_getTransactionCount
eth_getStorageAt
eth_call
Ethereum Contract ABI
Transaction Response Object
Transaction Response Object
Receipt object
Transaction Response Object
eth_accounts
eth_blockNumber
eth_call
eth_chainId
eth_coinbase
eth_estimateGas
eth_gasPrice
eth_getBalance
eth_getBlockByHash
eth_getBlockByNumber
eth_getBlockTransactionCountByHash
eth_getBlockTransactionCountByNumber
eth_getCode
eth_getFilterChanges
eth_getFilterLogs
eth_getLogs
eth_getStorageAt
eth_getTransactionByBlockHashAndIndex
eth_getTransactionByBlockNumberAndIndex
eth_getTransactionByHash
eth_getTransactionCount
eth_getTransactionReceipt
eth_newBlockFilter
eth_newFilter
eth_newPendingTransactionFilter
eth_sendRawTransaction
eth_sendTransaction
eth_sign
eth_signTransaction
eth_syncing
eth_uninstallFilter
交易对象
Default Block 参数
交易对象
Default Block 参数
Default Block 参数
Default Block 参数
Default Block 参数
Default Block 参数
eth_newFilter
Default Block 参数
Default Block 参数
Default Block 参数
eth_getFilterChanges
eth_getFilterChanges
eth_getFilterChanges
eth_getTransactionReceipt
交易对象
eth_getTransactionReceipt
eth_sendRawTransaction
交易对象
eth_sendTransaction
eth_blockNumber
eth_getFilterChanges