Sat. Jan 1st, 2022
    Free TON, Online auctions

    Free TON DevEx SG communities held an online auction mechanism implementation contest at the second attempt. Last time, they postponed the start because of the low number of participants and the low quality of work.

    The main goal of the Online auctions implementation contest was to develop a reference implementation of different auction types in the Free TON blockchain according to the distributed smart contracts architecture. Therefore, the contestants competed in the creation, testing, and deployment of smart contracts that implement different types of auctions.

    Requirements For The Contest Works

    Since the Vickrey auction is already implemented by the DeNS contest, the jury suggested that the contestants focus on the English and Dutch auction types.

    Recommendations and requirements:

    • implementation of English, Dutch, and “blind” type of auctions for forward and reverse type of auction. In a “blind” type of auction, all participants simultaneously submit sealed bids, so no auction participant knows the bid of any other participant;
    • auctions should be scalable and should not rely on a single contract. Auction root contract should be able to deploy an infinite number of atomic auctions;
    • the possibility of implementing combined auction systems;
    • auctions must emit on-chain events reporting important state changes that could be used by other smart contracts;
    • using Solidity, C ++ and their combination;
    • interaction of smart contracts with TON Crystal, TIP-3 tokens;
    • the presence of the transfer function to DePool.

    Submissions should include source code, test scripts for all functionality using one of the existing frameworks, and a description using one of the following languages: TLA+ family, TL-B, UML, Prolog family.

    Contest Evaluation Criteria And Prize Fund

    The jury members evaluated the contestants’ submissions in terms of the best implementation of the types of auctions according to the provided architectural guidelines and contest terms.

    1st place — 50,000 TON Crystals
    2nd place — 35,000 TON Crystals
    3rd place — 20,000 TON Crystals
    4th place — 15,000 TON Crystals
    5th place — 10,000 TON Crystals

    First Place

    Four participants competed to win the contest. The best was submission #3 from the TON RED development team led by @Abionics. The result is 8.25 points and 50,000 TON Crystals.

    The judges appreciated the implementation of all six auction types. All of the following types of bets are supported: in TON Crystal, in TON Crystal using DePool, and in TIP-3 tokens.

    The jury noted the high-quality and advanced system for testing auction smart contracts, written in Python using the unittest and tonos-ts4 libraries. They have tests for each auction type and a separate test for the auction root contract.

    The TON RED team has developed a specialized Viewer that tracks events and displays all auctions from the root smart contract in a single table. You can click on any auction and see information about it in a pop-up window: type, status, duration, Bids, etc.

    Second Place

    7.50 points and 35,000 TON Crystals went to Team Pruvendo — submission #4.

    It features a flexible smart contract system that implements a wide range of auctions. It is implemented in Solidity, where testing is done using the TS4 platform.

    Key Smart Contracts:

    • AuctionRoot — initiates an auction and settles the transfer of tokens from IGiver (seller) to IBid (buyer).
    • IAuction — contains the properties of the specific auction.
    • IBid — contains the properties of a bid.
    • IGiver — contains the properties of a sale proposal.

    Pruvendo provided UML diagrams that describe the mechanics of implementing a particular type of auction.

    Third Place

    Submission #2 from the DE OLIVEIRA & Fabrice LE FESSANT community team — 6 points and 20,000 TON Crystals

    Their work consists of two parts, which describe the implementation of the following types of auctions:

    • English auctions with a min-incremental percentage;
    • Dutch auctions in automatic mode: the price decreases automatically over time;
    • Dutch auctions in manual mode: the price is decreased manually by the “auction house”;
    • reverse English auctions.

    The team vividly demonstrated the various stages of the auction implementation.

    The judges considered the shortcomings of the presented solution to be the fact that not all of the required types of auctions were implemented by the team’s specialists. In the reverse English auction algorithm, not all smart contracts of the system have been tested and deployed.

    Fourth Place

    And finally, the fourth place went to the development team led by Anton Platonov. Submission #1 — 4.75 points and 15,000 TON Crystals.

    The implementation of the following types of auctions is presented:

    • English forward; 
    • Dutch forward; 
    • English “blind” auction.

    Most of the judges noted that the smart contract system proposed by the authors of the submission requires improvement because it does not have an algorithm for implementing the English reverse, Dutch reverse, and Dutch “blind” version of the Dutch type of auction.