Node operators guide

Web App

Acquire enough ETH to interact materially with etherfi. Connect to ether.fi web application. Once connected, each Node Operator partner will perform a one time registration process.

Web App One-time Registration Process:

  • You should be directed to the Stake tab. As a Node Operator, weโ€™re interested in the Auction actions. Click on Auction tab and Download etherfi desktop app (to generate public private key pairs for secure keystore passing from stakers):

  • This will take you to the following url: https://github.com/GadzeFinance/etherfi-desktop/releases

  • Click Assets and locate the version that best matches your system (linux, mac, windows):

  • Save the file to your machine, Unzip it, double click on the application to run it. You should see an interface like the following on mac [*if you are prevented from opening the application, on a mac go to apple > system preferences > security and privacy and see if โ€œAllow apps downloaded from:โ€ has BOTH app store and identified developers selected; if not, click on the lock, select, lock again]. Click open:

  • You should now be using the desktop application. On the top right, select Node Operator:

  • You should see the Generate Encryption Keys interface. Here weโ€™ll generate and store the keys used to receive and decrypt encrypted validator keys from stakers:

  • Leave keys at 7000 [*in the future, we will have an xpub], select a secure password, select a save path, and click Generate Keys:

  • You should see that youโ€™ve generated a set of publicEtherfiKeystore-.json and a privateEtherfiKeystore-.json files. Click Finish, and you should be able to navigate to your specified directory and see your files.

    • The public keys will be published on ipfs for stakers to use encrypting keystore files.

    • The private keys should be kept safe (backed up, not lost, โ€ฆ); theyโ€™ll be used to decrypt keystore files from stakers.

    • PLEASE BACKUP SAFELY ALL THESE KEYS AND PASSWORD. THEYโ€™RE REQUIRED FOR ACCEPTING STAKING REQUESTS AND DECRYPTING THE VALIDATOR KEYS.

  • We are now done with the desktop application.

  • Return to the web application, select Auction tab, and click the upload space to select your publicEtherfiKeystore file, then click Register Public Keys:

  • If your IPFS upload transaction succeeds, you should now be able to bid in the Node Operator Auction. Enter the number of bids you want to post, and the price per bid in ETH below it. Click Bid now:

  • You should now see your bids posted in the top right panel labeled: โ€œYour Bidsโ€ as well as the larger auction panel โ€œCompeting Bidsโ€. These can be easily cancelled with funds returned as well:

Because this is an auction, if a node operator is not working any bids in the auction contract, they will not receive any stake requests from stakers. Each node operator partner will want to develop, independently or with us, a means for monitoring their bids and keeping bids in the market.

Web App Dashboard

After connecting, youโ€™ll have access to the web appโ€™s dashboard. This dashboard has a view for both stakers and node operators. Select โ€œOperatorโ€:

Node Operator Keys

If you click on โ€œview keysโ€, you can see an array of your public keys published to ipfs. These are the keys stakers use via our protocol to share a secret with a given node operator (you). The numerator is the number of keys used; the denominator is the number of keys you published.

Validators

The panel below shows all your validators with various related metadata:

From this panel you can perform a set of actions. All can be done using checkboxes and the โ€œSelect Batch Actionโ€ drop down or using the three dot menu next to each validator.

Download and Decrypt Validator Keys:

  • Click on the three dots next to the validator youโ€™d like to download the encrypted keys for. Select โ€œDownload Keysโ€:

  • Open the desktop app, select Node Operator, select Decrypt from the menu:

  1. Click to select the encrypted validator key file you just downloaded.

  2. Click to select the private encryption keys you generated here: The goal of this guide is to help our node operator partners connect to our web application, bid on the right to run etherfi nodes, receive keys when they win auctions, decrypt and import keys into their own infrastructure.

  3. Enter the password you used in that same step

  4. Click and โ€œSelect save pathโ€

  5. Click and โ€œDecrypt Validator Keysโ€

You should now have a directory:

And inside this directory you should have two files:

  • The first password file contains the Stakerโ€™s password used to encrypt their validator key with the ethereum staking cli

  • The second is the actual validator key youโ€™ll need to run the validator.

You can inject these details into your backend infrastructure as you see fit.

Skim Rewards

Exit

How to's

Setup MEV Boost with ether.fi.

Running MEV Boost with ether.fi is identical to running it as an operator generally: run mev boost client with some specified relays. Here's a good doc to introduce the technical work and ideas:

The only difference here is that for every validator spun up via ether.fi there is a unique withdrawal contract / address that must be set as the mev recipient. When you download and decrypt your validator keys using either the node-operator-sync-client or the web app dash in combination with the desktop-application, one file included is named node_address.txt: this is the withdrawal safe address that should receive MEV Boost and execution layer tipping rewards.

How to retrieve all validators for a specific bidder address

You can query the subgraph that's been deployed based on the contracts in the protocol, this subgraph tracks events from our contracts and indexes them as entities that's easily queryable.

The subgraph is available at this url to query:

https://api.studio.thegraph.com/query/58515/etherfi-v2-main/version/latest

{
  validators(
    where: {blockNumber_gt: "18620000", bid_: {bidderAddress: "0xB8db44e12eacc48F7C2224a248c8990289556fAe"}}
    first: 1000
  ) {
    id
    validatorPubKey
    etherfiNode
    phase
    bid {
      id
      pubKeyIndex
      status
      bidderAddress
      amount
    }
  }
}

Example result returned

{
  "data": {
    "validators": [
      {
        "id": "0x2fa",
        "validatorPubKey": "0xab040eb244923700e7fdb6392d7821fcf21cefe7b0c1db8ec2a4d13aca087ba2be032b3984c58a49760a934f9e5e7d4b",
        "etherfiNode": "0xe071b35b00a7688622890a250570ce8ac7306bd9",
        "phase": "LIVE",
        "bid": {
          "id": "0x2fa",
          "pubKeyIndex": "41",
          "status": "WON",
          "bidderAddress": "0xb8db44e12eacc48f7c2224a248c8990289556fae",
          "amount": "1100000000000000"
        }
      },

The above query does the following:

  • queries the available bids for where bidderAddress = 0x and status = "WON"

  • retrieves the fields, id, amount, status, bidderAddress, transactionHash and validator on the bid entity

  • retrieves the fields, id, validatorPubKey, etherfiNode, phase on the validator entity

Using the information from this query, you will now be able to navigate to the contract that is deployed as the withdrawal safe and linked to this validator. Take the etherfiNode address from the results, and contract an etherscan address for example "https://etherscan.io/address/0xYZ#beaconchain" where 0xYZ will be the etherfiNode address, here is an example: https://etherscan.io/address/0x8cf11129966aad63334a3d8f69f98447c089d2db#beaconchain

You can now also view the validator on the https://beaconcha.in/ explorer by taking the validatorPubKey value from the result returned by the query above and navigating to it by constructing a url like so, where the 0x is removed from the validatorPubKey value: https://beaconcha.in/validator/XXX so you'll get to https://beaconcha.in/validator/80000001677f23a227dfed6f61b132d114be83b8ad0aa5f3c5d1d77e6ee0bf5f73b0af750cc34e8f2dae73c21dc36f4a

Last updated