Buttonwood
  • Buttonwood Basics
    • Introduction to Buttonwood
    • First Principles
    • FAQ
    • DeFi for Beginners
  • Learn
    • Glossary
    • Elastic Supply Assets
      • ButtonToken
      • UnbuttonToken
    • Tranche
      • Deposit Flow
      • Redemption Flow
    • ButtonZero
      • System Design
      • Lending
      • Borrowing
    • ButtonAuctions
    • ButtonSwap
      • Core Concepts
      • Pool Interactions
  • User Guides
    • ButtonSwap User Guide
      • Create a Pool
      • Swap
      • Add Liquidity
      • Remove Liquidity
    • ButtonZero User Guide
      • Primer
      • Borrow (Sell & Ask)
      • Lend (Buy & Bid)
      • Redemption
    • ButtonAuctions User Guide
      • Join an Auction
        • Redemptions
      • Create an Auction
      • Settle an Auction
      • Note on Rebasing Assets
    • Provide Liquidity on Uniswap
    • Mint Tranches
      • Mint Tranches via Contract
        • Minting AMPL Tranches
        • Minting ETH Tranches
        • Minting WBTC Tranches
        • Bond List
  • Developers
    • Deployed Contracts
      • Ethereum Mainnet
      • Görli Testnet
      • Kovan Testnet
      • Avalanche C-Chain
      • Base Mainnet
      • Arbitrum
      • Optimism
    • Tranche
      • Tranche
      • TrancheFactory
      • Bond
      • BondFactory
      • UniV3LoanRouter
    • Button Wrappers
      • ButtonToken
      • UnbuttonToken
      • ButtonTokenFactory
      • UnbuttonTokenFactory
    • Audits
    • Bug Bounty
  • Additional Resources
    • Apps
    • Github
    • Discord
    • Twitter
    • Website
    • ButtonZero
    • Zero Whitepaper
Powered by GitBook
On this page

Was this helpful?

  1. Learn

ButtonSwap

Overview

ButtonSwap is an Automated Market Maker (AMM) designed to solve several problems with existing AMMs. Namely, it is the only AMM suitable for use with rebasing tokens. In every other AMM, token rebases will affect the price of tokens in a pool, resulting in mispriced assets and losses for liquidity providers (LPs). ButtonSwap allows users to provide liquidity for a variety of assets without the need of additional pool incentives to compensate LPs.

The types of assets for which ButtonSwap is comparatively best-suited include:

  • Liquid staking derivatives (Lido’s stETH, Rocketpool’s rETH)

  • Appreciating collateral tokens (Aave aTokens, Compound cTokens)

  • Reward-bearing tokens (FOXy, OHM)

  • Elastic commodities (AMPL)

  • Buttonwood bwTokens (bwETH)

ButtonSwap is also a constant-product market maker, meaning its invariant is also of the form , much as in Uniswap v2. However, there are a few key differences.

ButtonSwap pools:

  1. Allow users to swap for any rebasing asset at a fair value

  2. Allow LPs to mint share tokens by only depositing a single asset (with constraints)

  3. Allow LPs to redeem share tokens for a single asset (with constraints).

PreviousButtonAuctionsNextCore Concepts

Last updated 2 years ago

Was this helpful?