Stakers and Workers

NuCypher staking operations are divided into two roles - “Staker” and “Worker”. The Staker can be thought of as a fiduciary administrator that holds NU and collects rewards. The Worker is bonded to a Staker and performs work on behalf of the Staker.

Staker Overview

A nucypher staker is a holder of NU and manager of one or more stakes. NU is an ERC-20 token that underpins the network. Stakes are initiated by locking NU into the “Staking Escrow “ contract for a fixed duration of time. Staked NU earns two income streams: inflation rewards (NU) and policy fees (ETH). Staked NU gradually unlocks with each completed period (7 days), depending on re-stake and wind-down configuration options.

Active network participation (work) is delegated to a Worker node through bonding. There is a 1:1 relationship between the roles; One Staker to one Worker. A Staker controls a single Ethereum account and may have multiple substakes, but only ever has one Worker bonded at a time. To ensure the integrity of the network and its service quality, staked NU can be slashed due to misbehaviour, deliberate or unintentional, by the corresponding worker.

Worker Overview

Worker - (aka “Ursula”) Active network participant who carries out threshold cryptography operations.

The Worker is the bonded delegate of a Staker and an active network node, performing work on behalf of a Staker. Workers must remain online to provide uninterrupted services on-demand, signalling their availability with a commitment transaction before the start of each period (every 7 days), which costs approximately 200k gas.

Staker and Worker Delegation

There are several strategies for running and maintaining a stake:

  • Delegate custody of NU and work to a third-party custodian (Staker Delegation).

  • Delegate work via a staking pool or Node-as-a-Service provider (Worker Delegation).

  • Control the Staker yourself and run your own worker (Self Directed).

Here is a simple heuristic to help decide on a course of action:

../_images/running_a_node_decision.svg