Skip to Content
PluginsFrax Ether V2

Frax Ether V2

Frax Ether V2 is the second-generation liquid staking system from Frax Finance. Users deposit native ETH and receive either frxETH (a 1:1 ETH receipt token) or sfrxETH (an ERC4626 vault share that accrues staking yield over time). The yield comes from validators operated by the Frax protocol; staking rewards accrue to sfrxETH holders.

Supported chains: Ethereum Mainnet only. The V2 minter contract lives at 0x7Bc6bad540453360F744666D625fec0ee1320cA3. The frxETH and sfrxETH token addresses are unchanged from V1; only the minter and redemption queue are V2-specific. Read-only actions work without credentials. Write actions require a connected wallet and native ETH value.

Actions

ActionTypeCredentialsDescription
Mint frxETHWriteWalletDeposit native ETH and mint frxETH 1:1 to the sending address
Mint frxETH to RecipientWriteWalletDeposit native ETH and mint frxETH 1:1 to a different recipient
Mint and Stake into sfrxETHWriteWalletMint frxETH and immediately stake it in sfrxETH in one transaction
Check Mint Pause StatusReadNoRead whether minting is currently paused on the V2 minter

Mint frxETH

Deposit native ETH and mint frxETH 1:1 to the sending address.

Inputs: None (the native ETH value sent with the transaction IS the input)

Outputs: none (minted frxETH is delivered to msg.sender)

When to use: workflows that need to convert native ETH into a liquid staking receipt token without immediately staking it. The frxETH can later be staked into sfrxETH, swapped on a DEX, used as collateral, or transferred.


Mint frxETH to Recipient

Deposit native ETH from the sender and mint frxETH 1:1 to a separate recipient address. Useful for treasury operations where the funding account differs from the holding account.

Inputs:

InputTypeDescription
recipientaddressAddress that will receive the minted frxETH

Outputs: none (minted frxETH is delivered to the recipient address)

When to use: funding a multisig or sub-account with frxETH from an operational wallet, distributing frxETH to a beneficiary, or routing minted frxETH directly to a yield strategy contract.


Mint and Stake into sfrxETH

Mint frxETH and immediately deposit it into the sfrxETH ERC4626 vault in a single transaction. Returns the amount of sfrxETH shares received.

Inputs:

InputTypeDescription
recipientaddressAddress that will receive the minted sfrxETH shares

Outputs:

OutputTypeDescription
sharesuint256sfrxETH Shares Received (wei), 18 decimals

When to use: the most gas-efficient way to go from native ETH to yield-bearing sfrxETH. Skips the intermediate frxETH transfer and the separate vault deposit transaction.


Check Mint Pause Status

Read whether minting is currently paused on the Frax Ether V2 minter.

Inputs: None

Outputs:

OutputTypeDescription
pausedboolTrue if minting is paused, false if mints are accepted

When to use: as a gate in scheduled workflows so a mint action only runs when the contract is unpaused. Useful for resilient automation that should self-suspend during contract maintenance windows.


Testing Without Risking Real ETH

Frax Ether V2 has no testnet deployment. The V2 minter contract lives only on Ethereum mainnet, so the only way to exercise the write path (mintFrxEth, mintFrxEthAndGive, submitAndDeposit) end-to-end without spending real ETH is against a local mainnet fork.

One-shot smoke test

A scripted smoke test broadcasts a real mintFrxEth against forked mainnet bytecode and asserts the 1:1 frxETH mint. Recommended whenever upgrading the plugin, the ABI, or the dispatching layer.

In one terminal, start anvil with your mainnet RPC:

docker run --rm -p 8545:8545 ghcr.io/foundry-rs/foundry:latest \ "anvil --host 0.0.0.0 --fork-url <YOUR_MAINNET_RPC_URL>"

In another terminal, run the smoke test:

pnpm tsx scripts/frax-ether-v2-fork-test.ts

The script uses one of anvil’s pre-funded test accounts, mints 1 frxETH, and prints a PASS line on success.

Driving the UI against the fork

For end-to-end UI testing, point your local dev server at the same fork by overriding the Ethereum mainnet RPC URL:

CHAIN_ETH_MAINNET_PRIMARY_RPC=http://localhost:8545 pnpm dev

Any wallet you connect must be funded on the fork (use one of anvil’s pre-funded private keys, or anvil_setBalance via cast). Workflows that target chain ID 1 will then hit the forked bytecode instead of real mainnet.

Why no testnet entry in the plugin

Adding a Sepolia or Holesky chain ID to the plugin would require a contract address. Frax did not deploy the V2 minter on any public testnet (verified against the official frxETH V2 addresses page and Sepolia and Holesky block explorers), so any address added would be fabricated and would revert on first call. The fork pattern above is the supported substitute.