xrpscan / hermes Goto Github PK
View Code? Open in Web Editor NEWProject Hermes: XRP Ledger Validation message service
Home Page: https://xrpscan.com
License: MIT License
Project Hermes: XRP Ledger Validation message service
Home Page: https://xrpscan.com
License: MIT License
Looking for a command to reclaim disk from Hermes.
In case of rippled connection failure due to network, rippled upgrade or other outages - Hermes does not automatically reconnect to its rippled. It should auto-reconnect because not missing any validation messages is the entire premise of Hermes.
Config option SERVER_HOSTNAME
should be used to issue certificates for now. Support for multiple domains via subjectAltName
may be added later.
Requested by Rabbit: Can you add a setting to disable TLS certificate verification, so I can connect to a rippled node that uses a self-signed cert?
npmlog supports the following log levels:
log.silly(prefix, message, ...)
log.verbose(prefix, message, ...)
log.info(prefix, message, ...)
log.http(prefix, message, ...)
log.warn(prefix, message, ...)
log.error(prefix, message, ...)
Add support for setting custom log level in .env
file.
.env.example
config file recommends RIPPLED_URL = 'ws://localhost:6006'
as the default RIPPLED_URL. Port 6006 is the admin port, and fetching validation messages via the admin port is an overkill. Change the recommended url to use the unprivileged 6005 port.
Hermes can show a helpful page at its root url /. When Hermes http service is proxy passed behind nginx/apache, the root url can show info about auto-configure url, peer list etc.
Validation.create
emits MongoServerError
due to unique index on validation_public_key+ledger_index
. Change log level for these errors to verbose since they're mostly inconsequential.
Seems the newer LTE Ubuntu 22.04.1 LTS uses libssl3, and thus libssl1.1 is deprecated at this point.
npm run peer [add|ls|remove]
or yarn peer [add|ls|remove]
don't return control back to the shell. This is probably happening because database connection is still active. Fix database connection logic so the connection can be closed when needed.
yarn keypair
command should list its subcommands instead of returning quietly. Something like:
yarn run v1.22.19
$ node dist/cmd/keypair/index.js help
index.js [command]
Commands:
index.js generate Generate a new keypair and save [aliases: gen, new]
index.js public Print public key [aliases: pub, pubkey]
index.js cert Print X.509 certificate [aliases: certificate, x509]
index.js fingerprint Print certificate fingerprint [aliases: fp]
Options:
--version Show version number [boolean]
--help Show help [boolean]
Done in 0.10s.
hermes/src/processors/peersync/index.ts
Line 34 in 5ff719a
Update gRPC message types and add requesting node/host information in it. Additionally, this information should also be logged so the operators can review it.
As hermes processes validations, it should build a local list of validators and serve it via an API endpoint.
hermes/src/processors/peersync/index.ts
Line 41 in 5ff719a
Add a standalone yarn tsc
script that invokes tsc.
Handle these errors thrown by gRPC client connections:
[2] node:events:515
[2] throw er; // Unhandled 'error' event
[2] ^
[2]
[2] Error: 14 UNAVAILABLE: read ECONNRESET
Hermes stores a large number of validation messages locally in it database. There's no easy way to verify signatures for validation messages stored in the db. A command that iterates over the validations and verifies them all would be handy.
npm run validation verify --all
npm run validation verify --from LEDGER_FROM --to LEDGER_TO
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
JS heap out of memory error is thrown when the delta between ledgerIndexMin
and ledgerIndexMax
is large. Review Mongoose driver code.
Requested by Rabbit - One standalone hermes instance connects to a single rippled server only. Sourcing validations from multiple rippled servers can provide better visibility of the network.
setInterval(pollAllPeers, ENV.PEERSYNC_POLL_INTERVAL, peerManager)
in peersync processor would keep starting new connections, even if the previous one is active. Added a lock to ensure there's only one client connection per peer.
This error is replicated in the Hermes environment using CentOS 8. This has also been a reported error with previous Node versions
Fix that was applied and works (for my environment).
Stop PM2
Edit file: /etc/systemd/system/pm2-root.service
Add new line: Environment=PM2_PID_FILE_PATH=/run/pm2.pid
And replace: PIDFile=/root/.pm2/pm2.pid to: PIDFile=/run/pm2.pid
restart PM2
Source: https://stackoverflow.com/questions/62814539/pm2-keeps-getting-killed-every-90-seconds-on-centos-8
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.