LogoLogo
WebsiteGithubCommunity Docs
  • Developer Docs
  • Smart Contracts
    • Bond System
      • Auctioneer
        • Auctioneer Interfaces
        • Sequential Dutch Auctioneer (SDA)
          • Auction Pricing
          • Fixed-Term SDA
          • Fixed-Expiry SDA
        • Fixed Price Auctioneer (FPA)
          • Fixed-Term FPA
          • Fixed-Expiry FPA
        • Oracle-based Auctioneers
          • Oracle Interface
        • Oracle Fixed Discount Auctioneer (OFDA)
          • Fixed-Term OFDA
          • Fixed-Expiry OFDA
        • Oracle Sequential Dutch Auctioneer (OSDA)
          • Fixed-Term OSDA
          • Fixed-Expiry OSDA
      • Teller
        • Teller Interfaces
        • Base Teller
        • Fixed-Expiry Teller
        • Fixed-Term Teller
      • Callback
        • Callback Interface
        • Base Callback
        • Sample Callback Contract
      • Aggregator
        • Aggregator Interface
        • Aggregator Contract
      • Intended User Actions
      • Limit Orders
    • Option System
      • Fixed Strike oTokens
      • Fixed Strike Option Teller
      • Options Liquidity Mining (OLM)
        • Manual Strike OLM
        • Oracle Strike OLM
      • OLM Factories
  • Developers
    • Subgraph
    • Market Calculations
    • Purchases & Redemptions
    • User Balances
    • Options Library
      • Helper Functions
      • Types
  • References
    • Technical Resources
      • Audits
    • Community Resources
    • Brand Assets
    • Contact Us
Powered by GitBook
On this page
  • Auction Type
  • Payout to Deposit ratio
  • Contract Initialization
  • Vesting
  • Debt decay
  • Bond Price
  • ​Control Variable
  1. Smart Contracts
  2. Bond System
  3. Auctioneer
  4. Sequential Dutch Auctioneer (SDA)

Auction Pricing

PreviousSequential Dutch Auctioneer (SDA)NextFixed-Term SDA

Last updated 1 year ago

Bond Protocol utilizes the Sequential Dutch Auction for its bond pricing mechanism. This mechanism is specified in detail in the released by Bond Protocol.

Auction Type

In a Dutch Auction, a high initial price is set for an item (in this case the exchange rate between two tokens). Once the auction starts, the price decreases (decays) as time passes until it is purchased (or hits a configured minimum price that it cannot go below).

In a Sequential Dutch Auction, once a purchase is made, the price increases from the purchase and starts to decay again until another purchase is made. One can also view this as immediately starting a new auction on the next token after a purchase is made. The bounds for the auction are the duration it is expected to last for and the capacity of tokens to sell.

Payout to Deposit ratio

Bond pricing is not the price of one of the tokens but the ratio of payout to deposit. As bond price falls, the same payout can be acquired with a decreasing deposit. This allows for the auction to function without the need for an oracle.

Contract Initialization

Markets are initialized with an amount of debt equal to the total amount either to sell or acquire depending on configuration and this debt is grouped into a discrete amount of time, the decay interval, over which that debt should decay.

Vesting

The amount of time is 5 times the deposit interval or user-configured as long as it is a minimum of 3 days. The 3 day minimum ensures the price will not suddenly drop to 0. Using a multiple of the deposit interval ensures that debt will not decay significantly in between deposits.

Debt decay

Debt is expected to decay linearly from 1 to 0 during the decay interval and it does so by tracking debt and a reference point in time.

Market initialization and tuning both store the amount of debt is expected to decrease over a decay interval and both calculate the control variable based on that amount and time frame.

When a deposit is made, debt increases by the amount sold or acquired depending on configuration. The reference point in time moves forward through the decay interval proportional to the change in debt relative to the expected decrease over the decay interval. This decays the debt linearly through time even as new debt is added.

Bond Price

The Sequential Dutch Auctioneer Contract uses the following equation to calculate the price of a particular market:

Price=DecayedDebt∗ControlVariablePrice = Decayed Debt * Control VariablePrice=DecayedDebt∗ControlVariable

​Control Variable

Control Variable is an independent variable that controls the relationship between Price and Debt.

During market initialization, the price is provided either directly or through an oracle and the debt is the total amount either to sell or acquire over a deposit interval.

During tuning, the price is the price of the deposit that triggered the tuning and debt is the remaining amount either to sell or acquire over a deposit interval. By adjusting the control variable based on what remains to be sold, the market is able to scale prices up or down relative to debt so that the target capacity is reached by the market conclusion.

Control variable updates are called Tuning. The tuning frequency is set by the tuneInterval and is triggered by purchases.

SDAM paper