Carbon Vortex 2.0 - Dutch Auction

To be posted to Snapshot March 24, 2024


  • The Carbon Vortex has been part of CarbonDefi since launch
  • The current version is limited to only being able to sell tokens that have a B3 pool.
  • As noted here (FastLane) “If this proposal passes, we should expect a second version that will also know how to handle tokens that do not have liquidity on Bancor 3.”
  • This proposal is to allow the Vortex to function without reliance on B3.
  • As you can see, there are many tokens which are held by the vortex but the mechanism to sell them does not yet exist: Bancor: Carbon Fee burner | Address 0xba7d1581db6248dc9177466a328bf457703c8f84 | Etherscan
    • NOTE: This is designed in a generic fashion so that it can also be used by anyone licensing the Carbon source code.


The design for Vortex 2.0 is very similar to the POL contract (link) (link). The goal is to take fees earned and convert them to BNT via ETH and send that BNT to the token contract.



  • Define target token: ETH
  • Define final target token: BNT
  • Define MaxSaleAmount: 100
  • Define MinSaleAmount: 10
  • Define Caller Incentive: 0.5% (this represents a reduction from current incentives)
  • Define Half Life: 12 hours

Note: ETH is proposed as it is the most common pairing of tokens on Ethereum mainnet. This should ensure mostly simple trading pairs without the need for complex arb routes.


Note: For simplicity, I will describe the flow using the above parameters

  • The CarbonController and Carbon Vortex/Vault hold all fees generated from Carbon and the Arb Bot on Ethereum.
    • Note: In the future, I plan to propose a mechanism for sending TKN from the arb bot vaults on other chains to the Carbon Vortex.
  • Users can call a public function to enable TKN to ETH trading
    • Withdraws accumulated fees (CarbonController + TKN in vortex/vault)
    • Caller gets 0.5% of TKN transferred amount (caller incentive)
    • TKN is put up for sale at an arbitrarily high price with exponential decay and half life of 12 hours.
    • To prevent abuse, calling this function will reset the auction price if over half of the TKN has been sold already
    • Users can call the public function to trade TKN for ETH at any time or price point.
  • If BNT is defined as the final target token, ETH is put up for sale for BNT at an arbitrarily high price with exponential decay and half life of 12 hours.
    • Similar to the POL contract, this can be triggered with a bucket system (LINK)
    • These are defined as MaxSaleAmount and MinSaleAmount
  • BNT received is sent to the token contract.


Update to Vortex 2.0 as outlined above


Take no action


Looks good to me and much needed as we have over >$100k that needs to be converted to BNT.