Intro
With frxETH V2, you can borrow ETH using your validators as collateral, while simultaneously earning normal ETH staking rewards (inc. MEV). For every validator deposited, you earn up to 24 ETH of borrowing credit (75% LTV), subject to ETH availability in the protocol. Future governance votes, on a case-by-case basis for trusted parties and depending on exit queue conditions, may raise the allowance up to 30 ETH of credit per 32 ETH deposited. You can freely withdraw this borrowed ETH, or use it to spin up even more validators. The borrow APR varies depending on supply and demand, and new ETH becomes available as more users mint frxETH and pay interest on loans. Full docs here.
All deposits go through a ValidatorPool contract that you create and control. This contract also serves as the withdrawal address for the validators and any pertinent rewards. If your borrow position becomes unhealthy due to validator slashing and/or overborrowing, a permissioned Beacon Oracle bot can force exit validator ETH back into this contract and forcibly repay any loans. Any excess amount left over afterwards can be withdrawn by you.
Right now, you must presign a validator exit message for each validator you deposit. This serves as your collateral. This message will be securely custodied offchain by the protocol. In the unlikely case of a breach, all the attacker would be able to do is grief exit validators from the Beacon Chain back into your ValidatorPool. No actual funds would be lost, and only you could recover your staked ETH from the contract. In the future, if/ when EIP-7002 is implemented, this custody step can be eliminated (for newly created ValidatorPools) as the ValidatorPool contract itself could request Beacon chain exit(s) (triggered either by you, or by a permissioned system liquidator bot).
A protocol-controlled Beacon Oracle bot monitors the Beacon Chain for validator health, as well as checks deposits and borrowing allowance. It also handles liquidations if a position becomes unhealthy.
Guide
Go to https://app.frax.finance/frxeth/v2. Click “Create New Validator Pool”, execute the message, then wait approximately 15 minutes. When done, click on your new pool in the “Your Validator Pools” table. You can have as many Validator Pools as you want, each holding as many pubkeys as you want. There is no benefit other than for your organization or risk/liquidation containment. Each Validator Pool has its own LTV and borrow allowance and this is not shared with other Validator Pools owned by the same address.
Generate your keys and spin up your validators. If they are not running, you may miss blocks / attestations in-between future steps. Click “Add Validator”
Enter your pubkey, validator signature, and deposit data root. There are many programs you can use, such as ethdo. The script used to generate this information must match the amount of ETH you plan to deposit. The amount must be an integer between 1 and 32 ETH inclusive.
If you plan to borrow to complete a validator, you must deposit at least 8 ETH for your very first one. In the future, you can deposit 1 - 31 ETH depending on your borrow allowance.
Otherwise, deposit 32 ETH. You will earn 24 ETH credit later which you can either withdraw freely or use to spin up additional validator(s).
Wait for the validator to enter the Beacon Chain. Estimated wait times are here. You can monitor your validator with https://beaconcha.in/
Under the “Your Validators” section, find your pubkey and click the “Escrow” button. Using ethdo or a similar script, generate a pre-signed exit message for your validator, then enter the details here. Wait approximately 20 minutes for the Beacon Oracle bot to register the escrow.
If you deposited 32 ETH in Step 3, you can skip this step. Otherwise, you will now need to complete your deposit with borrowed ETH. Generate a deposit message for the remaining ETH needed (32 - <what you put in step 3>) and make sure the “Finalize deposit by borrowing” switch is on. Click “Deposit”, then execute the message. Wait approximately 15 minutes.
You should now have some borrow credit, unless you borrowed the max to complete the validator in Step 6.
Click on the Borrow tab. You should now be able to borrow ETH, subject to availability. In this example, there is only 0.9966 ETH free in the system for you to borrow. As more frxETH is minted, and users pay interest, more ETH will become available.
Click on the Repay tab. Here you can repay your loan with ETH from your wallet, ETH sitting in your ValidatorPool contract, or a combination of both.
Click on the Withdraw tab. Assuming all of your loans are repaid, you can withdraw any ETH remaining in the ValidatorPool contract.