-
Notifications
You must be signed in to change notification settings - Fork 10
Description
We've been iterating rapidly, which has led us to rely on dependencies we can now remove. This change will enable faster compilation times, more hardened codebase, and lower resource usage.
My initial thoughts would be to create a tiny core
process for the consensus client with extremely minimal dependencies that's separate from the wallet service.
-
Dropping dependencies: reqwest, jsonrpsee and tokio which have large dependency trees. We can replace these with a tiny RPC server and client. No large dependencies such as TLS stack ... etc (if such functionality is desired, they could throw it behind a proxy).
-
Lock-free: The
core
process should be almost entirely lock-free and single-threaded except for the block fetcher. This can be achieved with a single reader/writercore
process. If higher throughput is desired (e.g. if you're running a public facing server), multiple readercore
processes can be launched usingSO_REUSEPORT
, letting the Linux kernel balance load across them (inspired byknot
resolver design). Removing locks and tokio should greatly simplify the codebase. -
Spaced: The
spaced
process can handle launching bothspaces_wallet
andspaces_core
as child processes.