-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Proposed 1.10.0-b1 #4265
Proposed 1.10.0-b1 #4265
Commits on Aug 3, 2022
-
Introduce amendment to handle trustlines to self:
Trustlines must be between two different accounts but two trustlines exist where an account extends trust to itself. They were created in the early days, likely because of bugs that have been fixed. The new fixTrustLinesToSelf amendment will remove those trustlines when it activates.
Configuration menu - View commit details
-
Copy full SHA for 905aeb0 - Browse repository at this point
Copy the full SHA 905aeb0View commit details -
Configuration menu - View commit details
-
Copy full SHA for 8b4f930 - Browse repository at this point
Copy the full SHA 8b4f930View commit details -
Configuration menu - View commit details
-
Copy full SHA for f43169e - Browse repository at this point
Copy the full SHA f43169eView commit details
Commits on Aug 4, 2022
-
Configuration menu - View commit details
-
Copy full SHA for 14b3969 - Browse repository at this point
Copy the full SHA 14b3969View commit details -
Configuration menu - View commit details
-
Copy full SHA for 4ba8a08 - Browse repository at this point
Copy the full SHA 4ba8a08View commit details -
Configuration menu - View commit details
-
Copy full SHA for 26f177d - Browse repository at this point
Copy the full SHA 26f177dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 7b557ed - Browse repository at this point
Copy the full SHA 7b557edView commit details -
Build the command map at compile time (fixes #3298):
We profiled different algorithms and data structures to understand which strategy is best from a performance standpoint: - Linear search on an array; - Binary search on a sorted array; - Using `std::map`; and - Using `std::unordered_map`. Both linear search and std::unordered_map outperformed the other alternatives so no change to the existing data structure is justified. If more handers are added, this should be revisited. For some additional details and timings, please see: #3298 (comment)
Configuration menu - View commit details
-
Copy full SHA for 955c140 - Browse repository at this point
Copy the full SHA 955c140View commit details -
Avoid unnecessary copying and dynamic memory allocations
Co-authored-by: Chenna Keshava B S <ckbs.keshava56@gmail.com>
Configuration menu - View commit details
-
Copy full SHA for e3b6c03 - Browse repository at this point
Copy the full SHA e3b6c03View commit details -
Optimize thread pool implementation:
The existing thread pool code uses several layers of indirection which uses a custom lock-free stack, and offers functionality that supports features that are never used (e.g. the ability to dynamically adjust the number of threads in the pool). This refactoring aims to simplify the code, making it easier to reason about (although lock-free multi-threaded code is always tricky) what is happening, and reduce the latency of the thread pool internals.
Configuration menu - View commit details
-
Copy full SHA for 78d181f - Browse repository at this point
Copy the full SHA 78d181fView commit details -
Refactor the JobQueue infrastructure and improve load tracking:
This commit cleans up and modernizes the JobQueue but does not change the queueing logic. It focuses on simplifying the code by eliminating awkward code constructs, like "invalid jobs" and the need for default constructors. It leverages modern C++ to initialize tables and data structures at compile time and replaces `std:map` instances with directly indexed arrays. Lastly, it restructures the load tracking infrastructure and reduces the need for dynamic memory allocations by supporting move semantics and value types.
Configuration menu - View commit details
-
Copy full SHA for 8d3c5a3 - Browse repository at this point
Copy the full SHA 8d3c5a3View commit details -
Improve detection & handling of duplicate Node ID:
Each node on the network is supposed to have a unique cryptographic identity. Typically, this identity is generated randomly at startup and stored for later reuse in the (poorly named) file `wallet.db`. If the file is copied, it is possible for two nodes to share the same node identity. This is generally not desirable and existing servers will detect and reject connections to other servers that have the same key. This commit achives three things: 1. It improves the detection code to pinpoint instances where two distinct servers with the same key connect with each other. In that case, servers will log an appropriate error and shut down pending intervention by the server's operator. 2. It makes it possible for server administrators to securely and easily generate new cryptographic identities for servers using the new `--newnodeid` command line arguments. When a server is started using this command, it will generate and save a random secure identity. 3. It makes it possible to configure the identity using a command line option, which makes it possible to derive it from data or parameters associated with the container or hardware where the instance is running by passing the `--nodeid` option, followed by a single argument identifying the infomation from which the node's identity is derived. For example, the following command will result in nodes with different hostnames having different node identities: `rippled --nodeid $HOSTNAME` The last option is particularly useful for automated cloud-based deployments that minimize the need for storing state and provide unique deployment identifiers. **Important note for server operators:** Depending on variables outside of the the control of this code, such as operating system version or configuration, permissions, and more, it may be possible for other users or programs to be able to access the command line arguments of other processes on the system. If you are operating in a shared environment, you should avoid using this option, preferring instead to use the `[node_seed]` option in the configuration file, and use permissions to limit exposure of the node seed. A user who gains access to the value used to derive the node's unique identity could impersonate that node. The commit also updates the minimum supported server protocol version to `XRPL/2.1`, which has been supported since version 1.5.0 and eliminates support for `XPRL/2.0`.
Configuration menu - View commit details
-
Copy full SHA for fe95223 - Browse repository at this point
Copy the full SHA fe95223View commit details -
Improve AccountID string conversion caching:
Caching the base58check encoded version of an `AccountID` has performance advantages, because because of the computationally heavy cost associated with the conversion, which requires the application of SHA-256 twice. This commit makes the cache significantly more efficient in terms of memory used: it eliminates the map, using a vector with a size that is determined by the configured size of the node, and a hash function to directly map any given `AccountID` to a specific slot in the cache; the eviction policy is simple: in case of collision the existing entry is removed and replaced with the new data. Previously, use of the cache was optional and required additional effort by the programmer. Now the cache is automatic and does not require any additional work or information. The new cache also utilizes a 64-way spinlock, to help reduce any contention that the pressure on the cache would impose.
Configuration menu - View commit details
-
Copy full SHA for 2eeaefe - Browse repository at this point
Copy the full SHA 2eeaefeView commit details -
Improve self-signed certificate generation:
When starting, the code generates a new ephemeral private key and a corresponding certificate to go along with it. This process can take time and, while this is unlikely to matter for normal server operations, it can have a significant impact for unit testing and development. Profiling data suggests that ~20% of the time needed for a unit test run can be attributed to this. This commit does several things: 1. It restructures the code so that a new self-signed certificate and its corresponding private key are only initialized once at startup; this has minimal impact on the operation of a regular server. 2. It provides new default DH parameters. This doesn't impact the security of the connection, but those who compile from scratch can generate new parameters if they so choose. 3. It properly sets the version number in the certificate, fixing issue #4007; thanks to @donovanhide for the report. 4. It uses SHA-256 instead of SHA-1 as the hash algorithm for the certificate and adds some X.509 extensions as well as a random 128-bit serial number. 5. It rounds the certificate's "start of validity" period so that the server's precise startup time cannot be easily deduced and limits the validity period to two years, down from ten years. 6. It removes some CBC-based ciphers from the default cipher list to avoid some potential security issues, such as CVE-2016-2107 and CVE-2013-0169.
Configuration menu - View commit details
-
Copy full SHA for 318e48a - Browse repository at this point
Copy the full SHA 318e48aView commit details -
Configuration menu - View commit details
-
Copy full SHA for ace4a96 - Browse repository at this point
Copy the full SHA ace4a96View commit details -
Configuration menu - View commit details
-
Copy full SHA for d3b645f - Browse repository at this point
Copy the full SHA d3b645fView commit details