Skip to content

Contributing ​

Repository Structure ​

BlockHost is a multi-repo project. The main repo orchestrates submodules:

RepoPurpose
blockhostInstaller, scripts, ISO builder, admin panel
blockhost-engine-evmEVM blockchain engine
blockhost-engine-opnetOPNet blockchain engine
blockhost-provisioner-proxmoxProxmox provisioner
blockhost-provisioner-libvirtlibvirt provisioner
blockhost-commonShared library
blockhost-brokerIPv6 broker
blockhost-monitorHost monitor (in development)
libpam-web3PAM authentication module
blockhost-factsInterface contracts

Before You Start ​

  1. Read the relevant interface contract for the component you're modifying
  2. Understand the architecture and where your change fits
  3. Check existing issues and discussions

Guidelines ​

  • Fix the interface, never wrap the mismatch. If two components disagree, the contract is wrong — not the code.
  • No shell=True. All subprocess calls use argument lists.
  • Validate at the boundary. Trust internal code. Validate external input.
  • Keep it simple. Don't add abstractions for one-time operations. Three similar lines are better than a premature helper.
  • Test with the ISO. The integration test is booting the ISO and running the wizard end-to-end. Unit tests are good; a working system is better.

Adding a New Engine ​

See Building an Engine. The interface contract is in facts/ENGINE_INTERFACE.md.

Adding a New Provisioner ​

See Building a Provisioner. The interface contract is in facts/PROVISIONER_INTERFACE.md.

Security Issues ​

If you find a security vulnerability, please report it responsibly. See Audit Status for what's been reviewed.