Rook
Search
⌃K

Auctions

Keepers participate in the Coordinator's auction mechanism which determines which Keeper is eligible to facilitate trade for the user.
Keepers play an important role in the ecosystem by capturing value and facilitating user trades. In order to do this, Keepers must participate in auctions. This involves placing a bid with the Coordinator announcing the Keeper's intent to facilitate trade within the whitelisted ecosystem. This bid is a JSON payload sent from the Keeper directly to the Coordinator. This payload includes things like a signed bid commitment over the staked ROOK payment channel, the unique identifier of the user trade(s) being filled, the Keeper's credentials, etc.

Auction life cycle

All auctions are identified by an auctionId. This is made up of a prcotocol's unique identifier. For example: with a trading protocol, an order will have an orderHash. With a lending protocol, a liquidation will have a positionHash.

Bidding

An auction begins its life when the first Keeper bids on an auctionId. This auction is now locked into this state where any bids received for this auctionId are all competing against each other for the greenlight, aka the right to faciliate user trade. Example: Keeper A may want to arbitrage a user's limit order against Uniswap, and Keeper B may want to arbitrage that same user's order against Binance. The bidding period ends after a short moment and the Coordinator greenlights a winner. The bidding period is brief and is measured in milliseconds or seconds.
Greenlight
Once a Keeper is greenlit to facilitate user trade, the Coordinator waits for a brief period of blocks for the Keeper to mine their transaction into the Ethereum blockchain. During this time, the auctionId for this auction remains locked and no other auctions can be started for this auctionId.

Release

Once this lock period ends, a new auction may begin again. An example of this is, say the greenlight Keeper fails to execute their trade, another Keeper can now bid again. Another example of this is, say the greenlight Keeper only filled the order half full, another Keeper can now bid again on filling the other half.

Bidding with dependencies

When Keepers bid, they are bidding on an all-or-nothing batched set of auctions. Meaning, whatever auctions they include in the array will either all be greenlight, or all not. If a Keeper wants to bid on auctions independently of each other, they should submit separate bids for them.
  • Keeper wants to cross two user orders together with each other. The Keeper requires that they must be greenlight for both auctions, or else the trade does not make sense. The Keeper includes both auctionIds in the array noting the dependency. The Keeper expects to be either greenlight for both, or neither. Under no circumstance will the Keeper be greenlit for one without the other.
    • {
      "bids":[
      {
      "auctionId":"0x1234",
      ....
      },
      {
      "auctionId":"0x5678",
      ....
      }
      ],
      "type":"bid"
      }
  • Keeper wants to bid on two separate individual user's orders and arb the first against Uniswap and the second against Coinbase. The Keeper makes separate bids for each auction. The Keeper now expects a variety of possible outcomes. They could be greenlit for both, or just one, or neither.
    • {
      "bids":[
      {
      "auctionId":"0x1234",
      ....
      }
      ],
      "type":"bid"
      }
    • {
      "bids":[
      {
      "auctionId":"0x5678",
      ....
      }
      ],
      "type":"bid"
      }

Bidding on multiple auctions

Keepers may bid on as many auctions as they want at any given moment.

Failing a bid after being greenlit

Keepers who fail to successfully facilitate user trade after being greenlit will be hit with a Rep Mark which negatively impacts their reputation.