The purpose of this document is to explain how the Smoothly Protocol works under the hood and our approach to build a smoothing pool to aggregate and average feeRecipient rewards for home validators.

The reader should be familiar with the concept of events in a smart contract and an understanding of how feeRecipient rewards work in eth2.0.

Introduction

In order to aggregate and average rewards for home validators, we need two main components:

  1. Smart contract, used as the feeRecipient address of all validators.
  2. Operator Node, used as an oracle that monitors and verifies validators and keeps track of their state in the beacon chain.

For this to work, we use events in the smart contract as the primary method for communication between the two.

Furthermore, for the Operator Node to verify and keep track of the validators in the beacon chain, we use a beacon node HTTP API to query for new proposed slots with our feeRecipient address and keep track of the state with a local leveldb database.

Smoothly Pool Contract

The pool is in charge of:

  1. Receive validator rewards as feeRecipient.
  2. Withdrawals.
  3. Exits.
  4. Adding Stake.
  5. Communication with Operator Node via events emited.
  6. Holds entire treasury of the Pool (Eth from insurance deposits and rewards).

Registration

Any validator can join our smoothing pool, in two simple steps:

  1. Change their validators feeRecipient address to our Smoothing Pool contract address.