簡體   English   中英

向本地托管的 ganache 服務器發出 curl 請求

[英]Making curl requests to ganache server hosted locally

我試圖弄清楚如何向本地 ganache 服務器發出請求。 這是我第一次使用 Ganache,如果這很明顯,請原諒我。

我的最終目標是擁有一個托管 ganache 的專用服務器,我可以隨時向它發出 curl 請求。 托管的 ganache 服務器將被設計為每隔一段時間分叉主網並響應請求。

我已經嘗試過ganache-cli --fork ,它在終端中產生了這個:

ganache v7.0.3 (@ganache/cli: 0.1.4, @ganache/core: 0.1.4)
Starting RPC server

Available Accounts
==================
(0) 0xbDF9C183567A386609e6e94d0aD13CeA8f374049 (1000 ETH)
(1) 0xe27b1B229b768Adca934CEd15faA0b3C5Cf48781 (1000 ETH)
(2) 0x637F0C83B8B682282E291Ce0DDb1E90b1cA7b106 (1000 ETH)
(3) 0xDa94450449dE31AF4ca977656d267991912f4e32 (1000 ETH)
(4) 0x9ef0A0392D8273221786A97a9E5C4c4Db0C1a713 (1000 ETH)
(5) 0x31b442a7e5799DE23F8925E5a40BCb6dea5B3092 (1000 ETH)
(6) 0xA011e621A9E298333266E190A7F2A85d7D24Bd84 (1000 ETH)
(7) 0x349A93BAC6e637e5b9405E7ea67d43E806bEF636 (1000 ETH)
(8) 0x55038A17ad748749E39BAb2aB22F957243cf3eC2 (1000 ETH)
(9) 0x2AfebF0d8020dCe1AA50FEf6B97624E1Bde5CBB7 (1000 ETH)

Private Keys
==================
(0) 0x0e79efa9a1a642978b194d8d2a81169dfd270ac91cc2263366bf36bc2fa364c6
(1) 0x5114080f5d56b72e56fa12bf058e921418425f17e2054a45a094ec7765da5336
(2) 0xbf2552187bed065e05528cc21790ab6df0eecbbb879374fb64ee6c9f0198cb8a
(3) 0x6198d636b7a7c292ff6f3c782a0e19e81ab51c3ef13453ac52afcb957284d24f
(4) 0x59a322108f123ac90beabd8842622d60bb42e2e53d31f1b93f8f4938933149c9
(5) 0xcca307c9935aa2587f7e356cd6de410d2133c45ecc783ca24d8598fafc2c1ad9
(6) 0x14304aa76ecb5626e6d2fa4292580d2f84e8fe0efee8c66903043a490ed41021
(7) 0xc382db92c9eaf40cc104f08292e47c290213044bb7998cd135f22788da8b99ff
(8) 0x7495fd3615831af0e0de59beaa56d813e71cf25db0f11069b195ca39fb9701b6
(9) 0x0351c7990ff699ad7a4d669667f426f96e0590f2c6ebd2b1241edb6317bba3a3

HD Wallet
==================
Mnemonic:      wrap tired exhaust oil seed teach comfort flash wasp error else still
Base HD Path:  m/44'/60'/0'/0/{account_index}        

Default Gas Price
==================
2000000000

BlockGas Limit
==================
30000000

Call Gas Limit
==================
50000000

Forked Chain
==================
Location:        Ethereum Mainnet, via 丕Infura      
Block:           14523327
Network ID:      1
Time:            Mon Apr 04 2022 22:46:30 GMT-0400 (Eastern Daylight Time)

Chain Id
==================
1337

RPC Listening on 127.0.0.1:8545

雖然它仍在運行,但在單獨的終端中,我正在運行curl.exe http://127.0.0.1:8545 -X POST -H "Content-Type: application/json" -d '{"jsonrpc": "2.0", "method": "eth_accounts"}'只是為了測試我是否可以得到某種響應(注意:使用curl.exe因為我在 powershell 中遇到了curl問題)。 我總是收到此錯誤400 Bad Request: Unexpected token j in JSON at position 1

這是 ganache-cli 作為 rpc 服務器而不是 json-rpc 的問題嗎? 在這種情況下,如何啟動 json-rpc 的服務器?

我還嘗試通過遵循 Ganache 文檔以編程方式創建服務器,該文檔指定代碼設計為 json-rpc 服務器:

const ganache = require("ganache");

const options = {};
const server = ganache.server(options);
const PORT = 8545;
server.listen(PORT, async (err) => {
  if (err) throw err;

  console.log(`ganache listening on port ${PORT}...`);
  const provider = server.provider;
  const accounts = await provider.request({
    method: "eth_accounts",
    params: [],
  });
});

嘗試發出 curl 請求時出現相同的錯誤。 有人可以幫我弄清楚我做錯了什么嗎?

謝謝!

我可以復制你的問題,我設法通過轉義 JSON 上元素的引號來解決它。

你應該重寫你的 curl 命令如下:

curl.exe http://127.0.0.1:8545 -X POST -H "Content-Type: application/json" -d "{\"jsonrpc\": \"2.0\", \"method\": \"eth_accounts\"}'

此外,您還可以通過創建包含要發送的元素的 JSON 文件(例如{"jsonrpc": "2.0", "method": "eth_accounts"} )來避免此類問題。

假設 JSON 文件名為 accounts.json,curl 命令將是:

curl.exe http://127.0.0.1:8545 -X POST -H "Content-Type: application/json" -d @accounts.json

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM