This repository contains the implementation of The Innovation Game (TIG).
- Quick Start for Benchmarkers
- Quick Start for Innovators
- TIG Documentation
- TIG Whitepaper
- TIG Licensing Explainer
- Implementations vs Breakthroughs
- Voting Guidelines for Token Holders
- tig-algorithms - A Rust crate that hosts algorithm submissions made by Innovators in TIG
- tig-benchmarker - Python scripts for running TIG's benchmarker in master/slave configuration
- tig-binary - A Rust crate that wraps an algorithm from
tig-algorithm
for compilation into a shared object. - tig-breakthroughs - A folder that hosts submissions of algorithmic methods made by Innovators in TIG.
- tig-challenges - A Rust crate that contains the implementation of TIG's challenges (computational problems adapted for proof-of-work)
- tig-protocol - A Rust crate that contains the implementation of TIG's core protocol logic.
- tig-runtime - A Rust crate that execute an algorithm (compiled from
tig-binary
) for a single nonce, generating runtime signature and fuel consumed for verification. - tig-structs - A Rust crate that contains the definitions of structs used throughout TIG
- tig-token - Solidity contract for TIG's ERC20 token that is deployed on Ethereum L2 Base chain
- tig-utils - A Rust crate that contains utility functions used throughout TIG
- tig-verifier - A Rust crate that verifies a single solution or Merkle proof.
TIG docker images are hosted on Github Packages, supporting linux/arm64
and linux/amd64
platforms.
For Innovators who are developing & compiling algorithms, there is a dev
image for each challenge, containing the development environment:
For Benchmarkers to spin up slaves, there is a benchmarker\slave
image along with a runtime
image for each challenge. It is intended that these images are spun up as part of docker-compose-slave.yml
(see this README for more details):
- benchmarker/slave
- satisfiability/runtime
- vehicle_routing/runtime
- knapsack/runtime
- vector_search/runtime
- hypergraph/runtime
For Benchmarkers to spin up a master, there is a series of images that are spun up as part of docker-compose-master.yml
(see this README for more details):
As part of the runtime
and dev
images, there are a bunch of useful scripts available on PATH
:
list_algorithms
download_algorithm <algorithm_name_or_id>
test_algorithm <algorithm_name> <difficulty>
Notes:
- The docker will automatically set a CHALLENGE environment variable used by these scripts
- e.g.
knapsack/runtime
docker will setCHALLENGE=knapsack
- e.g.
- Use
--testnet
option to target testnet
See README for individual folders