Method: Bitcoin::Tx#verify_input_sig

Defined in:
lib/bitcoin/tx.rb

#verify_input_sig(input_index, script_pubkey, amount: nil, flags: STANDARD_SCRIPT_VERIFY_FLAGS, prevouts: []) ⇒ Boolean

verify input signature.

Parameters:

  • input_index (Integer)
  • script_pubkey (Bitcoin::Script)

    the script pubkey for target input.

  • amount (Integer) (defaults to: nil)

    the amount of bitcoin, require for witness program only.

  • flags (Array) (defaults to: STANDARD_SCRIPT_VERIFY_FLAGS)

    the flags used when execute script interpreter.

  • prevouts (Array[Bitcoin::TxOut]) (defaults to: [])

    Previous outputs referenced by all Tx inputs, required for taproot.

Returns:

  • (Boolean)

    result



233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
# File 'lib/bitcoin/tx.rb', line 233

def verify_input_sig(input_index, script_pubkey, amount: nil, flags: STANDARD_SCRIPT_VERIFY_FLAGS, prevouts: [])
  script_sig = inputs[input_index].script_sig
  has_witness = inputs[input_index].has_witness?

  if script_pubkey.p2sh?
    flags << SCRIPT_VERIFY_P2SH
    redeem_script = Script.parse_from_payload(script_sig.chunks.last)
    script_pubkey = redeem_script if redeem_script.p2wpkh?
  end

  if has_witness
    verify_input_sig_for_witness(input_index, script_pubkey, amount, flags, prevouts)
  else
    verify_input_sig_for_legacy(input_index, script_pubkey, flags)
  end
end