aboutsummaryrefslogtreecommitdiff
path: root/src/bench
diff options
context:
space:
mode:
authorMarcoFalke <[email protected]>2019-10-23 09:19:45 -0400
committerMarcoFalke <[email protected]>2019-10-23 09:24:07 -0400
commit8f14d2002b114195fccfe8479a70e323c5f3aa09 (patch)
tree76e2a1c449927f85b4184af407fd541a2d81e8c8 /src/bench
parentMerge #16911: wallet: Only check the hash of transactions loaded from disk (diff)
parentrefactor: test/bench: dedup Build{Crediting,Spending}Transaction() (diff)
downloaddiscoin-8f14d2002b114195fccfe8479a70e323c5f3aa09.tar.xz
discoin-8f14d2002b114195fccfe8479a70e323c5f3aa09.zip
Merge #17183: refactor: test/bench: dedup Build{Crediting,Spending}Transaction()
a0fc0764763329df2c4b11a4e22715ccfc0cf7d3 refactor: test/bench: dedup Build{Crediting,Spending}Transaction() (Sebastian Falbesoner) Pull request description: prototypes used in `src/test/script_tests.cpp`: - `CMutableTransaction BuildCreditingTransaction(const CScript& scriptPubKey, int nValue = 0);` - `CMutableTransaction BuildSpendingTransaction(const CScript& scriptSig, const CScriptWitness& scriptWitness, const CTransaction& txCredit);` prototypes used in `bench/verify_script.cpp`: - `CMutableTransaction BuildCreditingTransaction(const CScript& scriptPubKey);` - `CMutableTransaction BuildSpendingTransaction(const CScript& scriptSig, const CMutableTransaction& txCredit);` The more generic versions from the script tests are moved into `setup_common.cpp` and the calls are adapted accordingly in the verify_script benchmark (passing the nValue of 1 explicitely for `BuildCreditingTransaction()`, passing empty scriptWitness explicitely and converting txCredit parameter to CTransaction in `BuildSpendingTransaction()`). Top commit has no ACKs. Tree-SHA512: 8444f8a18f15070eeec1e5dfd255b55a851dfc2e6647c12b1995a6f7abd7196e830db2181d0e860bcd4cf4c815967584a3756dd450346bca70649dd1d4493e04
Diffstat (limited to 'src/bench')
-rw-r--r--src/bench/verify_script.cpp40
1 files changed, 3 insertions, 37 deletions
diff --git a/src/bench/verify_script.cpp b/src/bench/verify_script.cpp
index 4891c57b3..c9947f192 100644
--- a/src/bench/verify_script.cpp
+++ b/src/bench/verify_script.cpp
@@ -10,44 +10,10 @@
#include <script/script.h>
#include <script/standard.h>
#include <streams.h>
+#include <test/lib/transaction_utils.h>
#include <array>
-// FIXME: Dedup with BuildCreditingTransaction in test/script_tests.cpp.
-static CMutableTransaction BuildCreditingTransaction(const CScript& scriptPubKey)
-{
- CMutableTransaction txCredit;
- txCredit.nVersion = 1;
- txCredit.nLockTime = 0;
- txCredit.vin.resize(1);
- txCredit.vout.resize(1);
- txCredit.vin[0].prevout.SetNull();
- txCredit.vin[0].scriptSig = CScript() << CScriptNum(0) << CScriptNum(0);
- txCredit.vin[0].nSequence = CTxIn::SEQUENCE_FINAL;
- txCredit.vout[0].scriptPubKey = scriptPubKey;
- txCredit.vout[0].nValue = 1;
-
- return txCredit;
-}
-
-// FIXME: Dedup with BuildSpendingTransaction in test/script_tests.cpp.
-static CMutableTransaction BuildSpendingTransaction(const CScript& scriptSig, const CMutableTransaction& txCredit)
-{
- CMutableTransaction txSpend;
- txSpend.nVersion = 1;
- txSpend.nLockTime = 0;
- txSpend.vin.resize(1);
- txSpend.vout.resize(1);
- txSpend.vin[0].prevout.hash = txCredit.GetHash();
- txSpend.vin[0].prevout.n = 0;
- txSpend.vin[0].scriptSig = scriptSig;
- txSpend.vin[0].nSequence = CTxIn::SEQUENCE_FINAL;
- txSpend.vout[0].scriptPubKey = CScript();
- txSpend.vout[0].nValue = txCredit.vout[0].nValue;
-
- return txSpend;
-}
-
// Microbenchmark for verification of a basic P2WPKH script. Can be easily
// modified to measure performance of other types of scripts.
static void VerifyScriptBench(benchmark::State& state)
@@ -71,8 +37,8 @@ static void VerifyScriptBench(benchmark::State& state)
CScript scriptPubKey = CScript() << witnessversion << ToByteVector(pubkeyHash);
CScript scriptSig;
CScript witScriptPubkey = CScript() << OP_DUP << OP_HASH160 << ToByteVector(pubkeyHash) << OP_EQUALVERIFY << OP_CHECKSIG;
- const CMutableTransaction& txCredit = BuildCreditingTransaction(scriptPubKey);
- CMutableTransaction txSpend = BuildSpendingTransaction(scriptSig, txCredit);
+ const CMutableTransaction& txCredit = BuildCreditingTransaction(scriptPubKey, 1);
+ CMutableTransaction txSpend = BuildSpendingTransaction(scriptSig, CScriptWitness(), CTransaction(txCredit));
CScriptWitness& witness = txSpend.vin[0].scriptWitness;
witness.stack.emplace_back();
key.Sign(SignatureHash(witScriptPubkey, txSpend, 0, SIGHASH_ALL, txCredit.vout[0].nValue, SigVersion::WITNESS_V0), witness.stack.back());