我安装了Geth,以便向以太坊测试网Goerli发出JSON RPC调用。我在这里学习了入门教程。我按照指示做了以下事情:
- 通过调用
clef newaccount --keystore <my_local_dir>/keystore
生成新帐户(钱包地址( - 在Goerli上启动clef(链ID为5(,并通过指向密钥库目录
clef --keystore <my_local_dir>/keystore --configdir <my_local_dir>/clef --chainid 5
使用新生成的密钥 - 通过调用
geth --datadir <my_local_dir> --signer=<my_local_dir>/clef/clef.ipc --goerli --syncmode snap --http
启动geth以与节点同步 - 通过调用
geth attach http://127.0.0.1:8545
连接到正在运行的节点。尽管如此,我相信这一步可以跳过,因为我正在尝试激发JSON RPC请求 - 通过poster激发了请求-生成的curl命令如下:
--header 'Content-Type: application/json'
--data-raw '{
"jsonrpc": "2.0",
"method": "eth_getBalance",
"params": ["0x631e9b031b16b18172a2b9d66c3668a68a668d20", "latest"],
"id": 1
}'
我可能做错了什么?我看到账户确实有以太币(余额(,但由于我的呼叫,我一直得到0:
{
"jsonrpc": "2.0",
"id": 1,
"result": "0x0"
}
知道吗?
经过一些额外的研究和与同事的交谈,我相信我现在知道了为什么我无法检索区块链数据。只有在节点完全同步后才可用:
Client execution will initiate its core functions, chosen endpoints, and start looking for peers. After successfully discovering peers, the client starts synchronization. Current blockchain data will be available once the client is successfully synced to the current state.
这可以在这里的最后一段找到。
因此,问题不是安装或设置失败,而是客户端未同步。