Clean-room JAM client implementation in Python
- Python 3.11+ (3.12 recommended)
- Git
-
Clone the repository with submodules:
git clone --recursive https://github.com/chainscore/tessera.git cd tessera -
Run the automated setup script:
./scripts/setup.sh
This script will:
- ✅ Install UV package manager (if not present)
- � Install Python 3.12 (if needed)
- 📥 Initialize and update Git submodules
- 📦 Install all project dependencies
- 🔧 Build native extensions (Rust, MyPyC)
- 🔗 Set up pre-commit hooks
- 💾 Create necessary data directories
-
Run the application:
uv run jam
-
Run tests:
# All tests (unit + integration + vectors) uv run poe tests # Just unit tests poetry run poe tests unit # Test vectors for specific module uv run poe tests vectors --module safrole # Test vectors with tiny spec uv run poe tests vectors --module accumulate --spec tiny
-
Update internal dependencies:
uv run poe update-deps
-
Update dependencies:
uv lock --upgrade
-
Build binary:
uv run poe build
This project uses several external dependencies that are managed as Git submodules:
py-ark-vrf- VRF implementation (uses published ark-vrf crate from crates.io)tsrkit-pvm- PVM toolkittsrkit-asm- Assembly toolkittsrkit-types- Serialization & scrit typing
The repository includes comprehensive test suites as a submodule:
- W3F Test Vectors - Official JAM protocol test vectors
- PVM Tests - Polkavm execution tests
- Trace Tests - State transition trace validation
- Performance Tests - Benchmarking and profiling tools
All submodules are automatically handled by the setup script.
If you prefer to set up manually:
-
Clone with submodules:
git clone --recursive https://github.com/chainscore/tessera.git cd tessera -
Install UV:
curl -LsSf https://astral.sh/uv/install.sh | sh -
Setup:
uv run poe setup
-
Start Dev Node
uv run jam --env envs/40000.env
- Ensure you have Python 3.11+ installed (3.12 recommended)
- Check your Python version:
python3 --version
- Run update-deps:
poetry run poe update-deps
- Update submodules:
git submodule update --init --recursive - Force update:
git submodule update --remote --merge
- Recreate venv:
rm -rf venv && python3 -m venv venv - Reactivate:
source venv/bin/activate
- Clear Poetry cache:
poetry cache clear --all . - Reinstall:
poetry install --no-cache
See guidelines/ for detailed development guidelines:
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests:
poetry run pytest - Submit a pull request
GPL-3.0-only
poetry run poe build./dist/tessera-node --env envs/40000.env