Giter Club home page Giter Club logo

auctionner's People

Contributors

hyossid avatar

Stargazers

 avatar

Watchers

 avatar

auctionner's Issues

TODO : Tickler breakdown

  • Forfeiting deposit in case users don't claim their belongings
  • Trigger keeper tickling contract (return belongings to each parties and forfeit deposit)
  • Tickle implementation
  • keeper array address

TODO : Requirements

  • There SHOULD be a main contract for auctions or listings whose name should be Auctioneer
  • The Auctioneer contract MUST support several auctions or listings happening simultaneously
  • The Auctioneer contract MUST support auctions or listings of one ERC-721 NFT at a time
  • Interactions with our Auctioneer contract MUST be exempted from paying the “private sale fee” coded into our Gold Gerege NFT contract
  • The Auctioneer contract MUST support time-based auctions in which the seller MUST transfer the NFT into the contract which will remain locked for the duration of the auction.
  • The Auctioneer contract MUST support auctions which are irreversible i.e. the seller MUST NOT be able to cancel the auction and retrieve the NFT though he can participate in the auction himself as a bidder.
  • auctions supported by the Auctioneer contract SHOULD default to the “English auction” modality i.e. auction takes on bids and the highest bidder wins
  • when running an English auction, bids SHOULD be in $ETH and not $WETH
  • if bids are in an ERC–20 token, then HODL tokens SHOULD be whitelisted, that is the seller can choose if bids are in bHODL or uHODL
    whichever tokens the bids are in, the biding action MUST require the physical transfer of the “bid token” to the auction contract
  • whenever a bid is an “outbid” i.e. the outbidder MUST pay for the gas to transfer the bid that’s being replaced back to that bidder e.g. Alice bids 0.75 $bHODL which outbids Bob, who had just been the winning bid with 0.5 $bHODL, so in Alice’s bid transaction she will transfer 0.75 $bHODL to the contract which will store her bid as the winning bid while simultaneously transferring Bob’s address his 0.5 $bHODL with all the network transaction fees being paid by Alice.
    the contract MUST support an option for the seller to set a “reserve price” when setting the NFT for auction, denominated in the bid token.
  • any bid that does not beat the reserve price, if any, or any bid that does not outbid the previous bid, MUST revert when bidding; however, the auction will continue
    at the end of the auction, the bidder stored in the contract i.e. the bidder with the highest bid MUST be declared the winner.
  • the winner MUST claim his NFT after the auction is done to receive it; conversely, the seller MUST claim his winnings or the amount of money he’s entitled to (highest bid minus fees and royalties) from the contract.
  • all auctions conducted by the Auctioneer contract MUST look into the EIP2981 royaltyInfo method and enforce the specified royalty out of the sale price, and send this money to the specified address when the seller claims his winnings from the auction.
  • all auctions conducted by the Auctioneer contract MUST take in a “platform fee” which is to be initialised at 1% of any winning bid or sale price, this SHOULD be sent to the treasury address when winners collect their winnings e.g. Alice is a seller and the winner of her NFT auction is Bob who bid 0.75 $bHODL, since Gerege NFTs have a royalty of 5% then when Alice comes claims her winnings 6% is discounted from Bob’s bid (5% royalty + 1% platform fee) and Alice gets 0.705 $bHODL transferred to her wallet while DeOrderBook treasury gets two transfers (one 5% “royalty” and another 1% "platform fee)
  • the Auctioneer contract MAY support “Dutch auction” as an option to the “English auction” default.
    when performing a Dutch auction, the seller MUST set an “initial price” besides a "reserve price"and an “end time” for the auction, the auction will decrease the “initial price” linearly until the “end time”
  • when a buyer is able to meet the Dutch auction’s price, the transaction is successful, the buyer receives the NFT and the seller receives his winnings (aka price minus royalties minus platform fee)
    when the buyer is unable to meet the Dutch auction’s price, his bid reverts but the auction continues.
  • all listings by the Auctioneer contract MUST be set in increments of days, with the maximum allowable being 30 days.
  • besides auctions, the Auctioneer contract MAY support fixed-price listings
    fixed-price listings MUST have an “ask price” and they remain at that price until a buyer pays for it, in which case the buyer gets the NFT while the winnings (sale price minus royalty minus platform fee) are sent to the seller.
  • fixed-price listings MUST be cancellable by the seller, in which case he will receive his NFT back
  • all listings on the Auctioneer contract MUST pay a deposit in ETH
  • the deposit amount MUST be set by the owner and at the initial stage it shall be 0.05 ether
  • the deposit MUST be charged on initialising any listing whether English Auction, Dutch Auction, or Fixed-Price
  • the deposit MUST be returned to the user whenever an item in the platform is successfully sold in a fixed-price listing, or whenever an auction ends with a winner and the seller claims his earnings
  • the deposit MUST be forfeited to the treasury if the seller does not claim back his NFT in case of an unsuccessful listing or his winnings in case of a successful listing
  • the keeper addresses MUST be able to “tickle” the contract so that the end-state of any listing can be cleared, returning any NFT in the contract and any winnings, royalties, and fees to the right external party; when a keeper “tickles” the contract in this manner, the deposit is forfeit.
  • after the end of any listing, there MUST be a gracePeriod set by owner, to be initialised to 2 days.
    the keeper MUST only be able to “tickle” the contract in the manner described earlier after “end of listing + grace period” time has passed
  • the following MUST be permissioned addresses known to the Auctioneer contract
  • an owner address which MUST be initialised, which MUST only be changed by the owner itself
  • a treasury address which MUST be settable and changeable by the owner
  • a keeper array of addresses which MUST be settable and changeable by the owner

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.