Oracles are responsible for voting on the new rewards for the StakeWise staked tokens holders and calculating Merkle root and proofs for the additional token distributions through the Merkle Distributor contract.
The IPFS Node is used for pinning Merkle proofs files with the reward allocations.
The Graph Node from the Graph Protocol is used for syncing smart
contracts data and allows oracle to perform complex queries using GraphQL. Either self-hosted (preferred)
or https://api.thegraph.com/subgraphs/name/stakewise/stakewise-<network>
endpoint can be used.
The consensus node is used to fetch StakeWise validators data (statuses, balances). Any consensus client that supports ETH2 Beacon Node API specification can be used:
- Lighthouse
- Nimbus
- Prysm. Make sure to provide
--slots-per-archive-point
flag. See Archival Beacon Node - Teku
- Move to
deploy/<network>
directory
cd deploy/mainnet
- Create an edit environment file
cp .env.example .env
- Create JWT
openssl rand -hex 32 > ../configs/jwtsecret
-
Enable
pushover
alerts indeploy/configs/alertmanager.yml
- Register an account on pushover.
- Create an Application/API Token.
- Add
User Key
andAPI Token
todeploy/configs/alertmanager.yml
file.
-
Run with docker-compose. The docker-compose version must be v1.27.0+.
COMPOSE_PROFILES=besu,lighthouse docker-compose up -d
Keeper is an oracle that aggregates votes that were submitted by all the oracles and submits the update transaction. The keeper does not require any additional role, and can be executed by any of the oracles. It helps save the gas cost and stability as there is no need for every oracle to submit vote.
The execution node is used to submit the transactions on chain. Any of the execution clients can be used:
- Go-ethereum
- Besu
- Nethermind
- Infura (hosted)
- Alchemy (hosted)
-
Make sure keeper has enough balance to submit the transactions
-
Go through the oracle usage steps above
-
Configure keeper section in the
deploy/<network>/.env
file -
Uncomment
keeper
sections in the following files:deploy/configs/prometheus.yml
deploy/configs/rules.yml
-
Run with docker-compose. The docker-compose version must be v1.27.0+.
COMPOSE_PROFILES=besu,lighthouse,keeper docker-compose up -d