lib/segwit/tx.rb in openassets-ruby-0.5.7 vs lib/segwit/tx.rb in openassets-ruby-0.5.8
- old
+ new
@@ -6,14 +6,14 @@
def initialize(data=nil)
@ver, @lock_time, @in, @out, @scripts, @witness = 1, 0, [], [], [], Bitcoin::Protocol::TxWitness.new
@enable_bitcoinconsensus = !!ENV['USE_BITCOINCONSENSUS']
if data
- if witness_tx?(data)
- parse_witness_data_from_io(data) # parse witness data
- else
- parse_data_from_io(data) # parse no witness data
+ begin
+ parse_witness_data_from_io(data) unless parse_data_from_io(data).is_a?(TrueClass)
+ rescue Exception
+ parse_witness_data_from_io(data)
end
end
end
# get witness hash
@@ -69,18 +69,8 @@
pout = ""
@out.each{|output| pout << output.to_payload }
payload = [@ver].pack("V") << [0].pack("c") << [1].pack("c") << Bitcoin::Protocol.pack_var_int(@in.size) << pin <<
Bitcoin::Protocol.pack_var_int(@out.size) << pout << @witness.to_payload << [@lock_time].pack("V")
payload
- end
-
- # Checks witness transaction data.
- # see https://github.com/bitcoin/bips/blob/master/bip-0144.mediawiki
- def witness_tx?(data)
- buf = data.is_a?(String) ? StringIO.new(data) : data
- buf.read(4) # read nVersion
- marker = buf.read(1).unpack("c").first
- flag = buf.read(1).unpack("c").first
- marker == 0 && flag == 1
end
end
\ No newline at end of file