Sha256: dbe727357887c62f563131eaa382d6b992a0da96162afb06ae3df3b4f09b7743
Contents?: true
Size: 1.14 KB
Versions: 8
Compression:
Stored size: 1.14 KB
Contents
module Bitcoin module Message # merckleblock message # https://bitcoin.org/en/developer-reference#merkleblock class MerkleBlock < Base COMMAND = 'merkleblock' attr_accessor :header attr_accessor :tx_count attr_accessor :hashes attr_accessor :flags def initialize @hashes = [] end def self.parse_from_payload(payload) m = new buf = StringIO.new(payload) m.header = Bitcoin::BlockHeader.parse_from_payload(buf.read(80)) m.tx_count = buf.read(4).unpack('V').first hash_count = Bitcoin.unpack_var_int_from_io(buf) hash_count.times do m.hashes << buf.read(32).reverse.bth end flag_count = Bitcoin.unpack_var_int_from_io(buf) # A sequence of bits packed eight in a byte with the least significant bit first. m.flags = buf.read(flag_count).bth m end def to_payload header.to_payload << [tx_count].pack('V') << Bitcoin.pack_var_int(hashes.size) << hashes.map{|h|h.htb.reverse}.join << Bitcoin.pack_var_int(flags.htb.bytesize) << flags.htb end end end end
Version data entries
8 entries across 8 versions & 1 rubygems