public static Gen <TxIn> Input() => from prevout in OutPoint()
 from ss in ScriptGenerator.RandomScriptSig()
 from nSequence in PrimitiveGenerator.UInt32()
 select new TxIn(prevout, ss)
 {
     Sequence = nSequence
 };
Ejemplo n.º 2
0
 public static Gen <PSBTInput> PSBTInputFinal() =>
 from finalScriptSig in ScriptGenerator.RandomScriptSig()
 from finalScriptWitness in ScriptGenerator.RandomWitScript()
 select new PSBTInput()
 {
     FinalScriptSig     = finalScriptSig,
     FinalScriptWitness = finalScriptWitness,
 };
Ejemplo n.º 3
0
 public static Gen <PSBTOutput> PSBTOutput() =>
 from redeem in ScriptGenerator.RandomScriptSig()
 from witnessS in ScriptGenerator.RandomScriptSig()
 from keyPaths in HDKeyPaths()
 from unknown in UnknownKVMap()
 select ComposePSBTOutput(new PSBTOutput()
 {
     RedeemScript = redeem, WitnessScript = witnessS
 }, keyPaths, unknown);
Ejemplo n.º 4
0
 public static Gen <PSBTInput> PSBTInputNonFinal() =>
 from nonWitnessUtxo in SegwitTransactionGenerators.TX()
 from witnessUtxo in LegacyTransactionGenerators.Output()
 from redeem in ScriptGenerator.RandomScriptSig()
 from witnessS in ScriptGenerator.RandomScriptSig()
 from hdKeyPaths in HDKeyPaths()
 from partialSigs in PartialSigs()
 from unknown in UnknownKVMap()
 select ComposePSBTInput(new PSBTInput()
 {
     NonWitnessUtxo = nonWitnessUtxo,
     WitnessUtxo    = witnessUtxo,
     RedeemScript   = redeem,
     WitnessScript  = witnessS,
 }, hdKeyPaths, partialSigs, unknown);
Ejemplo n.º 5
0
 /// <summary>
 /// This is slow, provably because `Add*` methods will iterate over inputs.
 /// </summary>
 /// <param name="network"></param>
 /// <returns></returns>
 public static Gen <PSBT> SanePSBT(Network network) =>
 from inputN in Gen.Choose(0, 8)
 from scripts in Gen.ListOf(inputN, ScriptGenerator.RandomScriptSig())
 from txOuts in Gen.Sequence(scripts.Select(sc => OutputFromRedeem(sc)))
 from prevN in Gen.Choose(0, 5)
 from prevTxs in Gen.Sequence(txOuts.Select(o => TXFromOutput(o, network, prevN)))
 let txins = prevTxs.Select(tx => new TxIn(new OutPoint(tx.GetHash(), prevN)))
             from locktime in PrimitiveGenerator.UInt32()
             let tx = LegacyTransactionGenerators.ComposeTx(network.CreateTransaction(), txins.ToList(), txOuts.ToList(), locktime)
                      from TxsToAdd in Gen.SubListOf(prevTxs)
                      from CoinsToAdd in Gen.SubListOf(prevTxs.SelectMany(tx => tx.Outputs.AsCoins()))
                      from scriptsToAdd in Gen.SubListOf <Script>(scripts)
                      let psbt = tx.CreatePSBT()
                                 .AddTransactions(prevTxs.ToArray())
                                 .AddCoins(CoinsToAdd.ToArray())
                                 .AddScripts(scriptsToAdd.ToArray())
                                 select psbt;
Ejemplo n.º 6
0
 private static Gen <OutputDescriptor> RawOutputDescriptorGen() =>
 from addr in ScriptGenerator.RandomScriptSig()
     where addr._Script.Length > 0
 select OutputDescriptor.NewRaw(addr);