A permissioned network allows only specified nodes and accounts to participate by enabling node permissioning and/or account permissioning on the network.
Permissioning is not Privacy
In peer-to-peer networks, node permissioning enforces rules on nodes you control.
Permissioning requires a distributed network of trust across the network where participants agree to follow the rules. A single bad actor can decide not to follow the rules. Nodes can take action to prevent the bad actor adding to the chain but they cannot prevent the bad actor from allowing access to the chain.
Besu also implements privacy.
Use node permissioning to restrict access to known participants only.
Use account permissioning:
- Enforce onboarding or identity requirements
- Suspend accounts
- Blacklist broken contracts
- Restrict the actions an account can perform
Local permissioning affects your node but not the rest of the network. Use local permissioning to restrict use of your node (that is, the resources under your control). For example, customers that can access your node.
Local permissioning doesn’t require co-ordination with the rest of the network and you can act immediately to protect your node. Your rules are not enforced in blocks produced by other nodes.
Onchain permissioning is specified in a smart contract on the network. Specifying permissioning onchain enables all nodes to read and update permissioning configuration from one location.
Onchain permissioning requires co-ordination to update rules. The network may not be able to act immediately (for example, the smart contract may enforce a minimum of votes before changing permissioning rules).
When onchain permissioning is updated, the update is applied across the network and new blocks abide by the updated rules. For example, blocked accounts can no longer add transactions to the chain.
The diagram illustrates when local and onchain permissioning rules are applied.