Node operators guide
Last updated
Last updated
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.
With a web browser, navigate to: https://app.ether.fi/
Connect your wallet top right button:
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.
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:
Click to select the encrypted validator key file you just downloaded.
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.
Enter the password you used in that same step
Click and “Select save path”
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
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.
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
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