你好朋友!
As previously mentioned, I’ve been working to add a mimblewimble extension block to the LTC protocol. The plan has been to use the Grin++ codebase as the starting point, which we could build on to support LTC in a way that allows us to easily merge in future Grin++ changes. To support this, a partial redesign of Grin++ was necessary, which will henceforth be named libmw
.
This forum post will briefly describe the design of libmw, and how it will support both Grin and LTC. I will be focusing exclusively on the node logic, and will stay very high-level since everything is subject (and likely) to change. The wallet design will be described separately at a later time.
DESIGN
libwm-core
https://github.com/GrinPlusPlus/libmw-core
Both LTC and Grin will rely heavily on libmw-core
, which will remain protocol-agnostic and serve as the foundation on which the rest of libmw will be built.
libmw-core
will contain:
- Block and transaction models & interfaces
- PMMR (Pruneable Merkle Mountain Range) models and logic
- Cryptography (secp256k1-zkp, ED25519, aes, blake2b, etc.)
- Networking libraries (Sockets, RPC clients/servers, tor, etc.)
- Common utilities (logging, formatting, json, serialization, etc.)
- Databases (will eventually be split out to libmw-database)
- Chain State (confirmed & candidate chains)
- Transaction Pool
libmw-ltc
http://github.com/GrinPlusPlus/libmw-ltc
This repo will reference all dependencies necessary for the Litecoin implementation of libmw, including libmw-core
.
libmw-ltc
will contain:
- Block, header, and kernel implementations
- Consensus rules
- Block & transaction validation logic
- JSON-RPC APIs
libmw-grin
https://github.com/GrinPlusPlus/libmw-grin
This repo will reference all dependencies necessary for the Grin implementation of libmw, including libmw-core
.
libmw-grin
will contain:
- Block, header, and kernel implementations
- Consensus rules
- Block, transaction, and PoW validation logic
- P2P protocol
- JSON-RPC APIs