From 340feedee22f8407884b1a98ae37219541ab0eb2 Mon Sep 17 00:00:00 2001 From: moneromooo-monero Date: Tue, 25 Jul 2017 18:42:55 +0100 Subject: [PATCH] core: randomly shuffle outputs They used to be sorted by amount, which was fine before rct, but is now suboptimal, since amounts are not known anymore. In particular, it would give a recipient knowledge of whether change was higher or lower than the amount received. --- src/cryptonote_core/cryptonote_tx_utils.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cryptonote_core/cryptonote_tx_utils.cpp b/src/cryptonote_core/cryptonote_tx_utils.cpp index 26d5fb76..abb4b31e 100644 --- a/src/cryptonote_core/cryptonote_tx_utils.cpp +++ b/src/cryptonote_core/cryptonote_tx_utils.cpp @@ -265,7 +265,7 @@ namespace cryptonote // "Shuffle" outs std::vector shuffled_dsts(destinations); - std::sort(shuffled_dsts.begin(), shuffled_dsts.end(), [](const tx_destination_entry& de1, const tx_destination_entry& de2) { return de1.amount < de2.amount; } ); + std::random_shuffle(shuffled_dsts.begin(), shuffled_dsts.end(), [](int i) { return crypto::rand() % i; }); uint64_t summary_outs_money = 0; //fill outputs