Algorand
Algorand x Ziggurat
Install / Use
/learn @runziggurat/AlgorandREADME
Ziggurat x Algorand
The Ziggurat implementation for Algorand's algod nodes.
Prerequisites
Ziggurat is written in stable Rust; you can install the Rust toolchain by following the official instructions here.
Getting started
Preconditions
- Clone this repository.
- Build go-algorand from source.
- Run the setup script:
tools/setup_env.sh
In case algorand files are installed in a specific location, export that location to the ALGORAND_BIN_PATH
environment variable and rerun the setup script:
export ALGORAND_BIN_PATH="$HOME/node" # example path
tools/setup_env.sh
Run tests
Run conformance and resistance tests with the following command:
cargo +stable test
Run performance tests
Consult the performance tests readme for details on running these tests.
Test Status
Short overview of test cases and their current status. In case of failure, the behaviour observed is usually documented in the test case.
These results were obtained by running the test suite against Algorand v3.12.2-stable (181490e3).
| Legend | | | :----: | ------------- | | ✓ | pass | | ✖ | fail | | - | unimplemented |
Conformance
| Test Case | Algod | Additional Information | | :-------------------------------: | :----: | :-------------------------------------------------------------------------- | | 001 | ✓ | | | 002 | ✓ | | | 003 | ✓ | | | 004 | ✓ | | | 005 | ✓ | | | 006 | ✓ | | | 007 | ✓ | | | 008 | ✓ | | | 009 | ✖ | The PingReply handler doesn't exist anymore in the go-algorand codebase | | 010 | ✓/✖ | Only BlockAndCert request is supported, other type requests are unsupported | | 011 | ✓ | | | 012 | ✓ | | | 013 | ✓ | |
Performance
| Test Case | Algod | Additional Information | |:---------------------------------:| :----: | :-------------------------------------------------------------------------- | | 001 | ✓ | | | 002 | ✓ | |
Resistance
| Test Case | Algod | Additional Information | | :-------------------------------: | :----: | :----------------------------------------------------------------------------------------- | | 001 | ✖ | The node doesn't reject the connection in case a small amount of random data is sent | | 002 | ✓/✖ | The procedure accepts sometimes invalid requests (should be improved) | | 003 | ✖ | The node doesn't reject the connection in most scenarios | | 004 | ✓/✖ | The node won't reject the connection for enormously long and invalid messages |
