-
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
coreprocess should be almost entirely lock-free and single-threaded except for the block fetcher. This can be achieved with a single reader/writercoreprocess. If higher throughput is desired (e.g. if you're running a public facing server), multiple readercoreprocesses can be launched usingSO_REUSEPORT, letting the Linux kernel balance load across them (inspired byknotresolver design). Removing locks and tokio should greatly simplify the codebase. -
Spaced: The
spacedprocess can handle launching bothspaces_walletandspaces_coreas child processes.