static bool NeedUTXO(PSBTInput input) { if (input.IsFinalized()) { return(false); } var needNonWitnessUTXO = !input.PSBT.Network.Consensus.NeverNeedPreviousTxForSigning && !((input.GetSignableCoin() ?? input.GetCoin())?.GetHashVersion() is HashVersion.Witness); if (needNonWitnessUTXO) { return(input.NonWitnessUtxo == null); } else { return(input.WitnessUtxo == null && input.NonWitnessUtxo == null); } }
private static PSBTInput ComposePSBTInput( PSBTInput psbtin, HDKeyPathKVMap hdKeyPaths, PartialSigKVMap partialSigs, UnknownKVMap unknown ) { foreach (var item in hdKeyPaths) { psbtin.HDKeyPaths.Add(item.Key, item.Value); } foreach (var item in partialSigs) { psbtin.PartialSigs.Add(item.Key, item.Value); } foreach (var item in unknown) { psbtin.Unknown.Add(item.Key, item.Value); } return(psbtin); }
public FundingInput(PSBTInput input) : this(input.GetCoin() ?? throw new InvalidOperationException("The PSBT is missing witness_utxo")) { if (input.Unknown.TryGetValue(FundingInformation.MaxWitnessLengthKey, out var v)) { MaxWitnessLength = (int)Utils.ToUInt32(v, true); } if (input.RedeemScript is Script) { RedeemScript = input.RedeemScript; } if (input.NonWitnessUtxo is Transaction) { InputTransaction = input.NonWitnessUtxo; } Index = input.Index; Sequence = input.PSBT.GetOriginalTransaction().Inputs[input.Index].Sequence; if (MaxWitnessLength is null) { this.SetRecommendedMaxWitnessLength(); } }
static bool NotFinalized(PSBTInput input) { return(!input.IsFinalized()); }
static bool NeedNonWitnessUtxo(PSBTInput input) { return(!((input.GetSignableCoin() ?? input.GetCoin())?.GetHashVersion() is HashVersion.Witness)); }
public override bool Match(ICoin coin, PSBTInput input) { return(CanSign(coin.GetScriptCode())); }
public void CanSerializeInputAsymmetric(PSBTInput psbtin) => SerializeAsymmetric(psbtin);
public override bool Match(ICoin coin, PSBTInput input) { return(coin.TxOut.ScriptPubKey.IsScriptType(ScriptType.Taproot) && PayToTaprootTemplate.Instance.CheckScriptPubKey(coin.TxOut.ScriptPubKey)); }
public abstract bool Match(ICoin coin, PSBTInput input);