Merge branch 'FSM' into jl777
This commit is contained in:
83
qa/pull-tester/cc-tests.sh
Executable file
83
qa/pull-tester/cc-tests.sh
Executable file
@@ -0,0 +1,83 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e -o pipefail
|
||||||
|
|
||||||
|
CURDIR=$(cd $(dirname "$0"); pwd)
|
||||||
|
# Get BUILDDIR and REAL_BITCOIND
|
||||||
|
. "${CURDIR}/tests-config.sh"
|
||||||
|
|
||||||
|
export BITCOINCLI=${BUILDDIR}/qa/pull-tester/run-bitcoin-cli
|
||||||
|
export BITCOIND=${REAL_BITCOIND}
|
||||||
|
|
||||||
|
#Run the tests
|
||||||
|
# FAUCET test should be permanently first!!!
|
||||||
|
|
||||||
|
testScripts=(
|
||||||
|
'cryptoconditions_faucet.py'
|
||||||
|
'cryptoconditions_channels.py'
|
||||||
|
'cryptoconditions_dice.py'
|
||||||
|
'cryptoconditions_oracles.py'
|
||||||
|
'cryptoconditions_rewards.py'
|
||||||
|
'cryptoconditions_token.py'
|
||||||
|
'cryptoconditions_gateways.py'
|
||||||
|
);
|
||||||
|
|
||||||
|
extArg="-extended"
|
||||||
|
passOn=${@#$extArg}
|
||||||
|
|
||||||
|
successCount=0
|
||||||
|
declare -a failures
|
||||||
|
|
||||||
|
function runTestScript
|
||||||
|
{
|
||||||
|
local testName="$1"
|
||||||
|
shift
|
||||||
|
|
||||||
|
echo -e "=== Running testscript ${testName} ==="
|
||||||
|
|
||||||
|
if eval "$@"
|
||||||
|
then
|
||||||
|
successCount=$(expr $successCount + 1)
|
||||||
|
echo "--- Success: ${testName} ---"
|
||||||
|
else
|
||||||
|
failures[${#failures[@]}]="$testName"
|
||||||
|
echo "!!! FAIL: ${testName} !!!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ "x${ENABLE_BITCOIND}${ENABLE_UTILS}${ENABLE_WALLET}" = "x111" ]; then
|
||||||
|
for (( i = 0; i < ${#testScripts[@]}; i++ ))
|
||||||
|
do
|
||||||
|
if [ -z "$1" ] || [ "${1:0:1}" == "-" ] || [ "$1" == "${testScripts[$i]}" ] || [ "$1.py" == "${testScripts[$i]}" ]
|
||||||
|
then
|
||||||
|
runTestScript \
|
||||||
|
"${testScripts[$i]}" \
|
||||||
|
"${BUILDDIR}/qa/rpc-tests/${testScripts[$i]}" \
|
||||||
|
--srcdir "${BUILDDIR}/src" ${passOn}
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
for (( i = 0; i < ${#testScriptsExt[@]}; i++ ))
|
||||||
|
do
|
||||||
|
if [ "$1" == $extArg ] || [ "$1" == "${testScriptsExt[$i]}" ] || [ "$1.py" == "${testScriptsExt[$i]}" ]
|
||||||
|
then
|
||||||
|
runTestScript \
|
||||||
|
"${testScriptsExt[$i]}" \
|
||||||
|
"${BUILDDIR}/qa/rpc-tests/${testScriptsExt[$i]}" \
|
||||||
|
--srcdir "${BUILDDIR}/src" ${passOn}
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo -e "\n\nTests completed: $(expr $successCount + ${#failures[@]})"
|
||||||
|
echo "successes $successCount; failures: ${#failures[@]}"
|
||||||
|
|
||||||
|
if [ ${#failures[@]} -gt 0 ]
|
||||||
|
then
|
||||||
|
echo -e "\nFailing tests: ${failures[*]}"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "No rpc tests to run. Wallet, utils, and bitcoind must all be enabled"
|
||||||
|
fi
|
||||||
@@ -13,14 +13,6 @@ export BITCOIND=${REAL_BITCOIND}
|
|||||||
testScripts=(
|
testScripts=(
|
||||||
'ac_private.py'
|
'ac_private.py'
|
||||||
'verushash.py'
|
'verushash.py'
|
||||||
'cryptoconditions.py'
|
|
||||||
'cryptoconditions_channels.py'
|
|
||||||
'cryptoconditions_dice.py'
|
|
||||||
'cryptoconditions_faucet.py'
|
|
||||||
'cryptoconditions_gateways.py'
|
|
||||||
'cryptoconditions_oracles.py'
|
|
||||||
'cryptoconditions_rewards.py'
|
|
||||||
'cryptoconditions_token.py'
|
|
||||||
'paymentdisclosure.py'
|
'paymentdisclosure.py'
|
||||||
'prioritisetransaction.py'
|
'prioritisetransaction.py'
|
||||||
'wallet_treestate.py'
|
'wallet_treestate.py'
|
||||||
|
|||||||
@@ -14,6 +14,8 @@ You can run a single test by calling `qa/pull-tester/rpc-tests.sh <testname>`.
|
|||||||
|
|
||||||
Run all possible tests with `qa/pull-tester/rpc-tests.sh -extended`.
|
Run all possible tests with `qa/pull-tester/rpc-tests.sh -extended`.
|
||||||
|
|
||||||
|
Also it's possible to run CryptoConditions tests only by `qa/pull-tester/cc-tests.sh --noshutdown --tracerpc`
|
||||||
|
|
||||||
Possible options:
|
Possible options:
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
|
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import CryptoconditionsTestFramework
|
||||||
from test_framework.authproxy import JSONRPCException
|
from test_framework.authproxy import JSONRPCException
|
||||||
from test_framework.util import assert_equal, assert_greater_than, \
|
from test_framework.util import assert_equal, assert_greater_than, \
|
||||||
initialize_chain_clean, initialize_chain, start_nodes, start_node, connect_nodes_bi, \
|
initialize_chain_clean, initialize_chain, start_nodes, start_node, connect_nodes_bi, \
|
||||||
@@ -12,71 +12,7 @@ from test_framework.util import assert_equal, assert_greater_than, \
|
|||||||
from cryptoconditions import assert_success, assert_error, generate_random_string
|
from cryptoconditions import assert_success, assert_error, generate_random_string
|
||||||
|
|
||||||
|
|
||||||
class CryptoconditionsChannelsTest(BitcoinTestFramework):
|
class CryptoconditionsChannelsTest(CryptoconditionsTestFramework):
|
||||||
|
|
||||||
def setup_chain(self):
|
|
||||||
print("Initializing CC test directory "+self.options.tmpdir)
|
|
||||||
self.num_nodes = 2
|
|
||||||
initialize_chain_clean(self.options.tmpdir, self.num_nodes)
|
|
||||||
|
|
||||||
def setup_network(self, split = False):
|
|
||||||
print("Setting up network...")
|
|
||||||
self.addr = "RWPg8B91kfK5UtUN7z6s6TeV9cHSGtVY8D"
|
|
||||||
self.pubkey = "02676d00110c2cd14ae24f95969e8598f7ccfaa675498b82654a5b5bd57fc1d8cf"
|
|
||||||
self.privkey = "UqMgxk7ySPNQ4r9nKAFPjkXy6r5t898yhuNCjSZJLg3RAM4WW1m9"
|
|
||||||
self.addr1 = "RXEXoa1nRmKhMbuZovpcYwQMsicwzccZBp"
|
|
||||||
self.pubkey1 = "024026d4ad4ecfc1f705a9b42ca64af6d2ad947509c085534a30b8861d756c6ff0"
|
|
||||||
self.privkey1 = "UtdydP56pGTFmawHzHr1wDrc4oUwCNW1ttX8Pc3KrvH3MA8P49Wi"
|
|
||||||
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir,
|
|
||||||
extra_args=[[
|
|
||||||
# always give -ac_name as first extra_arg and port as third
|
|
||||||
'-ac_name=REGTEST',
|
|
||||||
'-conf='+self.options.tmpdir+'/node0/REGTEST.conf',
|
|
||||||
'-port=64367',
|
|
||||||
'-rpcport=64368',
|
|
||||||
'-regtest',
|
|
||||||
'-addressindex=1',
|
|
||||||
'-spentindex=1',
|
|
||||||
'-ac_supply=5555555',
|
|
||||||
'-ac_reward=10000000000000',
|
|
||||||
'-pubkey=' + self.pubkey,
|
|
||||||
'-ac_cc=2',
|
|
||||||
'-whitelist=127.0.0.1',
|
|
||||||
'-debug',
|
|
||||||
'--daemon',
|
|
||||||
'-rpcuser=rt',
|
|
||||||
'-rpcpassword=rt'
|
|
||||||
],
|
|
||||||
['-ac_name=REGTEST',
|
|
||||||
'-conf='+self.options.tmpdir+'/node1/REGTEST.conf',
|
|
||||||
'-port=64365',
|
|
||||||
'-rpcport=64366',
|
|
||||||
'-regtest',
|
|
||||||
'-addressindex=1',
|
|
||||||
'-spentindex=1',
|
|
||||||
'-ac_supply=5555555',
|
|
||||||
'-ac_reward=10000000000000',
|
|
||||||
'-pubkey=' + self.pubkey1,
|
|
||||||
'-ac_cc=2',
|
|
||||||
'-whitelist=127.0.0.1',
|
|
||||||
'-debug',
|
|
||||||
'-addnode=127.0.0.1:64367',
|
|
||||||
'--daemon',
|
|
||||||
'-rpcuser=rt',
|
|
||||||
'-rpcpassword=rt']]
|
|
||||||
)
|
|
||||||
self.is_network_split = split
|
|
||||||
self.rpc = self.nodes[0]
|
|
||||||
self.rpc1 = self.nodes[1]
|
|
||||||
self.sync_all()
|
|
||||||
print("Done setting up network")
|
|
||||||
|
|
||||||
def send_and_mine(self, xtn, rpc_connection):
|
|
||||||
txid = rpc_connection.sendrawtransaction(xtn)
|
|
||||||
assert txid, 'got txid'
|
|
||||||
# we need the tx above to be confirmed in the next block
|
|
||||||
rpc_connection.generate(1)
|
|
||||||
return txid
|
|
||||||
|
|
||||||
def run_channels_tests(self):
|
def run_channels_tests(self):
|
||||||
|
|
||||||
@@ -159,7 +95,8 @@ class CryptoconditionsChannelsTest(BitcoinTestFramework):
|
|||||||
rpc = self.nodes[0]
|
rpc = self.nodes[0]
|
||||||
rpc1 = self.nodes[1]
|
rpc1 = self.nodes[1]
|
||||||
# utxos from block 1 become mature in block 101
|
# utxos from block 1 become mature in block 101
|
||||||
rpc.generate(101)
|
if not self.options.noshutdown:
|
||||||
|
rpc.generate(101)
|
||||||
self.sync_all()
|
self.sync_all()
|
||||||
rpc.getinfo()
|
rpc.getinfo()
|
||||||
rpc1.getinfo()
|
rpc1.getinfo()
|
||||||
|
|||||||
@@ -4,78 +4,15 @@
|
|||||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
|
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import CryptoconditionsTestFramework
|
||||||
from test_framework.authproxy import JSONRPCException
|
from test_framework.authproxy import JSONRPCException
|
||||||
from test_framework.util import assert_equal, assert_greater_than, \
|
from test_framework.util import assert_equal, assert_greater_than, \
|
||||||
initialize_chain_clean, initialize_chain, start_nodes, start_node, connect_nodes_bi, \
|
initialize_chain_clean, initialize_chain, start_nodes, start_node, connect_nodes_bi, \
|
||||||
stop_nodes, sync_blocks, sync_mempools, wait_bitcoinds, rpc_port, assert_raises
|
stop_nodes, sync_blocks, sync_mempools, wait_bitcoinds, rpc_port, assert_raises
|
||||||
from cryptoconditions import assert_success, assert_error, generate_random_string
|
from cryptoconditions import assert_success, assert_error, generate_random_string
|
||||||
|
|
||||||
class CryptoconditionsDiceTest(BitcoinTestFramework):
|
|
||||||
|
|
||||||
def setup_chain(self):
|
class CryptoconditionsDiceTest(CryptoconditionsTestFramework):
|
||||||
print("Initializing CC test directory "+self.options.tmpdir)
|
|
||||||
self.num_nodes = 2
|
|
||||||
initialize_chain_clean(self.options.tmpdir, self.num_nodes)
|
|
||||||
|
|
||||||
def setup_network(self, split = False):
|
|
||||||
print("Setting up network...")
|
|
||||||
self.addr = "RWPg8B91kfK5UtUN7z6s6TeV9cHSGtVY8D"
|
|
||||||
self.pubkey = "02676d00110c2cd14ae24f95969e8598f7ccfaa675498b82654a5b5bd57fc1d8cf"
|
|
||||||
self.privkey = "UqMgxk7ySPNQ4r9nKAFPjkXy6r5t898yhuNCjSZJLg3RAM4WW1m9"
|
|
||||||
self.addr1 = "RXEXoa1nRmKhMbuZovpcYwQMsicwzccZBp"
|
|
||||||
self.pubkey1 = "024026d4ad4ecfc1f705a9b42ca64af6d2ad947509c085534a30b8861d756c6ff0"
|
|
||||||
self.privkey1 = "UtdydP56pGTFmawHzHr1wDrc4oUwCNW1ttX8Pc3KrvH3MA8P49Wi"
|
|
||||||
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir,
|
|
||||||
extra_args=[[
|
|
||||||
# always give -ac_name as first extra_arg and port as third
|
|
||||||
'-ac_name=REGTEST',
|
|
||||||
'-conf='+self.options.tmpdir+'/node0/REGTEST.conf',
|
|
||||||
'-port=64367',
|
|
||||||
'-rpcport=64368',
|
|
||||||
'-regtest',
|
|
||||||
'-addressindex=1',
|
|
||||||
'-spentindex=1',
|
|
||||||
'-ac_supply=5555555',
|
|
||||||
'-ac_reward=10000000000000',
|
|
||||||
'-pubkey=' + self.pubkey,
|
|
||||||
'-ac_cc=2',
|
|
||||||
'-whitelist=127.0.0.1',
|
|
||||||
'-debug',
|
|
||||||
'--daemon',
|
|
||||||
'-rpcuser=rt',
|
|
||||||
'-rpcpassword=rt'
|
|
||||||
],
|
|
||||||
['-ac_name=REGTEST',
|
|
||||||
'-conf='+self.options.tmpdir+'/node1/REGTEST.conf',
|
|
||||||
'-port=64365',
|
|
||||||
'-rpcport=64366',
|
|
||||||
'-regtest',
|
|
||||||
'-addressindex=1',
|
|
||||||
'-spentindex=1',
|
|
||||||
'-ac_supply=5555555',
|
|
||||||
'-ac_reward=10000000000000',
|
|
||||||
'-pubkey=' + self.pubkey1,
|
|
||||||
'-ac_cc=2',
|
|
||||||
'-whitelist=127.0.0.1',
|
|
||||||
'-debug',
|
|
||||||
'-addnode=127.0.0.1:64367',
|
|
||||||
'--daemon',
|
|
||||||
'-rpcuser=rt',
|
|
||||||
'-rpcpassword=rt']]
|
|
||||||
)
|
|
||||||
self.is_network_split = split
|
|
||||||
self.rpc = self.nodes[0]
|
|
||||||
self.rpc1 = self.nodes[1]
|
|
||||||
self.sync_all()
|
|
||||||
print("Done setting up network")
|
|
||||||
|
|
||||||
def send_and_mine(self, xtn, rpc_connection):
|
|
||||||
txid = rpc_connection.sendrawtransaction(xtn)
|
|
||||||
assert txid, 'got txid'
|
|
||||||
# we need the tx above to be confirmed in the next block
|
|
||||||
rpc_connection.generate(1)
|
|
||||||
return txid
|
|
||||||
|
|
||||||
def run_dice_tests(self):
|
def run_dice_tests(self):
|
||||||
rpc = self.nodes[0]
|
rpc = self.nodes[0]
|
||||||
@@ -244,7 +181,8 @@ class CryptoconditionsDiceTest(BitcoinTestFramework):
|
|||||||
rpc = self.nodes[0]
|
rpc = self.nodes[0]
|
||||||
rpc1 = self.nodes[1]
|
rpc1 = self.nodes[1]
|
||||||
# utxos from block 1 become mature in block 101
|
# utxos from block 1 become mature in block 101
|
||||||
rpc.generate(101)
|
if not self.options.noshutdown:
|
||||||
|
rpc.generate(101)
|
||||||
self.sync_all()
|
self.sync_all()
|
||||||
rpc.getinfo()
|
rpc.getinfo()
|
||||||
rpc1.getinfo()
|
rpc1.getinfo()
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
|
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import CryptoconditionsTestFramework
|
||||||
from test_framework.authproxy import JSONRPCException
|
from test_framework.authproxy import JSONRPCException
|
||||||
from test_framework.util import assert_equal, assert_greater_than, \
|
from test_framework.util import assert_equal, assert_greater_than, \
|
||||||
initialize_chain_clean, initialize_chain, start_nodes, start_node, connect_nodes_bi, \
|
initialize_chain_clean, initialize_chain, start_nodes, start_node, connect_nodes_bi, \
|
||||||
@@ -12,71 +12,7 @@ from test_framework.util import assert_equal, assert_greater_than, \
|
|||||||
from cryptoconditions import assert_success, assert_error, generate_random_string
|
from cryptoconditions import assert_success, assert_error, generate_random_string
|
||||||
|
|
||||||
|
|
||||||
class CryptoconditionsFaucetTest(BitcoinTestFramework):
|
class CryptoconditionsFaucetTest(CryptoconditionsTestFramework):
|
||||||
|
|
||||||
def setup_chain(self):
|
|
||||||
print("Initializing CC test directory "+self.options.tmpdir)
|
|
||||||
self.num_nodes = 2
|
|
||||||
initialize_chain_clean(self.options.tmpdir, self.num_nodes)
|
|
||||||
|
|
||||||
def setup_network(self, split = False):
|
|
||||||
print("Setting up network...")
|
|
||||||
self.addr = "RWPg8B91kfK5UtUN7z6s6TeV9cHSGtVY8D"
|
|
||||||
self.pubkey = "02676d00110c2cd14ae24f95969e8598f7ccfaa675498b82654a5b5bd57fc1d8cf"
|
|
||||||
self.privkey = "UqMgxk7ySPNQ4r9nKAFPjkXy6r5t898yhuNCjSZJLg3RAM4WW1m9"
|
|
||||||
self.addr1 = "RXEXoa1nRmKhMbuZovpcYwQMsicwzccZBp"
|
|
||||||
self.pubkey1 = "024026d4ad4ecfc1f705a9b42ca64af6d2ad947509c085534a30b8861d756c6ff0"
|
|
||||||
self.privkey1 = "UtdydP56pGTFmawHzHr1wDrc4oUwCNW1ttX8Pc3KrvH3MA8P49Wi"
|
|
||||||
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir,
|
|
||||||
extra_args=[[
|
|
||||||
# always give -ac_name as first extra_arg and port as third
|
|
||||||
'-ac_name=REGTEST',
|
|
||||||
'-conf='+self.options.tmpdir+'/node0/REGTEST.conf',
|
|
||||||
'-port=64367',
|
|
||||||
'-rpcport=64368',
|
|
||||||
'-regtest',
|
|
||||||
'-addressindex=1',
|
|
||||||
'-spentindex=1',
|
|
||||||
'-ac_supply=5555555',
|
|
||||||
'-ac_reward=10000000000000',
|
|
||||||
'-pubkey=' + self.pubkey,
|
|
||||||
'-ac_cc=2',
|
|
||||||
'-whitelist=127.0.0.1',
|
|
||||||
'-debug',
|
|
||||||
'--daemon',
|
|
||||||
'-rpcuser=rt',
|
|
||||||
'-rpcpassword=rt'
|
|
||||||
],
|
|
||||||
['-ac_name=REGTEST',
|
|
||||||
'-conf='+self.options.tmpdir+'/node1/REGTEST.conf',
|
|
||||||
'-port=64365',
|
|
||||||
'-rpcport=64366',
|
|
||||||
'-regtest',
|
|
||||||
'-addressindex=1',
|
|
||||||
'-spentindex=1',
|
|
||||||
'-ac_supply=5555555',
|
|
||||||
'-ac_reward=10000000000000',
|
|
||||||
'-pubkey=' + self.pubkey1,
|
|
||||||
'-ac_cc=2',
|
|
||||||
'-whitelist=127.0.0.1',
|
|
||||||
'-debug',
|
|
||||||
'-addnode=127.0.0.1:64367',
|
|
||||||
'--daemon',
|
|
||||||
'-rpcuser=rt',
|
|
||||||
'-rpcpassword=rt']]
|
|
||||||
)
|
|
||||||
self.is_network_split = split
|
|
||||||
self.rpc = self.nodes[0]
|
|
||||||
self.rpc1 = self.nodes[1]
|
|
||||||
self.sync_all()
|
|
||||||
print("Done setting up network")
|
|
||||||
|
|
||||||
def send_and_mine(self, xtn, rpc_connection):
|
|
||||||
txid = rpc_connection.sendrawtransaction(xtn)
|
|
||||||
assert txid, 'got txid'
|
|
||||||
# we need the tx above to be confirmed in the next block
|
|
||||||
rpc_connection.generate(1)
|
|
||||||
return txid
|
|
||||||
|
|
||||||
def run_faucet_tests(self):
|
def run_faucet_tests(self):
|
||||||
rpc = self.rpc
|
rpc = self.rpc
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
|
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import CryptoconditionsTestFramework
|
||||||
from test_framework.authproxy import JSONRPCException
|
from test_framework.authproxy import JSONRPCException
|
||||||
from test_framework.util import assert_equal, assert_greater_than, \
|
from test_framework.util import assert_equal, assert_greater_than, \
|
||||||
initialize_chain_clean, initialize_chain, start_nodes, start_node, connect_nodes_bi, \
|
initialize_chain_clean, initialize_chain, start_nodes, start_node, connect_nodes_bi, \
|
||||||
@@ -12,72 +12,7 @@ from test_framework.util import assert_equal, assert_greater_than, \
|
|||||||
from cryptoconditions import assert_success, assert_error, generate_random_string
|
from cryptoconditions import assert_success, assert_error, generate_random_string
|
||||||
|
|
||||||
|
|
||||||
class CryptoconditionsGatewaysTest(BitcoinTestFramework):
|
class CryptoconditionsGatewaysTest(CryptoconditionsTestFramework):
|
||||||
|
|
||||||
|
|
||||||
def setup_chain(self):
|
|
||||||
print("Initializing CC test directory "+self.options.tmpdir)
|
|
||||||
self.num_nodes = 2
|
|
||||||
initialize_chain_clean(self.options.tmpdir, self.num_nodes)
|
|
||||||
|
|
||||||
def setup_network(self, split = False):
|
|
||||||
print("Setting up network...")
|
|
||||||
self.addr = "RWPg8B91kfK5UtUN7z6s6TeV9cHSGtVY8D"
|
|
||||||
self.pubkey = "02676d00110c2cd14ae24f95969e8598f7ccfaa675498b82654a5b5bd57fc1d8cf"
|
|
||||||
self.privkey = "UqMgxk7ySPNQ4r9nKAFPjkXy6r5t898yhuNCjSZJLg3RAM4WW1m9"
|
|
||||||
self.addr1 = "RXEXoa1nRmKhMbuZovpcYwQMsicwzccZBp"
|
|
||||||
self.pubkey1 = "024026d4ad4ecfc1f705a9b42ca64af6d2ad947509c085534a30b8861d756c6ff0"
|
|
||||||
self.privkey1 = "UtdydP56pGTFmawHzHr1wDrc4oUwCNW1ttX8Pc3KrvH3MA8P49Wi"
|
|
||||||
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir,
|
|
||||||
extra_args=[[
|
|
||||||
# always give -ac_name as first extra_arg and port as third
|
|
||||||
'-ac_name=REGTEST',
|
|
||||||
'-conf='+self.options.tmpdir+'/node0/REGTEST.conf',
|
|
||||||
'-port=64367',
|
|
||||||
'-rpcport=64368',
|
|
||||||
'-regtest',
|
|
||||||
'-addressindex=1',
|
|
||||||
'-spentindex=1',
|
|
||||||
'-ac_supply=5555555',
|
|
||||||
'-ac_reward=10000000000000',
|
|
||||||
'-pubkey=' + self.pubkey,
|
|
||||||
'-ac_cc=2',
|
|
||||||
'-whitelist=127.0.0.1',
|
|
||||||
'-debug',
|
|
||||||
'--daemon',
|
|
||||||
'-rpcuser=rt',
|
|
||||||
'-rpcpassword=rt'
|
|
||||||
],
|
|
||||||
['-ac_name=REGTEST',
|
|
||||||
'-conf='+self.options.tmpdir+'/node1/REGTEST.conf',
|
|
||||||
'-port=64365',
|
|
||||||
'-rpcport=64366',
|
|
||||||
'-regtest',
|
|
||||||
'-addressindex=1',
|
|
||||||
'-spentindex=1',
|
|
||||||
'-ac_supply=5555555',
|
|
||||||
'-ac_reward=10000000000000',
|
|
||||||
'-pubkey=' + self.pubkey1,
|
|
||||||
'-ac_cc=2',
|
|
||||||
'-whitelist=127.0.0.1',
|
|
||||||
'-debug',
|
|
||||||
'-addnode=127.0.0.1:64367',
|
|
||||||
'--daemon',
|
|
||||||
'-rpcuser=rt',
|
|
||||||
'-rpcpassword=rt']]
|
|
||||||
)
|
|
||||||
self.is_network_split = split
|
|
||||||
self.rpc = self.nodes[0]
|
|
||||||
self.rpc1 = self.nodes[1]
|
|
||||||
self.sync_all()
|
|
||||||
print("Done setting up network")
|
|
||||||
|
|
||||||
def send_and_mine(self, xtn, rpc_connection):
|
|
||||||
txid = rpc_connection.sendrawtransaction(xtn)
|
|
||||||
assert txid, 'got txid'
|
|
||||||
# we need the tx above to be confirmed in the next block
|
|
||||||
rpc_connection.generate(1)
|
|
||||||
return txid
|
|
||||||
|
|
||||||
def run_gateways_tests(self):
|
def run_gateways_tests(self):
|
||||||
rpc = self.nodes[0]
|
rpc = self.nodes[0]
|
||||||
@@ -137,12 +72,14 @@ class CryptoconditionsGatewaysTest(BitcoinTestFramework):
|
|||||||
result = rpc.gatewayslist()
|
result = rpc.gatewayslist()
|
||||||
assert_equal(result[0], bind_txid)
|
assert_equal(result[0], bind_txid)
|
||||||
|
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
print("Mining blocks...")
|
print("Mining blocks...")
|
||||||
rpc = self.nodes[0]
|
rpc = self.nodes[0]
|
||||||
rpc1 = self.nodes[1]
|
rpc1 = self.nodes[1]
|
||||||
# utxos from block 1 become mature in block 101
|
# utxos from block 1 become mature in block 101
|
||||||
rpc.generate(101)
|
if not self.options.noshutdown:
|
||||||
|
rpc.generate(101)
|
||||||
self.sync_all()
|
self.sync_all()
|
||||||
rpc.getinfo()
|
rpc.getinfo()
|
||||||
rpc1.getinfo()
|
rpc1.getinfo()
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
|
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import CryptoconditionsTestFramework
|
||||||
from test_framework.authproxy import JSONRPCException
|
from test_framework.authproxy import JSONRPCException
|
||||||
from test_framework.util import assert_equal, assert_greater_than, \
|
from test_framework.util import assert_equal, assert_greater_than, \
|
||||||
initialize_chain_clean, initialize_chain, start_nodes, start_node, connect_nodes_bi, \
|
initialize_chain_clean, initialize_chain, start_nodes, start_node, connect_nodes_bi, \
|
||||||
@@ -12,72 +12,7 @@ from test_framework.util import assert_equal, assert_greater_than, \
|
|||||||
from cryptoconditions import assert_success, assert_error, generate_random_string
|
from cryptoconditions import assert_success, assert_error, generate_random_string
|
||||||
|
|
||||||
|
|
||||||
class CryptoconditionsOraclesTest(BitcoinTestFramework):
|
class CryptoconditionsOraclesTest(CryptoconditionsTestFramework):
|
||||||
|
|
||||||
|
|
||||||
def setup_chain(self):
|
|
||||||
print("Initializing CC test directory "+self.options.tmpdir)
|
|
||||||
self.num_nodes = 2
|
|
||||||
initialize_chain_clean(self.options.tmpdir, self.num_nodes)
|
|
||||||
|
|
||||||
def setup_network(self, split = False):
|
|
||||||
print("Setting up network...")
|
|
||||||
self.addr = "RWPg8B91kfK5UtUN7z6s6TeV9cHSGtVY8D"
|
|
||||||
self.pubkey = "02676d00110c2cd14ae24f95969e8598f7ccfaa675498b82654a5b5bd57fc1d8cf"
|
|
||||||
self.privkey = "UqMgxk7ySPNQ4r9nKAFPjkXy6r5t898yhuNCjSZJLg3RAM4WW1m9"
|
|
||||||
self.addr1 = "RXEXoa1nRmKhMbuZovpcYwQMsicwzccZBp"
|
|
||||||
self.pubkey1 = "024026d4ad4ecfc1f705a9b42ca64af6d2ad947509c085534a30b8861d756c6ff0"
|
|
||||||
self.privkey1 = "UtdydP56pGTFmawHzHr1wDrc4oUwCNW1ttX8Pc3KrvH3MA8P49Wi"
|
|
||||||
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir,
|
|
||||||
extra_args=[[
|
|
||||||
# always give -ac_name as first extra_arg and port as third
|
|
||||||
'-ac_name=REGTEST',
|
|
||||||
'-conf='+self.options.tmpdir+'/node0/REGTEST.conf',
|
|
||||||
'-port=64367',
|
|
||||||
'-rpcport=64368',
|
|
||||||
'-regtest',
|
|
||||||
'-addressindex=1',
|
|
||||||
'-spentindex=1',
|
|
||||||
'-ac_supply=5555555',
|
|
||||||
'-ac_reward=10000000000000',
|
|
||||||
'-pubkey=' + self.pubkey,
|
|
||||||
'-ac_cc=2',
|
|
||||||
'-whitelist=127.0.0.1',
|
|
||||||
'-debug',
|
|
||||||
'--daemon',
|
|
||||||
'-rpcuser=rt',
|
|
||||||
'-rpcpassword=rt'
|
|
||||||
],
|
|
||||||
['-ac_name=REGTEST',
|
|
||||||
'-conf='+self.options.tmpdir+'/node1/REGTEST.conf',
|
|
||||||
'-port=64365',
|
|
||||||
'-rpcport=64366',
|
|
||||||
'-regtest',
|
|
||||||
'-addressindex=1',
|
|
||||||
'-spentindex=1',
|
|
||||||
'-ac_supply=5555555',
|
|
||||||
'-ac_reward=10000000000000',
|
|
||||||
'-pubkey=' + self.pubkey1,
|
|
||||||
'-ac_cc=2',
|
|
||||||
'-whitelist=127.0.0.1',
|
|
||||||
'-debug',
|
|
||||||
'-addnode=127.0.0.1:64367',
|
|
||||||
'--daemon',
|
|
||||||
'-rpcuser=rt',
|
|
||||||
'-rpcpassword=rt']]
|
|
||||||
)
|
|
||||||
self.is_network_split = split
|
|
||||||
self.rpc = self.nodes[0]
|
|
||||||
self.rpc1 = self.nodes[1]
|
|
||||||
self.sync_all()
|
|
||||||
print("Done setting up network")
|
|
||||||
|
|
||||||
def send_and_mine(self, xtn, rpc_connection):
|
|
||||||
txid = rpc_connection.sendrawtransaction(xtn)
|
|
||||||
assert txid, 'got txid'
|
|
||||||
# we need the tx above to be confirmed in the next block
|
|
||||||
rpc_connection.generate(1)
|
|
||||||
return txid
|
|
||||||
|
|
||||||
def run_oracles_tests(self):
|
def run_oracles_tests(self):
|
||||||
rpc = self.nodes[0]
|
rpc = self.nodes[0]
|
||||||
@@ -269,8 +204,6 @@ class CryptoconditionsOraclesTest(BitcoinTestFramework):
|
|||||||
oraclesdata_Ihh = self.send_and_mine(result["hex"], rpc)
|
oraclesdata_Ihh = self.send_and_mine(result["hex"], rpc)
|
||||||
result = rpc.oraclessamples(globals()["oracle_{}".format("Ihh")], oraclesdata_Ihh, "1")
|
result = rpc.oraclessamples(globals()["oracle_{}".format("Ihh")], oraclesdata_Ihh, "1")
|
||||||
assert_equal("[u'0']", str(result["samples"][0]), "Data match")
|
assert_equal("[u'0']", str(result["samples"][0]), "Data match")
|
||||||
assert_equal("[u'00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffffff']", str(result["samples"][1]), "Data match")
|
|
||||||
assert_equal("[u'00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffffff']", str(result["samples"][2]), "Data match")
|
|
||||||
|
|
||||||
|
|
||||||
def run_test(self):
|
def run_test(self):
|
||||||
@@ -278,7 +211,8 @@ class CryptoconditionsOraclesTest(BitcoinTestFramework):
|
|||||||
rpc = self.nodes[0]
|
rpc = self.nodes[0]
|
||||||
rpc1 = self.nodes[1]
|
rpc1 = self.nodes[1]
|
||||||
# utxos from block 1 become mature in block 101
|
# utxos from block 1 become mature in block 101
|
||||||
rpc.generate(101)
|
if not self.options.noshutdown:
|
||||||
|
rpc.generate(101)
|
||||||
self.sync_all()
|
self.sync_all()
|
||||||
rpc.getinfo()
|
rpc.getinfo()
|
||||||
rpc1.getinfo()
|
rpc1.getinfo()
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
|
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import CryptoconditionsTestFramework
|
||||||
from test_framework.authproxy import JSONRPCException
|
from test_framework.authproxy import JSONRPCException
|
||||||
from test_framework.util import assert_equal, assert_greater_than, \
|
from test_framework.util import assert_equal, assert_greater_than, \
|
||||||
initialize_chain_clean, initialize_chain, start_nodes, start_node, connect_nodes_bi, \
|
initialize_chain_clean, initialize_chain, start_nodes, start_node, connect_nodes_bi, \
|
||||||
@@ -12,72 +12,7 @@ from test_framework.util import assert_equal, assert_greater_than, \
|
|||||||
from cryptoconditions import assert_success, assert_error, generate_random_string
|
from cryptoconditions import assert_success, assert_error, generate_random_string
|
||||||
|
|
||||||
|
|
||||||
class CryptoconditionsRewardsTest(BitcoinTestFramework):
|
class CryptoconditionsRewardsTest(CryptoconditionsTestFramework):
|
||||||
|
|
||||||
|
|
||||||
def setup_chain(self):
|
|
||||||
print("Initializing CC test directory "+self.options.tmpdir)
|
|
||||||
self.num_nodes = 2
|
|
||||||
initialize_chain_clean(self.options.tmpdir, self.num_nodes)
|
|
||||||
|
|
||||||
def setup_network(self, split = False):
|
|
||||||
print("Setting up network...")
|
|
||||||
self.addr = "RWPg8B91kfK5UtUN7z6s6TeV9cHSGtVY8D"
|
|
||||||
self.pubkey = "02676d00110c2cd14ae24f95969e8598f7ccfaa675498b82654a5b5bd57fc1d8cf"
|
|
||||||
self.privkey = "UqMgxk7ySPNQ4r9nKAFPjkXy6r5t898yhuNCjSZJLg3RAM4WW1m9"
|
|
||||||
self.addr1 = "RXEXoa1nRmKhMbuZovpcYwQMsicwzccZBp"
|
|
||||||
self.pubkey1 = "024026d4ad4ecfc1f705a9b42ca64af6d2ad947509c085534a30b8861d756c6ff0"
|
|
||||||
self.privkey1 = "UtdydP56pGTFmawHzHr1wDrc4oUwCNW1ttX8Pc3KrvH3MA8P49Wi"
|
|
||||||
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir,
|
|
||||||
extra_args=[[
|
|
||||||
# always give -ac_name as first extra_arg and port as third
|
|
||||||
'-ac_name=REGTEST',
|
|
||||||
'-conf='+self.options.tmpdir+'/node0/REGTEST.conf',
|
|
||||||
'-port=64367',
|
|
||||||
'-rpcport=64368',
|
|
||||||
'-regtest',
|
|
||||||
'-addressindex=1',
|
|
||||||
'-spentindex=1',
|
|
||||||
'-ac_supply=5555555',
|
|
||||||
'-ac_reward=10000000000000',
|
|
||||||
'-pubkey=' + self.pubkey,
|
|
||||||
'-ac_cc=2',
|
|
||||||
'-whitelist=127.0.0.1',
|
|
||||||
'-debug',
|
|
||||||
'--daemon',
|
|
||||||
'-rpcuser=rt',
|
|
||||||
'-rpcpassword=rt'
|
|
||||||
],
|
|
||||||
['-ac_name=REGTEST',
|
|
||||||
'-conf='+self.options.tmpdir+'/node1/REGTEST.conf',
|
|
||||||
'-port=64365',
|
|
||||||
'-rpcport=64366',
|
|
||||||
'-regtest',
|
|
||||||
'-addressindex=1',
|
|
||||||
'-spentindex=1',
|
|
||||||
'-ac_supply=5555555',
|
|
||||||
'-ac_reward=10000000000000',
|
|
||||||
'-pubkey=' + self.pubkey1,
|
|
||||||
'-ac_cc=2',
|
|
||||||
'-whitelist=127.0.0.1',
|
|
||||||
'-debug',
|
|
||||||
'-addnode=127.0.0.1:64367',
|
|
||||||
'--daemon',
|
|
||||||
'-rpcuser=rt',
|
|
||||||
'-rpcpassword=rt']]
|
|
||||||
)
|
|
||||||
self.is_network_split = split
|
|
||||||
self.rpc = self.nodes[0]
|
|
||||||
self.rpc1 = self.nodes[1]
|
|
||||||
self.sync_all()
|
|
||||||
print("Done setting up network")
|
|
||||||
|
|
||||||
def send_and_mine(self, xtn, rpc_connection):
|
|
||||||
txid = rpc_connection.sendrawtransaction(xtn)
|
|
||||||
assert txid, 'got txid'
|
|
||||||
# we need the tx above to be confirmed in the next block
|
|
||||||
rpc_connection.generate(1)
|
|
||||||
return txid
|
|
||||||
|
|
||||||
def run_rewards_tests(self):
|
def run_rewards_tests(self):
|
||||||
rpc = self.nodes[0]
|
rpc = self.nodes[0]
|
||||||
@@ -194,7 +129,8 @@ class CryptoconditionsRewardsTest(BitcoinTestFramework):
|
|||||||
rpc = self.nodes[0]
|
rpc = self.nodes[0]
|
||||||
rpc1 = self.nodes[1]
|
rpc1 = self.nodes[1]
|
||||||
# utxos from block 1 become mature in block 101
|
# utxos from block 1 become mature in block 101
|
||||||
rpc.generate(101)
|
if not self.options.noshutdown:
|
||||||
|
rpc.generate(101)
|
||||||
self.sync_all()
|
self.sync_all()
|
||||||
rpc.getinfo()
|
rpc.getinfo()
|
||||||
rpc1.getinfo()
|
rpc1.getinfo()
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
|
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import CryptoconditionsTestFramework
|
||||||
from test_framework.authproxy import JSONRPCException
|
from test_framework.authproxy import JSONRPCException
|
||||||
from test_framework.util import assert_equal, assert_greater_than, \
|
from test_framework.util import assert_equal, assert_greater_than, \
|
||||||
initialize_chain_clean, initialize_chain, start_nodes, start_node, connect_nodes_bi, \
|
initialize_chain_clean, initialize_chain, start_nodes, start_node, connect_nodes_bi, \
|
||||||
@@ -12,72 +12,7 @@ from test_framework.util import assert_equal, assert_greater_than, \
|
|||||||
from cryptoconditions import assert_success, assert_error, generate_random_string
|
from cryptoconditions import assert_success, assert_error, generate_random_string
|
||||||
|
|
||||||
|
|
||||||
class CryptoconditionsTokenTest(BitcoinTestFramework):
|
class CryptoconditionsTokenTest(CryptoconditionsTestFramework):
|
||||||
|
|
||||||
|
|
||||||
def setup_chain(self):
|
|
||||||
print("Initializing CC test directory "+self.options.tmpdir)
|
|
||||||
self.num_nodes = 2
|
|
||||||
initialize_chain_clean(self.options.tmpdir, self.num_nodes)
|
|
||||||
|
|
||||||
def setup_network(self, split = False):
|
|
||||||
print("Setting up network...")
|
|
||||||
self.addr = "RWPg8B91kfK5UtUN7z6s6TeV9cHSGtVY8D"
|
|
||||||
self.pubkey = "02676d00110c2cd14ae24f95969e8598f7ccfaa675498b82654a5b5bd57fc1d8cf"
|
|
||||||
self.privkey = "UqMgxk7ySPNQ4r9nKAFPjkXy6r5t898yhuNCjSZJLg3RAM4WW1m9"
|
|
||||||
self.addr1 = "RXEXoa1nRmKhMbuZovpcYwQMsicwzccZBp"
|
|
||||||
self.pubkey1 = "024026d4ad4ecfc1f705a9b42ca64af6d2ad947509c085534a30b8861d756c6ff0"
|
|
||||||
self.privkey1 = "UtdydP56pGTFmawHzHr1wDrc4oUwCNW1ttX8Pc3KrvH3MA8P49Wi"
|
|
||||||
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir,
|
|
||||||
extra_args=[[
|
|
||||||
# always give -ac_name as first extra_arg and port as third
|
|
||||||
'-ac_name=REGTEST',
|
|
||||||
'-conf='+self.options.tmpdir+'/node0/REGTEST.conf',
|
|
||||||
'-port=64367',
|
|
||||||
'-rpcport=64368',
|
|
||||||
'-regtest',
|
|
||||||
'-addressindex=1',
|
|
||||||
'-spentindex=1',
|
|
||||||
'-ac_supply=5555555',
|
|
||||||
'-ac_reward=10000000000000',
|
|
||||||
'-pubkey=' + self.pubkey,
|
|
||||||
'-ac_cc=2',
|
|
||||||
'-whitelist=127.0.0.1',
|
|
||||||
'-debug',
|
|
||||||
'--daemon',
|
|
||||||
'-rpcuser=rt',
|
|
||||||
'-rpcpassword=rt'
|
|
||||||
],
|
|
||||||
['-ac_name=REGTEST',
|
|
||||||
'-conf='+self.options.tmpdir+'/node1/REGTEST.conf',
|
|
||||||
'-port=64365',
|
|
||||||
'-rpcport=64366',
|
|
||||||
'-regtest',
|
|
||||||
'-addressindex=1',
|
|
||||||
'-spentindex=1',
|
|
||||||
'-ac_supply=5555555',
|
|
||||||
'-ac_reward=10000000000000',
|
|
||||||
'-pubkey=' + self.pubkey1,
|
|
||||||
'-ac_cc=2',
|
|
||||||
'-whitelist=127.0.0.1',
|
|
||||||
'-debug',
|
|
||||||
'-addnode=127.0.0.1:64367',
|
|
||||||
'--daemon',
|
|
||||||
'-rpcuser=rt',
|
|
||||||
'-rpcpassword=rt']]
|
|
||||||
)
|
|
||||||
self.is_network_split = split
|
|
||||||
self.rpc = self.nodes[0]
|
|
||||||
self.rpc1 = self.nodes[1]
|
|
||||||
self.sync_all()
|
|
||||||
print("Done setting up network")
|
|
||||||
|
|
||||||
def send_and_mine(self, xtn, rpc_connection):
|
|
||||||
txid = rpc_connection.sendrawtransaction(xtn)
|
|
||||||
assert txid, 'got txid'
|
|
||||||
# we need the tx above to be confirmed in the next block
|
|
||||||
rpc_connection.generate(1)
|
|
||||||
return txid
|
|
||||||
|
|
||||||
def run_token_tests(self):
|
def run_token_tests(self):
|
||||||
rpc = self.nodes[0]
|
rpc = self.nodes[0]
|
||||||
@@ -274,7 +209,8 @@ class CryptoconditionsTokenTest(BitcoinTestFramework):
|
|||||||
rpc = self.nodes[0]
|
rpc = self.nodes[0]
|
||||||
rpc1 = self.nodes[1]
|
rpc1 = self.nodes[1]
|
||||||
# utxos from block 1 become mature in block 101
|
# utxos from block 1 become mature in block 101
|
||||||
rpc.generate(101)
|
if not self.options.noshutdown:
|
||||||
|
rpc.generate(101)
|
||||||
self.sync_all()
|
self.sync_all()
|
||||||
rpc.getinfo()
|
rpc.getinfo()
|
||||||
rpc1.getinfo()
|
rpc1.getinfo()
|
||||||
|
|||||||
@@ -180,3 +180,72 @@ class ComparisonTestFramework(BitcoinTestFramework):
|
|||||||
extra_args=[['-debug', '-whitelist=127.0.0.1']] * self.num_nodes,
|
extra_args=[['-debug', '-whitelist=127.0.0.1']] * self.num_nodes,
|
||||||
binary=[self.options.testbinary] +
|
binary=[self.options.testbinary] +
|
||||||
[self.options.refbinary]*(self.num_nodes-1))
|
[self.options.refbinary]*(self.num_nodes-1))
|
||||||
|
|
||||||
|
|
||||||
|
class CryptoconditionsTestFramework(BitcoinTestFramework):
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.num_nodes = 2
|
||||||
|
|
||||||
|
def setup_chain(self):
|
||||||
|
print("Initializing CC test directory "+self.options.tmpdir)
|
||||||
|
initialize_chain_clean(self.options.tmpdir, self.num_nodes)
|
||||||
|
|
||||||
|
def setup_network(self, split = False):
|
||||||
|
print("Setting up network...")
|
||||||
|
self.addr = "RWPg8B91kfK5UtUN7z6s6TeV9cHSGtVY8D"
|
||||||
|
self.pubkey = "02676d00110c2cd14ae24f95969e8598f7ccfaa675498b82654a5b5bd57fc1d8cf"
|
||||||
|
self.privkey = "UqMgxk7ySPNQ4r9nKAFPjkXy6r5t898yhuNCjSZJLg3RAM4WW1m9"
|
||||||
|
self.addr1 = "RXEXoa1nRmKhMbuZovpcYwQMsicwzccZBp"
|
||||||
|
self.pubkey1 = "024026d4ad4ecfc1f705a9b42ca64af6d2ad947509c085534a30b8861d756c6ff0"
|
||||||
|
self.privkey1 = "UtdydP56pGTFmawHzHr1wDrc4oUwCNW1ttX8Pc3KrvH3MA8P49Wi"
|
||||||
|
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir,
|
||||||
|
extra_args=[[
|
||||||
|
# always give -ac_name as first extra_arg and port as third
|
||||||
|
'-ac_name=REGTEST',
|
||||||
|
'-conf='+self.options.tmpdir+'/node0/REGTEST.conf',
|
||||||
|
'-port=64367',
|
||||||
|
'-rpcport=64368',
|
||||||
|
'-regtest',
|
||||||
|
'-addressindex=1',
|
||||||
|
'-spentindex=1',
|
||||||
|
'-ac_supply=5555555',
|
||||||
|
'-ac_reward=10000000000000',
|
||||||
|
'-pubkey=' + self.pubkey,
|
||||||
|
'-ac_cc=2',
|
||||||
|
'-whitelist=127.0.0.1',
|
||||||
|
'-debug',
|
||||||
|
'--daemon',
|
||||||
|
'-rpcuser=rt',
|
||||||
|
'-rpcpassword=rt'
|
||||||
|
],
|
||||||
|
['-ac_name=REGTEST',
|
||||||
|
'-conf='+self.options.tmpdir+'/node1/REGTEST.conf',
|
||||||
|
'-port=64365',
|
||||||
|
'-rpcport=64366',
|
||||||
|
'-regtest',
|
||||||
|
'-addressindex=1',
|
||||||
|
'-spentindex=1',
|
||||||
|
'-ac_supply=5555555',
|
||||||
|
'-ac_reward=10000000000000',
|
||||||
|
'-pubkey=' + self.pubkey1,
|
||||||
|
'-ac_cc=2',
|
||||||
|
'-whitelist=127.0.0.1',
|
||||||
|
'-debug',
|
||||||
|
'-addnode=127.0.0.1:64367',
|
||||||
|
'--daemon',
|
||||||
|
'-rpcuser=rt',
|
||||||
|
'-rpcpassword=rt']]
|
||||||
|
)
|
||||||
|
self.is_network_split = split
|
||||||
|
self.rpc = self.nodes[0]
|
||||||
|
self.rpc1 = self.nodes[1]
|
||||||
|
self.sync_all()
|
||||||
|
print("Done setting up network")
|
||||||
|
|
||||||
|
def send_and_mine(self, xtn, rpc_connection):
|
||||||
|
txid = rpc_connection.sendrawtransaction(xtn)
|
||||||
|
assert txid, 'got txid'
|
||||||
|
# we need the tx above to be confirmed in the next block
|
||||||
|
rpc_connection.generate(1)
|
||||||
|
return txid
|
||||||
|
|||||||
11
src/cc/dapps/Makefile
Normal file
11
src/cc/dapps/Makefile
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# just type make to compile all dapps
|
||||||
|
all: zmigrate oraclefeed
|
||||||
|
|
||||||
|
zmigrate:
|
||||||
|
$(CC) zmigrate.c -o zmigrate -lm
|
||||||
|
|
||||||
|
oraclefeed:
|
||||||
|
$(CC) oraclefeed.c -o oraclefeed -lm
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm zmigrate oraclefeed
|
||||||
28
src/cc/dapps/README.md
Normal file
28
src/cc/dapps/README.md
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
# CryptoCondition dApps
|
||||||
|
|
||||||
|
## Compiling
|
||||||
|
|
||||||
|
To compile all dapps in this directory:
|
||||||
|
|
||||||
|
make
|
||||||
|
|
||||||
|
## zmigrate - Sprout to Sapling Migration dApp
|
||||||
|
|
||||||
|
This tool converts Sprout zaddress funds into Sapling funds in a new Sapling address.
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
|
||||||
|
./zmigrate zsaplingaddr
|
||||||
|
|
||||||
|
The above command may need to be run multiple times to complete the process.
|
||||||
|
|
||||||
|
This CLI implementation will be called by GUI wallets, average users do not
|
||||||
|
need to worry about using this low-level tool.
|
||||||
|
|
||||||
|
## oraclefeed - feed of price data using oracles
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
|
||||||
|
./oraclefeed $ACNAME $ORACLETXID $MYPUBKEY $FORMAT $BINDTXID [refcoin_cli]
|
||||||
|
|
||||||
|
Supported formats are L and Ihh. Price data from CoinDesk API.
|
||||||
33
src/main.cpp
33
src/main.cpp
@@ -4677,7 +4677,8 @@ bool CheckBlock(int32_t *futureblockp,int32_t height,CBlockIndex *pindex,const C
|
|||||||
int32_t i,j,rejects=0,lastrejects=0;
|
int32_t i,j,rejects=0,lastrejects=0;
|
||||||
//fprintf(stderr,"put block's tx into mempool\n");
|
//fprintf(stderr,"put block's tx into mempool\n");
|
||||||
// Copy all non Z-txs in mempool to temporary mempool because there can be tx in local mempool that make the block invalid.
|
// Copy all non Z-txs in mempool to temporary mempool because there can be tx in local mempool that make the block invalid.
|
||||||
LOCK(mempool.cs);
|
LOCK2(cs_main,mempool.cs);
|
||||||
|
//fprintf(stderr, "starting... mempoolsize.%ld\n",mempool.size());
|
||||||
list<CTransaction> transactionsToRemove;
|
list<CTransaction> transactionsToRemove;
|
||||||
BOOST_FOREACH(const CTxMemPoolEntry& e, mempool.mapTx) {
|
BOOST_FOREACH(const CTxMemPoolEntry& e, mempool.mapTx) {
|
||||||
const CTransaction &tx = e.GetTx();
|
const CTransaction &tx = e.GetTx();
|
||||||
@@ -4695,6 +4696,7 @@ bool CheckBlock(int32_t *futureblockp,int32_t height,CBlockIndex *pindex,const C
|
|||||||
// CC validation shouldnt (cant) depend on the state of mempool!
|
// CC validation shouldnt (cant) depend on the state of mempool!
|
||||||
while ( 1 )
|
while ( 1 )
|
||||||
{
|
{
|
||||||
|
list<CTransaction> removed;
|
||||||
for (i=0; i<block.vtx.size(); i++)
|
for (i=0; i<block.vtx.size(); i++)
|
||||||
{
|
{
|
||||||
CValidationState state;
|
CValidationState state;
|
||||||
@@ -4714,7 +4716,10 @@ bool CheckBlock(int32_t *futureblockp,int32_t height,CBlockIndex *pindex,const C
|
|||||||
ptx = &sTx;
|
ptx = &sTx;
|
||||||
} else rejects++;
|
} else rejects++;
|
||||||
}
|
}
|
||||||
|
// here we remove any txs in the temp mempool that were included in the block.
|
||||||
|
tmpmempool.remove(tx, removed, false);
|
||||||
}
|
}
|
||||||
|
//fprintf(stderr, "removed.%ld\n",removed.size());
|
||||||
if ( rejects == 0 || rejects == lastrejects )
|
if ( rejects == 0 || rejects == lastrejects )
|
||||||
{
|
{
|
||||||
if ( 0 && lastrejects != 0 )
|
if ( 0 && lastrejects != 0 )
|
||||||
@@ -4761,29 +4766,15 @@ bool CheckBlock(int32_t *futureblockp,int32_t height,CBlockIndex *pindex,const C
|
|||||||
if ( ASSETCHAINS_CC != 0 )
|
if ( ASSETCHAINS_CC != 0 )
|
||||||
{
|
{
|
||||||
// here we add back all txs from the temp mempool to the main mempool.
|
// here we add back all txs from the temp mempool to the main mempool.
|
||||||
// which removes any tx locally that were invalid after the block arrives.
|
BOOST_FOREACH(const CTxMemPoolEntry& e, tmpmempool.mapTx)
|
||||||
int numadded,numiters = 0;
|
|
||||||
CValidationState state; bool fMissingInputs,fOverrideFees = false;
|
|
||||||
list<CTransaction> removed;
|
|
||||||
LOCK(mempool.cs);
|
|
||||||
while ( 1 )
|
|
||||||
{
|
{
|
||||||
numiters++;
|
const CTransaction &tx = e.GetTx();
|
||||||
numadded = 0;
|
const uint256 &hash = tx.GetHash();
|
||||||
BOOST_FOREACH(const CTxMemPoolEntry& e, tmpmempool.mapTx)
|
if ( tx.vjoinsplit.size() == 0 ) {
|
||||||
{
|
mempool.addUnchecked(hash,e,true);
|
||||||
CTransaction tx = e.GetTx();
|
|
||||||
if (AcceptToMemoryPool(mempool, state, tx, false, &fMissingInputs, !fOverrideFees) == true )
|
|
||||||
{
|
|
||||||
numadded++;
|
|
||||||
tmpmempool.remove(tx, removed, false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if ( numadded == 0 )
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
if ( 0 && numadded > 0 )
|
//fprintf(stderr, "finished adding back. mempoolsize.%ld\n",mempool.size());
|
||||||
fprintf(stderr, "CC mempool add: numiters.%d numadded.%d remains.%d\n",numiters,numadded,(int32_t)tmpmempool.size());
|
|
||||||
// empty the temp mempool for next time.
|
// empty the temp mempool for next time.
|
||||||
tmpmempool.clear();
|
tmpmempool.clear();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user