class Bitcoin::Message::BlockTransactionRequest

BIP-152 Compact Block's data format. github.com/bitcoin/bips/blob/master/bip-0152.mediawiki#BlockTransactionsRequest

Attributes

block_hash[RW]
indexes[RW]

Public Class Methods

new(block_hash, indexes) click to toggle source
# File lib/bitcoin/message/block_transaction_request.rb, line 11
def initialize(block_hash, indexes)
  @block_hash = block_hash
  @indexes = indexes
end
parse_from_payload(payload) click to toggle source
# File lib/bitcoin/message/block_transaction_request.rb, line 16
def self.parse_from_payload(payload)
  buf = StringIO.new(payload)
  block_hash = buf.read(32).bth
  index_len = Bitcoin.unpack_var_int_from_io(buf)
  indexes = index_len.times.map{Bitcoin.unpack_var_int_from_io(buf)}
  # index data differentially encoded
  offset = 0
  index_len.times do |i|
    index = indexes[i]
    index += offset
    indexes[i] = index
    offset = index + 1
  end
  self.new(block_hash, indexes)
end

Public Instance Methods

to_payload() click to toggle source
# File lib/bitcoin/message/block_transaction_request.rb, line 32
def to_payload
  p = block_hash.htb << Bitcoin.pack_var_int(indexes.size)
  indexes.size.times do |i|
    index = indexes[i]
    index -= indexes[i-1] + 1 if i > 0
    p << Bitcoin.pack_var_int(index)
  end
  p
end