Sha256: 7ba40f4b49e59a8c390a5009139ab3b0588c39c2fcfc3efef7be6af2557f7178

Contents?: true

Size: 691 Bytes

Versions: 27

Compression:

Stored size: 691 Bytes

Contents

module Bitcoin

  # witness
  class ScriptWitness

    attr_reader :stack

    def initialize(stack = [])
      @stack = stack
    end

    def self.parse_from_payload(payload)
      buf = payload.is_a?(StringIO) ? payload : StringIO.new(payload)
      size = Bitcoin.unpack_var_int_from_io(buf)
      stack = size.times.map do
        buf.read(Bitcoin.unpack_var_int_from_io(buf))
      end
      self.new(stack)
    end

    def empty?
      stack.empty?
    end

    def to_payload
      p = Bitcoin.pack_var_int(stack.size)
      p << stack.map { |s|
        Bitcoin.pack_var_int(s.bytesize) << s
      }.join
    end

    def to_s
      stack.map{|s|s.bth}.join(' ')
    end

  end

end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
bitcoinrb-1.6.0 lib/bitcoin/script_witness.rb
bitcoinrb-1.5.0 lib/bitcoin/script_witness.rb
bitcoinrb-1.4.0 lib/bitcoin/script_witness.rb
bitcoinrb-1.3.0 lib/bitcoin/script_witness.rb
bitcoinrb-1.2.1 lib/bitcoin/script_witness.rb
bitcoinrb-1.2.0 lib/bitcoin/script_witness.rb
bitcoinrb-1.1.1 lib/bitcoin/script_witness.rb
bitcoinrb-1.1.0 lib/bitcoin/script_witness.rb
bitcoinrb-1.0.0 lib/bitcoin/script_witness.rb
bitcoinrb-0.9.0 lib/bitcoin/script_witness.rb
bitcoinrb-0.8.0 lib/bitcoin/script_witness.rb
bitcoinrb-0.7.0 lib/bitcoin/script_witness.rb
bitcoinrb-0.6.0 lib/bitcoin/script_witness.rb
bitcoinrb-0.5.0 lib/bitcoin/script_witness.rb
bitcoinrb-0.4.0 lib/bitcoin/script_witness.rb
bitcoinrb-0.3.2 lib/bitcoin/script_witness.rb
bitcoinrb-0.3.1 lib/bitcoin/script_witness.rb
bitcoinrb-0.3.0 lib/bitcoin/script_witness.rb
bitcoinrb-0.2.9 lib/bitcoin/script_witness.rb
bitcoinrb-0.2.8 lib/bitcoin/script_witness.rb