Sha256: e2bd2cb046a724061e728e881c4398f056ae33b752404ae5a25fafb33232a5d9

Contents?: true

Size: 1.23 KB

Versions: 33

Compression:

Stored size: 1.23 KB

Contents

module Bitcoin
  module Message

    # cmpctblock message
    # 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 [Bitcoin::Block] block the block to generate CmpctBlock.
      # @param [Integer] version Compact Block version specified by sendcmpct message.
      # @param [Integer] nonce
      # @return [Bitcoin::Message::CmpctBlock]
      def self.from_block(block, version, nonce = SecureRandom.hex(8).to_i(16))
        raise 'Unsupported version.' unless [1, 2].include?(version)
        h = HeaderAndShortIDs.new(block.header, nonce)
        block.transactions[1..-1].each do |tx|
          h.short_ids << h.short_id(version == 1 ? tx.txid : tx.wtxid)
        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

33 entries across 33 versions & 1 rubygems

Version Path
bitcoinrb-1.8.0 lib/bitcoin/message/cmpct_block.rb
bitcoinrb-1.7.0 lib/bitcoin/message/cmpct_block.rb
bitcoinrb-1.6.0 lib/bitcoin/message/cmpct_block.rb
bitcoinrb-1.5.0 lib/bitcoin/message/cmpct_block.rb
bitcoinrb-1.4.0 lib/bitcoin/message/cmpct_block.rb
bitcoinrb-1.3.0 lib/bitcoin/message/cmpct_block.rb
bitcoinrb-1.2.1 lib/bitcoin/message/cmpct_block.rb
bitcoinrb-1.2.0 lib/bitcoin/message/cmpct_block.rb
bitcoinrb-1.1.1 lib/bitcoin/message/cmpct_block.rb
bitcoinrb-1.1.0 lib/bitcoin/message/cmpct_block.rb
bitcoinrb-1.0.0 lib/bitcoin/message/cmpct_block.rb
bitcoinrb-0.9.0 lib/bitcoin/message/cmpct_block.rb
bitcoinrb-0.8.0 lib/bitcoin/message/cmpct_block.rb
bitcoinrb-0.7.0 lib/bitcoin/message/cmpct_block.rb
bitcoinrb-0.6.0 lib/bitcoin/message/cmpct_block.rb
bitcoinrb-0.5.0 lib/bitcoin/message/cmpct_block.rb
bitcoinrb-0.4.0 lib/bitcoin/message/cmpct_block.rb
bitcoinrb-0.3.2 lib/bitcoin/message/cmpct_block.rb
bitcoinrb-0.3.1 lib/bitcoin/message/cmpct_block.rb
bitcoinrb-0.3.0 lib/bitcoin/message/cmpct_block.rb