Meepo (Meepo-OpenEthereum)
Meepo implementation on OpenEthereum.
MEEPO = Multiple Execution Environments Per Organization. (It is also a legendary hero who can split himself, each one acting independently but relying on together, just like the shards.)
This is an implmentation based on the conference paper: P. Zheng, Q. Xu, Z. Zheng, Z. Zhou, Y. Yan and H. Zhang, "Meepo: Sharded Consortium Blockchain," 2021 IEEE 37th International Conference on Data Engineering (ICDE), 2021, pp. 1847-1852, doi: 10.1109/ICDE51399.2021.00165.
Since Meepo-Geth (Golang) is unable to be open-source because of the copyright, our community provides another implementation (Rust) based on the published paper.
Build and Run (Linux)
- Install Rust v1.51
$ curl https://sh.rustup.rs -sSf | sh
$ rustup override set 1.51
- Build Meepo-OpenEthereum
$ git clone http://github.com/InPlusLab/Meepo/
$ cd Meepo/build/
$ ./debug.sh # or ./release.sh
- Run Node0 (Shard0)
$ cd Meepo/build/
$ ./initrun0.sh
- Run Node1 (Shard1)
$ cd Meepo/build/
$ ./initrun1.sh
- Try anything you want via Web3.js or other Ethereum toolchain. As for benchmark, please see the following.
Benchmark
MeepoBenchmark.
More benchmark scripts, logs, and analytic results can be found in this repo:(32x4=128 machines in maximum, each machine is equipped with 4 vCPU, 32 GiB memory, and 894 GiB NVME disk, 102400 accounts per shard, 100000000+ transactions to an ERC20-like contract.)