## Tycho Reference implementation of Tycho protocol. ## About Tycho is a high-performance protocol designed for building L1/L2 TVM blockchain networks. By utilizing DAG (Directed Acyclic Graph) for consensus and TVM for parallel execution, Tycho works with high throughput and low latency. - **[Testnet Validators Guide](./docs/validator.md)** ## Development - Install Rust: ```bash curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh ``` - Install dependencies: ```bash sudo apt install build-essential git libssl-dev zlib1g-dev pkg-config clang jq ``` - Install tools: ```bash cargo install lychee cargo-shear cargo-nextest ``` - Test CI locally: ```bash just ci ``` ## Running a Local Network ```bash # Generate zerostate config stub (with optional --force flag): just init_zerostate_config # Generate node config sub (with optional --force flag): just init_node_config # Generate a local network of 3 nodes (with optional --force flag): just gen_network 3 # Start nodes in separate terminals or spawn them with `&`: just node 1 just node 2 just node 3 ``` > [!NOTE] > By default the `dev` profile is used. Use this env to specify a different > profile: > ```bash > export TYCHO_BUILD_PROFILE=release > ``` ## Prebuilt RocksDB By default, we compile RocksDB (a C++ project) from source during the build. By linking to a prebuilt copy of RocksDB this work can be avoided entirely. This is a huge win, especially if you clean the `./target` directory frequently. To use a prebuilt RocksDB, set the `ROCKSDB_LIB_DIR` environment variable to a location containing `librocksdb.a`: ```bash export ROCKSDB_LIB_DIR=/usr/lib/ cargo build -p tycho-cli ``` Note, that the system must provide a recent version of the library which, depending on which operating system you're using, may require installing packages from a testing branch. Or you could build the RocksDB from source manually: ```bash cd /path/to git clone https://github.com/facebook/rocksdb.git cd rocksdb git checkout v8.10.0 mkdir -p build && cd ./build cmake -DWITH_LZ4=ON -DWITH_ZSTD=ON -DWITH_JEMALLOC=ON -DCMAKE_BUILD_TYPE=Release .. make -j16 rocksdb export ROCKSDB_LIB_DIR=/path/to/rocksdb/build ``` ## Contributing We welcome contributions to the project! If you notice any issues or errors, feel free to open an issue or submit a pull request. ## License Licensed under either of * Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or ) * MIT license ([LICENSE-MIT](LICENSE-MIT) or ) at your option.