- updates lokimq to dev branch
- changes compilation mode to C++17 (which is now required by lokimq,
and already widely applied in lokinet and lokid dev branches)
- replace lokimq::string_view with std::string_view
- replace boost::optional with std::optional, except for:
- boost::optional<std::function<...>> doesn't need optional at all
because a std::function<...> is already nullable.
- boost::optional<T&> isn't supported by std::optional because it
makes little sense (it is just a `T*`) so just switch to T* instead.
This changes storage server to fetch the SN private key via the RPC call
added in lokid 6.x (which is also used by lokinet) at startup (i.e.
before starting the main event loop).
As a useful side effect of this change it delays storage server startup
until lokid is ready and running as a service node, which means we get
earlier diagnostics about failures from storage server. It also means
that lokid is very likely to get a ping from the storage server right
away--currently if you restart both storage server starts up must faster
and so the first ping typically fails, which means lokid can't send
uptime proofs until after the second ping.
The --lokid-key option is still accepted as an argument but now ignored
(so that people with it in a config file can still start up).
This also adds a templated function to convert byte sequences to hex to
be able to print it. (Also removes one from http_connection.cpp that
did the same via sodium for a specific `std::array<uint8_t, 32>`, but
that wasn't actually called anywhere).
* Initial swarm bootstrapping from seed nodes
* Bootstrap the IPs when we have finished syncing, plus don't overwrite valid IPs with defaults
* Review fixed plus lint
* sign cert
* missing changes
* fix bad merge
* use sn_record_t::pub_key() + clang format
* prevent clang format from reordering #includes
* Address reviews
* need travis to find openssl 1.1.1