Secure and analyze your blockchain network
Like the multi-stepped pyramids of antiquity, Ziggurat stands to provide multiple layers of stability for your peer-to-peer network. By reverse-engineering the network protocol and using lightweight "synthetic" nodes, Ziggurat provides blockchain node developers with the foundation of reliability, performance, and scalability needed to realize their true potential.
Our coverage so far includes ZCash, Aleo, Algorand, and the XRP Ledger. More are on the way. The table below illustrates whether a network is covered (💚), WIP (🚧), or not covered (❌)
Spec Conformance | Input Fuzzing | Network Crawler | Bad Actor Modeling | Network Visualization | Performance Benchmarking | |
---|---|---|---|---|---|---|
ZCash | 💚 | 💚 | 💚 | 💚 | 💚 | 💚 |
XRP Ledger | 💚 | 💚 | 💚 | 💚 | ❌ | 💚 |
Algorand | 💚 | 💚 | ❌ | 💚 | ❌ | 💚 |
Bitcoin | ❌ | 💚 | ❌ | ❌ | ❌ | ❌ |
The Graph | ❌ | 💚 | ❌ | ❌ | ❌ | ❌ |
Ziggurat started with the three single-node layers of testing - Conformance, Performance, and Resistance (CPR). However, we are now exploring (and in some cases performing) network-wide analysis and testing.
The CPR test suite has become a staple of any Ziggurat implementation:
- Conformance to the network specification
- Does a network spec exist?1
- Do all clients exhibit the same networking behavior?
- Do any inconsistencies cause incompatibility between clients?
- Performance under scale
- Does your node experience slowdowns under increased load?
- ...heavy load? Very heavy load?
- What factors of your node's engineering lead to performance bottlenecks?
- Resistance to bad actors.
- How does your node respond to unexpected messages?
- Does your node inadvertendly allow malicious or unexpected behaviors?
- Network Crawler
- How many nodes are running on your network?
- How many are running well?
- What versions of clients and network protocols are out there?
- What other analytics can we gather from the peer-to-peer network?
- Data analytics and visualization
- Data flow for network analysis: IPS and network visualization
Ziggurat is compatible with networks at any phase of deployment. For example - the CPR tests can be run during development or pre-deployment, and the network-wide tests can be run on devnet, testnet, or even mainnet.
- Piotr Olszewski @asmie
- Kyle Granger @kylegranger
- Karlo Mardešić @Rqnsom
- Niklas Long @niklaslong
- Łukasz Jędrzejczyk @ljedrz
- Łukasz Wojtów
- Jonathan Andersson @zeapoz
- Muzamil Sofi @muzam1l
- Jani Anttonen @JaniAnttonen
- Daniel Vladco @danielvladco
- Mark Henderson @aphelionz
- Mirko von Leipzig @Mirko-von-Leipzig
Feedback and contributions from the open source community are welcome. If you have any queries, you can open an issue in the relevant repository and our team will take it from there.
For more information see CONTRIBUTING.md
Footnotes
-
Sometimes, the Ziggurat test suite becomes the de-facto networking spec ↩