Ethereum web3 json rpc错误“&引用;尝试交易时

Ethereum web3 json rpc错误“&引用;尝试交易时,ethereum,web3js,web3,go-ethereum,Ethereum,Web3js,Web3,Go Ethereum,我们正在使用web3连接到rinkeby测试以太坊网络。通过geth,通过localhost,使用下面的web3命令执行此操作时: var web3 = new Web3('http://localhost:8545'); 我们没有收到任何错误。我们使用此命令启动geth: geth --rinkeby --rpc --rpcapi="personal,eth,network,web3,net" --ipcpath "~/Library/Ethereum/geth.ipc" 但是,当我们尝试

我们正在使用
web3
连接到rinkeby测试以太坊网络。通过geth,通过localhost,使用下面的web3命令执行此操作时:

var web3 = new Web3('http://localhost:8545');
我们没有收到任何错误。我们使用此命令启动geth:

geth --rinkeby --rpc --rpcapi="personal,eth,network,web3,net" --ipcpath "~/Library/Ethereum/geth.ipc"
但是,当我们尝试直接使用rinkeby测试网络时:

var web3 = new Web3('https://rinkeby.infura.io/');
我们得到这个错误:

Error: Invalid JSON RPC response: ""
   at Object.InvalidResponse (errors.js:42)
   at XMLHttpRequest.request.onreadystatechange (index.js:73)
   at XMLHttpRequest.dispatchEvent (event-target.js:172)
   at XMLHttpRequest.setReadyState (XMLHttpRequest.js:546)
   at XMLHttpRequest.__didCompleteResponse (XMLHttpRequest.js:387)
   at XMLHttpRequest.js:493
   at RCTDeviceEventEmitter.emit (EventEmitter.js:181)
   at MessageQueue.__callFunction (MessageQueue.js:353)
   at MessageQueue.js:118
   at MessageQueue.__guardSafe (MessageQueue.js:316)
大多数操作都在两个网络上工作,但是直接连接到rinkeby网络时,
.send()
调用失败

我们认为这是身份验证的问题,因为其他不执行事务的命令成功了。然而,我们尝试使用HDWalletProvider,通过geth创建的帐户都没有助记符


如有任何建议或故障排除步骤,将不胜感激。谢谢

必须签署交易记录。当您通过本地geth节点发送交易时,它知道与您发送地址对应的私钥,因此它可以为您签署交易(一旦您解锁帐户)


像Infura这样的公共节点(幸运的是!)不知道您的私钥,因此无法为您签署事务。您需要在本地对它们进行签名,然后使用
sendSignedTransaction

发送它们,以确保您也在传递API密钥吗<代码>变量web3=新的web3('https://rinkeby.infura.io/API_KEY');好吧,我们以前没有,谢谢:)但是我们添加了它,并且得到了相同的结果。我们也尝试过这样做:
web3=newweb3(newweb3.providers.HttpProvider('https://rinkeby.infura.io/API_KEY'));得到了同样的信息啊哈,似乎我们应该使用
https://api-rinkeby.etherscan.io/
用于API调用!:)我不确定我是否理解第二条评论。你说的是两种不同的API。一个用于Infura,另一个用于Etherscan。Infura要求您创建一个API键并将其附加到URL的末尾。如果您仍然得到一个错误,那么您还有一些其他问题。请记住,您无法通过Infura访问与在Geth中指定的相同的RPC API库集,因此您的功能将取决于您尝试执行的操作。好吧,现在我们回到正确的API,使用来自infura的API密钥,但它仍然给出相同的json RPC错误。是的,这似乎是问题所在。谢谢如果有人知道json rpc geth URL和帐户地址,会发生什么?从理论上讲,此人可以签署交易并发送以太给他们,对吗?那么,如何防止这种情况发生呢?@NathanAw评论是一个不适合提出新问题的地方。