Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
This ensures this will be done without fail, as the error prone
matching of every return with a call to KILL_IOSERVICE leads to
hard to debug corruption when one is missing.
|
|
- only try to stop if actually started
- print number of threads before zeroing it
This fixes the suspiciously doubled "Mining has been stopped"
message on exit.
|
|
Blockchain hashes and key images are flushed, and blocks are
pulled anew from the daemon.
The console command is shortened to match bc_height.
This should make it a lot easier on users who are currently
told to remove this particular cache file but keep the keys
one, etc, etc.
|
|
This can happen when the daemon exits, which would also cause
the wallet to crash via unhandled exception
|
|
They do not take the object lock, and are meant to be used only
internally, called from a function which does take the lock.
|
|
|
|
61befc2 wallet: store cache to file without unnecessary memory buffer (moneromooo-monero)
|
|
61ce8d6 wallet_rpc_server: exit async, so we reply to stop_wallet RPC (moneromooo-monero)
9847db6 wallet: do not return error if incoming_transfers finds none (moneromooo-monero)
|
|
0953355 blockchain_db: inform user about new format if blockchain.bin is found (moneromooo-monero)
|
|
b39aae7 Tweak 45800a25e9374e63caaabba05c89585c86acd668 (hyc)
4a5a5ff blockchain: always stop the ioservice before returning (moneromooo-monero)
78b65cf db_lmdb: safety close db at exit (moneromooo-monero)
45800a2 db_lmdb: fix a strdup/delete[] mistmatch (moneromooo-monero)
|
|
fc34132 Remove assert from status command (hyc)
|
|
ee9d71e BlockchainDB: skip fixup check if read-only database (warptangent)
|
|
b0541a5 blockchain: remove obsolete containers (moneromooo-monero)
18a5211 blockchain: Fix height in call to on_blockchain_dec (moneromooo-monero)
|
|
|
|
trivial cleanup
|
|
Reported by saddam
|
|
|
|
Fixes a use after free
|
|
reported by saddam
|
|
Noticed by hyc
Also set m_open to false when closed
|
|
|
|
Crashes every time...
|
|
|
|
|
|
It was a noop anyway
|
|
|
|
79beed2 tests: fix various tests by using parameters better suited to monero (moneromooo-monero)
d0a8362 tests: fix some double spending tests (moneromooo-monero)
2358d0d tests: use 255 as a "too high" block version (moneromooo-monero)
f33a88c blockchain: fix a few block addition bugs (moneromooo-monero)
a9ff11c blockchain: fix an off by one error in unlocked time check (moneromooo-monero)
f294be3 blockchain: reinstate double spending checks in check_tx_inputs (moneromooo-monero)
737b6d6 blockchain: make some flag twiddling code closer to the original (moneromooo-monero)
81cb0fc blockchain: fix bitflipping test with quantized block rewards (moneromooo-monero)
22ddf09 blockchain: add missing m_tx_pool.on_blockchain_dec (moneromooo-monero)
d837c0c blockchain: fix switch to alternative blockchain for more than one block (moneromooo-monero)
5cec076 blockchain: add a missing validity check to rollback_blockchain_switching (moneromooo-monero)
3cabdb5 core: catch exceptions from get_output_key (moneromooo-monero)
5eef645 db: throw when given a non txout_to_key output to add (moneromooo-monero)
|
|
If the block reward was too high, the verification failed flag
was set, but the function continued. The code which was supposed
to trap this flag and return failure failed to trap it, and,
while the block was not added to the chain, the function would
return success.
The reason for avoiding returning when the block reward problem
was detected was to be able to return any transactions to the
pool if needed. This is now mooted by moving the transaction
return code to a separate function, which is now called at all
appropriate points, making the logic much simpler, and hopefully
correct now.
We also move the hard fork version check after the prev_id check,
as block which does not go on the top of the chain might not
have the expected version there, without being invalid just for
this reason.
Last, we trap the case where a block fails to be added due to
using already spent key images, to set the verification failed
flag.
|
|
|
|
This fixes some double spending tests.
This may or may not be unneeded in normal (non test) circumstances,
to be determined later. Keeping these for now may be slower, but safer.
|
|
Probably paranoid and unnecessary
|
|
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.
|
|
It was missing in the port to DB.
This is actually a noop, so should not have functional changes.
|
|
When rolling over more than one block, the db height will decrease,
but the split height should be constant, as per the original code.
|
|
It was present in the original code
|
|
This can happen when trying to find an amount that does not exist,
and fixes a core test.
|
|
The check was explicit in the original version, so it seems
safer to make it explicit here, especially as it is now done
implicitely in a different place, away from the original check.
|
|
d4c2fae BlockchainDB: Remove txs in reverse order (warptangent)
|
|
ffcf6bd BlockchainLMDB: When removing, find amount output index fast by starting at end (warptangent)
f11def0 BlockchainLMDB: Remove tx outputs in reverse order (warptangent)
|
|
791e7fb changed height to uint64_t (Brendan Telzrow)
4cd7913 added RPC wallet command getheight (Brendan Telzrow)
|
|
Data should be removed in the reverse order it was added. Not doing so
breaks assumptions and can cause problems in other DB implementations.
This matches the order of tx removal in
blockchain_storage::purge_block_data_from_blockchain.
|
|
This improves blockchain reorganization time by allowing one of the more
expensive DB lookups when popping a block to not have to seek through a
long dup list in the "output_amounts" subdb. This is most noticeable for
HDDs.
As before, the dup list is still walked if necessary (but in reverse),
and the global output index still confirmed to be the one looked for.
But under proper use, the result will be found at the end of the dup
list, so we start there.
Removing an amount output index is always done in the context of popping
a block, so the global output index being looked for should be the last
one in that amount key's dup list. Even if the txs themselves aren't
removed in reverse order (supposed to be according to original
implementation), the specified amount output index will still be near
the end, because the txs are in the same block.
TEST:
Pop blocks with blockchain_import.
Blocks should be successfully removed with no errors shown.
bitmonerod should be able to start syncing from the reduced blockchain
height.
|
|
Data should be removed in the reverse order it was added.
This matches the order of removal in
blockchain_storage::pop_transaction_from_global_index.
|
|
|
|
wallet generation
|
|
|
|
|
|
One loop was not paying attention to the stop signal, and could
end up looping forever
|
|
9428d53 Strip redundant includes (hyc)
|
|
8c93608 wallet: fix load/save versioning bug for recently added tx data (moneromooo-monero)
|
|
8ea7af1 Allow the wallet to access hard fork information (moneromooo-monero)
760331b epee: make log macros behave like statements (moneromooo-monero)
3f2970f Add missing semicolons after log statements (moneromooo-monero)
|
|
0ab56b8 print top block hash in daemon diff command (moneromooo-monero)
|
|
In particular, <boost/program_options.hpp> blows up daemon.cpp.obj,
making it too big to compile in debug mode on Win32. Even on a
release build it drops daemon.cpp.o on Linux from 31MB to 20MB.
This has no effect on the final linked binary size.
|
|
The version number passed to those data's serialize function
was always 0, not the wallet's version as I had expected.
A version number now exists for these structures so they're
versioned correctly.
|
|
And make it change behavior slightly when close/after first hard fork
|
|
|
|
and add top block hash in get_info RPC
|
|
01e92eb replace std::auto_ptr with std::unique_ptr (moneromooo-monero)
|
|
63cb1a5 move another non user useful log to L1 (moneromooo-monero)
02827d5 p2p: minor log formatting fix (moneromooo-monero)
|
|
9b4f8b4 wallet: save to a temporary file, then rename (moneromooo-monero)
|
|
The former is obsolete
|
|
|
|
|
|
This should avoid most of wallet cache corruption cases
|
|
5131b26 Replace tabs and remove trailing whitespace (warptangent)
0d40de4 Optionally restrict DNS queries to TCP (warptangent)
|
|
9079a32 Fix typo (warptangent)
3796941 blockchain.cpp: Change indentation from 4 to 2 spaces (warptangent)
725acc7 Replace tabs with two spaces for consistency with rest of codebase (warptangent)
|
|
|
|
Sample use:
DNS_PUBLIC=tcp torsocks bin/bitmonerod --p2p-bind-ip 127.0.0.1
Test:
Run above with --log-level 4 with and without DNS_PUBLIC environment
variable set.
DNS debugging info should show successful DNS lookups only when
DNS_PUBLIC is set to "tcp":
DNS lookup for seeds.moneroseeds.se: 17 results
DNS lookup for seeds.moneroseeds.ae.org: 17 results
DNS lookup for seeds.moneroseeds.ch: 12 results
DNS lookup for seeds.moneroseeds.li: 12 results
|
|
|
|
|
|
Remove trailing whitespace in same files.
|
|
75fd96d Revert connection limit to more customary 8 (Javier Smooth)
|
|
d462c62 db_lmdb: always use a batch tx if possible (moneromooo-monero)
|
|
a74cc1b hardfork: only accept major versions we know about (moneromooo-monero)
|
|
cb4ee1b Tone down L0 logs during daemon sync some more (moneromooo-monero)
2177923 Tone down a bit L0 logs during daemon sync (moneromooo-monero)
|
|
|
|
Also wrap that code in two prefix/suffix macros so they are
easier to use and not forget. Also add consts to returned data
casts where applicable.
|
|
|
|
|
|
|
|
We need to stop the p2p layer, which causes the rest to shutdown
gracefully. Hitting ^C was still going through another path.
|
|
7f77b23 posix_daemonizer: only create the main daemon object in the last child (moneromooo-monero)
|
|
79ff6a5 Add LMDB error string to database transaction exception message (warptangent)
|
|
cbded43 core_tests: fix ring_signature_1 tests (moneromooo-monero)
c3d208f core_tests: bump default test fee to 0.02 monero (moneromooo-monero)
10da0a0 add a --fakechain argument for tests (moneromooo-monero)
eee44e6 unit_tests: fix block reward test using post hard fork settings (moneromooo-monero)
595893f blockchain: log block (not chain) height in "BLOCK SUCCESFULLY ADDED" (moneromooo-monero)
2369968 blockchain: fix off by one in get_blocks (moneromooo-monero)
8af913a db_lmdb: implement BlockchainLMDB::reset (moneromooo-monero)
4833f4f db_bdb: implement BlockchainBDB::reset (moneromooo-monero)
18bf06e tx_pool: fix "minumim" typo in message (moneromooo-monero)
44f1267 tests: fix a typo in test name (moneromooo-monero)
1494557 db_lmdb: create all needed directories, not just the leaf one (moneromooo-monero)
015b68a db_bdb: create all needed directories, not just the leaf one (moneromooo-monero)
f141869 tests: remove data-dir argument registration (moneromooo-monero)
|
|
0198306 Stop displaying internal commands for --help (luigi1111)
189d516 simplewallet help & error cleanup (luigi1111)
|
|
This prevents the intermediate thread from exiting properly, as
fork creates a child process with only one thread, so any existing
data_logger thread will not be in the child. Since this thread
sets a flag the data_logger dtor blocks on, all children threads
will hang on exit.
|
|
When throwing an exception from being unable to begin an LMDB
transaction, include the reason.
It's often been due to a write transaction attempted within a write
transaction (batch mode), but there can be other reasons such as write
transaction attempted while database was opened read only, or
environment's map needs to be resized.
|
|
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.
|
|
This makes it log the same height as the original code, which is
less confusing when comparing behaviors.
|
|
|
|
It is needed by the core tests
|
|
It is needed by the core tests
|
|
|
|
|
|
|
|
Displaying in-program commands with --help doesn't match daemon
behaviour (or make sense)
|
|
Typos, grammar, consistency. I don't claim to have gotten everything.
|
|
Data is only guaranteed to be valid within the lifetime of a txn.
You cannot use data returned from LMDB after the txn ends.
Also, fixed a missing txn.commit BlockchainLMDB::get_tx_unlock_time()
|
|
336b375 Register daemon command line arguments to core if they're used in core (moneromooo-monero)
|
|
This fixes coretests, which does not register daemon specific arguments,
but uses core, which uses those arguments. Also gets rid of an unwanted
dependency on daemon code from core.
|
|
2c83055 net_node: add a --offline argument (moneromooo-monero)
|
|
f746434 daemon: add mining status to the status command (moneromooo-monero)
|
|
1c8262c db_bdb: move log_set_config call before open (moneromooo-monero)
|
|
8620b31 db_bdb: support for libdb without DB_FORCESYNC (moneromooo-monero)
|
|
34e3889 p2p: failure to load p2pstate.bin is not fatal anymore (moneromooo-monero)
|
|
a98e976 blockchain_db: fixup missing key images in early DB version (moneromooo-monero)
|
|
It will not try to connect to the monero network, nor listen
|
|
|
|
This is a precaution for older Berkeley DB versions.
- smooth reports an issue running with 4.7:
DB_ENV->log_set_config: DB_LOG_IN_MEMORY: method not permitted
after handle's open method
- this works just fine with 5.3
- we do not use DB_LOG_IN_MEMORY, but we use DB_LOG_AUTO_REMOVE
- libdb docs say some flags must be set before open, and some
may be set at any time, but never say some must be set after
open
- moving the call to log_set_config before open works with 5.3
Therefore, it seems best to move the call before open.
|
|
|
|
Clear any partially loaded data, and start with a default config
|
|
Early DB versions did not store key images for inputs if the
transaction spending them had no outputs (ie, all fee). This
is not correct, as this would allow these outputs to be double
spent. This was fixed in 533acc30eda7792c802ea8b6417917fa99b8bc2b
a few months ago, but databases having synced blocks 2021612 and
685498 with a faulty version will be missing those key images
in the spent keys database. This code checks for this, and adds
those key images if they are missing.
|
|
instead of a command line setting. It makes sense that is is
a long lived setting.
|
|
|
|
1965fce wallet: add a stop_wallet RPC call (moneromooo-monero)
|
|
|
|
|
|
Berkeley DB uses 1 based indices for RECNO databases, and the
implementation of BlockchainDB for Berkeley DB assumes 1 based
indices are passed to the API, whereas the LMDB one assumes
0 based indices. This is all internally consisteny, but since
the BDB code stores 1 based indices in the database, external
users have to be aware of this, as the indices will be off by
one depending on which DB is used.
|
|
Keys in Berkeley DB are 32 bits. We don't want to read random
bits in the high part.
|
|
0921f5b util: use putenv instead of setenv for mingw (moneromooo-monero)
|
|
|
|
This reverts commit c6bf73131aaf804cb17f24c856f826be2761a566, reversing
changes made to 8a52cf4055d247dd4b162985c931e99683992e3c.
|
|
36a298c simplewallet: add tr markers in a few missing user visible strings (moneromooo-monero)
|
|
^C while in manual refresh will cancel the refresh, since that's
often an annoying thing to have to wait for. Also, a manual refresh
command will interrupt any running background refresh and take
over, rather than wait for the background refresh to be done, and
look to be hanging.
|
|
66849ac simplewallet: swap colors in show_transfers (moneromooo-monero)
|
|
|
|
3030e3e wallet2: remove confirmed transactions from detached blocks (moneromooo-monero)
|
|
62e49a5 wallet: optional automatic refresh from the daemon (moneromooo-monero)
|
|
e45a8c9 core: serialize block major/minor versions as bytes, not varints (moneromooo-monero)
|
|
7574297 core_rpc_server: add a --restricted-rpc option (moneromooo-monero)
|
|
9ee48e9 wallet2: speed up wallet refresh for large miners (moneromooo-monero)
4905903 wallet2: parallelize pulling blocks and processing them on refresh (moneromooo-monero)
d0eaf1d wallet2: maintain the short chain manually when refreshing (moneromooo-monero)
a4e9506 wallet2: split pull blocks between pulling and processing (moneromooo-monero)
|
|
55e5a33 rpc: pass current block target in rpc (moneromooo-monero)
|
|
Green is now used for incoming transfers, and magenta for outgoing
transfers. This is consistent to the scheme used by other logging.
|
|
|
|
|
|
The daemon will be polled every 90 seconds for new blocks.
It is enabled by default, and can be turned on/off with
set auto-refresh 1 and set auto-refresh 0 in the wallet.
|
|
This allows them to be saved as a fixed (one byte) chunk whatever
the value. Using a varint will use two bytes as the high bit gets
set.
This is backward compatible with current usage (0-2 values).
|
|
It does not expose the RPC for commands like start_mining, etc
(ie, commands a public node operator might want to be restricted)
|
|
This needed locking the use of m_http_client, to avoid collisions
in I/O.
|
|
|
|
|
|
This fixes the hash rate being wrong on testnet after the switch
to 2 minute blocks
|
|
|
|
m_blocked_ips now stores the unblocking time, rather than the
blocking time.
Also change > to >=, since banning for 0 seconds should not ban
|
|
|
|
d887c18 hardfork: fix more major/minor issues (moneromooo-monero)
3b47ca2 hardfork: fix rescan on load (moneromooo-monero)
4cea2b1 Add IP blocking for misbehaving nodes (adapted from Boolberry) (Javier Smooth)
9c64b12 quiet down p2p logging a bit (Javier Smooth)
53c75ab blockchain: log versions as numbers, not characters (moneromooo-monero)
edade8d hardfork: fix actual/voting confusion (moneromooo-monero)
|
|
06c8b94 daemon: fix blockchain height display not updating after sync (moneromooo-monero)
|
|
410c6cf cn_deserialize: a new tool to decode blocks and transactions (moneromooo-monero)
|
|
3d0b3c5 add recent static checkpoint (Javier Smooth)
|
|
9b945f5 wallet: make the refresh optimizations selectable via command line (moneromooo-monero)
d2c0313 wallet: speedup refresh from daemon (moneromooo-monero)
ea707c7 wallet2: minor cleanup (moneromooo-monero)
55a2da7 wallet2: speedup refresh a bit (moneromooo-monero)
|
|
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.
|
|
|
|
With minor cleanup and fixes (spelling, indent) by moneromooo
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Take the opportunity to add a no-coinbase case too, for even faster
sync when an address is known to never have mined to.
|
|
328636c fixed testnet fork point, added comment data back in (Riccardo Spagni)
aed3038 disable time-stats by default, tweak fast-block-sync description (Riccardo Spagni)
8fe1111 update v2 testnet fork height (Riccardo Spagni)
4d74510 checkpoints update (Riccardo Spagni)
|
|
Assume the whole of a coinbase goes to the same address (so that
if the first output isn't for us, none of it is), and only look
for payment id when we received something in the transaction.
|
|
- use std::vector::std::deque to not leak when exceptions happen
- use std::unique_ptr instead of the deprecated std::auto_ptr
|
|
Use the NoodleDoodle threading technique to speedup a couple
code blocks on the main path when refreshing blocks without
any transactions for us.
|
|
|
|
db1fb66 wallet: storing outgoing tx info now defaults to enabled (moneromooo-monero)
9156ba3 wallet: rename store-tx-keys to store-tx-info (moneromooo-monero)
b3d4d41 wallet: improve show_transfers (moneromooo-monero)
725ae4e wallet: use incoming blocks to keep track of payments too (moneromooo-monero)
00790a8 simplewallet: lessen display flicker confusion (moneromooo-monero)
|
|
The info is stored encrypted, and is pretty useful, often after
the fact.
|
|
With backward compatibility
|
|
More information is now saved and displayed
|
|
|
|
|
|
|
|
|
|
Height seemed to be flying all over the place on a rescan here.
Logging to a file shows the heights are actually correct, and
this is some kind of screen refresh artifact. Flush after \r
and update less often to reduce this effect a lot.
|
|
f3724ae Fix startup crash when using a locale boost does not like (moneromooo-monero)
0c1dae3 i18n: allow language to be passed as a parameter (moneromooo-monero)
|
|
There are various locale related bugs in various versions of boost,
where exceptions are thrown in boost::filesystem APIs when the
current locale is not to boost's liking. It's not clear what "not
to boost's liking" means in detail, though "en" and "en_US.UTF-8"
are not to its liking.
Fix it by running a test function that's known to throw in such
a case, and resetting LANG and LC_ALL to C if an exception is
thrown. In simplewallet, the locale is queried before that so the
correct translations will still be used.
|
|
If empty, it will still be fetched from the environment
|
|
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.
|
|
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)
|
|
3f611bc wallet: track outgoing payments and add a show_transfers command (moneromooo-monero)
|
|
It's a user friendly display of incoming and outgoing transfers,
listed by height, within an optional height range.
|
|
It looks like some of the indices passed to the DB access functions
are already bumped by 1. Moreover, the existing code was not
throwing DB errors with 0 keys, and this is unlikely if it really
was using 0 keys. Last, this patch broke sync from scratch in at
least one case. So I'm calling it bad and reverting it.
This reverts commit bfc97401ae81bb30278a318de7f048c653bf6582.
|
|
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
|
|
version 2
|
|
It returns the ideal version for a given height, which is
based on the minimum height for a fork, disregarding votes
|
|
And setup the first fork to not vote
|
|
b1d0c8a blockchain_dump: fix build without berkeley db (moneromooo-monero)
|
|
|
|
The default default mixin is 4. It can now be changed per wallet.
|
|
|
|
051ddbc rpc: fix start_mining and status RPC crashes (moneromooo-monero)
|
|
bc110af blockchain_utilities: properly exit on error (moneromooo-monero)
|
|
4f873bc Remove some old/obsolete/unused code (moneromooo-monero)
|
|
e70d2e5 common: const and init list pedantry (moneromooo-monero)
|
|
6df4e67 Fix a possibly-unused warning, and rationalize types (moneromooo-monero)
|
|
They check whether they're running on testnet by accessing the
m_rpc_server object, which does not exist when in RPC mode.
Also, fix hard_fork_info being called with the wrong API.
|
|
Replace boolean values and exceptions where appropriate
|
|
git history's here if needed to get any of this back
|