Skip to content

Knot ​

You have several keys, and something on Dusk should happen only when enough of them agree. Knot is the check for that. A group lists its members and a threshold, for example 2 of 3. When someone asks for the action, the chain looks at the signatures and decides.

Status: Knot runs on Dusk testnet and isn't audited yet. You can also try it with no chain at all: the Lab, a small app that runs on your machine, has a mock mode with a built-in demo ledger. There is a hosted mock of that Lab at knot.nocturne-standards.org. It is mock mode, testnet only, and not audited yet.

How one action moves ​

Each member signs on their own machine. The Lab helps them sign, but it doesn't decide anything. The Registry and Proposals contracts check the signatures again against the group stored on chain. The book is where the group or proposal lives, and it accepts a write only from the contract that Atlas names for it. Your contract either asks the registry "did enough members sign this?" or receives a call from Proposals once a group has approved it.

Four things to know before you rely on it ​

  1. It's testnet only and not audited yet.
  2. It needs Atlas. The two books accept writes only from the contract that Atlas names for them, and the Atlas id is fixed when a book is built. A missing ATLAS_PIN_HEX fails that build. So a Knot deployment includes an Atlas. Checking a quorum (verify_quorum) doesn't call Atlas, but the group data it reads can only have been written through that Atlas check. Who can change what spells out what that means.
  3. Proposals work for one group per deployment. The deployer picks which group; a proposal for any other group is rejected. Checking a quorum from your own contract works for any group.
  4. Member keys are BLS keys. They aren't wallet keys. The Lab keeps them in its own keystore. More in Integrate.

What you can do with it ​

You want toRead
Run it on your machine in a few minutesQuickstart
Understand groups, proposals and delaysHow it works
Ask Knot from your own contractIntegrate
See who holds which power, and which delay appliesWho can change what
Look up a method, event or signed byte layoutReference
See what is and isn't coveredSecurity and limits
Check a Knot group from a Solidity contractOn DuskEVM (deployed on DuskEVM testnet)

The pieces ​

PieceYou call it?What it keeps
RegistryYesNothing. It checks signatures against the group
Registry bookNoMembers, threshold, delay
ProposalsYesNothing. It runs the approved call
Proposals bookNoProposals and their digests
EncodingFrom your own codeThe bytes everyone signs
LabOn your machineThe keys
WardenOptionalThe wait before an Atlas name points at a new contract
CollectorOptionalProposal files. Never keys

Source: GitHub, Nocturne-Standards/knot. Contract ids: Deployments. Most of Knot is Apache-2.0. The collector is AGPL-3.0-only.