Я использую эти инструкции от etherchain . Вот аналогичный вопрос ( похоже на дубликат, но это не так ). Предоставленное там решение не работает для меня, потому что у меня нет локального клиента ethereum для подключения. Я хочу использовать один, предоставленный Etherchain .
const Web3 = require('web3');
const web3 = new Web3(new Web3.providers.HttpProvider("http://rpc.ethapi.org:8545"));
web3.eth.getBlock("latest", (error, result) => {
console.log('error:', error);
console.log('results', result);
});
Ошибка:
Error: Invalid JSON RPC response: ""
at Object.InvalidResponse (/home/manid/Рабочий стол/Pogovorim/NODE_SERVER/node_modules/web3/lib/web3/errors.js:35:16)
at XMLHttpRequest.request.onreadystatechange (/home/manid/Рабочий стол/Pogovorim/NODE_SERVER/node_modules/web3/lib/web3/httpprovider.js:116:32)
at XMLHttpRequestEventTarget.dispatchEvent (/home/manid/Рабочий стол/Pogovorim/NODE_SERVER/node_modules/xhr2/lib/xhr2.js:64:18)
at XMLHttpRequest._setReadyState (/home/manid/Рабочий стол/Pogovorim/NODE_SERVER/node_modules/xhr2/lib/xhr2.js:354:12)
at XMLHttpRequest._onHttpRequestError (/home/manid/Рабочий стол/Pogovorim/NODE_SERVER/node_modules/xhr2/lib/xhr2.js:544:12)
at ClientRequest.<anonymous> (/home/manid/Рабочий стол/Pogovorim/NODE_SERVER/node_modules/xhr2/lib/xhr2.js:414:24)
at emitOne (events.js:96:13)
at ClientRequest.emit (events.js:188:7)
at Socket.socketErrorListener (_http_client.js:309:9)
at emitOne (events.js:96:13)
at Socket.emit (events.js:188:7)
at emitErrorNT (net.js:1281:8)
at _combinedTickCallback (internal/process/next_tick.js:74:11)
at process._tickCallback (internal/process/next_tick.js:98:9)
Что мне не хватает?
я заменил
const web3 = new Web3(new Web3.providers.HttpProvider("http://rpc.ethapi.org:8545"));
с:
const web3 = new Web3(new Web3.providers.HttpProvider("https://ropsten.infura.io/TOKEN"));
и все работает.
Это https://ropsten.infura.io/TOKEN
мне выдали после регистрации на infura.io
rpc.ethapi.org
, не работает: isup.me/rpc.ethapi.orgВы должны быть осторожны, используя Infura, потому что она может передать вам неверную информацию. Infura спроектирована с несколькими узлами за балансировщиком нагрузки. Все эти узлы не синхронизированы, поэтому вы можете получать информацию от узлов, содержащих устаревшие блоки, или узлов, которые не синхронизированы с самым последним блоком.
Раньше мы использовали Infura, которая была отличной, потому что она бесплатна, однако это привело к многочасовой инженерной работе, поскольку нам приходилось отлаживать ответы с противоречивыми данными. Мы перешли на Алхимию , и нам жаль, что мы не переключились на нее раньше. Это платная услуга, однако она стоит каждой копейки.
тайвано
манидос