Official golang implementation of the Canopy Network Protocol
Built on a recursive architecture, chains bootstrap each other into independence —
forming an unstoppable
web of utility and security.
Here you'll find:
➪ A recursive framework to build blockchains.
➪ The seed chain that started the recursive cycle.
For more information on the Canopy Network Protocol visit https://canopynetwork.org
⪢ Canopy is in Alphanet
🚀 ➝ learn more about the road-to-mainnet
➪ Check out the Canopy Network wiki: https://canopy-network.gitbook.io/docs
Welcome to the Canopy Network reference implementation. This repository can be well understood reading about the core modules:
- Controller: Coordinates communication between all the major parts of the Canopy blockchain, like a central hub or "bus" that connects the system together.
- Finite State Machine (FSM): Defines the logic for how transactions change the blockchain's state — it decides what’s valid and how state transitions happen from one block to the next.
- Byzantine Fault Tolerant (BFT) Consensus: A consensus mechanism that allows the network to agree on new blocks even if some nodes are unreliable or malicious.
- Peer-to-Peer Networking: A secure and encrypted communication system that lets nodes talk directly to each other without needing a central server.
- Persistence: Manages the blockchain’s storage — it saves the current state (ledger), indexes past transactions, and ensures fast and reliable data verification.
➪ To run the Canopy binary, use the following commands:
make build/canopy-full
canopy start
➪ To run a Canopy Localnet
in a containerized environment, use the following commands:
make docker/build
make docker/up-fast
make docker/logs
or simply
make docker/up && make docker/logs
➪ To run Canopy unit tests, use the Go testing tools:
make test
➪ Canopy is an open-source project, and we welcome contributions from the community. Here's how to get involved:
- Fork the repository and clone it locally.
- Code your improvements or fixes.
- Submit a Pull Request (PR) for review.
➣ Please follow these guidelines to maintain high-quality contributions:
➪ Before making large changes, discuss them with the Canopy team on Discord to ensure alignment.
- Code must adhere to official Go formatting (use
gofmt
). - (Optional) Use EditorConfig for consistent formatting.
- All code should follow Go documentation/commentary guidelines.
- PRs should be opened against the
development
branch.
Code written by hand with ❤️ by the team, documentation with the help of AI for some of the ESL team