diff --git a/qa/hush/performance-measurements.sh b/qa/hush/performance-measurements.sh deleted file mode 100755 index 3370bd20f..000000000 --- a/qa/hush/performance-measurements.sh +++ /dev/null @@ -1,341 +0,0 @@ -#!/bin/bash -set -u - - -DATADIR=./benchmark-datadir -SHA256CMD="$(command -v sha256sum || echo shasum)" -SHA256ARGS="$(command -v sha256sum >/dev/null || echo '-a 256')" - -function zcash_rpc { - ./src/zcash-cli -datadir="$DATADIR" -rpcuser=user -rpcpassword=password -rpcport=5983 "$@" -} - -function zcash_rpc_slow { - # Timeout of 1 hour - zcash_rpc -rpcclienttimeout=3600 "$@" -} - -function zcash_rpc_veryslow { - # Timeout of 2.5 hours - zcash_rpc -rpcclienttimeout=9000 "$@" -} - -function zcash_rpc_wait_for_start { - zcash_rpc -rpcwait getinfo > /dev/null -} - -function zcashd_generate { - zcash_rpc generate 101 > /dev/null -} - -function extract_benchmark_datadir { - if [ -f "$1.tar.xz" ]; then - # Check the hash of the archive: - "$SHA256CMD" $SHA256ARGS -c < /dev/null - wait $ZCASHD_PID -} - -function zcashd_massif_start { - case "$1" in - sendtoaddress|loadwallet|listunspent) - case "$2" in - 200k-recv) - use_200k_benchmark 0 - ;; - 200k-send) - use_200k_benchmark 1 - ;; - *) - echo "Bad arguments to zcashd_massif_start." - exit 1 - esac - ;; - *) - rm -rf "$DATADIR" - mkdir -p "$DATADIR/regtest" - touch "$DATADIR/zcash.conf" - esac - rm -f massif.out - valgrind --tool=massif --time-unit=ms --massif-out-file=massif.out ./src/zcashd -regtest -datadir="$DATADIR" -rpcuser=user -rpcpassword=password -rpcport=5983 -showmetrics=0 & - ZCASHD_PID=$! - zcash_rpc_wait_for_start -} - -function zcashd_massif_stop { - zcash_rpc stop > /dev/null - wait $ZCASHD_PID - ms_print massif.out -} - -function zcashd_valgrind_start { - rm -rf "$DATADIR" - mkdir -p "$DATADIR/regtest" - touch "$DATADIR/zcash.conf" - rm -f valgrind.out - valgrind --leak-check=yes -v --error-limit=no --log-file="valgrind.out" ./src/zcashd -regtest -datadir="$DATADIR" -rpcuser=user -rpcpassword=password -rpcport=5983 -showmetrics=0 & - ZCASHD_PID=$! - zcash_rpc_wait_for_start -} - -function zcashd_valgrind_stop { - zcash_rpc stop > /dev/null - wait $ZCASHD_PID - cat valgrind.out -} - -function extract_benchmark_data { - if [ -f "block-107134.tar.xz" ]; then - # Check the hash of the archive: - "$SHA256CMD" $SHA256ARGS -c < &vch) - -EXAMPLE taken from Verus how to create scriptPubKey from COptCCParams class: -EXAMPLE taken from Verus how to decode scriptPubKey from COptCCParams class: -*/ - -bool MakeGuardedOutput(CAmount value, CPubKey &dest, CTransaction &stakeTx, CTxOut &vout) -{ - CCcontract_info *cp, C; - cp = CCinit(&C,EVAL_STAKEGUARD); - - CPubKey ccAddress = CPubKey(ParseHex(cp->CChexstr)); - - // return an output that is bound to the stake transaction and can be spent by presenting either a signed condition by the original - // destination address or a properly signed stake transaction of the same utxo on a fork - vout = MakeCC1of2vout(EVAL_STAKEGUARD, value, dest, ccAddress); - - std::vector vPubKeys = std::vector(); - vPubKeys.push_back(dest); - vPubKeys.push_back(ccAddress); - - std::vector> vData = std::vector>(); - - CVerusHashWriter hw = CVerusHashWriter(SER_GETHASH, PROTOCOL_VERSION); - - hw << stakeTx.vin[0].prevout.hash; - hw << stakeTx.vin[0].prevout.n; - - uint256 utxo = hw.GetHash(); - vData.push_back(std::vector(utxo.begin(), utxo.end())); // Can we use any data here to construct vector? - - CStakeParams p; - if (GetStakeParams(stakeTx, p)) - { - // prev block hash and height is here to make validation easy - vData.push_back(std::vector(p.prevHash.begin(), p.prevHash.end())); - std::vector height = std::vector(4); - for (int i = 0; i < 4; i++) - { - height[i] = (p.blkHeight >> (8 * i)) & 0xff; - } - vData.push_back(height); - - COptCCParams ccp = COptCCParams(COptCCParams::VERSION, EVAL_STAKEGUARD, 1, 2, vPubKeys, vData); - - vout.scriptPubKey << ccp.AsVector() << OP_DROP; - return true; - } - return false; -} - -bool ValidateMatchingStake(const CTransaction &ccTx, uint32_t voutNum, const CTransaction &stakeTx, bool &cheating) -{ - // an invalid or non-matching stake transaction cannot cheat - cheating = false; - - //printf("ValidateMatchingStake: ccTx.vin[0].prevout.hash: %s, ccTx.vin[0].prevout.n: %d\n", ccTx.vin[0].prevout.hash.GetHex().c_str(), ccTx.vin[0].prevout.n); - - if (ccTx.IsCoinBase()) - { - CStakeParams p; - if (ValidateStakeTransaction(stakeTx, p)) - { - std::vector> vParams = std::vector>(); - CScript dummy; - - if (ccTx.vout[voutNum].scriptPubKey.IsPayToCryptoCondition(&dummy, vParams) && vParams.size() > 0) - { - COptCCParams ccp = COptCCParams(vParams[0]); - if (ccp.IsValid() & ccp.vData.size() >= 3 && ccp.vData[2].size() <= 4) - { - CVerusHashWriter hw = CVerusHashWriter(SER_GETHASH, PROTOCOL_VERSION); - - hw << stakeTx.vin[0].prevout.hash; - hw << stakeTx.vin[0].prevout.n; - uint256 utxo = hw.GetHash(); - - uint32_t height = 0; - int i, dataLen = ccp.vData[2].size(); - for (i = dataLen - 1; i >= 0; i--) - { - height = (height << 8) + ccp.vData[2][i]; - } - // for debugging strange issue - // printf("iterator: %d, height: %d, datalen: %d\n", i, height, dataLen); - - if (utxo == uint256(ccp.vData[0])) - { - if (p.prevHash != uint256(ccp.vData[1]) && p.blkHeight >= height) - { - cheating = true; - return true; - } - // if block height is equal and we are at the else, prevHash must have been equal - else if (p.blkHeight == height) - { - return true; - } - } - } - } - } - } - return false; -}