Skip to content

Commit

Permalink
Merge pull request #688 from dashpay/fix_tests_0_12_0
Browse files Browse the repository at this point in the history
backport fix of testsuite to 0.12.0.x
  • Loading branch information
schinzelh committed Jan 30, 2016
2 parents 7154cdf + 08e8264 commit c50dd51
Show file tree
Hide file tree
Showing 23 changed files with 122 additions and 171 deletions.
6 changes: 2 additions & 4 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ env:
- CCACHE_TEMPDIR=/tmp/.ccache-temp
- CCACHE_COMPRESS=1
- BASE_OUTDIR=$TRAVIS_BUILD_DIR/out
- SDK_URL=https://bitcoincore.org/depends-sources/sdks
- SDK_URL=https://dash.org/depends-sources/sdks
cache:
apt: true
directories:
Expand All @@ -29,8 +29,6 @@ matrix:
env: HOST=arm-linux-gnueabihf PACKAGES="g++-arm-linux-gnueabihf" DEP_OPTS="NO_QT=1" GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat"
- compiler: ": dashd"
env: HOST=x86_64-unknown-linux-gnu PACKAGES="bc" DEP_OPTS="NO_QT=1 NO_UPNP=1 DEBUG=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat CPPFLAGS=-DDEBUG_LOCKORDER"
- compiler: ": No wallet"
env: HOST=x86_64-unknown-linux-gnu DEP_OPTS="NO_WALLET=1" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat"
- compiler: ": 32-bit + dash"
env: HOST=i686-pc-linux-gnu PACKAGES="g++-multilib bc" RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-glibc-back-compat" USE_SHELL="/bin/dash"
- compiler: ": Cross-Mac"
Expand All @@ -47,7 +45,7 @@ install:
before_script:
- unset CC; unset CXX
- mkdir -p depends/SDKs depends/sdk-sources
- if [ -n "$OSX_SDK" -a ! -f depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz ]; then wget $SDK_URL/MacOSX${OSX_SDK}.sdk.tar.gz -O depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz; fi
- if [ -n "$OSX_SDK" -a ! -f depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz ]; then wget --no-check-certificate $SDK_URL/MacOSX${OSX_SDK}.sdk.tar.gz -O depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz; fi
- if [ -n "$OSX_SDK" -a -f depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz ]; then tar -C depends/SDKs -xf depends/sdk-sources/MacOSX${OSX_SDK}.sdk.tar.gz; fi
- make $MAKEJOBS -C depends HOST=$HOST $DEP_OPTS
script:
Expand Down
6 changes: 4 additions & 2 deletions Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -184,10 +184,12 @@ cov: test_dash.coverage/.dirstamp total.coverage/.dirstamp

endif

# Dash: disable the test until upstream switches from convoluted comparison tool
# Ref https://github.com/bitcoin/bitcoin/issues/4545
if USE_COMPARISON_TOOL
check-local:
$(MKDIR_P) qa/tmp
@qa/pull-tester/run-bitcoind-for-test.sh $(JAVA) -jar $(JAVA_COMPARISON_TOOL) qa/tmp/compTool $(COMPARISON_TOOL_REORG_TESTS) 2>&1
## $(MKDIR_P) qa/tmp
## @qa/pull-tester/run-bitcoind-for-test.sh $(JAVA) -jar $(JAVA_COMPARISON_TOOL) qa/tmp/compTool $(COMPARISON_TOOL_REORG_TESTS) 2>&1
endif

EXTRA_DIST = $(top_srcdir)/share/genbuild.sh qa/pull-tester/rpc-tests.sh qa/pull-tester/run-bitcoin-cli qa/rpc-tests $(DIST_DOCS) $(WINDOWS_PACKAGING) $(OSX_PACKAGING)
Expand Down
2 changes: 1 addition & 1 deletion depends/builders/linux.mk
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
build_linux_SHA256SUM = sha256sum
build_linux_DOWNLOAD = wget --timeout=$(DOWNLOAD_CONNECT_TIMEOUT) --tries=$(DOWNLOAD_RETRIES) -nv -O
build_linux_DOWNLOAD = curl --connect-timeout $(DOWNLOAD_CONNECT_TIMEOUT) --retry $(DOWNLOAD_RETRIES) -L -o
10 changes: 5 additions & 5 deletions qa/rpc-tests/mempool_coinbase_spends.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,18 +55,18 @@ def run_test(self):
# and make sure the mempool code behaves correctly.
b = [ self.nodes[0].getblockhash(n) for n in range(102, 105) ]
coinbase_txids = [ self.nodes[0].getblock(h)['tx'][0] for h in b ]
spend_101_raw = self.create_tx(coinbase_txids[0], node1_address, 50)
spend_102_raw = self.create_tx(coinbase_txids[1], node0_address, 50)
spend_103_raw = self.create_tx(coinbase_txids[2], node0_address, 50)
spend_101_raw = self.create_tx(coinbase_txids[0], node1_address, 500)
spend_102_raw = self.create_tx(coinbase_txids[1], node0_address, 500)
spend_103_raw = self.create_tx(coinbase_txids[2], node0_address, 500)

# Broadcast and mine spend_102 and 103:
spend_102_id = self.nodes[0].sendrawtransaction(spend_102_raw)
spend_103_id = self.nodes[0].sendrawtransaction(spend_103_raw)
self.nodes[0].setgenerate(True, 1)

# Create 102_1 and 103_1:
spend_102_1_raw = self.create_tx(spend_102_id, node1_address, 50)
spend_103_1_raw = self.create_tx(spend_103_id, node1_address, 50)
spend_102_1_raw = self.create_tx(spend_102_id, node1_address, 500)
spend_103_1_raw = self.create_tx(spend_103_id, node1_address, 500)

# Broadcast and mine 103_1:
spend_103_1_id = self.nodes[0].sendrawtransaction(spend_103_1_raw)
Expand Down
4 changes: 2 additions & 2 deletions qa/rpc-tests/mempool_resurrect_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,13 +47,13 @@ def run_test(self):

b = [ self.nodes[0].getblockhash(n) for n in range(1, 4) ]
coinbase_txids = [ self.nodes[0].getblock(h)['tx'][0] for h in b ]
spends1_raw = [ self.create_tx(txid, node0_address, 50) for txid in coinbase_txids ]
spends1_raw = [ self.create_tx(txid, node0_address, 500) for txid in coinbase_txids ]
spends1_id = [ self.nodes[0].sendrawtransaction(tx) for tx in spends1_raw ]

blocks = []
blocks.extend(self.nodes[0].setgenerate(True, 1))

spends2_raw = [ self.create_tx(txid, node0_address, 49.99) for txid in spends1_id ]
spends2_raw = [ self.create_tx(txid, node0_address, 499.99) for txid in spends1_id ]
spends2_id = [ self.nodes[0].sendrawtransaction(tx) for tx in spends2_raw ]

blocks.extend(self.nodes[0].setgenerate(True, 1))
Expand Down
2 changes: 1 addition & 1 deletion qa/rpc-tests/mempool_spendcoinbase.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ def run_test(self):
# is too immature to spend.
b = [ self.nodes[0].getblockhash(n) for n in range(101, 103) ]
coinbase_txids = [ self.nodes[0].getblock(h)['tx'][0] for h in b ]
spends_raw = [ self.create_tx(txid, node0_address, 50) for txid in coinbase_txids ]
spends_raw = [ self.create_tx(txid, node0_address, 500) for txid in coinbase_txids ]

spend_101_id = self.nodes[0].sendrawtransaction(spends_raw[0])

Expand Down
2 changes: 1 addition & 1 deletion qa/rpc-tests/test_framework.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class BitcoinTestFramework(object):
def run_test(self):
for node in self.nodes:
assert_equal(node.getblockcount(), 200)
assert_equal(node.getbalance(), 25*50)
assert_equal(node.getbalance(), 25*500)

def add_options(self, parser):
pass
Expand Down
32 changes: 16 additions & 16 deletions qa/rpc-tests/txn_doublespend.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,35 +25,35 @@ def setup_network(self):
return super(TxnMallTest, self).setup_network(True)

def run_test(self):
# All nodes should start with 1,250 BTC:
starting_balance = 1250
# All nodes should start with 12,500 DASH:
starting_balance = 12500
for i in range(4):
assert_equal(self.nodes[i].getbalance(), starting_balance)
self.nodes[i].getnewaddress("") # bug workaround, coins generated assigned to first getnewaddress!

# Assign coins to foo and bar accounts:
self.nodes[0].move("", "foo", 1220)
self.nodes[0].move("", "foo", 12470)
self.nodes[0].move("", "bar", 30)
assert_equal(self.nodes[0].getbalance(""), 0)

# Coins are sent to node1_address
node1_address = self.nodes[1].getnewaddress("from0")

# First: use raw transaction API to send 1210 BTC to node1_address,
# First: use raw transaction API to send 12460 BTC to node1_address,
# but don't broadcast:
(total_in, inputs) = gather_inputs(self.nodes[0], 1210)
(total_in, inputs) = gather_inputs(self.nodes[0], 12460)
change_address = self.nodes[0].getnewaddress("foo")
outputs = {}
outputs[change_address] = 40
outputs[node1_address] = 1210
outputs[node1_address] = 12460
rawtx = self.nodes[0].createrawtransaction(inputs, outputs)
doublespend = self.nodes[0].signrawtransaction(rawtx)
assert_equal(doublespend["complete"], True)

# Create two transaction from node[0] to node[1]; the
# second must spend change from the first because the first
# spends all mature inputs:
txid1 = self.nodes[0].sendfrom("foo", node1_address, 1210, 0)
txid1 = self.nodes[0].sendfrom("foo", node1_address, 12460, 0)
txid2 = self.nodes[0].sendfrom("bar", node1_address, 20, 0)

# Have node0 mine a block:
Expand All @@ -64,16 +64,16 @@ def run_test(self):
tx1 = self.nodes[0].gettransaction(txid1)
tx2 = self.nodes[0].gettransaction(txid2)

# Node0's balance should be starting balance, plus 50BTC for another
# matured block, minus 1210, minus 20, and minus transaction fees:
# Node0's balance should be starting balance, plus 500 DASH for another
# matured block, minus 12460, minus 20, and minus transaction fees:
expected = starting_balance
if self.options.mine_block: expected += 50
if self.options.mine_block: expected += 500
expected += tx1["amount"] + tx1["fee"]
expected += tx2["amount"] + tx2["fee"]
assert_equal(self.nodes[0].getbalance(), expected)

# foo and bar accounts should be debited:
assert_equal(self.nodes[0].getbalance("foo"), 1220+tx1["amount"]+tx1["fee"])
assert_equal(self.nodes[0].getbalance("foo"), 12470+tx1["amount"]+tx1["fee"])
assert_equal(self.nodes[0].getbalance("bar"), 30+tx2["amount"]+tx2["fee"])

if self.options.mine_block:
Expand Down Expand Up @@ -103,18 +103,18 @@ def run_test(self):
assert_equal(tx1["confirmations"], -1)
assert_equal(tx2["confirmations"], -1)

# Node0's total balance should be starting balance, plus 100BTC for
# two more matured blocks, minus 1210 for the double-spend:
expected = starting_balance + 100 - 1210
# Node0's total balance should be starting balance, plus 1000 DASH for
# two more matured blocks, minus 12460 for the double-spend:
expected = starting_balance + 1000 - 12460
assert_equal(self.nodes[0].getbalance(), expected)
assert_equal(self.nodes[0].getbalance("*"), expected)

# foo account should be debited, but bar account should not:
assert_equal(self.nodes[0].getbalance("foo"), 1220-1210)
assert_equal(self.nodes[0].getbalance("foo"), 12470-12460)
assert_equal(self.nodes[0].getbalance("bar"), 30)

# Node1's "from" account balance should be just the mutated send:
assert_equal(self.nodes[1].getbalance("from0"), 1210)
assert_equal(self.nodes[1].getbalance("from0"), 12460)

if __name__ == '__main__':
TxnMallTest().main()
8 changes: 4 additions & 4 deletions qa/rpc-tests/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -103,15 +103,15 @@ def initialize_chain(test_dir):

# Create a 200-block-long chain; each of the 4 nodes
# gets 25 mature blocks and 25 immature.
# blocks are created with timestamps 10 minutes apart, starting
# at 1 Jan 2014
block_time = 1388534400
# blocks are created with timestamps 156 seconds apart, starting
# at 1 Jan 2015
block_time = 1420070400
for i in range(2):
for peer in range(4):
for j in range(25):
set_node_times(rpcs, block_time)
rpcs[peer].setgenerate(True, 1)
block_time += 10*60
block_time += 156
# Must sync before next peer starts generating blocks
sync_blocks(rpcs)

Expand Down
22 changes: 11 additions & 11 deletions qa/rpc-tests/wallet.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@
# Does the following:
# a) creates 3 nodes, with an empty chain (no blocks).
# b) node0 mines a block
# c) node1 mines 101 blocks, so now nodes 0 and 1 have 50btc, node2 has none.
# d) node0 sends 21 btc to node2, in two transactions (11 btc, then 10 btc).
# c) node1 mines 101 blocks, so now nodes 0 and 1 have 500 DASH, node2 has none.
# d) node0 sends 21 DASH to node2, in two transactions (11 DASH, then 10 DASH).
# e) node0 mines a block, collects the fee on the second transaction
# f) node1 mines 100 blocks, to mature node0's just-mined block
# g) check that node0 has 100-21, node2 has 21
# g) check that node0 has 1000-21, node2 has 21
# h) node0 should now have 2 unspent outputs; send these to node2 via raw tx broadcast by node1
# i) have node1 mine a block
# j) check balances - node0 should have 0, node2 should have 100
# j) check balances - node0 should have 0, node2 should have 1000
#

from test_framework import BitcoinTestFramework
Expand Down Expand Up @@ -45,11 +45,11 @@ def run_test (self):
self.nodes[1].setgenerate(True, 101)
self.sync_all()

assert_equal(self.nodes[0].getbalance(), 50)
assert_equal(self.nodes[1].getbalance(), 50)
assert_equal(self.nodes[0].getbalance(), 500)
assert_equal(self.nodes[1].getbalance(), 500)
assert_equal(self.nodes[2].getbalance(), 0)

# Send 21 BTC from 0 to 2 using sendtoaddress call.
# Send 21 DASH from 0 to 2 using sendtoaddress call.
# Second transaction will be child of first, and will require a fee
self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), 11)
self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), 10)
Expand All @@ -62,9 +62,9 @@ def run_test (self):
self.nodes[1].setgenerate(True, 100)
self.sync_all()

# node0 should end up with 100 btc in block rewards plus fees, but
# node0 should end up with 1000 DASH in block rewards plus fees, but
# minus the 21 plus fees sent to node2
assert_equal(self.nodes[0].getbalance(), 100-21)
assert_equal(self.nodes[0].getbalance(), 1000-21)
assert_equal(self.nodes[2].getbalance(), 21)

# Node0 should have two unspent outputs.
Expand Down Expand Up @@ -92,8 +92,8 @@ def run_test (self):
self.sync_all()

assert_equal(self.nodes[0].getbalance(), 0)
assert_equal(self.nodes[2].getbalance(), 100)
assert_equal(self.nodes[2].getbalance("from1"), 100-21)
assert_equal(self.nodes[2].getbalance(), 1000)
assert_equal(self.nodes[2].getbalance("from1"), 1000-21)


if __name__ == '__main__':
Expand Down
14 changes: 7 additions & 7 deletions src/test/Checkpoints_tests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,20 +19,20 @@ BOOST_AUTO_TEST_SUITE(Checkpoints_tests)
BOOST_AUTO_TEST_CASE(sanity)
{
uint256 p88805 = uint256("0x00000000001392f1652e9bf45cd8bc79dc60fe935277cd11538565b4a94fa85f");
uint256 p217752 = uint256("0x00000000000a7baeb2148272a7e14edf5af99a64af456c0afc23d15a0918b704");
uint256 p107996 = uint256("0x00000000000a23840ac16115407488267aa3da2b9bc843e301185b7d17e4dc40");
BOOST_CHECK(Checkpoints::CheckBlock(88805, p88805));
BOOST_CHECK(Checkpoints::CheckBlock(217752, p217752));
BOOST_CHECK(Checkpoints::CheckBlock(107996, p107996));


// Wrong hashes at checkpoints should fail:
BOOST_CHECK(!Checkpoints::CheckBlock(88805, p217752));
BOOST_CHECK(!Checkpoints::CheckBlock(217752, p88805));
BOOST_CHECK(!Checkpoints::CheckBlock(88805, p107996));
BOOST_CHECK(!Checkpoints::CheckBlock(107996, p88805));

// ... but any hash not at a checkpoint should succeed:
BOOST_CHECK(Checkpoints::CheckBlock(88805+1, p217752));
BOOST_CHECK(Checkpoints::CheckBlock(217752+1, p88805));
BOOST_CHECK(Checkpoints::CheckBlock(88805+1, p107996));
BOOST_CHECK(Checkpoints::CheckBlock(107996+1, p88805));

BOOST_CHECK(Checkpoints::GetTotalBlocksEstimate() >= 217752);
BOOST_CHECK(Checkpoints::GetTotalBlocksEstimate() >= 107996);
}

BOOST_AUTO_TEST_SUITE_END()
6 changes: 3 additions & 3 deletions src/test/bloom_tests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ BOOST_AUTO_TEST_CASE(bloom_create_insert_serialize_with_tweak)

BOOST_AUTO_TEST_CASE(bloom_create_insert_key)
{
string strSecret = string("5Kg1gnAjaLfKiwhhPpGS3QfRg2m6awQvaj98JCZBZQ5SuS2F15C");
string strSecret = string("7sQb6QHALg4XyHsJHsSNXnEHGhZfzTTUPJXJqaqK7CavQkiL9Ms");
CBitcoinSecret vchSecret;
BOOST_CHECK(vchSecret.SetString(strSecret));

Expand Down Expand Up @@ -271,7 +271,7 @@ BOOST_AUTO_TEST_CASE(merkle_block_2)
BOOST_CHECK(merkleBlock.vMatchedTxn[2].second == uint256("0x6b0f8a73a56c04b519f1883e8aafda643ba61a30bd1439969df21bea5f4e27e2"));
BOOST_CHECK(merkleBlock.vMatchedTxn[2].first == 2);

BOOST_CHECK(merkleBlock.vMatchedTxn[3].second == uint256("0x3c1d7e82342158e4109df2e0b6348b6e84e403d8b4046d7007763ace63cddb23"));
BOOST_CHECK(merkleBlock.vMatchedTxn[3].second == uint256("0x3c1d7e82342158e4109df2e0b6348b6e84e403d8b4046d7007663ace63cddb23"));
BOOST_CHECK(merkleBlock.vMatchedTxn[3].first == 3);

BOOST_CHECK(merkleBlock.txn.ExtractMatches(vMatched) == block.hashMerkleRoot);
Expand Down Expand Up @@ -322,7 +322,7 @@ BOOST_AUTO_TEST_CASE(merkle_block_2_with_update_none)
BOOST_CHECK(merkleBlock.vMatchedTxn[1].second == uint256("0x28204cad1d7fc1d199e8ef4fa22f182de6258a3eaafe1bbe56ebdcacd3069a5f"));
BOOST_CHECK(merkleBlock.vMatchedTxn[1].first == 1);

BOOST_CHECK(merkleBlock.vMatchedTxn[2].second == uint256("0x3c1d7e82342158e4109df2e0b6348b6e84e403d8b4046d7007763ace63cddb23"));
BOOST_CHECK(merkleBlock.vMatchedTxn[2].second == uint256("0x3c1d7e82342158e4109df2e0b6348b6e84e403d8b4046d7007663ace63cddb23"));
BOOST_CHECK(merkleBlock.vMatchedTxn[2].first == 3);

BOOST_CHECK(merkleBlock.txn.ExtractMatches(vMatched) == block.hashMerkleRoot);
Expand Down
Binary file modified src/test/data/alertTests.raw
Binary file not shown.
28 changes: 14 additions & 14 deletions src/test/data/bitcoin-util-test.json
Original file line number Diff line number Diff line change
@@ -1,60 +1,60 @@
[
{ "exec": "././bitcoin-tx",
{ "exec": "././dash-tx",
"args": ["-create"],
"output_cmp": "blanktx.hex"
},
{ "exec": "./bitcoin-tx",
{ "exec": "./dash-tx",
"args": ["-"],
"input": "blanktx.hex",
"output_cmp": "blanktx.hex"
},
{ "exec": "./bitcoin-tx",
{ "exec": "./dash-tx",
"args": ["-", "delin=1"],
"input": "tx394b54bb.hex",
"output_cmp": "tt-delin1-out.hex"
},
{ "exec": "./bitcoin-tx",
{ "exec": "./dash-tx",
"args": ["-", "delin=31"],
"input": "tx394b54bb.hex",
"return_code": 1
},
{ "exec": "./bitcoin-tx",
{ "exec": "./dash-tx",
"args": ["-", "delout=1"],
"input": "tx394b54bb.hex",
"output_cmp": "tt-delout1-out.hex"
},
{ "exec": "./bitcoin-tx",
{ "exec": "./dash-tx",
"args": ["-", "delout=2"],
"input": "tx394b54bb.hex",
"return_code": 1
},
{ "exec": "./bitcoin-tx",
{ "exec": "./dash-tx",
"args": ["-", "locktime=317000"],
"input": "tx394b54bb.hex",
"output_cmp": "tt-locktime317000-out.hex"
},
{ "exec": "./bitcoin-tx",
{ "exec": "./dash-tx",
"args":
["-create",
"in=5897de6bd6027a475eadd57019d4e6872c396d0716c4875a5f1a6fcfdf385c1f:0",
"in=bf829c6bcf84579331337659d31f89dfd138f7f7785802d5501c92333145ca7c:18",
"in=22a6f904655d53ae2ff70e701a0bbd90aa3975c0f40bfc6cc996a9049e31cdfc:1",
"outaddr=0.18:13tuJJDR2RgArmgfv6JScSdreahzgc4T6o",
"outaddr=4:1P8yWvZW8jVihP1bzHeqfE4aoXNX8AVa46"],
"outaddr=0.18:Xdak8YsJz8tm1iHFmycfTyKeUvHgfbdpyw",
"outaddr=4:XxppMBDQ6SiJrKcBrAy4WkkNdrxDBfzFdZ"],
"output_cmp": "txcreate1.hex"
},
{ "exec": "./bitcoin-tx",
{ "exec": "./dash-tx",
"args": ["-create", "outscript=0:"],
"output_cmp": "txcreate2.hex"
},
{ "exec": "./bitcoin-tx",
{ "exec": "./dash-tx",
"args":
["-create",
"in=4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485:0",
"set=privatekeys:[\"5HpHagT65TZzG1PH3CSu63k8DbpvD8s5ip4nEB3kEsreAnchuDf\"]",
"set=privatekeys:[\"7qYrzJZWqnyCWMYswFcqaRJypGdVceudXPSxmZKsngN7fyo7aAV\"]",
"set=prevtxs:[{\"txid\":\"4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485\",\"vout\":0,\"scriptPubKey\":\"4d49a71ec9da436f71ec4ee231d04f292a29cd316f598bb7068feccabdc59485\"}]",
"sign=ALL",
"outaddr=0.001:193P6LtvS4nCnkDvM9uXn1gsSRqh4aDAz7"],
"outaddr=0.001:XijDvbYpPmznwgpWD3DkdYNfGmRP2KoVSk"],
"output_cmp": "txcreatesign.hex"
}
]
Loading

0 comments on commit c50dd51

Please sign in to comment.