blockcypher-opreturn

node v6.17.1
version: 8.0.0
endpointsharetweet
// get op-return values with blockcypher // // notes: fork https://runkit.com/makevoid/eternity-wall-json-opreturn const http = require('axios') const c = console const DEBUG = true // enables console.log - checks only 1 transaction (disables loop) // const DEBUG = false const url_base = "api.blockcypher.com/v1/btc/main" // specify your address // const address = "12RXhCqxnXgJyfJLL2mvcqT3jCQ2o6rMAR" const endpoint_addr = `addrs/${address}` const url_addr = `https://${url_base}/${endpoint_addr}` if (DEBUG) c.log(`URL: ${url_addr}`) const resp = await http.get(url_addr) if (DEBUG) c.log(resp.data) // API returns only the first message - TODO FIXME api let tx_hashes = resp.data.txrefs.map((tx) => { return tx.tx_hash }) let txs = [] tx_hashes = new Set(tx_hashes) tx_hashes = Array.from(tx_hashes) //// alt: // await Promise.all(tx_hashes.forEach((tx_hash) => { // for (let tx_hash of tx_hashes) { c.log(`TX: ${tx_hash}`) let endpoint_tx = `txs/${tx_hash}` let url_tx = `https://${url_base}/${endpoint_tx}` if (DEBUG) c.log(`URL: ${url_tx}`) let resp_tx = await http.get(url_tx) txs.push(resp_tx.data) if (DEBUG) break } let tx_outs = [] txs.forEach((tx) => { let outputs = tx.outputs tx_outs.concat(outputs) }) op_returns = tx_outs.filter((output) => { return output.script_type == "null-data" }).map((output) => { return output.data_string }) c.log("OP_RETURNS:\n", op_returns) // other OP_RETURN // http://api.coinsecrets.org/block/353197 - http://api.coinsecrets.org/block/NUMBER ( need to scan all the blocks from x to y - needs caching - background task - request limited - 1rps by api policy rules - use redis cache maybe? )
Loading…

no comments

    sign in to comment