aboutsummaryrefslogtreecommitdiff
path: root/tests (follow)
AgeCommit message (Collapse)AuthorFilesLines
2016-08-29Prevent core_tests from building under TravisJacob Torrey1-1/+3
2016-08-28Merge pull request #992Riccardo Spagni1-2/+10
f1ba51c remove -Wall from coverage arguments (Jacob Torrey) f017fec Build the core_tests under Travis (Jacob Torrey) e0bf02a Streamline release-test target (Jacob Torrey) baf4574 Update badge to point to monero's coveralls (Jacob Torrey) d1dc2c3 Re-enable Travis IRC notifications (Jacob Torrey) 9c71b9e Silence coveralls to prevent 4MB logs (Jacob Torrey) 65041fb Disabled libwallet_api_test until Issue #895 resolved (Jacob Torrey) a450138 Disable core_tests on Travis-CI (Jacob Torrey) 650afac Added -j2 to Makefile and clean up matrix (Jacob Torrey) 256dec0 Streamline test building target (Jacob Torrey) 14915c2 Ensure tests are built prior to testing (Jacob Torrey) fe4992b Added coverage g++ commands (Jacob Torrey) 497b24f Update .travis.yml (Jacob Torrey) 678467d Update for the current make environment (Jacob Torrey) abcac26 Fixed tab/space issue on YAML (Jacob Torrey) 7351a11 Converted to a build matrix for testing and release (Jacob Torrey) 342dbfb Prep for coveralls (Jacob Torrey)
2016-08-28tests: hard fork list must end with a 0moneromooo-monero3-4/+4
2016-08-28New "Halfway RingCT" outputs for coinbase transactionsmoneromooo-monero10-11/+28
When RingCT is enabled, outputs from coinbase transactions are created as a single output, and stored as RingCT output, with a fake mask. Their amount is not hidden on the blockchain itself, but they are then able to be used as fake inputs in a RingCT ring. Since the output amounts are hidden, their "dustiness" is not an obstacle anymore to mixing, and this makes the coinbase transactions a lot smaller, as well as helping the TXO set to grow more slowly. Also add a new "Null" type of rct signature, which decreases the size required when no signatures are to be stored, as in a coinbase tx.
2016-08-28rct amount key modified as per luigi1111's recommendationsmoneromooo-monero2-16/+17
This allows the key to be not the same for two outputs sent to the same address (eg, if you pay yourself, and also get change back). Also remove the key amounts lists and return parameters since we don't actually generate random ones, so we don't need to save them as we can recalculate them when needed if we have the correct keys.
2016-08-28rct: rework v2 txes into prunable and non prunable datamoneromooo-monero2-39/+41
Nothing is pruned, but this allows easier changes later.
2016-08-28rct: rework the verification preparation processmoneromooo-monero1-4/+4
The whole rct data apart from the MLSAGs is now included in the signed message, to avoid malleability issues. Instead of passing the data that's not serialized as extra parameters to the verification API, the transaction is modified to fill all that information. This means the transaction can not be const anymore, but it cleaner in other ways.
2016-08-28rct: change the simple flag to a typemoneromooo-monero2-2/+2
for future expansion
2016-08-28rct: avoid the need for the last II elementShen Noether1-4/+2
This element is used in the generation of the MLSAG, but isn't needed in verification. Also misc changes in the cryptonote code to match, by mooo.
2016-08-28wallet: do not store signatures in the wallet cachemoneromooo-monero2-1/+6
Saves some substantial space. Also avoid calculating tx hashes we don't need.
2016-08-28rct: do not serialize senderPk - it is not used anymoremoneromooo-monero1-1/+3
2016-08-28core_tests: fix a couple pre-rct tests using rctmoneromooo-monero1-2/+2
2016-08-28change fork settings to allow pre-rct txes for one more fork cyclemoneromooo-monero2-9/+9
2016-08-28rct: make the amount key derivable by a third party with the tx keymoneromooo-monero3-20/+35
Scheme design from luigi1114.
2016-08-28rct: do not serialize public keys in outPkmoneromooo-monero1-1/+2
They can be reconstructed from vout
2016-08-28tests: add tests for wallet output selectionmoneromooo-monero2-1/+100
2016-08-28port get_tx_key/check_tx_key to rctmoneromooo-monero1-2/+4
2016-08-28tests: add basic tests for simple rct apimoneromooo-monero1-44/+378
2016-08-28integrate simple rct apimoneromooo-monero3-7/+65
2016-08-28move the rct commitments to the output_amounts databasemoneromooo-monero1-5/+1
Since these are needed at the same time as the output pubkeys, this is a whole lot faster, and takes less space. Only outputs of 0 amount store the commitment. When reading other outputs, a fake commitment is regenerated on the fly. This avoids having to rewrite the database to add space for fake commitments for existing outputs. This code relies on two things: - LMDB must support fixed size records per key, rather than per database (ie, all records on key 0 are the same size, all records for non 0 keys are same size, but records from key 0 and non 0 keys do have different sizes). - the commitment must be directly after the rest of the data in outkey and output_data_t.
2016-08-28rct: add the tx prefix hash into the MLSAGmoneromooo-monero5-6/+39
to protect the non-signatures parts of the tx from tampering.
2016-08-28ringct: do not serialize what can be reconstructedmoneromooo-monero2-21/+13
The mixRing (output keys and commitments) and II fields (key images) can be reconstructed from vin data. This saves some modest amount of space in the tx.
2016-08-28Add rct core testsmoneromooo-monero7-10/+764
2016-08-28tests: test for ringct rctSig data sizesmoneromooo-monero1-3/+44
ie, more data or less data than expected in various fields
2016-08-28add rct to the protocolmoneromooo-monero8-35/+26
It is not yet constrained to a fork, so don't use on the real network or you'll be orphaned or rejected.
2016-08-28make rct tx serialization workmoneromooo-monero1-0/+201
It may be suboptimal, but it's a pain to have to rebuild everything when some of this changes. Also, no clue why there seems to be two different code paths for serializing a tx...
2016-08-28ringct: allow no outputs, and add tests for this and feesmoneromooo-monero1-31/+75
2016-08-28ringct: txn fee stuffShen Noether1-0/+61
2016-08-28blockchain_db: add functions for adding/removing/getting rct commitmentsmoneromooo-monero1-0/+4
2016-08-28tests: new ringct test for checking H2 valuesShen Noether1-0/+11
Ported from Shen's RingCT repo
2016-08-28tests: zero inputs/outputs are in fact supposed to be acceptedmoneromooo-monero1-14/+14
2016-08-28ringct: add a test for prooveRange being non deterministicmoneromooo-monero1-0/+9
2016-08-28tests: more ringct range proof testsmoneromooo-monero1-0/+245
2016-08-28remove original Cryptonote blockchain_storage blockchain formatmoneromooo-monero2-3/+1
2016-08-28tests: add some more ringct building block testsmoneromooo-monero1-1/+50
2016-08-28tests: add Shen Noether's basic ringct testsmoneromooo-monero2-1/+209
2016-08-27Build the core_tests under TravisJacob Torrey1-4/+1
2016-08-26Disabled libwallet_api_test until Issue #895 resolvedJacob Torrey1-1/+3
Signed-off-by: Jacob Torrey <discipleofranok@gmail.com>
2016-08-26Disable core_tests on Travis-CIJacob Torrey1-2/+11
Signed-off-by: Jacob Torrey <discipleofranok@gmail.com>
2016-08-23libwallet_api: tests: checking for result while opening walletIlya Kitaev1-4/+6
2016-08-23libwallet_api: Wallet::amountFromString fixedIlya Kitaev1-0/+23
2016-08-22libwallet_api: tests: removed logged passwordsIlya Kitaev1-2/+2
2016-08-22libwallet_api: do not store wallet on close if status is not okIlya Kitaev1-2/+67
2016-08-11Fake outs set is now decided by the walletmoneromooo-monero1-3/+3
This plugs a privacy leak from the wallet to the daemon, as the daemon could previously see what input is included as a transaction input, which the daemon hadn't previously supplied. Now, the wallet requests a particular set of outputs, including the real one. This can result in transactions that can't be accepted if the wallet happens to select too many outputs with non standard unlock times. The daemon could know this and select another output, but the wallet is blind to it. It's currently very unlikely since I don't think anything uses non default unlock times. The wallet requests more outputs than necessary so it can use spares if any of the returns outputs are still locked. If there are not enough spares to reach the desired mixin, the transaction will fail.
2016-07-26tests: fix a bitflag test typomoneromooo-monero1-1/+1
2016-07-26unit_tests: check adding checkpoints succeededmoneromooo-monero1-3/+3
2016-07-23Merge pull request #915Riccardo Spagni2-45/+199
d7597c5 refreshing wallet even if error happened (Ilya Kitaev) 6d32a3d wallet_api: async init, Wallet::connected status, log level (Ilya Kitaev) 193d251 libwallet_api cmake: conditionally creating libwallet_merged2 only for STATIC build (Ilya Kitaev) 10c06dd wallet_api: segfault on refresh fixed (Ilya Kitaev) 9d2cb4f WalletListener functionality (Ilya Kitaev) d27b883 hack to successfull linking for MSYS2 (Ilya Kitaev) 083380c Transaction fee multiplier aka priority integraged (Ilya Kitaev) 00ed12b Wallet::paymentIdValid (Ilya Kitaev)
2016-07-22Tests: fix signed/unsigned comparison in hash-targetanonimal1-1/+1
* References #886
2016-07-18wallet_api: async init, Wallet::connected status, log levelIlya Kitaev1-20/+81
2016-07-18WalletListener functionalityIlya Kitaev2-39/+90
2016-07-18Transaction fee multiplier aka priority integragedIlya Kitaev1-0/+42
2016-07-13remove hf_starting_height dbmoneromooo-monero1-31/+1
It's not really needed, it used to be an optimization for when that code was not using the db and needed to recalculate things fast on startup.
2016-06-23Merge branch 'master' of https://github.com/mbg033/bitmoneroIlya Kitaev1-11/+6
2016-06-23Wallet: payment id and integrated addressIlya Kitaev1-3/+76
2016-06-23Wallet::createTransaction: added mixin_count paramIlya Kitaev1-1/+40
2016-06-23double/string to monero integer convertion methodsIlya Kitaev1-2/+14
2016-06-23wallet::default_mixin exposed to public interface asIlya Kitaev1-0/+2
Wallet::setDefaultMixin, Wallet::defaultMixin; wallet::create_transaction_2 used in Wallet::createTransaction
2016-06-23Wallet::filename, Wallet::keysFilename, tests for move walletIlya Kitaev1-0/+29
2016-06-23Wallet API : WalletManager::findWallets() addedIlya Kitaev4-15/+29
2016-06-23scripts for faster test wallets generationIlya Kitaev11-19/+120
2016-06-23regenerated test wallets, basic functions got brokenIlya Kitaev1-17/+20
2016-06-23WalletListener::moneyReceived testIlya Kitaev1-12/+38
2016-06-23WalletListener::moneySpent testIlya Kitaev1-53/+154
2016-06-23TransactionHistory continuedIlya Kitaev1-11/+55
2016-06-23Wallet API : transaction history in progressIlya Kitaev1-0/+28
2016-06-23Wallet::createTransaction API introducedIlya Kitaev1-3/+11
Transaction API continued TODOs for Transaction/Transfer interface
2016-06-23Wallet::transfer in progressIlya Kitaev1-0/+16
2016-06-23Wallet::refresh + testsIlya Kitaev1-0/+12
2016-06-23testnet option, Wallet::balance(), Wallet::unlockedBalance()Ilya Kitaev1-11/+12
2016-06-23- testnet option added to api;Ilya Kitaev1-24/+44
2016-06-23wallet2::store() implemented within wallet2::store_toIlya Kitaev1-0/+25
2016-06-20Wallet::createTransaction: added mixin_count paramIlya Kitaev1-1/+40
2016-06-16double/string to monero integer convertion methodsIlya Kitaev1-2/+14
2016-06-10wallet::default_mixin exposed to public interface asIlya Kitaev1-0/+2
Wallet::setDefaultMixin, Wallet::defaultMixin; wallet::create_transaction_2 used in Wallet::createTransaction
2016-06-10Wallet::filename, Wallet::keysFilename, tests for move walletIlya Kitaev1-0/+29
2016-06-03Wallet API : WalletManager::findWallets() addedIlya Kitaev4-15/+29
2016-06-01scripts for faster test wallets generationIlya Kitaev11-19/+120
2016-05-27regenerated test wallets, basic functions got brokenIlya Kitaev1-17/+20
2016-05-27Merge remote-tracking branch 'upstream/master'Ilya Kitaev8-29/+91
2016-05-18fix: error: -Werror=misleading-indentationmoneroexample1-1/+3
Compilation of bitmonero on Arch with gcc 6.1 results in the following error: /home/mwo/bitmonero/tests/unit_tests/hardfork.cpp: In member function ‘virtual void TestDB::set_hard_fork_version(uint64_t, uint8_t)’: /home/mwo/bitmonero/tests/unit_tests/hardfork.cpp:132:5: error: this ‘if’ clause does not guard... [-Werror=misleading-indentation] if (versions.size() <= height) versions.resize(height+1); versions[height] = version; This can be fixed by simply unfolding this line into three lines.
2016-05-17Merge pull request #831Riccardo Spagni7-25/+86
9ef8c7b tests: fix tests broken by the removal of the block reward accumulation loop (moneromooo-monero) a6e717e cn_deserialize: deserialize tx_extra too (moneromooo-monero) 3eff37f unit_tests: add a write_varint/read_varint test (moneromooo-monero) 7a66387 unit_tests: fix UNBOUND_LIBRARIES/UNBOUND_LIBRARY typo (moneromooo-monero) d6bce4b core: move tx_extra parsing errors to log level 1 (moneromooo-monero)
2016-05-17WalletListener::moneyReceived testIlya Kitaev1-12/+38
2016-05-16WalletListener::moneySpent testIlya Kitaev1-53/+154
2016-05-12Merge remote-tracking branch 'upstream/master'Ilya Kitaev1-1/+2
2016-05-01tests: fix tests broken by the removal of the block reward accumulation loopmoneromooo-monero5-23/+17
The tests for rejection of unmixable outputs in v2 are commented out, as there are no unmixable outputs created anymore. This should be restored at some point.
2016-05-01unit_tests: add a write_varint/read_varint testmoneromooo-monero2-1/+68
2016-05-01unit_tests: fix UNBOUND_LIBRARIES/UNBOUND_LIBRARY typomoneromooo-monero1-1/+1
2016-04-29Merge branch 'performance' of https://github.com/LMDB/bitmoneroRiccardo Spagni1-4/+5
2016-04-29TransactionHistory continuedIlya Kitaev1-11/+55
2016-04-26Merge remote-tracking branch 'upstream/master' into developIlya Kitaev4-4/+61
2016-04-22Wallet API: transaction history in progressIlya Kitaev1-4/+4
2016-04-22Wallet API : transaction history in progressIlya Kitaev1-0/+28
2016-04-17tests: fix compile failure on wallet2::transfermoneromooo-monero1-1/+2
2016-04-14Merge pull request #786Riccardo Spagni1-0/+4
5092e45 tests: unbound API is only accessible in static builds (moneromooo-monero)
2016-04-14Merge pull request #783Riccardo Spagni1-1/+1
48d0747 wallet: better output selection for transfer/transfer_new (moneromooo-monero)
2016-04-12TODOs for Transaction/Transfer interfaceIlya Kitaev1-4/+4
2016-04-06Transaction API continuedIlya Kitaev1-0/+2
2016-04-05Merge branch 'performance' into masterHoward Chu1-4/+5
2016-04-05CleanupHoward Chu1-4/+5
drop obsolete remove_output() fix get_output_key(global), fix crash in blockchain_dump
2016-04-05Wallet::createTransaction API introducedIlya Kitaev1-2/+8
2016-04-04Wallet::transfer() continuedIlya Kitaev1-0/+16
2016-04-02tests: fix build with older GCCJavier Smooth1-2/+4
2016-04-02tests: unbound API is only accessible in static buildsmoneromooo-monero1-0/+4
2016-04-02wallet: better output selection for transfer/transfer_newmoneromooo-monero1-1/+1
This now requests the set of outputs that can be mixed first, to avoid trying non dust but unmixable outputs, which we know will fail.
2016-03-31Wallet::refresh + testsIlya Kitaev1-0/+12
2016-03-31testnet option, Wallet::balance(), Wallet::unlockedBalance()Ilya Kitaev1-11/+12
2016-03-31Merge remote-tracking branch 'upstream/master'Ilya Kitaev3-2/+3
2016-03-29tests: add test for needed OpenSSL algorithms in unboundmoneromooo-monero2-1/+52
These can be compiled out of libunbound, leading to failure to check DNSSEC validity.
2016-03-26tests: obligatory hardfork unit build fix after interface changemoneromooo-monero1-1/+1
2016-03-26New RPC and daemon command to get output histogrammoneromooo-monero1-0/+1
This is a list of existing output amounts along with the number of outputs of that amount in the blockchain. The daemon command takes: - no parameters: all outputs with at least 3 instances - one parameter: all outputs with at least that many instances - two parameters: all outputs within that many instances The default starts at 3 to avoid massive spamming of all dust outputs in the blockchain, and is the current minimum mixin requirement. An optional vector of amounts may be passed, to request histogram only for those outputs.
2016-03-25- testnet option added to api;Ilya Kitaev1-24/+44
2016-03-21core_tests: fix compile failure with GCC 4.8.4moneromooo-monero1-1/+1
Reported and tested by smooth
2016-03-21wallet2::store() implemented within wallet2::store_toIlya Kitaev1-0/+25
2016-03-21Revert "Print stack trace upon exceptions"moneromooo-monero10-17/+13
Ain't nobody got time for link/cmake skullduggery. This reverts commit fff238ec94ac6d45fc18c315d7bc590ddfaad63d.
2016-03-19Print stack trace upon exceptionsmoneromooo-monero10-13/+17
Useful for debugging users' logs
2016-03-17tests: enable core tests againmoneromooo-monero1-1/+1
They should not have been disabled in the first place
2016-03-16fixed "undefined reference" for boost::system libraryIlya Kitaev1-1/+2
2016-03-16Wallet::store_to(path, password) implemented;Ilya Kitaev1-1/+64
2016-03-16Wallet::address implementedIlya Kitaev1-0/+8
2016-03-16WalletManager::recoveryWallet implementedIlya Kitaev1-5/+14
2016-03-16Wallet::setPassword() method for wallet2_apiIlya Kitaev1-4/+22
2016-03-16changes in wallet2_api + implemented WalletManager::openWalletIlya Kitaev1-5/+25
2016-03-16get_seed() included to interfaceIlya Kitaev1-9/+34
2016-03-16tests for wallet2_apiIlya Kitaev3-1/+130
2016-03-05unit_tests: fix hard fork unit test compilationwarptangent1-1/+1
Match changed BlockchainDB function declaration.
2016-02-29Merge pull request #689Riccardo Spagni1-1/+1
5ab33ca unit_tests: update test openalias address (moneromooo-monero)
2016-02-23unit_tests: update test openalias addressmoneromooo-monero1-1/+1
It was recently changed
2016-02-22move g_test_dbg_lock_sleep from a global to a function level staticmoneromooo-monero7-14/+0
This avoids the need to define that variable in every program which uses epee.
2016-02-17Merge pull request #659Riccardo Spagni1-1/+1
d56b2e5 core_tests: fix a compile problem with CLANG (moneromooo-monero)
2016-02-13core_tests: fix a compile problem with CLANGmoneromooo-monero1-1/+1
It doesn't like const objects from classes that do not have a user defined ctor, apparently. Reported by othe.
2016-02-13Add the new test filesmoneromooo-monero2-0/+295
Forgot to add them before commit
2016-02-08unit_tests: fix blockchain unit test after hard fork import fixmoneromooo-monero1-1/+10
2016-02-08core_tests: add tests for hard fork behaviors (MRL-0004)moneromooo-monero4-7/+22
We also replace the --fakechain option with an optional structure containing details about configuration for the core/blockchain, for test purposes. This seems more future friendly.
2016-02-08core_tests: allow setting miner tx max_outs when creating a blockmoneromooo-monero2-4/+6
2016-02-08unit_tests: fix hard fork unit test compilationmoneromooo-monero1-0/+4
2016-02-08Merge pull request #641Riccardo Spagni1-13/+9
7658ac0 blockchain: revert handle_get_objects adding block id on tx not found (moneromooo-monero) 3a0f4d8 berkeleydb: fix delete/free mismatch (moneromooo-monero) 1642be2 minor bugfixes and refactoring (Thomas Winget) 098dcf2 unit_tests: fix mnemonics unit test testing invalid seeds (moneromooo-monero)
2016-02-08Merge pull request #639Riccardo Spagni1-30/+68
119eb10 unit_tests: fix hard fork unit tests and add a test for major too (moneromooo-monero) 64a2aa3 hardfork: allow passing chain height in get(height) for convenience (moneromooo-monero)
2016-02-01unit_tests: fix mnemonics unit test testing invalid seedsmoneromooo-monero1-13/+9
Some word triplets, such as "mugged names nail", are not valid results from any 32 bit value. If used to decode a 32 bit value, the result will therefore encode to a different word triplet. Fix this by using random words converted from an actual random bitstring, ensuring we always get valid triplets.
2016-02-01unit_tests: fix hard fork unit tests and add a test for major toomoneromooo-monero1-30/+68
2016-01-31tests: fix compilation failure after V1 define renamemoneromooo-monero1-1/+1
2016-01-25updated gtest (added missing files)Riccardo Spagni5-0/+525
2016-01-25updated gtestRiccardo Spagni17-888/+884
2016-01-21OpenBSD support for Monero.me0wmix2-4/+4
2016-01-16Fix 30f92f5630bbc7507708275a29a9ae7acf633a5bHoward Chu1-0/+1
Needed to add the corresponding (dummy) method to unit test hardfork
2016-01-02unit_tests: initialize db object in ctor, not openmoneromooo-monero1-1/+2
open isn't actually called in those tests
2015-12-31updated copyright yearRiccardo Spagni98-98/+98
2015-12-31Merge pull request #580Riccardo Spagni1-1/+1
1813736 unit_tests: remove an unused variable (moneromooo-monero) 70dd346 unit_tests: fix hardfork test build (moneromooo-monero)
2015-12-30unit_tests: remove an unused variablemoneromooo-monero1-1/+0
2015-12-30unit_tests: fix hardfork test buildmoneromooo-monero1-0/+1
The dummy blockchain class needed to have the newly added is_read_only virtual function.
2015-12-30core_tests: deinit core before destroying itmoneromooo-monero1-1/+3
This fixes a use after free by ioservice threads
2015-12-26tests: add a unit test for canonical decomposed amountsmoneromooo-monero2-0/+84
2015-12-25tests: fix various tests by using parameters better suited to moneromoneromooo-monero3-8/+8
Either smaller coin values (as monero has smaller block rewards), or pre-hard fork values (full reward zone), or post-Bytecoin values (emission speed).
2015-12-25tests: fix some double spending testsmoneromooo-monero1-7/+8
Some tests assume the first output in a transaction goes to the recipient. However, it can be the change. When it is, the recipient's keys will not recognize this output. To fix this, we send all we have, to ensure there is no change, and the first output goes to the recipient. I'm not sure why this worked with Cryptonote. The tests sent 17 coins, which seems way smaller than the first Bytecoin block reward, so there would have been change too. Maybe outputs were not shuffled originally.
2015-12-25tests: use 255 as a "too high" block versionmoneromooo-monero1-2/+2
While the original cryptonote accepted only the current major version, we can accept higher ones.
2015-12-25blockchain: fix bitflipping test with quantized block rewardsmoneromooo-monero1-1/+2
Block reward may now be less than the full amount allowed. This was breaking the bitflipping test. We now keep track of whether a block which was accepted by the core has a lower than allowed block reward, and allow this in the test.
2015-12-24unit_tests: fix hard fork testsmoneromooo-monero1-1/+2
A couple stopped passing when the hard fork code was made to reject incoming hard fork versions it did not know about.
2015-12-24unit_tests: new test for IP blockingmoneromooo-monero2-0/+169
2015-12-14Tone down a bit L0 logs during daemon syncmoneromooo-monero1-0/+1
2015-12-13core_tests: fix ring_signature_1 testsmoneromooo-monero1-8/+8
They were trying to send too much monero, and thus failing. The parameters were set in such a way that the (simple) output gathering code could fulfill them for 4 block rewards for the original Bytecoin emission, but that does not work with monero so we need to use smaller values.
2015-12-13core_tests: bump default test fee to 0.02 moneromoneromooo-monero1-1/+1
The current monero consensus uses 0.01 per kB fees, so use enough for 2 kB transactions for now. It'll probably have to be either bumped further or changed to calculate the proper fee.
2015-12-13add a --fakechain argument for testsmoneromooo-monero1-0/+4
The core tests use the blockchain, and reset it to be able to add test data to it. This does not play nice with the databases, since those will save that data without an explicit save call. We add a fakechain flag that the tests will set, which tells the core and blockchain code to use a separate database, as well as skip a few things like checkpoints and fixup, which only make sense for real data.
2015-12-13unit_tests: fix block reward test using post hard fork settingsmoneromooo-monero1-15/+15
This would fail, as the post hard fork settings would yield different data, and the test expects pre hard fork data.
2015-12-13tests: fix a typo in test namemoneromooo-monero1-1/+1
2015-12-09tests: remove data-dir argument registrationmoneromooo-monero1-1/+0
It is already registered in cryptonote::core::init_options, which we now call
2015-12-05blockchain_db: make the indexing base a BlockchainDB virtual functionmoneromooo-monero1-0/+1
2015-11-24hardfork: fix more major/minor issuesmoneromooo-monero1-44/+57
Also add some more tests, and rename some instances of "version" and "add" for clarity. NOTE: the starting height values are sometimes wrong. I suspect this is due to the hard fork reorg code being buggy, since they're good when syncing after the fact. However, they're not actually used by the consensus code, so I'm ignoring this for now, but this needs debugging.
2015-11-21Relay transactions when they linger too long in the poolmoneromooo-monero3-4/+4
The last relayed time of a transaction is maintained, and transactions will be relayed again if they are still in the pool after a certain amount of time, which increases with the transaction's age. All such transactions are resent, whether or not they originated on the local node.
2015-11-18Merge pull request #490Riccardo Spagni3-13/+13
baf101e More changes for 2-min blocks Use the correct block time for realtime fuzz on locktime Use the correct block time to calculate next_difficulty on alt chains (will not work as-is with voting) Lock unit tests to original block time for now (Javier Smooth) 4fea1a5 Adjust difficulty target (2 min) and full reward zone (60 kbytes) for block version 2 (Javier Smooth)
2015-11-17tests: fix build error with CLANGmoneromooo-monero1-1/+1
2015-11-13More changes for 2-min blocksJavier Smooth1-4/+4
Use the correct block time for realtime fuzz on locktime Use the correct block time to calculate next_difficulty on alt chains (will not work as-is with voting) Lock unit tests to original block time for now
2015-11-13Adjust difficulty target (2 min) and full reward zone (60 kbytes) for block ↵Javier Smooth2-9/+9
version 2
2015-11-10hardfork: add a get_ideal_version(uint64_t) functionmoneromooo-monero1-0/+22
It returns the ideal version for a given height, which is based on the minimum height for a fork, disregarding votes
2015-11-08hardfork: allow per-fork voting thresholdsmoneromooo-monero1-0/+28
And setup the first fork to not vote
2015-11-03unit_tests: fix build without berkeleydbmoneromooo-monero1-1/+7
2015-10-27Remove some old/obsolete/unused codemoneromooo-monero1-1/+0
git history's here if needed to get any of this back
2015-10-26Build fixes for the old blockchain_storage versionmoneromooo-monero1-0/+5
2015-10-21hardfork: switch voting to block minor versionmoneromooo-monero1-4/+1
Using major version would cause older daemons to reject those blocks as they fail to deserialize blocks with a major version which is not 1. There is no such restriction on the minor version, so switching allows older daemons to coexist with newer ones till the actual fork date, when most will hopefully have updated already. Also, for the same reason, we consider a vote for 0 to be a vote for 1, since older daemons set minor version to 0.
2015-10-21unit_tests: remove leftover debug traces in hardfork testmoneromooo-monero1-2/+0
2015-09-27hardfork: rescan speedupmoneromooo-monero1-8/+8
Add a block height before which version 1 is assumed Use DB transactions
2015-09-27hardfork: change window semantics to not count the newly added blockmoneromooo-monero1-10/+13
This allows knowing the hard fork a block must obey in order to be added to the blockchain. The previous semantics would use that new block's version vote to determine this hard fork, which made it impossible to use the rules to validate transactions entering the tx pool (and made it impossible to validate a block before adding it to the blockchain).
2015-09-20hardfork: most state now saved to the DBmoneromooo-monero1-142/+200
There will be a delay on first load of an existing blockchain as it gets reparsed for this state data.
2015-09-12New hardfork classmoneromooo-monero2-1/+396
This keeps track of voting via block version, in order to decide when to enable a particular fork's code.
2015-08-27dns: make ctor privatemoneromooo-monero1-6/+6
This ensures one can't instanciate a DNSResolver object by mistake, but uses the singleton. A separate create static function is added for cases where a new object is explicitely needed.
2015-07-26Fix block_reward unit testsRostislav1-10/+10
2015-07-15** CHANGES ARE EXPERIMENTAL (FOR TESTING ONLY)NoodleDoodleNoodleDoodleNoodleDoodleNoo1-0/+2
Bockchain: 1. Optim: Multi-thread long-hash computation when encountering groups of blocks. 2. Optim: Cache verified txs and return result from cache instead of re-checking whenever possible. 3. Optim: Preload output-keys when encoutering groups of blocks. Sort by amount and global-index before bulk querying database and multi-thread when possible. 4. Optim: Disable double spend check on block verification, double spend is already detected when trying to add blocks. 5. Optim: Multi-thread signature computation whenever possible. 6. Patch: Disable locking (recursive mutex) on called functions from check_tx_inputs which causes slowdowns (only seems to happen on ubuntu/VMs??? Reason: TBD) 7. Optim: Removed looped full-tx hash computation when retrieving transactions from pool (???). 8. Optim: Cache difficulty/timestamps (735 blocks) for next-difficulty calculations so that only 2 db reads per new block is needed when a new block arrives (instead of 1470 reads). Berkeley-DB: 1. Fix: 32-bit data errors causing wrong output global indices and failure to send blocks to peers (etc). 2. Fix: Unable to pop blocks on reorganize due to transaction errors. 3. Patch: Large number of transaction aborts when running multi-threaded bulk queries. 4. Patch: Insufficient locks error when running full sync. 5. Patch: Incorrect db stats when returning from an immediate exit from "pop block" operation. 6. Optim: Add bulk queries to get output global indices. 7. Optim: Modified output_keys table to store public_key+unlock_time+height for single transaction lookup (vs 3) 8. Optim: Used output_keys table retrieve public_keys instead of going through output_amounts->output_txs+output_indices->txs->output:public_key 9. Optim: Added thread-safe buffers used when multi-threading bulk queries. 10. Optim: Added support for nosync/write_nosync options for improved performance (*see --db-sync-mode option for details) 11. Mod: Added checkpoint thread and auto-remove-logs option. 12. *Now usable on 32-bit systems like RPI2. LMDB: 1. Optim: Added custom comparison for 256-bit key tables (minor speed-up, TBD: get actual effect) 2. Optim: Modified output_keys table to store public_key+unlock_time+height for single transaction lookup (vs 3) 3. Optim: Used output_keys table retrieve public_keys instead of going through output_amounts->output_txs+output_indices->txs->output:public_key 4. Optim: Added support for sync/writemap options for improved performance (*see --db-sync-mode option for details) 5. Mod: Auto resize to +1GB instead of multiplier x1.5 ETC: 1. Minor optimizations for slow-hash for ARM (RPI2). Incomplete. 2. Fix: 32-bit saturation bug when computing next difficulty on large blocks. [PENDING ISSUES] 1. Berkely db has a very slow "pop-block" operation. This is very noticeable on the RPI2 as it sometimes takes > 10 MINUTES to pop a block during reorganization. This does not happen very often however, most reorgs seem to take a few seconds but it possibly depends on the number of outputs present. TBD. 2. Berkeley db, possible bug "unable to allocate memory". TBD. [NEW OPTIONS] (*Currently all enabled for testing purposes) 1. --fast-block-sync arg=[0:1] (default: 1) a. 0 = Compute long hash per block (may take a while depending on CPU) b. 1 = Skip long-hash and verify blocks based on embedded known good block hashes (faster, minimal CPU dependence) 2. --db-sync-mode arg=[[safe|fast|fastest]:[sync|async]:[nblocks_per_sync]] (default: fastest:async:1000) a. safe = fdatasync/fsync (or equivalent) per stored block. Very slow, but safest option to protect against power-out/crash conditions. b. fast/fastest = Enables asynchronous fdatasync/fsync (or equivalent). Useful for battery operated devices or STABLE systems with UPS and/or systems with battery backed write cache/solid state cache. Fast - Write meta-data but defer data flush. Fastest - Defer meta-data and data flush. Sync - Flush data after nblocks_per_sync and wait. Async - Flush data after nblocks_per_sync but do not wait for the operation to finish. 3. --prep-blocks-threads arg=[n] (default: 4 or system max threads, whichever is lower) Max number of threads to use when computing long-hash in groups. 4. --show-time-stats arg=[0:1] (default: 1) Show benchmark related time stats. 5. --db-auto-remove-logs arg=[0:1] (default: 1) For berkeley-db only. Auto remove logs if enabled. **Note: lmdb and berkeley-db have changes to the tables and are not compatible with official git head version. At the moment, you need a full resync to use this optimized version. [PERFORMANCE COMPARISON] **Some figures are approximations only. Using a baseline machine of an i7-2600K+SSD+(with full pow computation): 1. The optimized lmdb/blockhain core can process blocks up to 585K for ~1.25 hours + download time, so it usually takes 2.5 hours to sync the full chain. 2. The current head with memory can process blocks up to 585K for ~4.2 hours + download time, so it usually takes 5.5 hours to sync the full chain. 3. The current head with lmdb can process blocks up to 585K for ~32 hours + download time and usually takes 36 hours to sync the full chain. Averate procesing times (with full pow computation): lmdb-optimized: 1. tx_ave = 2.5 ms / tx 2. block_ave = 5.87 ms / block memory-official-repo: 1. tx_ave = 8.85 ms / tx 2. block_ave = 19.68 ms / block lmdb-official-repo (0f4a036437fd41a5498ee5e74e2422ea6177aa3e) 1. tx_ave = 47.8 ms / tx 2. block_ave = 64.2 ms / block **Note: The following data denotes processing times only (does not include p2p download time) lmdb-optimized processing times (with full pow computation): 1. Desktop, Quad-core / 8-threads 2600k (8Mb) - 1.25 hours processing time (--db-sync-mode=fastest:async:1000). 2. Laptop, Dual-core / 4-threads U4200 (3Mb) - 4.90 hours processing time (--db-sync-mode=fastest:async:1000). 3. Embedded, Quad-core / 4-threads Z3735F (2x1Mb) - 12.0 hours processing time (--db-sync-mode=fastest:async:1000). lmdb-optimized processing times (with per-block-checkpoint) 1. Desktop, Quad-core / 8-threads 2600k (8Mb) - 10 minutes processing time (--db-sync-mode=fastest:async:1000). berkeley-db optimized processing times (with full pow computation) 1. Desktop, Quad-core / 8-threads 2600k (8Mb) - 1.8 hours processing time (--db-sync-mode=fastest:async:1000). 2. RPI2. Improved from estimated 3 months(???) into 2.5 days (*Need 2AMP supply + Clock:1Ghz + [usb+ssd] to achieve this speed) (--db-sync-mode=fastest:async:1000). berkeley-db optimized processing times (with per-block-checkpoint) 1. RPI2. 12-15 hours (*Need 2AMP supply + Clock:1Ghz + [usb+ssd] to achieve this speed) (--db-sync-mode=fastest:async:1000).
2015-06-20Set dnssec_valid value correctly in dns_utils; fix address_from_url testRostislav1-1/+2
2015-05-31cleaning up, removing redundant files, renaming, fixing incorrect licensesRiccardo Spagni2-2/+2
2015-05-20Merge pull request #290Riccardo Spagni2-0/+16
fee8424 Allow name@domain.tld for OpenAlias lookups (warptangent) a0fe18f Revert "Allow name@domain.tld for OpenAlias lookups" (warptangent)
2015-05-19Allow name@domain.tld for OpenAlias lookupswarptangent2-0/+16
Based on tewinget's update. Make OpenAlias address format independent of existing DNS functions. Add tests. Test: make debug-test cd build/debug/tests/unit_tests # test that regular DNS functions work, including IPv4 lookups. # also test function that converts OpenAlias address format make && ./unit_tests --gtest_filter=DNSResolver* # test that OpenAlias addresses like donate@getmonero.org work from # wallet tools make && ./unit_tests --gtest_filter=AddressFromURL.Success
2015-05-17s/terget/target/moneromooo-monero2-6/+6
2015-04-10[fix] log level change. compilation: dns, testsrfree2monero4-3/+9
old unbound #warning does not block compilation unit tests build fine. Even though the RPC/P2P network type is required again
2015-04-07Merge BlockchainDB into upstreamThomas Winget2-0/+327
2015-04-01Merge remote-tracking branch 'monero-official/master' into network-1.6-work1rfree2monero41-1927/+4973
2015-03-29Merge upstream into blockchainThomas Winget1-2/+34
2015-03-25update berkeleydb branch to blockchain branchThomas Winget41-1925/+4939
2015-03-25Merge upstream updates into blockchain branchThomas Winget41-1925/+4939
2015-03-24DNSSEC added (hardcoded key)Thomas Winget1-2/+34
DNSSEC is now implemented with the hardcoded key from unbound. This will need to be not hardcoded in the future, but is okay for now. Unit tests updated for DNSSEC (as well as for the fact that, contrary to previous assumption, example.com does not have a static IP address).
2015-03-24Merge pull request #243Riccardo Spagni2-3/+4
51e3579 Fixed bug in static linking boost on MINGW (Thomas Winget) f78bb00 Hopefully fixes build on Windows for real this time (Thomas Winget) 2b0583b Hopefully fixes build on Windows (Thomas Winget) 9dab105 DNS checkpoint loading for testnet should now be correct (Thomas Winget) 52f9629 sending commands to forked daemon works on testnet now (Thomas Winget) 76289d0 Fix tests building -- function signatures changed (Thomas Winget) db53e19 revert stop_daemon method to use correct exit (Thomas Winget) 96cbecf RPC calls for background daemon added in (Thomas Winget) 9193d6f Daemonize changes pulled in -- daemon builds (Thomas Winget)
2015-03-24updated gtest to latestRiccardo Spagni37-1919/+4932
2015-03-24Merge upstream to daemonize changesThomas Winget2-3/+3
Preparation for PR