3.1 KiB
Lux Style Guide
The conventions are shared across the estate and live in one place:
hanzoai/styleguide — commits, naming, comments, architecture, TypeScript, Go, whitespace.
Read those first. They are brand-neutral on purpose and they govern this org unchanged. Nothing on this page repeats them; a rule written twice becomes two rules the day one copy is edited.
What follows is only what is different about Lux.
Names and addresses
| GitHub orgs | luxfi, luxcpp, luxfhe, luxgpu, lux-private |
| Container registry | ghcr.io/luxfi |
| Network | lux.network |
| Code licence | BSD 3-Clause, Lux Industries Inc. |
lux-private holds the patented GPU kernels. Never publish a Lux image to
another org's registry, and never show the Hanzo or Zoo mark on a Lux surface.
Dependencies
Use the luxfi packages. Not go-ethereum, not ava-labs. Where a fork
exists it exists because the upstream did not do what the protocol needs, and
importing the upstream beside it gives one binary two implementations of the
same thing.
Go modules stay at v1. Bump the patch from the last published patch. A
major bump changes the import path, so it is a migration of every caller, never
a version number you reach for because the diff felt large.
Nomenclature
Lux terms only. The consensus is Quasar — Photon, Wave, Focus — with a triple seal over BLS, Pulsar and ML-DSA-65. It is not Tendermint, it is not a Snow derivative wearing a new name, and describing it in another protocol's vocabulary makes a reader look for guarantees it does not offer and miss the ones it does. The same holds for the network model: Lux has its own words for its own structures, and borrowing a neighbouring chain's is how a design gets attributed to the wrong ancestor.
Pulsar is the post-quantum threshold signature. Ringtail is dead.
Network identity
The primary network ID is fixed by convention — 1 mainnet, 2 testnet, 3 local, 1337 localnet — and a sovereign L1 sets its own primary network ID equal to its EVM chain ID, so one ID per environment per L1 and no wallet or tool has to disambiguate.
C-Chain is the Lux primary network's EVM and nothing else runs on it. Every other network has its own. A chain that needs C-Chain in order to boot is wired wrong.
Operations
Drive the node with the CLI. lux has a command for every lifecycle step;
signalling luxd directly skips the bookkeeping the CLI does around it and
leaves state the next command does not expect.
Never use EWOQ keys. They are the public test keys — anything they hold is anyone's.
Papers, proofs and audits
LaTeX, in papers/, proofs/, audits/. Never Markdown — this work is
typeset, and a format that cannot set an equation is not a format for it.
Proposals are LPs, in luxfi/lps.
Dates
Lux began in December 2019. A commit or document dated earlier is either wrong or is upstream history carried in by a fork.
Licence
MIT OR Apache-2.0, per HIP-0137.