Sha256: 9ffc6c473504eef0ff798103fdac68fad7e92523e5c8b4f5bf2802c0cbc26903

Contents?: true

Size: 1.07 KB

Versions: 8

Compression:

Stored size: 1.07 KB

Contents

module Tapyrus
  module Message

    # cmpctblock message. support only version 1.
    # https://github.com/bitcoin/bips/blob/master/bip-0152.mediawiki
    class CmpctBlock < Base

      COMMAND = 'cmpctblock'

      attr_accessor :header_and_short_ids

      def initialize(header_and_short_ids)
        @header_and_short_ids = header_and_short_ids
      end

      # generate CmpctBlock from Block data.
      # @param [Tapyrus::Block] block the block to generate CmpctBlock.
      # @param [Integer] nonce
      # @return [Tapyrus::Message::CmpctBlock]
      def self.from_block(block, nonce = SecureRandom.hex(8).to_i(16))
        h = HeaderAndShortIDs.new(block.header, nonce)
        block.transactions[1..-1].each do |tx|
          h.short_ids << h.short_id(tx.txid)
        end
        h.prefilled_txn << PrefilledTx.new(0, block.transactions.first)
        self.new(h)
      end

      def self.parse_from_payload(payload)
        self.new(HeaderAndShortIDs.parse_from_payload(payload))
      end

      def to_payload
        header_and_short_ids.to_payload
      end

    end

  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
tapyrus-0.2.7 lib/tapyrus/message/cmpct_block.rb
tapyrus-0.2.6 lib/tapyrus/message/cmpct_block.rb
tapyrus-0.2.5 lib/tapyrus/message/cmpct_block.rb
tapyrus-0.2.4 lib/tapyrus/message/cmpct_block.rb
tapyrus-0.2.3 lib/tapyrus/message/cmpct_block.rb
tapyrus-0.2.2 lib/tapyrus/message/cmpct_block.rb
tapyrus-0.2.1 lib/tapyrus/message/cmpct_block.rb
tapyrus-0.2.0 lib/tapyrus/message/cmpct_block.rb