Puffer

Puffer is a Liquid Restaking Protocol for ETH and pufETH

Puffer is an Ethereum liquid restaking deposit flow where native ETH mints non-rebasing pufETH at the displayed exchange rate. Connect an Ethereum wallet, review the pufETH quote, submit one deposit transaction, confirm the token balance, and exit through Puffer into WETH before unwrapping it to native ETH.

Standard redemption starts at 0.01 pufETH and allows up to 14 days when validator liquidity must return.

The ETH-to-pufETH Deposit Walkthrough

One Ethereum transaction deposits native ETH into Puffer and mints pufETH to the connected wallet, provided the wallet is on Ethereum Mainnet and holds gas.

Wallet and Network Setup

Ethereum Mainnet uses chain ID 1, and every deposit pays network gas in ETH. Select the connected account before entering an amount, because the app sends pufETH back to that wallet. MetaMask, WalletConnect, and a Ledger-backed account all expose facts before approval: selected network, sending address, transferred amount, destination contract, and estimated gas, even though their confirmation layouts differ across devices and browsers. An Ethereum address occupies 20 bytes and displays as 40 hexadecimal characters after the 0x prefix. Matching the first and last characters across the app and wallet avoids recording a different account. Keep enough unstaked ETH for the deposit transaction.

Deposit Quote and Signature

Native ETH needs zero ERC-20 approval transactions. Enter the amount, wait for the pufETH quote, and read both directions of the exchange rate. The receive field states the shares expected from the deposit; it does not promise an equal token count because protocol assets and supply change the rate.

Before Signing

The wallet request should show one ETH value transfer to the Puffer staking contract and a separate gas estimate. ETH uses 18 decimal places, and 1 ETH equals 10^18 wei, so the wallet signs an integer-denominated value even when the interface shows a decimal. The account, network, and amount should match the deposit details. A fresh quote after an extended pause is more useful than an old browser value.

After Inclusion

After inclusion, the deposit screen should refresh the pufETH balance. Wallet token lists sometimes lag, so the receipt and onchain balance provide firmer confirmation. The decisive record is the 18-decimal pufETH balance.

Why Is the pufETH Amount Lower Than the ETH Deposit?

One non-rebasing pufETH balance represents a changing claim on ETH, so the deposit quote reflects the protocol exchange rate rather than a permanent one-to-one mint.

pufETH follows the ERC-20 token interface and ERC-4626 vault accounting, inspired by Compound's cToken share design. Its wallet quantity stays fixed between transfers, deposits, and redemptions. Rewards accrue inside the underlying pool, so each share represents a different ETH amount as the rate changes. The durable formula divides deposits plus rewards minus penalties by the pufETH supply. Four ledger values therefore determine ETH per pufETH. The reverse quote, pufETH per ETH, tells the depositor how many shares the entered ETH amount mints.

The initial conversion rate was 1 ETH per 1 pufETH, but that inception figure is not a standing quote. Read the app's receive field as a share calculation, then preserve the rate direction beside the amount. A smaller pufETH count can still represent the full deposited value at the displayed ETH-per-pufETH rate.

Confirmation Record for the New Position

Three records are enough to confirm a Puffer deposit: the wallet address, the final transaction hash, and the new pufETH balance shown after inclusion on Ethereum.

A wallet popup confirms intent, while an Ethereum receipt confirms execution. Treat the position as established only after the receipt succeeds and the ERC-20 balance belongs to the same address.

A transaction hash is 32 bytes, normally displayed as 64 hexadecimal characters after 0x. Record it with the sending address; those two values separate the deposit transaction from later wallet activity. Etherscan or an Ethereum RPC can show whether the receipt succeeded, the block included it, and the Puffer contract recorded the mint at the connected wallet address without relying on cached interface data. The wallet's token view may need a manual pufETH import, but importing a token changes only display metadata. It does not create the balance or alter the confirmed ERC-20 units under that exact account.

One-Step and Two-Step Redemption Modes

Two withdrawal modes turn pufETH into WETH: a one-step route charges 1%, while a two-step route charges 0% and uses a delayed claim inside the Puffer app.

The one-step mode completes in one transaction and sends WETH to the connected wallet from Puffer's liquidity vault. Its 1% protocol fee applies to the withdrawn amount. Review the displayed WETH output before signing, because this route exchanges a defined fee for immediate onchain completion rather than creating a claim.

Puffer's two-step withdrawal sets a 0.01 pufETH minimum, charges no protocol fee, and allows up to 14 days when validator liquidity must return. The standard route starts with one offchain Permit signature, which costs zero gas because it is not a transaction. One onchain transaction then creates the request, and a second onchain transaction claims WETH after the withdrawal batch finishes.

Available vault liquidity shortens the standard path. When liquidity must return from validators, each voluntary validator exit releases a 32 ETH stake into the protocol process. Choose one-step when same-transaction WETH matters enough to accept 1%; choose two-step when a delayed claim and two gas-paying transactions fit the plan.

How Do You Finish With Native ETH?

One additional Ethereum transaction unwraps WETH into native ETH after Puffer redemption, leaving the same amount before network gas because WETH is backed one-to-one by ETH. The redemption itself ends with WETH, even when the final goal is native ETH. Use the wallet's unwrap function or call WETH withdrawal through a trusted interface. The transaction burns the selected WETH units and credits matching native ETH to the same account. Gas is paid separately in ETH, so retain enough ETH to submit this final transaction.

Withdrawal Claims and Batch Completion

Two onchain transactions complete a standard Puffer withdrawal: one creates the request, and a later transaction claims WETH after the batch becomes ready for settlement.

The Permit signature authorizes the request without becoming an Ethereum transaction, so it adds zero network gas by itself. The request transaction transfers the selected pufETH into the protocol and places it in a withdrawal batch. During that period, the wallet's pufETH balance falls before WETH arrives. The pending request therefore becomes the position record. Once Puffer marks the batch complete, the Withdrawal Claims view enables the final transaction. That claim converts the processed amount and transfers WETH to the connected Ethereum address.

Keep the original request hash until the claim succeeds. A browser refresh or wallet reconnection does not erase the request, because its state resides in Puffer's contracts. Reconnect the same address, open Withdrawal Claims, and compare the requested amount before submitting the final claim transaction.

Deposit and Redemption Edge Cases

Eighteen decimal places govern ETH, WETH, and pufETH display precision, while wallet interfaces round visible balances and contracts retain the full integer amounts for accounting.

Rounding explains why the final displayed digits can differ between a quote and a wallet view. The contract accounts in base units, while each interface chooses how many decimals to show. Switching accounts after depositing creates another common mismatch: the minted pufETH remains with the original sending address. Reconnect that address before concluding the balance is absent. A confirmed transfer to another Ethereum address also moves the redemption right, because pufETH is a fungible ERC-20 share.

pufETH obtained through Uniswap, Curve, or Balancer remains eligible for the same Puffer withdrawal modes once it sits directly in the connected wallet. A balance committed to a liquidity position must return to the wallet first. For a standard request below 0.01 pufETH, select the one-step mode only when the app shows sufficient liquidity, or wait until the wallet balance reaches the 0.01 pufETH minimum.

Common questions

Can a hardware wallet sign a Puffer ETH deposit?

Yes, a hardware wallet can sign a Puffer ETH deposit through a compatible Ethereum wallet interface. A Ledger account exposed through MetaMask still shows the sending account, chain ID 1, ETH value, and gas estimate before signing. The device authorizes the same single onchain deposit transaction. Confirm the selected account and transaction value on both screens, because the minted pufETH returns to the address used for the deposit.

Does native ETH need an approval before minting pufETH?

No, native ETH does not require an ERC-20 approval before Puffer mints pufETH. ETH is transferred as the value of the staking transaction, so the deposit path uses zero token-approval transactions and one onchain deposit transaction. This differs from depositing an ERC-20 asset, where an allowance or Permit may be required. The wallet still displays a gas estimate paid in ETH, and the pufETH balance appears after the deposit transaction succeeds on Ethereum Mainnet. No offchain Permit signature is necessary for this native-asset path.

What is the smallest ETH amount Puffer accepts for a deposit?

Puffer accepts any ETH amount for staking, rather than imposing the 32 ETH validator requirement on depositors. The account must still retain enough native ETH for gas, and the entered amount must fit the wallet interface's display precision on Ethereum. A very small deposit can be uneconomic when network gas approaches the amount being staked. The separate 0.01 pufETH minimum belongs to standard withdrawals, not ETH deposits.

How much ETH should remain in the wallet for network gas?

Keep enough ETH to cover the wallet's displayed gas estimate plus a small margin for base-fee movement before inclusion. Puffer does not set that network charge; Ethereum calculates it from gas used, the block base fee, and the priority fee selected by the wallet. Because the value changes with network conditions, there is no durable ETH amount to reserve. Reducing the deposit until the wallet shows a comfortable remaining balance prevents the stake from consuming the funds needed for later transactions on Ethereum.

Can pufETH bought elsewhere use the same redemption flow?

Yes, pufETH acquired elsewhere uses the same Puffer redemption path because ERC-20 units are fungible regardless of acquisition route. The wallet must hold the tokens, connect on Ethereum Mainnet, and satisfy the selected withdrawal mode's conditions. A standard withdrawal requires at least 0.01 pufETH, while the one-step mode uses available liquidity and charges 1%. If the tokens sit inside another DeFi position, return them to the wallet before opening redemption.

What happens if the wallet hides pufETH after a confirmed deposit?

Importing the pufETH token view restores the display when a confirmed balance is hidden. First check the successful Ethereum receipt and the connected address, then add the pufETH contract as a custom token if the wallet did not discover it automatically. The token uses 18 decimals, and its contract is also the PufferVault share contract. Importing only adds display metadata; it neither mints tokens nor moves them. A zero balance after importing points to the wrong account, network, or an unfinished transaction on Ethereum Mainnet.

Where does WETH appear after a completed Puffer withdrawal?

WETH appears as an ERC-20 token balance in the connected account after a completed Puffer withdrawal. Some wallets show it automatically, while others require a manual token import before the balance becomes visible. The one-step route transfers WETH in its single transaction; the standard route transfers WETH when the later claim transaction succeeds. Native ETH appears only after a separate WETH unwrap transaction, which consumes ETH for network gas.

Does moving pufETH to another Ethereum address change its share value?

No, moving pufETH between Ethereum addresses does not reset the protocol exchange rate or change the value represented by each share. pufETH is non-rebasing, so the transferred token count stays the same apart from the amount sent and normal integer rounding. Both addresses reference the same PufferVault accounting rate. The receiving wallet can later redeem its balance through either withdrawal mode, subject to the 0.01 pufETH standard minimum, available instant liquidity, and Ethereum gas for the chosen transactions after the transfer settles.

Orange cartoon fish with white stripes and three rising bubbles