2.7 KiB
2.7 KiB
id | title |
---|---|
ideas_for_implementation | Ideas for Implementation |
- Create devp2p and an abstraction to allow for libp2p, Node Discovery, RLP encoding, Modified Patricia Merkle Tree, bigint's, keccak256, and secp256k1.
- Create an abstraction that would allow sub-protocols: ETH, SHH, PSS, Swarm, LES, Stateless Clients, Sharding, Plasma, State Channels. For now, we can ignore all but LES and Sharding.
- DB: Most implementations of Ethereum use LevelDB. Parity has a DB abstraction and uses HashDB and RocksDB.
- RocksDB is an interesting choice, because it solves the issues that have troubled leveldb. Rocksdb also has a light version for mobile usage; it's in C++, which would be an issue only if we go for pure C.
- EVM: basic VM, eWASM (Hera is also in C++)
- IPC/RPC abstraction, external API methods that can be consumed by application bindings: react-native module, IPC, RPC HTTP server, or web sockets
- Encryption library is a little unclear. Libgcrypt has everything we need but might be problematic from the standpoint of LGPL licensing. If we have an abstraction for Libgcrypt, we could use it now and swap it out later for something more permissive.
- Alternatively, we could roll out our own library. However, implementing our own encryption would not be a great idea, and our version would have to be audited and tested. Suggestions are welcome.
- Monitor ethereum/py-evm. Connect with Chang-Wu Chen, Hsiao-Wei Wang, and anyone else working on sharding.