mirror of
https://codeberg.org/nahuhh/wownero
synced 2026-03-05 06:07:35 -05:00
Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d184dc2f61 | ||
|
|
f786416ec3 | ||
|
|
71409e79e8 | ||
|
|
2ac0b34f9e | ||
|
|
6614678eee | ||
|
|
05e0624b81 | ||
|
|
466140f55e | ||
|
|
b4a39273d7 | ||
|
|
2c74551746 | ||
|
|
209c850471 |
@@ -41,7 +41,7 @@ Dates are provided in the format YYYY-MM-DD.
|
||||
| 6969 | 2018-04-24 | Busty Brazzers | v0.2.0.0 | v0.2.0.0 | Bulletproofs, LWMA difficulty algorithm, ringsize >= 10, reduce unlock to 4
|
||||
| 53666 | 2018-10-06 | Cool Cage | v0.3.0.0 | v0.3.1.3 | Cryptonight variant 2, LWMA v2, ringsize = 22, MMS
|
||||
| 63469 | 2018-11-11 | Dank Doge | v0.4.0.0 | v0.4.0.0 | LWMA v4
|
||||
| 81769 | 2019-02-14 | Erotic EggplantEmoji | v0.5.0.0 | v0.5.0.0 | Cryptonight/wow, LWMA v1 with N=144, Updated Bulletproofs, Fee Per Byte, Auto-churn
|
||||
| 81769 | 2019-02-19 | Erotic EggplantEmoji | v0.5.0.0 | v0.5.0.2 | Cryptonight/wow, LWMA v1 with N=144, Updated Bulletproofs, Fee Per Byte, Auto-churn
|
||||
|
||||
X's indicate that these details have not been determined as of commit date.
|
||||
|
||||
@@ -65,8 +65,8 @@ Packages are available for
|
||||
|
||||
* Ubuntu 18.04/Ubuntu 16.04/Debian 9/Debian 8 (amd64)
|
||||
|
||||
add-apt-repository "deb http://ppa.wownero.com/ bionic main"
|
||||
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B09DF0E4B0C56A94
|
||||
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B09DF0E4B0C56A94
|
||||
sudo add-apt-repository "deb http://ppa.wownero.com/ bionic main"
|
||||
sudo apt-get update
|
||||
sudo apt-get install wownero
|
||||
|
||||
|
||||
Binary file not shown.
@@ -209,6 +209,10 @@ namespace cryptonote
|
||||
ADD_CHECKPOINT(69800, "5c65428a664738bc083d1ccd6a1b5ff4305f98e7633f44033816801429b33ce1");
|
||||
ADD_CHECKPOINT(75000, "e93492f79b5344e7edb31537ee65b3e908bf71110cff8188c0c62fefc015d342");
|
||||
ADD_CHECKPOINT(79500, "9bbfd6f2257ce9084de30179944b7695c9b918c9c03a8a63306ab6c5828ff857");
|
||||
ADD_CHECKPOINT(80920, "8fca818344f97ea3912557cbd8be659cf6a5bc1203514c27338e234251d72dfb");
|
||||
ADD_CHECKPOINT(81769, "41db9fef8d0ccfa78b570ee9525d4f55de77b510c3ae4b08a1d51b9aec9ade1d"); //Hard fork to v11
|
||||
ADD_CHECKPOINT(82069, "fdea800d23d0b2eea19dec8af31e453e883e8315c97e25c8bb3e88ca164f8369"); //Hard fork to v12
|
||||
ADD_CHECKPOINT(85000, "31d62ab75470b15aedee6674b78767b53f10951786e991c26035743c267b247a");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -4513,7 +4513,7 @@ void Blockchain::cancel()
|
||||
}
|
||||
|
||||
#if defined(PER_BLOCK_CHECKPOINT)
|
||||
static const char expected_block_hashes_hash[] = "014e41f3f32e50d385b833bf6ad5456dfb066198144a7d8e55de06fa042a952c";
|
||||
static const char expected_block_hashes_hash[] = "57465b2e1d648df696dc02b4aeddc357493678e9e5b145226fd4af1aceb02165";
|
||||
void Blockchain::load_compiled_in_block_hashes(const GetCheckpointsCallback& get_checkpoints)
|
||||
{
|
||||
if (get_checkpoints == nullptr || !m_fast_sync)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#define DEF_MONERO_VERSION_TAG "@VERSIONTAG@"
|
||||
#define DEF_MONERO_VERSION "0.5.0.0"
|
||||
#define DEF_MONERO_VERSION "0.5.0.2"
|
||||
#define DEF_MONERO_RELEASE_NAME "Erotic EggplantEmoji"
|
||||
#define DEF_MONERO_VERSION_FULL DEF_MONERO_VERSION "-" DEF_MONERO_VERSION_TAG
|
||||
|
||||
|
||||
@@ -1391,7 +1391,7 @@ static uint64_t decodeRct(const rct::rctSig & rv, const crypto::key_derivation &
|
||||
}
|
||||
}
|
||||
//----------------------------------------------------------------------------------------------------
|
||||
void wallet2::scan_output(const cryptonote::transaction &tx, const crypto::public_key &tx_pub_key, size_t i, tx_scan_info_t &tx_scan_info, int &num_vouts_received, std::unordered_map<cryptonote::subaddress_index, uint64_t> &tx_money_got_in_outs, std::vector<size_t> &outs, bool pool)
|
||||
void wallet2::scan_output(const cryptonote::transaction &tx, bool miner_tx, const crypto::public_key &tx_pub_key, size_t i, tx_scan_info_t &tx_scan_info, int &num_vouts_received, std::unordered_map<cryptonote::subaddress_index, uint64_t> &tx_money_got_in_outs, std::vector<size_t> &outs, bool pool)
|
||||
{
|
||||
THROW_WALLET_EXCEPTION_IF(i >= tx.vout.size(), error::wallet_internal_error, "Invalid vout index");
|
||||
|
||||
@@ -1424,11 +1424,14 @@ void wallet2::scan_output(const cryptonote::transaction &tx, const crypto::publi
|
||||
error::wallet_internal_error, "key_image generated ephemeral public key not matched with output_key");
|
||||
}
|
||||
|
||||
THROW_WALLET_EXCEPTION_IF(std::find(outs.begin(), outs.end(), i) != outs.end(), error::wallet_internal_error, "Same output cannot be added twice");
|
||||
outs.push_back(i);
|
||||
if (tx_scan_info.money_transfered == 0)
|
||||
if (tx_scan_info.money_transfered == 0 && !miner_tx)
|
||||
{
|
||||
tx_scan_info.money_transfered = tools::decodeRct(tx.rct_signatures, tx_scan_info.received->derivation, i, tx_scan_info.mask, m_account.get_device());
|
||||
}
|
||||
THROW_WALLET_EXCEPTION_IF(tx_money_got_in_outs[tx_scan_info.received->index] >= std::numeric_limits<uint64_t>::max() - tx_scan_info.money_transfered,
|
||||
error::wallet_internal_error, "Overflow in received amounts");
|
||||
tx_money_got_in_outs[tx_scan_info.received->index] += tx_scan_info.money_transfered;
|
||||
tx_scan_info.amount = tx_scan_info.money_transfered;
|
||||
++num_vouts_received;
|
||||
@@ -1606,7 +1609,7 @@ void wallet2::process_new_transaction(const crypto::hash &txid, const cryptonote
|
||||
if (tx_scan_info[i].received)
|
||||
{
|
||||
hwdev.conceal_derivation(tx_scan_info[i].received->derivation, tx_pub_key, additional_tx_pub_keys.data, derivation, additional_derivations);
|
||||
scan_output(tx, tx_pub_key, i, tx_scan_info[i], num_vouts_received, tx_money_got_in_outs, outs, pool);
|
||||
scan_output(tx, miner_tx, tx_pub_key, i, tx_scan_info[i], num_vouts_received, tx_money_got_in_outs, outs, pool);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1629,7 +1632,7 @@ void wallet2::process_new_transaction(const crypto::hash &txid, const cryptonote
|
||||
if (tx_scan_info[i].received)
|
||||
{
|
||||
hwdev.conceal_derivation(tx_scan_info[i].received->derivation, tx_pub_key, additional_tx_pub_keys.data, derivation, additional_derivations);
|
||||
scan_output(tx, tx_pub_key, i, tx_scan_info[i], num_vouts_received, tx_money_got_in_outs, outs, pool);
|
||||
scan_output(tx, miner_tx, tx_pub_key, i, tx_scan_info[i], num_vouts_received, tx_money_got_in_outs, outs, pool);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1645,7 +1648,7 @@ void wallet2::process_new_transaction(const crypto::hash &txid, const cryptonote
|
||||
boost::unique_lock<hw::device> hwdev_lock (hwdev);
|
||||
hwdev.set_mode(hw::device::NONE);
|
||||
hwdev.conceal_derivation(tx_scan_info[i].received->derivation, tx_pub_key, additional_tx_pub_keys.data, derivation, additional_derivations);
|
||||
scan_output(tx, tx_pub_key, i, tx_scan_info[i], num_vouts_received, tx_money_got_in_outs, outs, pool);
|
||||
scan_output(tx, miner_tx, tx_pub_key, i, tx_scan_info[i], num_vouts_received, tx_money_got_in_outs, outs, pool);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11262,6 +11265,7 @@ uint64_t wallet2::import_key_images(const std::vector<std::pair<crypto::key_imag
|
||||
THROW_WALLET_EXCEPTION_IF(!r, error::wallet_internal_error, "Failed to generate key derivation");
|
||||
}
|
||||
size_t output_index = 0;
|
||||
bool miner_tx = cryptonote::is_coinbase(spent_tx);
|
||||
for (const cryptonote::tx_out& out : spent_tx.vout)
|
||||
{
|
||||
tx_scan_info_t tx_scan_info;
|
||||
@@ -11269,11 +11273,13 @@ uint64_t wallet2::import_key_images(const std::vector<std::pair<crypto::key_imag
|
||||
THROW_WALLET_EXCEPTION_IF(tx_scan_info.error, error::wallet_internal_error, "check_acc_out_precomp failed");
|
||||
if (tx_scan_info.received)
|
||||
{
|
||||
if (tx_scan_info.money_transfered == 0)
|
||||
if (tx_scan_info.money_transfered == 0 && !miner_tx)
|
||||
{
|
||||
rct::key mask;
|
||||
tx_scan_info.money_transfered = tools::decodeRct(spent_tx.rct_signatures, tx_scan_info.received->derivation, output_index, mask, hwdev);
|
||||
}
|
||||
THROW_WALLET_EXCEPTION_IF(tx_money_got_in_outs >= std::numeric_limits<uint64_t>::max() - tx_scan_info.money_transfered,
|
||||
error::wallet_internal_error, "Overflow in received amounts");
|
||||
tx_money_got_in_outs += tx_scan_info.money_transfered;
|
||||
}
|
||||
++output_index;
|
||||
|
||||
@@ -1294,7 +1294,7 @@ namespace tools
|
||||
bool tx_add_fake_output(std::vector<std::vector<tools::wallet2::get_outs_entry>> &outs, uint64_t global_index, const crypto::public_key& tx_public_key, const rct::key& mask, uint64_t real_index, bool unlocked) const;
|
||||
bool should_pick_a_second_output(bool use_rct, size_t n_transfers, const std::vector<size_t> &unused_transfers_indices, const std::vector<size_t> &unused_dust_indices) const;
|
||||
std::vector<size_t> get_only_rct(const std::vector<size_t> &unused_dust_indices, const std::vector<size_t> &unused_transfers_indices) const;
|
||||
void scan_output(const cryptonote::transaction &tx, const crypto::public_key &tx_pub_key, size_t i, tx_scan_info_t &tx_scan_info, int &num_vouts_received, std::unordered_map<cryptonote::subaddress_index, uint64_t> &tx_money_got_in_outs, std::vector<size_t> &outs, bool pool);
|
||||
void scan_output(const cryptonote::transaction &tx, bool miner_tx, const crypto::public_key &tx_pub_key, size_t i, tx_scan_info_t &tx_scan_info, int &num_vouts_received, std::unordered_map<cryptonote::subaddress_index, uint64_t> &tx_money_got_in_outs, std::vector<size_t> &outs, bool pool);
|
||||
void trim_hashchain();
|
||||
crypto::key_image get_multisig_composite_key_image(size_t n) const;
|
||||
rct::multisig_kLRki get_multisig_composite_kLRki(size_t n, const std::unordered_set<crypto::public_key> &ignore_set, std::unordered_set<rct::key> &used_L, std::unordered_set<rct::key> &new_used_L) const;
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
To run all tests, run:
|
||||
|
||||
```
|
||||
cd /path/to/monero
|
||||
cd /path/to/wownero
|
||||
make [-jn] debug-test # where n is number of compiler processes
|
||||
```
|
||||
|
||||
@@ -11,11 +11,11 @@ To test a release build, replace `debug-test` with `release-test` in the previou
|
||||
|
||||
# Core tests
|
||||
|
||||
Core tests take longer than any other Monero tests, due to the high amount of computational work involved in validating core components.
|
||||
Core tests take longer than any other Wownero tests, due to the high amount of computational work involved in validating core components.
|
||||
|
||||
Tests are located in `tests/core_tests/`, and follow a straightforward naming convention. Most cases cover core functionality (`block_reward.cpp`, `chaingen.cpp`, `rct.cpp`, etc.), while some cover basic security tests (`double_spend.cpp` & `integer_overflow.cpp`).
|
||||
|
||||
To run only Monero's core tests (after building):
|
||||
To run only Wownero's core tests (after building):
|
||||
|
||||
```
|
||||
cd build/debug/tests/core
|
||||
@@ -34,7 +34,7 @@ Crypto tests are located under the `tests/crypto` directory.
|
||||
|
||||
Tests correspond to components under `src/crypto/`. A quick comparison reveals the pattern, and new tests should continue the naming convention.
|
||||
|
||||
To run only Monero's crypto tests (after building):
|
||||
To run only Wownero's crypto tests (after building):
|
||||
|
||||
```
|
||||
cd build/debug/tests/crypto
|
||||
@@ -54,7 +54,7 @@ Functional tests are located under the `tests/functional` directory.
|
||||
|
||||
First, run a regtest daemon in the offline mode and with a fixed difficulty:
|
||||
```
|
||||
monerod --regtest --offline --fixed-difficulty 1
|
||||
wownerod --regtest --offline --fixed-difficulty 1
|
||||
```
|
||||
Alternatively, you can run multiple daemons and let them connect with each other by using `--add-exclusive-node`. In this case, make sure that the same fixed difficulty is given to all the daemons.
|
||||
|
||||
@@ -75,7 +75,7 @@ An additional helper utility is provided `contrib/fuzz_testing/fuzz.sh`. AFL mus
|
||||
|
||||
Hash tests exist under `tests/hash`, and include a set of target hashes in text files.
|
||||
|
||||
To run only Monero's hash tests (after building):
|
||||
To run only Wownero's hash tests (after building):
|
||||
|
||||
```
|
||||
cd build/debug/tests/hash
|
||||
@@ -96,7 +96,7 @@ To run the same tests on a release build, replace `debug` with `release`.
|
||||
|
||||
Performance tests are located in `tests/performance_tests`, and test features for performance metrics on the host machine.
|
||||
|
||||
To run only Monero's performance tests (after building):
|
||||
To run only Wownero's performance tests (after building):
|
||||
|
||||
```
|
||||
cd build/debug/tests/performance_tests
|
||||
@@ -111,7 +111,7 @@ To run the same tests on a release build, replace `debug` with `release`.
|
||||
|
||||
Unit tests are defined under the `tests/unit_tests` directory. Independent components are tested individually to ensure they work properly on their own.
|
||||
|
||||
To run only Monero's unit tests (after building):
|
||||
To run only Wownero's unit tests (after building):
|
||||
|
||||
```
|
||||
cd build/debug/tests/unit_tests
|
||||
|
||||
Reference in New Issue
Block a user