Как настроить blockwatcher на arduino nano с помощью web3 && node.js - PullRequest
0 голосов
/ 01 октября 2018
  1. Я не могу подключить мой клиент node.js к тестовой сети для отображения текущего блочного заголовка на моем arduino nano.Для подписки я использую infura в качестве поставщика услуг.
  2. До того, как я использовал подключение к веб-сокету, но я не знал, как использовать веб-сокет для запроса текущего заголовка блока.
  3. I 'Я был бы очень рад, если бы вы могли объяснить мне разницу между подпиской HttpRequest и подпиской WebSocket.
  4. В конце я хотел бы знать, какова основная задача web3 при подключении к узлу ethereum.

Спасибо за вашу помощь!

Текущее сообщение об ошибке выглядит следующим образом.

Код:

var Web3 = require('web3');
var Five = require("johnny-five");
var OledJs = require('oled-js');
var Font = require('oled-font-5x7');

//connect to blockchain client 

//based on infura 
var web3ws = new Web3(new Web3.providers.HttpProvider('https://ropsten.infura.io/...mySocket'))


//load board ressources
//Initialize the board ressources
var board = new Five.Board();
var oled;

board.on("ready", function() {

    //oled parameters
    const opts = {width: 128, height: 64, adress: 0x3C};

    //initialize display
    oled = new OledJs(board, Five, opts);

    oled.clearDisplay(true);
    oled.update();

    //wait for blockheader
    listenToBlockchain();
})

//listen for blockchain events (only works on web socket connections)
function listenToBlockchain() {

    //event listener
    web3ws.eth.subscribe('newBlockHeaders')
    .on("data", function(blockHeader){

        //an dieser Stelle wird 
        console.log("Block: "+blockHeader.number);
        output(blockHeader);
    })
    .on("error", function(e){
        console.log("FEHLER: "+e);
    })

    //output function
    function output(block) {
        oled.setCursor(1,1);
        oled.writeString(Font, 1, ''+blockHeader.number, 1, false, 2);
        oled.setCursor(1,15);
        oled.writeString(Font, 1, ''+blockHeader.hash,1,true,2);
    }
}

Сообщение об ошибке:

    C:\Users\andra\Desktop\ArduinoIOTblockchainsession\node_modules\web3-core-subscriptions\src\subscription.js:208
        this.callback(err2, null, this);
             ^

TypeError: this.callback is not a function
    at Subscription.subscribe (C:\Users\andra\Desktop\ArduinoIOTblockchainsession\node_modules\web3-core-subscriptions\src\subscription.js:208:14)
    at Eth.subscribe (C:\Users\andra\Desktop\ArduinoIOTblockchainsession\node_modules\web3-core-subscriptions\src\index.js:68:39)
    at listenToBlockchain (C:\Users\andra\Desktop\ArduinoIOTblockchainsession\infura_test.js:38:13)
    at Board.<anonymous> (C:\Users\andra\Desktop\ArduinoIOTblockchainsession\infura_test.js:31:2)
    at emitNone (events.js:111:20)
    at Board.emit (events.js:208:7)
    at _combinedTickCallback (internal/process/next_tick.js:131:7)
    at process._tickDomainCallback (internal/process/next_tick.js:218:9)
...