Class: Utxoracle::Mempool

Inherits:
Provider show all
Defined in:
lib/utxoracle/providers/mempool.rb

Instance Method Summary collapse

Methods inherited from Provider

#init

Constructor Details

#initializeMempool

Returns a new instance of Mempool.



9
# File 'lib/utxoracle/providers/mempool.rb', line 9

def initialize; end

Instance Method Details

#getblock(block_hash, _verbosity = 2) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/utxoracle/providers/mempool.rb', line 35

def getblock(block_hash, _verbosity = 2)
  block = JSON.parse Request.send("https://mempool.space/api/block/#{block_hash}").body

  # mempool API maps 'timestamp' to 'time'
  block['time'] = block['timestamp']

  # mempool API doesn't return tx. Set to empty array:
  block['tx'] = []

  # Get all tx_ids in the block
  tx_ids = JSON.parse Request.send("https://mempool.space/api/block/#{block_hash}/txids").body

  # Append vout to block['tx']
  # ( requires mempool enterprise: 429 Too Many Requests)
  tx_ids.each do |tx_id|
    tx = JSON.parse Request.send("https://mempool.space/api/tx/#{tx_id}").body
    block['tx'] << tx['vout']
  end

  block
end

#getblockcountObject



11
12
13
# File 'lib/utxoracle/providers/mempool.rb', line 11

def getblockcount
  Request.send('https://mempool.space/api/blocks/tip/height').body.to_i
end

#getblockhash(height) ⇒ Object



15
16
17
# File 'lib/utxoracle/providers/mempool.rb', line 15

def getblockhash(height)
  Request.send("https://mempool.space/api/block-height/#{height}").body
end

#getblockheader(block_hash, _verbose = true) ⇒ Object

Oracle.price needs blockheader



20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/utxoracle/providers/mempool.rb', line 20

def getblockheader(block_hash, _verbose = true)
  hex_block_header = Request.send("https://mempool.space/api/block/#{block_hash}/header").body

  # version = hex_to_int(reverse_byte_order(hex_block_header[0..7]))
  # prev_block_hash = reverse_byte_order(hex_block_header[8..71])
  # merkle_root = reverse_byte_order(hex_block_header[72..135])
  timestamp = hex_to_int(reverse_byte_order(hex_block_header[136..143]))
  # bits = reverse_byte_order(hex_block_header[144..151])
  # nonce = hex_to_int(reverse_byte_order(hex_block_header[152..159]))

  {
    'time' => timestamp
  }
end