The recycle function checks txns with 10-90 confirmations in between auction blocks for any txns that have inputs that are not registered. If there is an unregistered send address the auction server will send the full output back to the first unregistered address it finds in that txn. Iām doing my best to make sure this cannot be exploited (ddos is always a concern).
The end result should be that any output at an auction address with more than 20 confirmations or so should be reliable as a submission to the auction. That means anyone can verify at any point in time what the auction price was about 30 minutes ago. This of course creates an unavoidable haze about the very end of the auction that can only be verified in hindsight, but therein lies the gameablility of the auction.
To help others grasp the gravity of this mechanic, let me give an example:
Participant A, Participant B, and Participant C all have registered address pairs. Participant A submits 10 NSR and 1 NBT at the beginning of the auction, which coincides with the market price of $0.1/NSR. Participant B goes fishing and submits 10 NSR, skewing the auction price. Participant C submits 1 NBT to balance the price again. At the end of the auction, during the last few blocks during which no transaction can be fully confirmed as being registered or not, Participant B submits another 1 NBT. Now the auction results are:
Auction price = 0.15 NBT/NSR
Participant A sells NSR for above market price
Participant B sells NSR for above market price
Participant C buys NSR for above market price
As you can see, Participant C gets the shaft for having been fooled by Participant B. However, if Participant B hadnātāve submitted at the last minute, Participant C would have been more than happy. The gaming done by Participant B and C here come from a very fundamental maneuver that C was making: Participant C submitted at a price not aligned with the market price and hoped the participation would be enough to make up for it. If Participant C had instead ignored the price and simply looked at the current auction volume, he would see 20 NSR and 1 NBT. By submitting 1 NBT, Participant C was drastically changing the amount of NBT in the auction. Had he instead submitted 0.1 NBT or 0.01 NBT, the price would barely have moved and he would be just fine. Participant A here is extremely vital and will be played by stabilizers in unseeded auctions and Nu/custodians in seeded auctions.
To Reiterate:
The benefit of the recycle function is not to know what the auction price is at any given moment, but instead to know what the auction volume is for either currency (NBT or NSR). The price can be changed at the last moment but the volume cannot be decreased if the submission was from a registered address (i.e. was not recycled).
Recycling also helps avoid participant error, something @masterOfDisaster experienced during one of the last auction tests.