Commit graph

9410 commits

Author SHA1 Message Date
Jason Rhinelander
b665b2f0b1
Merge pull request #1459 from jagerman/lokinet-reachability
Lokinet reachability testing
2021-06-10 16:03:52 -03:00
Jason Rhinelander
41ba779834 Increase minimum versions for SS/lokinet 2021-06-10 15:32:50 -03:00
Jason Rhinelander
821837368e
Merge pull request #1463 from jagerman/ons-lookup-fix
ONS backup owner lookup fixes
2021-06-10 15:09:41 -03:00
Jason Rhinelander
138dfeb023
Merge pull request #1461 from jagerman/ons-counts
Add registered active ONS registrations counts to get_info RPC
2021-06-10 15:09:08 -03:00
Jason Rhinelander
c2d6e095b2 Don't enforce lokinet reachability yet
This makes reachability testing activate at HF19.  We probably want to
come back and update this before HF19, but for now we just check but
don't enforce lokinet reachability.
2021-06-10 14:47:17 -03:00
Jason Rhinelander
f5c5f7e9f8 Remove obsolete (pre-HF18) code paths 2021-06-10 12:13:33 -03:00
Jason Rhinelander
bbb8bdb1af Add lokinet reachability to quorum testing
It works just like storage server testing.

Renames the report_peer_storage_server_status to report_peer_status, and
repurposes the code to handle both SS and lokinet.

This *doesn't* need a HF by design because the reason bit field was
deliberately designed so that we can add reason fields (older clients
will just ignore unknown bits).
2021-06-10 12:13:33 -03:00
Jason Rhinelander
5b1ca27e2e Fix cli wallet showing wrong Owner value for backup owner
When doing a lookup by owner in simplewallet (`ons_by_owner`) the wallet
was always writing "Owner: ..." for whatever owner row was requested,
*not* the actual Owner row returned.

In particular, when we get back a record where WalletX is the backup
owner and WalletA is the primary owner then when looking up ons records
by owner for WalletX it would print:

Owner: WalletX
BackupOwner: WalletX

Instead of properly showing the record owner details of:

Owner: WalletA
BackupOwner: WalletX

This fixes it.
2021-06-10 12:01:36 -03:00
Jason Rhinelander
7fbe15e96b Fix handling of ONS names when a backup owner
When looking up the ONS names by owner (e.g. ons_by_owner in the cli
wallet) the oxend RPC method returns an error for any records that get
returned where the looked up owner is a backup owner, because it tries
to map (only) the primary owner to a response index and fails if it got
back a record from the database that wasn't in the list of requested
addresses.

This fixes the RPC method to properly check both owner and backup owner.
2021-06-10 12:00:48 -03:00
Jason Rhinelander
470bca770e
Merge pull request #1452 from jagerman/debug-build-fix
Fix SN info upgrade in debug build
2021-06-10 10:43:39 -03:00
Jason Rhinelander
8a2078b51e Fix broken index
This index was being created on a column that doesn't exist, and
apparently because it was quoted (until the commit earlier in this PR),
sqlite was apparently treating it as a string literal.

Cursed AF.

Drop the old name and recreate the index.
2021-06-09 22:07:22 -03:00
Jason Rhinelander
a0047a1321 Remove unneeded raw string literals
Without identifier quoting we don't need this anymore.
2021-06-09 15:27:18 -03:00
Jason Rhinelander
740daddb1e Remove superfluous SQL identifier quoting
SQL identifiers are generally meant to be used unquoted, with quoting
only used when strictly necessary (e.g. to avoid keyword conflicts).
2021-06-09 14:02:56 -03:00
Jason Rhinelander
2aebfc4bce Add missing unique index
This index was only getting created on upgraded (from v7, I think)
databases but not new ones.

Also adds a comment about what the "prune" queries actually do (because
the `>=` seems really counterintuitive to me until I figured out that
they are only meant for handling a rollback).
2021-06-09 13:55:07 -03:00
Jason Rhinelander
5de150a475 Add registered ons entry counts to get_info RPC 2021-06-09 13:55:07 -03:00
javabudd
e32cbcbccd
Check if SN has a ping from lokinet and the storage server before registration (#1457)
* Make preparing registration fail if lokinet or the storage server have not received a ping yet

* Add prepare_registration boolean default

* Add signature override for get_human_time_ago to accept an optional uint64. Add stricter comparisons to ping checks

* Remove duplicate logic

* Remove method override and assign/cast last_lokinet_ping/last_storage_server_ping

* Use auto definition and static_cast res.last_lokinet_ping
2021-05-20 21:59:21 -03:00
Sean
3ddcf4879b
Merge pull request #1454 from darcys22/local-devnet
local devnet script
2021-05-18 13:24:21 +10:00
Sean Darcy
2ddf644844 local devnet scripts 2021-05-18 09:50:17 +10:00
Jason Rhinelander
f287d3d614 Remove STACK_TRACE option
This option is incredibly misguided: exceptions are a normal part of C++
error handling that are used *as intended* in lots of places in the
code.  Spewing massive amounts of output every time any exception is
thrown anywhere (even when caught!) is terrible.

More than that, we don't ever build with it enabled (for the above
reasons) so this is all just unused code.
2021-05-12 11:59:22 -03:00
Jason Rhinelander
c789fd5d77 Remove dead DEPENDS code
We dropped the contrib/depends build system quite a while ago (because
it was nasty), but there are still various DEPENDS checks scattered
through cmake that are just dead code now.  This removes them.
2021-05-12 10:46:57 -03:00
Jason Rhinelander
c5143f0a31 9.1.2 hotfix -- fix proofs for older nodes with both pubkeys
bt-encoded proofs have a bug for nodes with different legacy/ed25519
pubkeys that isn't easily solvable (it needs a fix on *both* sender and
receiver ends).  That fix is in here (in uptime_proof.cpp) but that
isn't enough to solve it immediately.

This works around the issue by submitting old-style proofs if we are a
node with different legacy/ed25519 pubkeys.
2021-04-29 21:23:16 -03:00
Jason Rhinelander
730b3c7142 Fix SN info upgrade in debug build
The v7 info doesn't need anything done, but it fails the assert() here
for a debug build.
2021-04-29 13:12:17 -03:00
Jason Rhinelander
d3a35c42cc Don't use timestamp from proof
The timestamp inside the proof is only for signature validation, but we
were using it in some places as the uptime proof time, but not updating
it everywhere we needed to.  This fixes it by using our own timestamp
for all local timed events (e.g. when we received it, when the node is
not sending proofs, etc.) to fix the issue.
2021-04-23 02:41:41 -03:00
Jason Rhinelander
422d82e205
Merge pull request #1447 from darcys22/version-bump-9.1.0
Version bump 9.1.0
2021-04-22 03:13:35 -03:00
Sean Darcy
c07b713cd5 Mainnet hardfork 18 block and timestamp 2021-04-22 14:06:31 +10:00
Sean Darcy
2f12e84938 Bump versions and minimum versions for uptime proofs 2021-04-22 14:01:56 +10:00
Sean Darcy
411af23b4b Creates a new ons pay_type for show_transfers
The displaying of ONS transactions in show_transfers and
export_transfers previously showed the dummy destination address which
contained zero bytes and converted to a nonsense address. Created a new
ONS type for the display functions and removed the displaying of the destination
address.

In addition refactored how we determine that a transaction was either a
staking, ons or output transaction as we were previously parsing the
tx_extra where the data was already in the
cryptonote::transaction::type.

Finally renamed the wording for staking rewards. Previously "miner" now
"reward"
2021-04-21 15:37:55 +10:00
Sean Darcy
435c187ca0 initialise version and pretty print if no version 2021-04-20 16:22:00 +10:00
Jason Rhinelander
dfb3f29bfe Add warning if restoring an ed25519 key to a file name .../key
A couple people have messaged me now because they tried transferring
keys and used the `restore` command on their legacy `key` file, but it
restored an ed25519 key.

This adds a red warning if attempting to restore an ed key to a filename
ending in `/key` with a note about probably wanting the restore-legacy
command instead.
2021-04-20 00:27:48 -03:00
Sean
89f1850355
Merge pull request #1441 from jagerman/testnet-fee-sync-fix
Fixes testnet sync problem caused by retroactivitly dropping the ONS fees
2021-04-20 13:26:57 +10:00
Sean Darcy
f151386cbe Serialise extra fields for participation checks 2021-04-20 13:21:22 +10:00
Jason Rhinelander
ec5f548db5 Add hack to fix testnet sync
PR #1433 getting merged changed the fees within HF18 on testnet, which
broke syncing/ONS rescanning because the per-merged testnet has higher
fee ONS txes on it.

This adds a hack to allow wrong fees for blocks before yesterday.
2021-04-20 00:20:21 -03:00
Jason Rhinelander
fd7c35801f Increase various potentially fatal error log levels
MERROR doesn't come through at default low-logging level so promote them
to MFATAL so it's more obvious where things are failing when they fail.
2021-04-20 00:16:20 -03:00
Sean
2047edcd79
Merge pull request #1439 from jagerman/macos-time-fix
macOS build fix
2021-04-19 15:48:15 +10:00
Sean
cdcf7f251b
Merge pull request #1438 from jagerman/swarmid-fix
Swarm id fix
2021-04-19 15:48:06 +10:00
Jason Rhinelander
8e39c84e70 Add a virtual destructor to http_server_base
Clang warns about http_server having a non-virtual destructor; we aren't
actually doing anything that would cause problems, but the warning is
legit and a correct thing to fix.
2021-04-19 01:22:50 -03:00
Jason Rhinelander
d205bc4400 Fix time_t conversion on macos
macOS's system_clock apparently only has microsecond resolution while
steady_clock has nanosecond, so the conversion here was failing (because
time_point conversions are only implicit when converting to a more
precise type).
2021-04-19 01:18:14 -03:00
Jason Rhinelander
2c96fa0f6c Don't sort an already-sorted vector
The swarm_ids are std::map keys, which means they are already sorted.

Put an assert in just to be paranoid.
2021-04-19 00:14:47 -03:00
Jason Rhinelander
1fb10d8b1d Fix get_new_swarm_id() returning MAX_ID/2 when single swarm
The important part here is removing this line:

    if (swarm_to_snodes.size() == 1) return MAX_ID / 2;

because, if we end up in a case where we have only one swarm and it
*already* has that ID (e.g. create 2, which will be [MAX/2,0] then drop
0) then this returns a swarm_id that already exists, which is bad
because then we fail to insert the new swarm, a service node gets left
with an unassigned swarm id, and that then causes issues in SS because
that node thinks it is deactivated because it doesn't have a swarm id
(yet it *is* in the active nodes list, so other network members still
try to talk to it).
2021-04-18 23:47:22 -03:00
Jason Rhinelander
7ecef1529d print_sn display tweaks
- decrease indent
- show lokinet address
2021-04-18 22:20:10 -03:00
Jason Rhinelander
33bcf7e70c Add missing lokinet/ss versions to RPC 2021-04-18 22:20:10 -03:00
Jason Rhinelander
bdebfda9f8 Re-do how SS ping tests are handled
This moves all the responsibility of ping testing (deciding when it's
unreachable, etc.) into oxend, allowing for better reporting on SS ping
results and eliminating some edge cases that can lead to oxend and
storage server getting "stuck" thinking each is in a different state.
2021-04-18 22:20:10 -03:00
Jason Rhinelander
3b4c8f4a5d Make get_human_time_ago use seconds rather than ints 2021-04-18 22:20:10 -03:00
Jason Rhinelander
eda03d1590
Merge pull request #1432 from jagerman/ss-updates
Storage server RPC updates
2021-04-18 22:19:13 -03:00
Sean Darcy
137ba14ea3 reduce ONS fee 2021-04-19 09:45:18 +10:00
Sean Darcy
5041dd7726 reduce fees 2021-04-19 09:45:10 +10:00
Sean Darcy
440c4ca7c4 initialise mapping_value 2021-04-16 13:40:35 +10:00
Sean
53602f5a45
Merge pull request #1434 from darcys22/misc-fixes
Misc fixes
2021-04-15 16:47:47 +10:00
Sean Darcy
cb8a7d4a43 Use fs::exists from common tools 2021-04-15 15:47:45 +10:00
Sean Darcy
d05f514c1f Wrong constant name 2021-04-15 14:23:36 +10:00