Web3.givenProvider возвращает ноль - PullRequest
0 голосов
/ 12 ноября 2018

Я создаю реагирующее приложение, которое взаимодействует с приватным блокчейном ethereum, работающим с geth на rpcport 8545.

Таким образом, я использую web3.js для извлечения данных из моей блокчейна, и вот мой код:

var Web3 = require('web3');
var web3 = new Web3("http://localhost:8545");

и в методе render ():

console.log(web3.eth.blockNumber);
console.log(Web3.givenProvider);

Он должен отобразить в консоли браузера мой текущий blockNumber и на каком порту я слушаю, но вместо этого я получаю undefined и null, что, по-видимому, означает, что я не подключен к моей работающей цепочке блоков.

кстати мой блокчейн работает с этой строкой:

geth --datadir ./noeud2 --networkid 100 --port 30301 --rpcport 8545

Знаете ли вы, почему это не работает?

Я следовал этому уроку:

https://www.codeooze.com/blockchain/ethereum-block-explorer-react-02/

Но у меня это тоже не работает.

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Прежде чем приступить непосредственно к отладке вашего кода реакции, лучше начать с простого приложения на основе html и попытаться запросить вашу частную цепочку Ethereum.Для этого выполните следующие шаги

  1. Создайте файл index.html ниже

index.html

<!DOCTYPE html>
<html lang=”en”>
<head>
     <meta charset=”UTF-8">
     <meta name=”viewport” content=”width=device-width, initial-scale=1.0">
     <meta http-equiv=”X-UA-Compatible” content=”ie=edge”>
     <title>Document</title>
     //provide the location of web3 file
     <script src=”./node_modules/web3/dist/web3.min.js”></script>

</head>
<body>
    <div class=”container”>
         <h1>Given below Ethereum address</h1>
         <div id=”AccountAddress”></div>

<script src=”https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<script>


  if (typeof web3 !== ‘undefined’) 
{
 web3 = new Web3(web3.currentProvider);
 } 
else 
{
 // set the provider you want from Web3.providers
web3 = new Web3(new Web3.providers.HttpProvider(“http://localhost:8545”));
 }

 $(“#AccountAddress”).html(web3.eth.accounts[0]);

 </script>
</body>
</html>
Когда вы открываете файл index.html в браузере, если первый адрес учетной записи не отображается, возникает проблема с подключением к блокчейну geth ethereum, который вы только что отключили.

С помощью Geth вы можете попробовать следующую конфигурацию, чтобы запустить ваш Ethereum

geth --rpc --rpcaddr "0.0.0.0" --rpcport 8545 --nodiscover --networkid "$NETWORKID" --datadir ~/.ethereum_experiment --genesis ~/genesis_block.json

Или же вы можете попробовать использовать Ganache CLI (TestRPC) вместо Geth

Ganache CLI можно установить с помощью следующей команды

npm install -g ganache-cli

После завершения выполните следующую команду, чтобы запустить его:

ganache-cli 

Вы также можете попробовать следующееесли вы чувствуете, что у вас нет web3

Установите web3.js с помощью следующей команды

npm install ethereum/web3.js — save

Теперь вы можете попробовать подключиться к интерфейсу командной строки Ganache, который вы только что начали, используя Remix IDEпервый.

Открыть http://remix.ethereum.org, щелкните вкладку «Выполнить», а затем измените раскрывающийся список «Среда» с виртуальной машины Javascript на поставщика Web3.

Нажмите «ОК» и укажите testrpc /адрес локального хоста ganache-cli (по умолчанию это http://localhost:8545)

Теперь вместо развертывания и тестирования на виртуальной машине Javascript в Remix теперь мы используем клиент CLI Ganache на вашем компьютере.

Попробуйте сначала выполнить описанные выше шаги и прокомментируйте свои выводы.

0 голосов
/ 12 ноября 2018

Инициализация web3 должна быть такой: var web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545'));

...