コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
 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();
     }
 }
コード例 #4
0
 static bool NotFinalized(PSBTInput input)
 {
     return(!input.IsFinalized());
 }
コード例 #5
0
 static bool NeedNonWitnessUtxo(PSBTInput input)
 {
     return(!((input.GetSignableCoin() ?? input.GetCoin())?.GetHashVersion() is HashVersion.Witness));
 }
コード例 #6
0
 public override bool Match(ICoin coin, PSBTInput input)
 {
     return(CanSign(coin.GetScriptCode()));
 }
コード例 #7
0
 public void CanSerializeInputAsymmetric(PSBTInput psbtin) => SerializeAsymmetric(psbtin);
コード例 #8
0
 public override bool Match(ICoin coin, PSBTInput input)
 {
     return(coin.TxOut.ScriptPubKey.IsScriptType(ScriptType.Taproot) &&
            PayToTaprootTemplate.Instance.CheckScriptPubKey(coin.TxOut.ScriptPubKey));
 }
コード例 #9
0
 public abstract bool Match(ICoin coin, PSBTInput input);