CMakeList.txt updated

pull/85/head
moneroexamples 6 years ago
parent 774ab8ab7b
commit 427adfbb9a

1
.gitignore vendored

@ -2,6 +2,7 @@
.sass-cache
*.*~
*.user
*.autosave
*.user.*
.idea/
*.gcov

@ -150,8 +150,7 @@ if (WIN32)
wsock32
ntdll
ws2_32
Iphlpapi
)
Iphlpapi)
else()
set(LIBRARIES ${LIBRARIES} dl)
endif()

@ -224,9 +224,10 @@ CurrentBlockchainStatus::get_tx_with_output(
}
bool
CurrentBlockchainStatus::get_output_keys(const uint64_t& amount,
const vector<uint64_t>& absolute_offsets,
vector<cryptonote::output_data_t>& outputs)
CurrentBlockchainStatus::get_output_keys(
const uint64_t& amount,
const vector<uint64_t>& absolute_offsets,
vector<cryptonote::output_data_t>& outputs)
{
try
{

@ -214,7 +214,6 @@ OutputInputIdentification::identify_inputs(
output_data.pubkey});
found_a_match = true;
}
} // for (const cryptonote::output_data_t& output_data: outputs)

@ -27,7 +27,7 @@ class TxSearch
{
public:
// out_pk , amount
// out_pk , amount
using known_outputs_t = std::unordered_map<public_key, uint64_t>;
using addr_view_t = std::pair<address_parse_info, secret_key>;
using pool_txs_t = std::vector<pair<uint64_t, transaction>>;

@ -974,7 +974,7 @@ get_tx_pub_key_from_received_outs(const transaction &tx)
string
xmr_amount_to_str(const uint64_t& xmr_amount, string format)
{
return fmt::format("{:0.12f}", XMR_AMOUNT(xmr_amount));
return fmt::format(format, XMR_AMOUNT(xmr_amount));
}
@ -1031,19 +1031,6 @@ is_output_ours(const size_t& output_index,
}
bool
get_real_output_for_key_image(const key_image& ki,
const transaction& tx,
const secret_key& private_view_key,
const public_key& public_spend_key,
uint64_t output_idx,
public_key output_pub_key)
{
return false;
}
bool
@ -1452,5 +1439,47 @@ addr_and_viewkey_from_string(string const& addres_str,
return true;
}
bool
output_data_from_hex(
string const& out_data_hex,
vector<cryptonote::output_data_t>& outputs_data_v)
{
vector<string> outputs_data_v_str;
try
{
string out_data_blob;
if (!epee::string_tools::parse_hexstr_to_binbuff(
out_data_hex, out_data_blob))
return false;
std::stringstream iss;
iss << out_data_blob;
boost::archive::portable_binary_iarchive archive(iss);
archive >> outputs_data_v_str;
for (string const& s: outputs_data_v_str)
{
cryptonote::output_data_t out_data;
if (!hex_to_pod(s, out_data))
{
cerr << "hex_to_pod faild in output_data_from_hex\n";
return false;
}
outputs_data_v.push_back(out_data);
}
}
catch (...)
{
cerr << "deserialization faild in output_data_from_hex\n";
return false;
}
return true;
}
}

@ -215,13 +215,6 @@ is_output_ours(const size_t& output_index,
const secret_key& private_view_key,
const public_key& public_spend_key);
bool
get_real_output_for_key_image(const key_image& ki,
const transaction& tx,
const secret_key& private_view_key,
const public_key& public_spend_key,
uint64_t output_idx,
public_key output_pub_key);
// based on http://stackoverflow.com/a/9943098/248823
template<typename Iterator, typename Func>
@ -296,6 +289,11 @@ addr_and_viewkey_from_string(string const& addres_str,
address_parse_info& address_info,
crypto::secret_key& viewkey);
bool
output_data_from_hex(
string const& out_data_hex,
vector<cryptonote::output_data_t>& outputs_data_v);
}
#endif //XMREG01_TOOLS_H

@ -32,3 +32,7 @@
ASSERT_TRUE(xmreg::addr_and_viewkey_from_string( \
address_str, viewkey_str, \
net_type, address, viewkey));

@ -172,5 +172,11 @@ public:
: xmreg::CurrentBlockchainStatus(xmreg::BlockchainSetup(),
nullptr, nullptr)
{}
MOCK_METHOD3(get_output_keys,
bool(const uint64_t& amount,
const vector<uint64_t>& absolute_offsets,
vector<cryptonote::output_data_t>& outputs));
};
}

@ -41,7 +41,7 @@ protected:
bool do_not_relay {false};
xmreg::BlockchainSetup bc_setup;
std::shared_ptr<xmreg::CurrentBlockchainStatus> cbs_mock;
std::shared_ptr<MockCurrentBlockchainStatus> cbs_mock;
static json config_json;
};
@ -75,7 +75,7 @@ TEST_F(OUTPUTIDENT_TEST, NonDefaultConstruction)
EXPECT_TRUE(true);
}
TEST_F(OUTPUTIDENT_TEST, PreRingctTransaction)
TEST_F(OUTPUTIDENT_TEST, IncomingPreRingctTransaction)
{
// private testnet tx_hash 01e3d29a5b6b6e1999b9e7e48b9abe101bb93055b701b23d98513fb0646e7570
string tx_hex {"0100020280e08d84ddcb0107041e6508060e1df9733757fb1563579b3a0ecefb4063dc66a75ad6bae3d0916ab862789c31f6aa0280e08d84ddcb01075f030f17031713f43315e59fbd6bacb3aa1a868edc33a0232f5031f6c573d6d7b23e752b6beee10580d0b8e1981a02e04e4d7d674381d16bf50bdc1581f75f7b2df591b7a40d73efd8f5b3c4be2a828088aca3cf02025c3fb06591f216cab833bb6deb2e173e0a9a138addf527eaff80912b8f4ff47280f882ad1602779945c0e6cbbc7def201e170a38bb9822109ddc01f330a5b00d12eb26b6fd4880e0bcefa757024f05eb53b5ebd60e502abd5a2fcb74b057b523acccd191df8076e27083ef619180c0caf384a302022dffb5574d937c1add2cf88bd374af40d577c7cc1a22c3c8805afd49840a60962101945fd9057dd42ef52164368eab1a5f430268e029f83815897d4f1e08b0e00873dbf5b4127be86ba01f23f021a40f29e29110f780fa0be36041ecf00b6c7b480edb090ba58dea640ca19aa4921a56c4b6dcbf11897c53db427dfdbc2f3072480b6c02f409b45c5d2401a19d8cfb13d9124d858d2774d9945f448f19e1e243e004588368813689c1c1be4e1242c633b7a2eb4936546fda57c99dac7fab81e40d0512e39d04ce285f96ac80f6d91ee39157189d73e198fa6b397bd34d8685dbf20e3f869043b686c291f8d4401f673978c683841ec39c45ce06564ccf87c68a080ad17bcce3d7240cd8d57ecbb190fef27578679cdd39ea3c868ab65d6d1d2c20062e921ceea054f755ceef8cd24e54078f9a5bedea2ca59d90ad277bd250c90605b3dd832aa15a4eb01080210ade74638f1558e203c644aa608147c9f596ce3c03023e99f9ca5b3cae41cbd230bc20f2b87f1e06967c852115abc7e56566ddaf09b5774568375fa0f27b45d946cfb2859f1c7a3ad6b7a8e097e955a6ee77c6db0b083dbda85b317dcd77e4be29079420bf683a91ac94feb0f788d5e3dfe72bef028768d76f9ebffd4cb2fd4a314e293df51cb43f12091632e93f4f97fdab7ab60dd50611233fbb1048dccd6478184b914710c894d8116620fcfd09d73ef304c90af210a4724c9e8adb2c47396a67944d6fe827a9b06f7a3c3b6cd2946f328cc306e0a0d194443734cc90fb94ccdb74f8fa7a19690793ddc2b0b06e52d0d4d8530ac227d58a2936fbbf18bbbc2af03443a44ff2a844be527371fedc03c50cce200e8e2b4fdb501e2fba103aafc2487be7faaa83f3894bdcfad873a6697ad930500bc56e28139ef4c6d9b8ee06390b4bcb1b6bfcc6e3136be89e3bdccff50d104906d354569aedfd8b2a5cb62b8738218760a9ebbc5dff3de038ab2e0369f28e3d0d921d28b388acdf69988b5c77120de5317be614da7c774f1f815a7137625da90f0342ca5df7bbc8515066c3d8fa37f1d69727f69e540ff66578bd0e6adf73fa074ce25809e47f06edc9d8ac9f49b4f02b8fd48ef8b03d7a6e823c6e2fc105ee0384a5a3a4bfefc41cf7240847e50121233de0083bbd904903b9879ecdd5a3b701a2196e13e438cf3980ab0b85c5e4e3595c46f034cb393b1e291e3e288678c90e9aac0abe0723520d47e94584ff65dfec8d4d1b1d2c378f87347f429a2178b10ad530bfe406441d7b21c1f0ea04920c9715434b16e6f5c561eab4e8b31040a30b280fc0e3ebc71d1d85a6711591487a50e4ca1362aae564c6e332b97da65c0c07"};
@ -96,6 +96,7 @@ TEST_F(OUTPUTIDENT_TEST, PreRingctTransaction)
EXPECT_EQ(oi.get_tx_hash_str(), tx_hash_str);
EXPECT_EQ(oi.get_tx_prefix_hash_str(), tx_prefix_hash_str);
EXPECT_EQ(oi.get_tx_pub_key_str(), tx_pub_key_str);
EXPECT_EQ(oi.get_mixin_no(), 7);
EXPECT_EQ(oi.total_received, 10000000000000ull);
EXPECT_FALSE(oi.tx_is_coinbase);
EXPECT_FALSE(oi.is_rct);
@ -110,9 +111,69 @@ TEST_F(OUTPUTIDENT_TEST, PreRingctTransaction)
EXPECT_TRUE(out_info.rtc_outpk.empty());
EXPECT_TRUE(out_info.rtc_mask.empty());
EXPECT_TRUE(out_info.rtc_amount.empty());
}
TEST_F(OUTPUTIDENT_TEST, OutgingPreRingctTransaction)
{
// private testnet tx_hash 01e3d29a5b6b6e1999b9e7e48b9abe101bb93055b701b23d98513fb0646e7570
string tx_hex {"0100020280e08d84ddcb0107041e6508060e1df9733757fb1563579b3a0ecefb4063dc66a75ad6bae3d0916ab862789c31f6aa0280e08d84ddcb01075f030f17031713f43315e59fbd6bacb3aa1a868edc33a0232f5031f6c573d6d7b23e752b6beee10580d0b8e1981a02e04e4d7d674381d16bf50bdc1581f75f7b2df591b7a40d73efd8f5b3c4be2a828088aca3cf02025c3fb06591f216cab833bb6deb2e173e0a9a138addf527eaff80912b8f4ff47280f882ad1602779945c0e6cbbc7def201e170a38bb9822109ddc01f330a5b00d12eb26b6fd4880e0bcefa757024f05eb53b5ebd60e502abd5a2fcb74b057b523acccd191df8076e27083ef619180c0caf384a302022dffb5574d937c1add2cf88bd374af40d577c7cc1a22c3c8805afd49840a60962101945fd9057dd42ef52164368eab1a5f430268e029f83815897d4f1e08b0e00873dbf5b4127be86ba01f23f021a40f29e29110f780fa0be36041ecf00b6c7b480edb090ba58dea640ca19aa4921a56c4b6dcbf11897c53db427dfdbc2f3072480b6c02f409b45c5d2401a19d8cfb13d9124d858d2774d9945f448f19e1e243e004588368813689c1c1be4e1242c633b7a2eb4936546fda57c99dac7fab81e40d0512e39d04ce285f96ac80f6d91ee39157189d73e198fa6b397bd34d8685dbf20e3f869043b686c291f8d4401f673978c683841ec39c45ce06564ccf87c68a080ad17bcce3d7240cd8d57ecbb190fef27578679cdd39ea3c868ab65d6d1d2c20062e921ceea054f755ceef8cd24e54078f9a5bedea2ca59d90ad277bd250c90605b3dd832aa15a4eb01080210ade74638f1558e203c644aa608147c9f596ce3c03023e99f9ca5b3cae41cbd230bc20f2b87f1e06967c852115abc7e56566ddaf09b5774568375fa0f27b45d946cfb2859f1c7a3ad6b7a8e097e955a6ee77c6db0b083dbda85b317dcd77e4be29079420bf683a91ac94feb0f788d5e3dfe72bef028768d76f9ebffd4cb2fd4a314e293df51cb43f12091632e93f4f97fdab7ab60dd50611233fbb1048dccd6478184b914710c894d8116620fcfd09d73ef304c90af210a4724c9e8adb2c47396a67944d6fe827a9b06f7a3c3b6cd2946f328cc306e0a0d194443734cc90fb94ccdb74f8fa7a19690793ddc2b0b06e52d0d4d8530ac227d58a2936fbbf18bbbc2af03443a44ff2a844be527371fedc03c50cce200e8e2b4fdb501e2fba103aafc2487be7faaa83f3894bdcfad873a6697ad930500bc56e28139ef4c6d9b8ee06390b4bcb1b6bfcc6e3136be89e3bdccff50d104906d354569aedfd8b2a5cb62b8738218760a9ebbc5dff3de038ab2e0369f28e3d0d921d28b388acdf69988b5c77120de5317be614da7c774f1f815a7137625da90f0342ca5df7bbc8515066c3d8fa37f1d69727f69e540ff66578bd0e6adf73fa074ce25809e47f06edc9d8ac9f49b4f02b8fd48ef8b03d7a6e823c6e2fc105ee0384a5a3a4bfefc41cf7240847e50121233de0083bbd904903b9879ecdd5a3b701a2196e13e438cf3980ab0b85c5e4e3595c46f034cb393b1e291e3e288678c90e9aac0abe0723520d47e94584ff65dfec8d4d1b1d2c378f87347f429a2178b10ad530bfe406441d7b21c1f0ea04920c9715434b16e6f5c561eab4e8b31040a30b280fc0e3ebc71d1d85a6711591487a50e4ca1362aae564c6e332b97da65c0c07"};
TX_FROM_HEX(tx_hex);
ADDR_VIEWKEY_FROM_STRING(addr_9wq79, viewkey_9wq79, net_type);
// the ring members data from the above tx
string out_data_hex {"011673657269616c697a6174696f6e3a3a6172636869766500000000010e0001a03038356132323031303531636636353163373536353938323866326135306130323433383761353436663362646136663738666231653239343265323837343034313030303030303030303030303030303530303030303030303030303030303539613033613331353361393934643732333237653464393234323164336533323931623166613162323430646534346239326437663632656330313238663101a06336663964386232366536326533386162336131643537383138393639306537396466623434356361623531343139326364303137313864663735616437356135663030303030303030303030303030323330303030303030303030303030303539613033613331353361393934643732333237653464393234323164336533323931623166613162323430646534346239326437663632656330313238663101a03063383837666437343335346337363866323535346637313235626439393861356137333836303730663065653633353233346465313833373732636330383563343030303030303030303030303030383830303030303030303030303030303539613033613331353361393934643732333237653464393234323164336533323931623166613162323430646534346239326437663632656330313238663101a06232313662316464623833306334376132366163383537633636643036323034306632376334653539356539303434663464323535393034636333613966646663633030303030303030303030303030393030303030303030303030303030303539613033613331353361393934643732333237653464393234323164336533323931623166613162323430646534346239326437663632656330313238663101a06538333833643433343233303637343563616661356438356366363237316631323937653337643931646337373733303733356631643062623661303764366164323030303030303030303030303030393630303030303030303030303030303539613033613331353361393934643732333237653464393234323164336533323931623166613162323430646534346239326437663632656330313238663101a03931626630353836386333393830386435666263346136326537366266376330626362333361363166353635313165353432336136613661333135383136663565303030303030303030303030303030613430303030303030303030303030303539613033613331353361393934643732333237653464393234323164336533323931623166613162323430646534346239326437663632656330313238663101a06165633361303065323532633635366434396462383138343636643931383863613139363566663761623736343833633239336637363931313030643561373766643030303030303030303030303030633130303030303030303030303030303539613033613331353361393934643732333237653464393234323164336533323931623166613162323430646534346239326437663632656330313238663101a03235613131323238373636633764653765386163623266303565646166613430333637616436653730386535383962653332323634376339616632313233323239633030303030303030303030303030363030303030303030303030303030303539613033613331353361393934643732333237653464393234323164336533323931623166613162323430646534346239326437663632656330313238663101a03764336366376135333634613934303037663661626536666166343063666135376434663862373264643434633337623137356664396330623565393831363439663030303030303030303030303030363330303030303030303030303030303539613033613331353361393934643732333237653464393234323164336533323931623166613162323430646534346239326437663632656330313238663101a03662626531323431373435663066383737643662643463656236366136613934313963666637636264653934666630333666366266366661386237333433303861653030303030303030303030303030373230303030303030303030303030303539613033613331353361393934643732333237653464393234323164336533323931623166613162323430646534346239326437663632656330313238663101a03766633936643634636634623765663730363137333863356534343137343037383564616365323630643862336661396439353735333731316237303033353963353030303030303030303030303030383930303030303030303030303030303539613033613331353361393934643732333237653464393234323164336533323931623166613162323430646534346239326437663632656330313238663101a03835353961343830633565356434643530383265323936666234303032303561373266623337333232653462306364323434303933306165653337616333366263383030303030303030303030303030386330303030303030303030303030303539613033613331353361393934643732333237653464393234323164336533323931623166613162323430646534346239326437663632656330313238663101a03130353664323139613639306432363531613135393735353433343837613565313063373866643037326566363038343237336265373833313861653865373164663030303030303030303030303030613330303030303030303030303030303539613033613331353361393934643732333237653464393234323164336533323931623166613162323430646534346239326437663632656330313238663101a039336363636261613333656338616532383130346539363938646465316561653838323261363262393364313532323739373864393131313133313935656534663230303030303030303030303030306236303030303030303030303030303035396130336133313533613939346437323332376534643932343231643365333239316231666131623234306465343462393264376636326563303132386631"};
vector<cryptonote::output_data_t> outputs_to_return;
ASSERT_TRUE(xmreg::output_data_from_hex(out_data_hex,
outputs_to_return));
EXPECT_CALL(*cbs_mock, get_output_keys(_,_,_))
.WillRepeatedly(DoAll(SetArgReferee<2>(outputs_to_return),
Return(true)));
xmreg::OutputInputIdentification oi {&address, &viewkey, &tx,
tx_hash, is_tx_coinbase,
cbs_mock};
xmreg::TxSearch::known_outputs_t known_outputs;
oi.identify_inputs(known_outputs);
}
TEST_F(OUTPUTIDENT_TEST, IncomingPreRingctCoinbaseTransaction)
{
// private testnet tx_hash af9652cb7682d0b73d4ec588d3d17b5ebfe4773dbb69228fa716242a223fdec0
string tx_hex {"01f20201ffb60206a4fa8cd60302225670b42320e616c5c7b801a09b4414456a608808b3f712378d90c4a0bd38cd80f882ad1602137972ff6725442bae4f92d6640e2a8036b1c5652afdbe5439789f3c584ef40b80c0fc82aa0202befb33d6df13977c325dc548022a401c37c024dbd88e244bc6825418f8994df78090cad2c60e02e1b0c0394f0652e13f471b422eeb092acb245d5fc679759ca66667ce179f478c80e08d84ddcb010292ed8812901ad9fac78390e008141ebad73a30af51178915de6e1586239a121980c0caf384a302028134f3543a21a2a78dbd2629e47601accd4f703e0b402f07213cffae2d592ab2210169aa02bef903707e96e7591cf9117879ce456b27d44cd0b70ef6d90636f040bd"};
// the tx has six outputs for 10 xmr, so we check
// if we can identify it.
TX_FROM_HEX(tx_hex);
ADDR_VIEWKEY_FROM_STRING(addr_9wq79, viewkey_9wq79, net_type);
xmreg::OutputInputIdentification oi {&address, &viewkey, &tx,
tx_hash, is_tx_coinbase,
cbs_mock};
oi.identify_outputs();
EXPECT_EQ(oi.identified_outputs.size(), 6);
EXPECT_EQ(oi.identified_inputs.size(), 0);
EXPECT_EQ(oi.total_received, 17586985873700ull);
EXPECT_TRUE(oi.tx_is_coinbase);
EXPECT_EQ(pod_to_hex(oi.identified_outputs[0].pub_key),
"225670b42320e616c5c7b801a09b4414456a608808b3f712378d90c4a0bd38cd");
EXPECT_EQ(pod_to_hex(oi.identified_outputs.back().pub_key),
"8134f3543a21a2a78dbd2629e47601accd4f703e0b402f07213cffae2d592ab2");
}
class TXSEARCH_TEST : public ::testing::TestWithParam<network_type>
{
public:

Loading…
Cancel
Save