Skip to main content

EnglishAuction

EnglishAuction

This contract is a standard English Auction smart contract that allows bidders to keep bidding until the highest bidder wins the asset. In an English Auction, the owner defines the starting price and bidders can make bids that are higher than the current price. The auction duration is defined by the bids being made and if they are made within the resetTime. Theoretically, the auction can go on forever if higher bids continue to be made within the resetTime period. Once the ending time is passed, the auction finishes and the NFT is transferred to the highest bidder.

version

string version

ERC165TAG

bytes4 ERC165TAG

Start

event Start(uint256 startTime)

Bid

event Bid(address sender, uint256 amount)

Withdraw

event Withdraw(address bidder, uint256 amount)

asset

struct AuctionLib.Asset asset

acceptableToken

address acceptableToken

seller

address payable seller

saleFeeAddress

address payable saleFeeAddress

ownerClaimed

bool ownerClaimed

winnerClaimed

bool winnerClaimed

endAt

uint256 endAt

auctionDuration

uint256 auctionDuration

startPrice

uint256 startPrice

resetTime

uint256 resetTime

saleFee

uint256 saleFee

highestBidder

address highestBidder

bids

mapping(address => uint256) bids

constructor

constructor() public

initialize

function initialize(address payable _seller, struct AuctionLib.Asset _asset, address ERC20contractAddress, uint256 _startPrice, uint256 _auctionDuration, uint256 _resetTime, uint256 _saleFee, address payable _saleFeeAddress, address _forwarder) external

Create English Auction instance

NameTypeDescription
_selleraddress payableaddress of seller for auction
_assetstruct AuctionLib.Assetstruct containing information of the asset to be listed
ERC20contractAddressaddressaddress of ERC20 token accepted as payment
_startPriceuint256start bid on nft
_auctionDurationuint256duration of auction (in seconds)
_resetTimeuint256time at which the auction resets when a bid is made within this time frame (in seconds)
_saleFeeuint256the percentage of the sale to be sent to the marketplace as commission
_saleFeeAddressaddress payablethe address to which the sale fee is sent
_forwarderaddressthe address for the Trusted Forwarder for Open GSN integration

proxyInitialize

function proxyInitialize(address payable _seller, struct AuctionLib.Asset _asset, address ERC20contractAddress, uint256 _startPrice, uint256 _auctionDuration, uint256 _resetTime, uint256 _saleFee, address payable _saleFeeAddress, address _forwarder) external

__EnglishAuction_init

function __EnglishAuction_init(address payable _seller, struct AuctionLib.Asset _asset, address ERC20contractAddress, uint256 _startPrice, uint256 _auctionDuration, uint256 _resetTime, uint256 _saleFee, address payable _saleFeeAddress, address _forwarder) internal

__EnglishAuction_init_unchained

function __EnglishAuction_init_unchained(address payable _seller, struct AuctionLib.Asset _asset, address ERC20contractAddress, uint256 _startPrice, uint256 _auctionDuration, uint256 _resetTime, uint256 _saleFee, address payable _saleFeeAddress) internal

bid

function bid(uint256 amount) external

Allow a user to place a bid that must be higher than the highest bid

NameTypeDescription
amountuint256to bid by the bidder

withdraw

function withdraw() external

Highest bidder cannot withdraw

Allows a user to withdraw their bid.

ownerClaim

function ownerClaim() external

Allows owner to claim bid. The seller must call to transfer the ERC20 to themselves

winnerClaim

function winnerClaim() external

Allows auction winner to claim the asset they won and transfers ownership

getCurrentBid

function getCurrentBid() external view returns (uint256)

Returns the current highest bid

getRemainingTime

function getRemainingTime() external view returns (uint256)

Returns the remaining time in the auction

supportsInterface

function supportsInterface(bytes4 interfaceId) public view virtual returns (bool)

ERC165 Support

NameTypeDescription
interfaceIdbytes4hash of the interface testing for
NameTypeDescription
[0]boolbool whether interface is supported