JavaScript
solidity
geth

ブロックチェーン上の情報をGETする方法(gethの場合)

はじめに

初投稿です。
今回は、BCからデータを吸い取る方法を載せます。

コード

多分見れば、分かりますw
実行環境として
Gethを使用しています。
ビットコインの場合はまた違うと思います。

bcCheck.js
var Web3 = require('web3');
var web3 = new Web3();
web3.setProvider(new web3.providers.HttpProvider('http://localhost:8545'));

var blockNumber = web3.eth.blockNumber;
console.log("blockNumber:  " + blockNumber);

for(var i = 0;i <blockNumber;i++){
  if(web3.eth.getTransactionFromBlock(i) != null){
    var getInputSlice = web3.eth.getTransactionFromBlock(i).input.substr(0,10);
    if(getInputSlice == "0x42f09166"){
      var getInput = web3.eth.getTransactionFromBlock(i).input

      console.log("getInput:  " + i  + ":  " + JSON.stringify(getInput));
    }
    console.log("getInput:  " + i  + ":  " + JSON.stringify(getInputSlice));
  }
}

コード説明

ここでweb3でGethと接続する

var Web3 = require('web3');
var web3 = new Web3();
web3.setProvider(new web3.providers.HttpProvider('http://localhost:8545'));

(web3.eth.getTransactionFromBlock(i) != null)でそのブロックにトランザクションがあるかどうかが分かる。

トランザクションがないブロックにはinputがないため
ここで、(web3.eth.getTransactionFromBlock(i).input != null)と書くと、エラーが出る。

for(var i = 0;i <blockNumber;i++){
  if(web3.eth.getTransactionFromBlock(i) != null){
    var getInputSlice = web3.eth.getTransactionFromBlock(i).input.substr(0,10);
    if(getInputSlice == "0x42f09166"){
      var getInput = web3.eth.getTransactionFromBlock(i).input

      console.log("getInput:  " + i  + ":  " + JSON.stringify(getInput));
    }
    console.log("getInput:  " + i  + ":  " + JSON.stringify(getInputSlice));
  }
}

終わり

今回はこれくらいで終わりです。
分かりにくかったらすいません。
何か疑問点があれば、質問などしてくれたら返事します。