Ganache-CLI以太坊私网JSON-RPC接口大全:从入门到精通

内容分享7天前发布
0 0 0

1. 账户相关接口

eth_accounts – 获取账户列表


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

输出示例:


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

字段解释:


jsonrpc
: JSON-RPC 版本号
id
: 请求标识符
result
: 账户地址数组,每个地址都是20字节的十六进制字符串

eth_getBalance – 查询余额


{
    "jsonrpc": "2.0",
    "method": "eth_getBalance",
    "params": ["0xC29056169F9A933cfAF02d1d997356e3D6656584", "latest"],
    "id": 1
}

输出示例:


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

字段解释:


result
: 余额值,以wei为单位的十六进制数wei转换:
1 ETH = 10^18 wei
示例值:
0x56bc75e2d63100000
= 100 ETH

eth_getTransactionCount – 获取交易数量


{
    "jsonrpc": "2.0",
    "method": "eth_getTransactionCount",
    "params": ["0xC29056169F9A933cfAF02d1d997356e3D6656584", "latest"],
    "id": 1
}

输出示例:


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

字段解释:


result
: 账户发出的交易总数(nonce值)用途: 防止重放攻击,每笔交易必须有唯一的nonce

2. 交易相关接口

eth_sendTransaction – 发送交易


{
    "jsonrpc": "2.0",
    "method": "eth_sendTransaction",
    "params": [{
        "from": "0xC29056169F9A933cfAF02d1d997356e3D6656584",
        "to": "0xefBFb91d702DBDa726d2d0949d0cafA3a56F2f98",
        "value": "0x8ac7230489e80000",
        "gas": "0x5208",
        "gasPrice": "0x4a817c800",
        "data": "0x"
    }],
    "id": 1
}

输出示例:


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

字段解释:


result
: 交易哈希,32字节的十六进制字符串交易参数:

from
: 发送方地址
to
: 接收方地址
value
: 转账金额(wei)
gas
: Gas限制
gasPrice
: Gas价格(wei)
data
: 合约调用数据

eth_getTransactionByHash – 根据哈希查询交易


{
    "jsonrpc": "2.0",
    "method": "eth_getTransactionByHash",
    "params": ["0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"],
    "id": 1
}

输出示例:


{
    "jsonrpc": "2.0",
    "id": 1,
    "result": {
        "blockHash": "0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2",
        "blockNumber": "0x5daf3b",
        "from": "0xc29056169f9a933cfaf02d1d997356e3d6656584",
        "gas": "0x5208",
        "gasPrice": "0x4a817c800",
        "hash": "0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b",
        "input": "0x",
        "nonce": "0x15",
        "to": "0xefbfb91d702dbda726d2d0949d0cafa3a56f2f98",
        "transactionIndex": "0x1",
        "value": "0x8ac7230489e80000",
        "v": "0x25",
        "r": "0x1b5e176d927f8e9ab405058b2d2457392da3e20f328b16ddabcebc33eaac5fea",
        "s": "0x4ba69724e8f69de52f0125ad8b3c5c2cef33019bac3249e2c0a2192766d1721c"
    }
}

字段解释:


blockHash
: 所在区块哈希
blockNumber
: 所在区块号
from
: 发送方地址
gas
: 分配的Gas数量
gasPrice
: Gas单价
hash
: 交易哈希
input
: 调用数据(同data)
nonce
: 交易序列号
to
: 接收方地址
transactionIndex
: 交易在区块中的索引
value
: 转账金额
v, r, s
: 交易签名参数

eth_getTransactionReceipt – 获取交易收据


{
    "jsonrpc": "2.0",
    "method": "eth_getTransactionReceipt",
    "params": ["0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"],
    "id": 1
}

输出示例:


{
    "jsonrpc": "2.0",
    "id": 1,
    "result": {
        "transactionHash": "0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b",
        "transactionIndex": "0x1",
        "blockHash": "0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2",
        "blockNumber": "0x5daf3b",
        "from": "0xc29056169f9a933cfaf02d1d997356e3d6656584",
        "to": "0xefbfb91d702dbda726d2d0949d0cafa3a56f2f98",
        "cumulativeGasUsed": "0x5208",
        "gasUsed": "0x5208",
        "contractAddress": null,
        "logs": [],
        "status": "0x1",
        "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    }
}

字段解释:


transactionHash
: 交易哈希
transactionIndex
: 交易索引
blockHash
: 区块哈希
blockNumber
: 区块号
from
: 发送方
to
: 接收方
cumulativeGasUsed
: 区块累计使用的Gas
gasUsed
: 本交易使用的Gas
contractAddress
: 如果是合约创建,返回合约地址
logs
: 事件日志数组
status
: 交易状态
0x1
=成功,
0x0
=失败
logsBloom
: 日志布隆过滤器

3. 区块相关接口

eth_blockNumber – 获取最新区块号


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

输出示例:


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

字段解释:


result
: 最新区块号,十六进制格式示例:
0x4b7
= 十进制1207

eth_getBlockByNumber – 根据区块号查询区块


{
    "jsonrpc": "2.0",
    "method": "eth_getBlockByNumber",
    "params": ["latest", true],
    "id": 1
}

输出示例:


{
    "jsonrpc": "2.0",
    "id": 1,
    "result": {
        "number": "0x1b4",
        "hash": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331",
        "parentHash": "0x9646252be9520f6e71339a8df9c55e4d7619deeb018d2a3f2d21fc165dde5eb5",
        "nonce": "0xe04d296d2460cfb8472af2c5fd05b5a214109c25688d3704aed5484f9a7792f2",
        "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
        "logsBloom": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331",
        "transactionsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
        "stateRoot": "0xd5855eb08b3387c0af375e9cdb6acfc05eb8f519e419b874b6ff2ffda7ed1dff",
        "miner": "0x4e65fda2159562a496f9f3522f89122a3088497a",
        "difficulty": "0x027f07",
        "totalDifficulty": "0x027f07",
        "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000",
        "size": "0x027f07",
        "gasLimit": "0x9f759",
        "gasUsed": "0x9f759",
        "timestamp": "0x54e34e8e",
        "transactions": [],
        "uncles": []
    }
}

字段解释:


number
: 区块号
hash
: 区块哈希
parentHash
: 父区块哈希
nonce
: 工作量证明随机数
sha3Uncles
: 叔区块哈希
logsBloom
: 日志布隆过滤器
transactionsRoot
: 交易树的根节点
stateRoot
: 状态树的根节点
miner
: 挖矿节点地址
difficulty
: 区块难度
totalDifficulty
: 链总难度
size
: 区块大小(字节)
gasLimit
: Gas限制
gasUsed
: 已使用Gas
timestamp
: 时间戳
transactions
: 交易列表
uncles
: 叔区块列表

4. 合约相关接口

eth_call – 调用合约视图函数


{
    "jsonrpc": "2.0",
    "method": "eth_call",
    "params": [{
        "to": "0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359",
        "data": "0x70a0823100000000000000000000000090f8bf6a479f320ead074411a4b0e7944ea8c9c1"
    }, "latest"],
    "id": 1
}

输出示例:


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

字段解释:


result
: 合约函数返回值,十六进制编码data字段: 包含函数选择器和参数示例: 查询余额函数
balanceOf

eth_estimateGas – 估算Gas消耗


{
    "jsonrpc": "2.0",
    "method": "eth_estimateGas",
    "params": [{
        "from": "0xC29056169F9A933cfAF02d1d997356e3D6656584",
        "to": "0xefBFb91d702DBDa726d2d0949d0cafA3a56F2f98",
        "value": "0x8ac7230489e80000"
    }],
    "id": 1
}

输出示例:


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

字段解释:


result
: 预估的Gas消耗量标准转账: 通常为21000 Gas (
0x5208
)

eth_getCode – 获取合约字节码


{
    "jsonrpc": "2.0",
    "method": "eth_getCode",
    "params": ["0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359", "latest"],
    "id": 1
}

输出示例:


{
    "jsonrpc": "2.0",
    "id": 1,
    "result": "0x60606040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063..."
}

字段解释:


result
: 合约的字节码,如果是EOA账户返回
0x

5. 网络相关接口

net_version – 获取网络ID


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

输出示例:


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

字段解释:


result
: 网络ID,Ganache默认是
1337

net_listening – 检查节点是否监听


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

输出示例:


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

字段解释:


result
:
true
表示节点正在监听连接

net_peerCount – 获取对等节点数量


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

输出示例:


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

字段解释:


result
: 连接的对等节点数量,Ganache通常为0

6. 个人信息相关接口

personal_newAccount – 创建新账户


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

输出示例:


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

字段解释:


result
: 新创建的账户地址

personal_unlockAccount – 解锁账户


{
    "jsonrpc": "2.0",
    "method": "personal_unlockAccount",
    "params": ["0xC29056169F9A933cfAF02d1d997356e3D6656584", "password123", 300],
    "id": 1
}

输出示例:


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

字段解释:


result
:
true
表示解锁成功参数: 地址、密码、解锁时长(秒)

7. 挖矿相关接口

miner_start – 开始挖矿


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

输出示例:


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

字段解释:


result
:
true
表示开始挖矿成功参数: 挖矿线程数

eth_mining – 检查是否在挖矿


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

输出示例:


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

字段解释:


result
:
true
表示正在挖矿

8. Gas相关接口

eth_gasPrice – 获取当前Gas价格


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

输出示例:


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

字段解释:


result
: 当前Gas价格(wei per gas)示例:
0x4a817c800
= 20 Gwei

9. 常用数值转换

以太坊单位转换

javascript


// Wei 到 Ether 转换
1 ETH = 10^18 wei
1 Gwei = 10^9 wei

// 十六进制转十进制
"0x5208" = 21000
"0x8ac7230489e80000" = 10 ETH
"0x56bc75e2d63100000" = 100 ETH

区块参数选项


"earliest"
: 创世区块
"latest"
: 最新区块
"pending"
: 待处理状态

这些接口涵盖了 Ganache-CLI 私网开发测试所需的大部分功能,可以满足智能合约开发、交易测试和区块链状态监控等需求。

辅助工具

以太坊环境搭建
十六进制转换十进制
以太单位换算

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...