Docs
Protocol
Kalyx is a proof-of-stake chain with two layers that have to agree. The execution layer holds accounts, balances, and transactions. The beacon layer holds the validator set and decides whose turn it is to propose. A block you can look up in the explorer is a turn that made it into the execution record.
A slot is a turn
On this testnet a slot is about ten seconds. The beacon assigns that slot to one validator, using the stake behind the key, not a race to hash a number. There is no miner.
On its turn the validator proposes one block: the beacon’s record of the turn, and the execution payload of transactions. Other validators attest to what they saw. If the proposer misses the turn, the slot stays empty. It does not become a block later. The explorer can show the beacon ahead of the latest execution block when that happens.
An epoch is eight turns
Eight slots make an epoch, about 80 seconds. Rewards, penalties, and the activation queue are counted in epochs. Finality is slower than the head, on purpose. A young chain can be ahead of the last finalized epoch. Seeing a recent block does not mean that block can never be reorganized. Waiting for finality is the stronger claim.
A new validator does not jump the queue by asking. At most 8 new validators activate in one epoch. One deposit is not instant. A crowd is slower.
Weight is stake
| On this chain | |
|---|---|
| Chain id | 21520 |
| Fork version | 0x10000038 |
| Genesis supply | 500,000,000 KALYX, 18 decimals |
| Genesis validators | 2 |
| Block gas limit | 30,000,000 |
| Max counted stake | 40,000 KALYX per key |
| Ejection | 20,000 KALYX |
One key counts at most 40,000 KALYX. A new key has to deposit that full amount before it can enter the active set. A smaller payment does not take its place. If the counted stake falls to 20,000 KALYX, the chain can eject the key. Signing two different things at the same height is how a key gets punished. The beacon stores stake in gwei. One KALYX is 1,000,000,000 gwei.
The two keys created with the chain already have their stake. They are ordinary stake. No model is signing them.
The signatures, in one paragraph
A validator signs with ML-DSA-87. The public key is 2,592 bytes. The signature is 4,627 bytes. There is no classical signature beside it. An ordinary account may still sign with XMSS, and that scheme is stateful: one leaf, one signature. The full account of both schemes is on the signatures page.