Контракт Абстрактный Аукцион Викри - Требования

Описание проблемы

Необходимо обеспечить скрытие ставок пользователей на лоты аукциона, чтобы избежать злоупотребления со стороны пользователей, когда они перебивают на минимальное значение каждую новую ставку. Так-же нужно добиться чтобы ставки пользователей отражали такую цену, которые пользователи готовы потратить на лот, а не минимальное перекрытие существующей ставки.

Цели контракта

  • Создать закрытый аукцион земли на смарт контрактах
  • Скрыть ставки с помощью публичной и секретной суммы ставки на лот как в ENS аукционе
  • Секретная сумма ставки должна отражать сколько пользователь действительно готов потратить на данный лот

Основные требования:

  • Принимать ставки в токенах GALT
  • Публичная сумма должна быть больше или равна секретной
  • При создании ставки должна быть оплачена публичная сумма
  • Выигрыш в аукционе должен определяться по наибольшей секретной ставке
  • Если на лот была сделана единственная ставка, то продавать по минимальной цене лота
  • После окончания аукциона, если пользователь выиграл аукцион - ему должна быть возвращена разница между секретной и публичной суммой ставки
  • Также, в случае если были ставки от других пользователей - выигрывшему аукцион пользователю должна быть возвращена разница между его ставкой и следующей за ней ставкой в топе секретных ставок
  • В случае если на лот претендует единственный пользователь - при выигрыше возвращать разницу между минимальной ценой ставки и его публичной ценой ставки
  • После окончания аукциона возвращать проигравшим суммы их публичных ставок

Сценарий контракта

Так как это абстрактный контракт, сценарии описаны в дочерних контрактах:

Спецификация контракта

  • Название класса: AbstractAuction

Перечень абстрактных составляющих контракта

  • Наличие связи с контрактом GALT токена для принятия платежей, отправки платежа продавцу и отправке сдачи со ставок
  • Маппинг auctionByAssetId для хранения базовых данных и текущего состояния лота
  • Маппинг bidsByAuctions для хранения данных о ставках по лотам
  • Функция startAuctionWithSeller для вызова из дочерних контрактов с указанием информации о лоте и продавце
  • Функция placeBid для создания ставки на лот
  • Функция finishAuction для завершения аукциона после истечения времени его действия
  • Функция closeBid для возвращения ставок по указанному аукциону проигравшим пользователям

Особенности реализации на TypeScript:

  • Ключ лота не хешируется из приватных данных при создании ставки
  • Секретная ставка доступна в открытом виде по имени secretPrice

Особенности реализации на Solidity:

Допущения для DEMO:

  • Пользователь не видит сумму ставок соперников (ни скрытую, ни публичную)
  • Пользователю не нужно вводить ключевые слова при размещении ставки
  • Пользователю не нужно вводить секретную сумму и ключевые слова при окончании аукциона

results matching ""

    No results matching ""