Contract 0xeaa3dd1767bae18075eeb2d83cd210ac38203cc5 1

Txn Hash Method
Block
From
To
Value [Txn Fee]
0xd51b4d3fd528f32b71f752a569d410e84c8cb5eb75a86430c6d91e8e3d91eb8cClaim Token194095512021-10-18 10:41:2110 days 3 hrs ago0x6ccfc07dc8e8e872e49c512ae99064150d48f800 IN  0xeaa3dd1767bae18075eeb2d83cd210ac38203cc50 FTM0.021605297462
0x4462e959a3fd0057bc68755ef08c930bc5a92a281763c93f5e194b3aacb46cb9Claim Token194095322021-10-18 10:41:0310 days 3 hrs ago0x6ccfc07dc8e8e872e49c512ae99064150d48f800 IN  0xeaa3dd1767bae18075eeb2d83cd210ac38203cc50 FTM0.02165375885
0x329fc93278c15aac64aebf37a7c04ac8c3f5462092f9fdc9a9d75aad839b01ccClaim Token194095092021-10-18 10:40:4610 days 3 hrs ago0x6ccfc07dc8e8e872e49c512ae99064150d48f800 IN  0xeaa3dd1767bae18075eeb2d83cd210ac38203cc50 FTM0.021626391824
0x0898cb76fb611aea7a0c7050b78eea879252910ba234e669e2e63ed6b5b7ee12Claim Token194094902021-10-18 10:40:2810 days 3 hrs ago0x6ccfc07dc8e8e872e49c512ae99064150d48f800 IN  0xeaa3dd1767bae18075eeb2d83cd210ac38203cc50 FTM0.021418825329
0xf188046dbbd3c3b14b4da1ee686499c98393c5b513d8cac2816bfa0cb46408b2Claim Token194094752021-10-18 10:40:0610 days 3 hrs ago0x6ccfc07dc8e8e872e49c512ae99064150d48f800 IN  0xeaa3dd1767bae18075eeb2d83cd210ac38203cc50 FTM0.021796461956
0x83dc57d9fd17a0f8e0e259a802145313a91016674863e6ade1d940b94cb1cd05Claim Token194094272021-10-18 10:39:2610 days 3 hrs ago0x6ccfc07dc8e8e872e49c512ae99064150d48f800 IN  0xeaa3dd1767bae18075eeb2d83cd210ac38203cc50 FTM0.021560225336
0xa0a84711b65b972f0d9cdd8e096e30e5bc9179a2fd00b764f3092b27d0163efeBid193419022021-10-17 16:22:0510 days 21 hrs ago0xae4f5fde463ce09c24cb3d4fb0927fc403bf762f IN  0xeaa3dd1767bae18075eeb2d83cd210ac38203cc52,387.527783681824754 FTM0.023555078625
0x3e9acb12c0d82dfec7aeafe28563cf6850804c94df482793cc372ddc22cb8362Bid193418632021-10-17 16:21:2610 days 21 hrs ago0x984c5d268b220784e87fbe8edbb5c6b9f7ba9fc4 IN  0xeaa3dd1767bae18075eeb2d83cd210ac38203cc52,273.835984458880718 FTM0.023591695462
0x56f8b01a42aadd7feb3abc02334f7b0dcb4d66a0d6d19f5a7b74ce34e052413fBid193417952021-10-17 16:20:2910 days 21 hrs ago0xae4f5fde463ce09c24cb3d4fb0927fc403bf762f IN  0xeaa3dd1767bae18075eeb2d83cd210ac38203cc52,165.558080437029256 FTM0.023522294437
0x9dd1c9595548f63d97dafd483430fdd323c9410c48dc0d8ce2db52a6aa56b9b6Bid193417422021-10-17 16:19:4710 days 21 hrs ago0x984c5d268b220784e87fbe8edbb5c6b9f7ba9fc4 IN  0xeaa3dd1767bae18075eeb2d83cd210ac38203cc52,062.436267082885005 FTM0.023490092662
0x004d54c6977d163fa8d24e7e126205828eb2bd7bbb285aec03a833d13c494de5Bid193416902021-10-17 16:19:0210 days 21 hrs ago0xae4f5fde463ce09c24cb3d4fb0927fc403bf762f IN  0xeaa3dd1767bae18075eeb2d83cd210ac38203cc51,964.225016269414291 FTM0.023655535387
0x5499991bf4f0ed73bde63a55a5334f617d1e40f09f41db1379249823d7ec2ea6Bid193415992021-10-17 16:17:4110 days 21 hrs ago0x984c5d268b220784e87fbe8edbb5c6b9f7ba9fc4 IN  0xeaa3dd1767bae18075eeb2d83cd210ac38203cc51,870.690491685156467 FTM0.023115206887
0xb9c83044fb1eb52b08314ed2c21144334128d825d40bc6705da13cfdc6387d32Bid193415662021-10-17 16:17:1110 days 21 hrs ago0x984c5d268b220784e87fbe8edbb5c6b9f7ba9fc4 IN  0xeaa3dd1767bae18075eeb2d83cd210ac38203cc51,870.690491685156467 FTM0.024524081054
0x4bc0ff41bf3ced565ad2a1cc249a5276a91f8b462a3713a5f4bbc14df27133f4Bid193415242021-10-17 16:16:0810 days 21 hrs ago0xae4f5fde463ce09c24cb3d4fb0927fc403bf762f IN  0xeaa3dd1767bae18075eeb2d83cd210ac38203cc51,781.609992081101397 FTM0.023467215979
0xdbccd682ebd1e1faddf881af02e9a39971b2a7412858a928bd13072b6265e68dBid193414872021-10-17 16:15:2410 days 21 hrs ago0x984c5d268b220784e87fbe8edbb5c6b9f7ba9fc4 IN  0xeaa3dd1767bae18075eeb2d83cd210ac38203cc51,696.771421029620379 FTM0.019349213198
0x843ecf59a2b4d37752b237604ad9035d6b2fab44e5e2d370e0bc58ccf19fb565Bid193414152021-10-17 16:13:5410 days 21 hrs ago0xae4f5fde463ce09c24cb3d4fb0927fc403bf762f IN  0xeaa3dd1767bae18075eeb2d83cd210ac38203cc51,615.972781932971789 FTM0.023892520054
0x0aa911b475319948fdf20af920c5fc2367fd26088d40a0b50f4c004cdc0f00d9Bid193413042021-10-17 16:11:1710 days 21 hrs ago0x984c5d268b220784e87fbe8edbb5c6b9f7ba9fc4 IN  0xeaa3dd1767bae18075eeb2d83cd210ac38203cc52,979.779389917077259 FTM0.023404308937
0x3d901e66567dfcfe64156a0226a6b22368a414f19e374cfcf1d705af7177021eBid193412412021-10-17 16:09:4710 days 21 hrs ago0xae4f5fde463ce09c24cb3d4fb0927fc403bf762f IN  0xeaa3dd1767bae18075eeb2d83cd210ac38203cc52,837.885133254359294 FTM0.02818125
0xd90adad2564256ec0d543a6d010db83d3d7350585f05c8dd1738b87e98196d9aBid193411462021-10-17 16:07:1310 days 21 hrs ago0x984c5d268b220784e87fbe8edbb5c6b9f7ba9fc4 IN  0xeaa3dd1767bae18075eeb2d83cd210ac38203cc52,702.747745956532661 FTM0.0438375
0xdb41f9bbbb8f1cdbf82aadf7cbdb4f5b66de53ec1b3f6030f65b508ae6689af5Bid193410052021-10-17 16:04:3510 days 21 hrs ago0xae4f5fde463ce09c24cb3d4fb0927fc403bf762f IN  0xeaa3dd1767bae18075eeb2d83cd210ac38203cc52,574.045472339554915 FTM0.0198823854
0x58ee25e99dbdaedde95ce47c97ef5cbacd2c524475db497759a7f5aa0c53f228Bid193409392021-10-17 16:03:1510 days 21 hrs ago0x984c5d268b220784e87fbe8edbb5c6b9f7ba9fc4 IN  0xeaa3dd1767bae18075eeb2d83cd210ac38203cc52,451.471878418623729 FTM0.0313125
0x64d41a945ed3b856f82b1f6ae887abf1062d4daaa429916dd18539aea042d0c4Bid193409042021-10-17 16:02:3310 days 21 hrs ago0xae4f5fde463ce09c24cb3d4fb0927fc403bf762f IN  0xeaa3dd1767bae18075eeb2d83cd210ac38203cc52,334.73512230345117 FTM0.020944010662
0xe85780275d983427fbcf547c109a34e09a3753edc0b695e3534b67f10876cec2Bid193408582021-10-17 16:01:3710 days 21 hrs ago0x984c5d268b220784e87fbe8edbb5c6b9f7ba9fc4 IN  0xeaa3dd1767bae18075eeb2d83cd210ac38203cc52,223.557259336620162 FTM0.024364
0x7964542700b3cd404a70e6c0403f411066ee40b0dde9afecee510b0accf55f5eBid193408202021-10-17 16:00:5510 days 21 hrs ago0xae4f5fde463ce09c24cb3d4fb0927fc403bf762f IN  0xeaa3dd1767bae18075eeb2d83cd210ac38203cc52,117.67358032059063 FTM0.019263731605
0xc8e739fddc2b580c813c3c1ffc79534f942348c7e63b462dc6bb1103c04f9ee8Bid193407302021-10-17 15:59:1210 days 21 hrs ago0x984c5d268b220784e87fbe8edbb5c6b9f7ba9fc4 IN  0xeaa3dd1767bae18075eeb2d83cd210ac38203cc52,016.831981257705362 FTM0.020395268857
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xd51b4d3fd528f32b71f752a569d410e84c8cb5eb75a86430c6d91e8e3d91eb8c194095512021-10-18 10:41:2110 days 3 hrs ago 0xeaa3dd1767bae18075eeb2d83cd210ac38203cc5 0xd81d78f9d6eb3efab060aa213f686f02d17055532,405.737496295262250402 FTM
0x4462e959a3fd0057bc68755ef08c930bc5a92a281763c93f5e194b3aacb46cb9194095322021-10-18 10:41:0310 days 3 hrs ago 0xeaa3dd1767bae18075eeb2d83cd210ac38203cc5 0xd81d78f9d6eb3efab060aa213f686f02d17055531,473.500047807880859375 FTM
0x329fc93278c15aac64aebf37a7c04ac8c3f5462092f9fdc9a9d75aad839b01cc194095092021-10-18 10:40:4610 days 3 hrs ago 0xeaa3dd1767bae18075eeb2d83cd210ac38203cc5 0xd81d78f9d6eb3efab060aa213f686f02d17055532,581.966831058150579876 FTM
0x0898cb76fb611aea7a0c7050b78eea879252910ba234e669e2e63ed6b5b7ee12194094902021-10-18 10:40:2810 days 3 hrs ago 0xeaa3dd1767bae18075eeb2d83cd210ac38203cc5 0xd81d78f9d6eb3efab060aa213f686f02d17055532,279.003793514469084205 FTM
0xf188046dbbd3c3b14b4da1ee686499c98393c5b513d8cac2816bfa0cb46408b2194094752021-10-18 10:40:0610 days 3 hrs ago 0xeaa3dd1767bae18075eeb2d83cd210ac38203cc5 0xd81d78f9d6eb3efab060aa213f686f02d17055532,844.334872193573747316 FTM
0x83dc57d9fd17a0f8e0e259a802145313a91016674863e6ade1d940b94cb1cd05194094272021-10-18 10:39:2610 days 3 hrs ago 0xeaa3dd1767bae18075eeb2d83cd210ac38203cc5 0xd81d78f9d6eb3efab060aa213f686f02d17055531,799.126469235094885249 FTM
0xa0a84711b65b972f0d9cdd8e096e30e5bc9179a2fd00b764f3092b27d0163efe193419022021-10-17 16:22:0510 days 21 hrs ago 0xeaa3dd1767bae18075eeb2d83cd210ac38203cc50x984c5d268b220784e87fbe8edbb5c6b9f7ba9fc42,279.003793514469084205 FTM
0xa0a84711b65b972f0d9cdd8e096e30e5bc9179a2fd00b764f3092b27d0163efe193419022021-10-17 16:22:0510 days 21 hrs ago 0xae4f5fde463ce09c24cb3d4fb0927fc403bf762f 0xeaa3dd1767bae18075eeb2d83cd210ac38203cc52,387.527783681824754881 FTM
0x3e9acb12c0d82dfec7aeafe28563cf6850804c94df482793cc372ddc22cb8362193418632021-10-17 16:21:2610 days 21 hrs ago 0xeaa3dd1767bae18075eeb2d83cd210ac38203cc50xae4f5fde463ce09c24cb3d4fb0927fc403bf762f2,170.479803347113413529 FTM
0x3e9acb12c0d82dfec7aeafe28563cf6850804c94df482793cc372ddc22cb8362193418632021-10-17 16:21:2610 days 21 hrs ago 0x984c5d268b220784e87fbe8edbb5c6b9f7ba9fc4 0xeaa3dd1767bae18075eeb2d83cd210ac38203cc52,273.835984458880718935 FTM
0x56f8b01a42aadd7feb3abc02334f7b0dcb4d66a0d6d19f5a7b74ce34e052413f193417952021-10-17 16:20:2910 days 21 hrs ago 0xeaa3dd1767bae18075eeb2d83cd210ac38203cc50x984c5d268b220784e87fbe8edbb5c6b9f7ba9fc42,067.123622235346108122 FTM
0x56f8b01a42aadd7feb3abc02334f7b0dcb4d66a0d6d19f5a7b74ce34e052413f193417952021-10-17 16:20:2910 days 21 hrs ago 0xae4f5fde463ce09c24cb3d4fb0927fc403bf762f 0xeaa3dd1767bae18075eeb2d83cd210ac38203cc52,165.558080437029256128 FTM
0x9dd1c9595548f63d97dafd483430fdd323c9410c48dc0d8ce2db52a6aa56b9b6193417422021-10-17 16:19:4710 days 21 hrs ago 0xeaa3dd1767bae18075eeb2d83cd210ac38203cc50xae4f5fde463ce09c24cb3d4fb0927fc403bf762f1,968.689164033662960116 FTM
0x9dd1c9595548f63d97dafd483430fdd323c9410c48dc0d8ce2db52a6aa56b9b6193417422021-10-17 16:19:4710 days 21 hrs ago 0x984c5d268b220784e87fbe8edbb5c6b9f7ba9fc4 0xeaa3dd1767bae18075eeb2d83cd210ac38203cc52,062.436267082885005836 FTM
0x004d54c6977d163fa8d24e7e126205828eb2bd7bbb285aec03a833d13c494de5193416902021-10-17 16:19:0210 days 21 hrs ago 0xeaa3dd1767bae18075eeb2d83cd210ac38203cc50x984c5d268b220784e87fbe8edbb5c6b9f7ba9fc41,874.942060984440914397 FTM
0x004d54c6977d163fa8d24e7e126205828eb2bd7bbb285aec03a833d13c494de5193416902021-10-17 16:19:0210 days 21 hrs ago 0xae4f5fde463ce09c24cb3d4fb0927fc403bf762f 0xeaa3dd1767bae18075eeb2d83cd210ac38203cc51,964.225016269414291273 FTM
0x5499991bf4f0ed73bde63a55a5334f617d1e40f09f41db1379249823d7ec2ea6193415992021-10-17 16:17:4110 days 21 hrs ago 0xeaa3dd1767bae18075eeb2d83cd210ac38203cc50xae4f5fde463ce09c24cb3d4fb0927fc403bf762f1,785.659105699467537521 FTM
0x5499991bf4f0ed73bde63a55a5334f617d1e40f09f41db1379249823d7ec2ea6193415992021-10-17 16:17:4110 days 21 hrs ago 0x984c5d268b220784e87fbe8edbb5c6b9f7ba9fc4 0xeaa3dd1767bae18075eeb2d83cd210ac38203cc51,870.690491685156467879 FTM
0xb9c83044fb1eb52b08314ed2c21144334128d825d40bc6705da13cfdc6387d32193415662021-10-17 16:17:1110 days 21 hrs ago 0xeaa3dd1767bae18075eeb2d83cd210ac38203cc50xae4f5fde463ce09c24cb3d4fb0927fc403bf762f1,785.659105699467537521 FTM
0xb9c83044fb1eb52b08314ed2c21144334128d825d40bc6705da13cfdc6387d32193415662021-10-17 16:17:1110 days 21 hrs ago 0x984c5d268b220784e87fbe8edbb5c6b9f7ba9fc4 0xeaa3dd1767bae18075eeb2d83cd210ac38203cc51,870.690491685156467879 FTM
0x4bc0ff41bf3ced565ad2a1cc249a5276a91f8b462a3713a5f4bbc14df27133f4193415242021-10-17 16:16:0810 days 21 hrs ago 0xeaa3dd1767bae18075eeb2d83cd210ac38203cc50x984c5d268b220784e87fbe8edbb5c6b9f7ba9fc41,700.627719713778607163 FTM
0x4bc0ff41bf3ced565ad2a1cc249a5276a91f8b462a3713a5f4bbc14df27133f4193415242021-10-17 16:16:0810 days 21 hrs ago 0xae4f5fde463ce09c24cb3d4fb0927fc403bf762f 0xeaa3dd1767bae18075eeb2d83cd210ac38203cc51,781.60999208110139798 FTM
0xdbccd682ebd1e1faddf881af02e9a39971b2a7412858a928bd13072b6265e68d193414872021-10-17 16:15:2410 days 21 hrs ago 0xeaa3dd1767bae18075eeb2d83cd210ac38203cc50xae4f5fde463ce09c24cb3d4fb0927fc403bf762f1,619.645447346455816346 FTM
0xdbccd682ebd1e1faddf881af02e9a39971b2a7412858a928bd13072b6265e68d193414872021-10-17 16:15:2410 days 21 hrs ago 0x984c5d268b220784e87fbe8edbb5c6b9f7ba9fc4 0xeaa3dd1767bae18075eeb2d83cd210ac38203cc51,696.771421029620379029 FTM
0x843ecf59a2b4d37752b237604ad9035d6b2fab44e5e2d370e0bc58ccf19fb565193414152021-10-17 16:13:5410 days 21 hrs ago 0xeaa3dd1767bae18075eeb2d83cd210ac38203cc50x984c5d268b220784e87fbe8edbb5c6b9f7ba9fc41,542.519473663291253662 FTM
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EnglishAuction

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 9 : EnglishAuction.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;

import '@openzeppelin/contracts/access/Ownable.sol';
import '@openzeppelin/contracts/security/ReentrancyGuard.sol';

import './interfaces/IEnglishAuction.sol';
import './interfaces/IERC721Auctionable.sol';

contract EnglishAuction is IEnglishAuction, Ownable, ReentrancyGuard {
    uint16 public constant BASE = 10000; // base 10000, 20%

    uint16 public minBidIncreasePercent; // base 10000, 11%
    uint16 public outbidRefundPercent; // base 10000, 5%
    uint16 public noSnipingSeconds; // 3 minutes in seconds

    mapping(uint256 => IEnglishAuction.Auction) public auctions;
    mapping(uint256 => uint256) private tokenIdAtIndex;
    uint256[] public tokenIdsForAuction;

    address private tokenAddress;

    modifier auctionExists(uint256 _tokenId) {
        require(auctions[_tokenId].endTime > 0, 'There is no auction for this token id.');
        _;
    }

    // @dev Constructor, pass in the token to mint tokens for.
    constructor(address _tokenAddress, uint16 _minBidIncreasePercent, uint16 _outbidRefundPercent, uint16 _noSnipingSeconds) {
        tokenAddress = _tokenAddress;
        minBidIncreasePercent = _minBidIncreasePercent;
        outbidRefundPercent = _outbidRefundPercent;
        noSnipingSeconds = _noSnipingSeconds;
    }

    function getTokensIdsForAuction() public view returns (uint256[] memory) {
        return tokenIdsForAuction;
    }

    /// @dev Add a new bid on a Auction and make sure it is at least X% more than the last bid, send Y% back to the previous bidder
    /// @param _tokenId The id of the Auction
    function bid(uint256 _tokenId) public payable auctionExists(_tokenId) nonReentrant {
        Auction storage _auction = auctions[_tokenId];
        address _bidder = msg.sender;

        require(_auction.bidder != _bidder, 'You already bid on this Auction.');
        require(_auction.bid + ((_auction.bid * minBidIncreasePercent) / BASE) <= msg.value, 'Bid too low.');
        // make sure that the endTime is not in the past and the last bid was more than N mins ago
        require(
            _auction.endTime >= block.timestamp || _auction.bidTime + noSnipingSeconds >= block.timestamp,
            'Auction already ended.'
        );

        address _previousBidder = _auction.bidder != address(0) ? _auction.bidder : tokenAddress;
        uint256 _previousBid = _auction.bidder != address(0) ? _auction.bid : 0;

        // calculate the refund for the previous bidder
        uint256 _refund = _previousBidder != address(0) ? ((_previousBid * outbidRefundPercent) / BASE) : 0;

        // the new bid is the value sent less the refund
        uint256 _bid = msg.value - _refund;

        // log the bid
        emit LogBid(_auction.tokenId, block.timestamp, _bidder, _bid, _previousBidder, _previousBid);

        // update the bid
        _auction.bidder = _bidder;
        _auction.bid = _bid;
        _auction.bidTime = block.timestamp;

        // refund the previous bidder
        if (_refund > 0) {
            (bool success, ) = _previousBidder.call{value: _previousBid + _refund}('');
            require(success, 'Refund failed.');
        }
    }

    /// @dev Get the min next bid for an Auction
    /// @param _tokenId The id of the Auction
    function getMinNextBid(uint256 _tokenId) public view auctionExists(_tokenId) returns (uint256) {
        return auctions[_tokenId].bid + ((auctions[_tokenId].bid * minBidIncreasePercent) / BASE);
    }

    function claimToken(uint256 _tokenId) public auctionExists(_tokenId) {
        Auction storage _auction = auctions[_tokenId];
        // make sure the end time has passed and the last bid was more than the sniping time ago
        require(
            _auction.endTime < block.timestamp && _auction.bidTime + noSnipingSeconds < block.timestamp,
            'Auction has not ended.'
        );

        // mint the token to the winner
        IERC721Auctionable(tokenAddress).mintToWinner{value: _auction.bid}(_auction.bidder, _tokenId, _auction.uri);

        // get the last auction in the list
        uint256 lastTokenId = auctions[tokenIdsForAuction[tokenIdsForAuction.length - 1]].tokenId;

        // update the pointer for the last one to overwrite the one we just claimed
        tokenIdAtIndex[lastTokenId] = tokenIdAtIndex[_tokenId];

        // update the pointer for the one we just claimed to point to the last one
        tokenIdsForAuction[tokenIdAtIndex[_tokenId]] = lastTokenId;

        // remove the last item in the tokenIdsForAuction array
        delete tokenIdsForAuction[tokenIdsForAuction.length - 1];

        // delete it from the index lookup
        delete tokenIdAtIndex[_tokenId];

        // delete the auction now that the token is minted
        delete auctions[_tokenId];
    }

    // OWNER

    /// @dev Add a new chunk to the auction, by the owner.
    /// @param _tokenId The id of the Auction
    /// @param _startBid The price of the Auction
    /// @param _startTime The time the auction starts
    /// @param _endTime The time the auction ends
    function addAuction(
        uint256 _tokenId,
        uint256 _startBid,
        uint256 _startTime,
        uint256 _endTime,
        string memory _uri
    ) public onlyOwner {
        require(!IERC721Auctionable(tokenAddress).exists(_tokenId), 'This token id already exists.');
        // check to see if the token id is already in the auctions mapping
        require(
            auctions[_tokenId].tokenId == 0 && auctions[_tokenId].startTime == 0,
            'Auction already exists for this token id.'
        );

        // add the token to the list
        tokenIdsForAuction.push(_tokenId);

        // track where this id is in the index
        tokenIdAtIndex[_tokenId] = tokenIdsForAuction.length - 1;

        // add the info to the auction
        auctions[_tokenId].tokenId = _tokenId;
        auctions[_tokenId].startTime = _startTime;
        auctions[_tokenId].endTime = _endTime;
        auctions[_tokenId].bid = _startBid;
        auctions[_tokenId].uri = _uri;

        emit AuctionAdded(_tokenId, _startTime, _endTime, _startBid);
    }

    /// @dev Set the min bid increase percent for the auction.
    /// @param _minBidIncreasePercent The new min bid increase percent
    function setMinBidIncreasePercent(uint16 _minBidIncreasePercent) public onlyOwner {
        require(_minBidIncreasePercent <= BASE, 'Min bid increase percent must be less than 100%.');
        minBidIncreasePercent = _minBidIncreasePercent;
    }

    /// @dev Set the outbid refund percent for the auction.
    /// @param _outbidRefundPercent The new outbid refund percent
    function setOutbidRefundPercent(uint16 _outbidRefundPercent) public onlyOwner {
        require(_outbidRefundPercent <= BASE, 'Outbid refund percent must be less than 100%.');
        // refund percent must be les then the increase percent
        require(
            _outbidRefundPercent < minBidIncreasePercent - 100,
            'Outbid refund percent must be less than the min bid increase percent.'
        );
        outbidRefundPercent = _outbidRefundPercent;
    }

    /// @dev Set the no sniping time for the auction.
    /// @param _noSnipingSeconds The new no sniping time
    function setNoSnipingSeconds(uint16 _noSnipingSeconds) public onlyOwner {
        require(_noSnipingSeconds <= 60 * 60, 'No sniping time cannot be more than an hour.');
        noSnipingSeconds = _noSnipingSeconds;
    }

    /// @dev Set the tokenURI for an auctino
    function setAuctionURI(uint256 _tokenId, string memory _tokenURI) public onlyOwner {
        require(auctions[_tokenId].endTime > 0, 'Auction does not exist');
        auctions[_tokenId].uri = _tokenURI;
    }
}

File 2 of 9 : Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 3 of 9 : ReentrancyGuard.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}

File 4 of 9 : IEnglishAuction.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;

interface IEnglishAuction  {

    event AuctionAdded(uint256 indexed _tokenId, uint256 startTime, uint256 endTime, uint256 bid);

    // Bid event
    event LogBid(
        uint256 indexed tokenId,
        uint256 bidTime,
        address indexed bidder,
        uint256 bid,
        address indexed previousBidder,
        uint256 previousBid
    );
    
    struct Auction {
        uint256 tokenId;
        uint256 startTime;
        uint256 endTime;
        uint256 bidTime;
        address bidder;
        uint256 bid;
        string uri;
    }
}

File 5 of 9 : IERC721Auctionable.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;

import '@openzeppelin/contracts/interfaces/IERC721.sol';

interface IERC721Auctionable is IERC721 {
    function mintToWinner(address _to, uint256 _tokenId, string memory _tokenURI) external payable;

    function exists(uint256 _tokenId) external view returns (bool);
}

File 6 of 9 : Context.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

File 7 of 9 : IERC721.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "../token/ERC721/IERC721.sol";

File 8 of 9 : IERC721.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "../../utils/introspection/IERC165.sol";

/**
 * @dev Required interface of an ERC721 compliant contract.
 */
interface IERC721 is IERC165 {
    /**
     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
     */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
     */
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
     */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /**
     * @dev Returns the number of tokens in ``owner``'s account.
     */
    function balanceOf(address owner) external view returns (uint256 balance);

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) external view returns (address owner);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Transfers `tokenId` token from `from` to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Gives permission to `to` to transfer `tokenId` token to another account.
     * The approval is cleared when the token is transferred.
     *
     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.
     *
     * Requirements:
     *
     * - The caller must own the token or be an approved operator.
     * - `tokenId` must exist.
     *
     * Emits an {Approval} event.
     */
    function approve(address to, uint256 tokenId) external;

    /**
     * @dev Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) external view returns (address operator);

    /**
     * @dev Approve or remove `operator` as an operator for the caller.
     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
     *
     * Requirements:
     *
     * - The `operator` cannot be the caller.
     *
     * Emits an {ApprovalForAll} event.
     */
    function setApprovalForAll(address operator, bool _approved) external;

    /**
     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
     *
     * See {setApprovalForAll}
     */
    function isApprovedForAll(address owner, address operator) external view returns (bool);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}

File 9 of 9 : IERC165.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 1000
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "metadata": {
    "useLiteralContent": true
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint16","name":"_minBidIncreasePercent","type":"uint16"},{"internalType":"uint16","name":"_outbidRefundPercent","type":"uint16"},{"internalType":"uint16","name":"_noSnipingSeconds","type":"uint16"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"startTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bid","type":"uint256"}],"name":"AuctionAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bidTime","type":"uint256"},{"indexed":true,"internalType":"address","name":"bidder","type":"address"},{"indexed":false,"internalType":"uint256","name":"bid","type":"uint256"},{"indexed":true,"internalType":"address","name":"previousBidder","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBid","type":"uint256"}],"name":"LogBid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"BASE","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"uint256","name":"_startBid","type":"uint256"},{"internalType":"uint256","name":"_startTime","type":"uint256"},{"internalType":"uint256","name":"_endTime","type":"uint256"},{"internalType":"string","name":"_uri","type":"string"}],"name":"addAuction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"auctions","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"bidTime","type":"uint256"},{"internalType":"address","name":"bidder","type":"address"},{"internalType":"uint256","name":"bid","type":"uint256"},{"internalType":"string","name":"uri","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"bid","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"claimToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getMinNextBid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokensIdsForAuction","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minBidIncreasePercent","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"noSnipingSeconds","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"outbidRefundPercent","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"},{"internalType":"string","name":"_tokenURI","type":"string"}],"name":"setAuctionURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_minBidIncreasePercent","type":"uint16"}],"name":"setMinBidIncreasePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_noSnipingSeconds","type":"uint16"}],"name":"setNoSnipingSeconds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_outbidRefundPercent","type":"uint16"}],"name":"setOutbidRefundPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenIdsForAuction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5060405162001c2f38038062001c2f83398101604081905262000034916200010c565b6200003f33620000a4565b60018055600680546001600160a01b039095166001600160a01b0319909516949094179093556002805461ffff9485166401000000000261ffff60201b19938616620100000263ffffffff199092169590941694909417939093171617905562000176565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b805161ffff811681146200010757600080fd5b919050565b600080600080608085870312156200012357600080fd5b84516001600160a01b03811681146200013b57600080fd5b93506200014b60208601620000f4565b92506200015b60408601620000f4565b91506200016b60608601620000f4565b905092959194509250565b611aa980620001866000396000f3fe6080604052600436106101285760003560e01c80637c30a45d116100a5578063cd2a16ba11610074578063ebda93e911610059578063ebda93e914610336578063ec342ad014610359578063f2fde38b1461036f57600080fd5b8063cd2a16ba146102fb578063d9c199541461031657600080fd5b80637c30a45d146102735780638da5cb5b14610293578063a9e7c2e5146102bb578063ac7f34db146102db57600080fd5b8063454a2ab3116100fc578063571a26a0116100e1578063571a26a0146101f75780636b452c021461022a578063715018a61461025e57600080fd5b8063454a2ab3146101c457806350ff6acb146101d757600080fd5b8062f82f921461012d5780631cb14fb5146101605780633e2f359a14610182578063453ea738146101a2575b600080fd5b34801561013957600080fd5b5061014d610148366004611611565b61038f565b6040519081526020015b60405180910390f35b34801561016c57600080fd5b5061018061017b36600461162a565b6103b0565b005b34801561018e57600080fd5b5061014d61019d366004611611565b6104af565b3480156101ae57600080fd5b506101b7610576565b6040516101579190611655565b6101806101d2366004611611565b6105ce565b3480156101e357600080fd5b506101806101f236600461162a565b6109f5565b34801561020357600080fd5b50610217610212366004611611565b610ba0565b6040516101579796959493929190611699565b34801561023657600080fd5b5060025461024b9062010000900461ffff1681565b60405161ffff9091168152602001610157565b34801561026a57600080fd5b50610180610c74565b34801561027f57600080fd5b5061018061028e36600461162a565b610cda565b34801561029f57600080fd5b506000546040516001600160a01b039091168152602001610157565b3480156102c757600080fd5b506101806102d6366004611611565b610dc8565b3480156102e757600080fd5b506101806102f63660046117c8565b61106e565b34801561030757600080fd5b5060025461024b9061ffff1681565b34801561032257600080fd5b5061018061033136600461182c565b61131d565b34801561034257600080fd5b5060025461024b90640100000000900461ffff1681565b34801561036557600080fd5b5061024b61271081565b34801561037b57600080fd5b5061018061038a366004611873565b6113ff565b6005818154811061039f57600080fd5b600091825260209091200154905081565b6000546001600160a01b0316331461040f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b610e108161ffff16111561048b5760405162461bcd60e51b815260206004820152602c60248201527f4e6f20736e6970696e672074696d652063616e6e6f74206265206d6f7265207460448201527f68616e20616e20686f75722e00000000000000000000000000000000000000006064820152608401610406565b6002805461ffff9092166401000000000265ffff0000000019909216919091179055565b600081815260036020526040812060020154829061051e5760405162461bcd60e51b815260206004820152602660248201527f5468657265206973206e6f2061756374696f6e20666f72207468697320746f6b60448201526532b71034b21760d11b6064820152608401610406565b600254600084815260036020526040902060050154612710916105479161ffff909116906118b2565b61055191906118d1565b60008481526003602052604090206005015461056d91906118f3565b91505b50919050565b606060058054806020026020016040519081016040528092919081815260200182805480156105c457602002820191906000526020600020905b8154815260200190600101908083116105b0575b5050505050905090565b600081815260036020526040902060020154819061063d5760405162461bcd60e51b815260206004820152602660248201527f5468657265206973206e6f2061756374696f6e20666f72207468697320746f6b60448201526532b71034b21760d11b6064820152608401610406565b600260015414156106905760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610406565b60026001556000828152600360205260409020600481015433906001600160a01b03168114156107025760405162461bcd60e51b815260206004820181905260248201527f596f7520616c726561647920626964206f6e20746869732041756374696f6e2e6044820152606401610406565b600254600583015434916127109161071e9161ffff16906118b2565b61072891906118d1565b836005015461073791906118f3565b11156107855760405162461bcd60e51b815260206004820152600c60248201527f42696420746f6f206c6f772e00000000000000000000000000000000000000006044820152606401610406565b4282600201541015806107b75750600254600383015442916107b49164010000000090910461ffff16906118f3565b10155b6108035760405162461bcd60e51b815260206004820152601660248201527f41756374696f6e20616c726561647920656e6465642e000000000000000000006044820152606401610406565b60048201546000906001600160a01b0316610829576006546001600160a01b0316610838565b60048301546001600160a01b03165b60048401549091506000906001600160a01b031661085757600061085d565b83600501545b905060006001600160a01b03831661087657600061089b565b600254612710906108919062010000900461ffff16846118b2565b61089b91906118d1565b905060006108a9823461190b565b865460408051428152602081018490529081018690529192506001600160a01b038087169290881691907f6db75787adbe92e5d9a2d2db99cfece5b2518614b19886500093e1b68814512f9060600160405180910390a460048601805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0387161790556005860181905542600387015581156109e75760006001600160a01b03851661095384866118f3565b604051600081818185875af1925050503d806000811461098f576040519150601f19603f3d011682016040523d82523d6000602084013e610994565b606091505b50509050806109e55760405162461bcd60e51b815260206004820152600e60248201527f526566756e64206661696c65642e0000000000000000000000000000000000006044820152606401610406565b505b505060018055505050505050565b6000546001600160a01b03163314610a4f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610406565b61271061ffff82161115610acb5760405162461bcd60e51b815260206004820152602d60248201527f4f757462696420726566756e642070657263656e74206d757374206265206c6560448201527f7373207468616e20313030252e000000000000000000000000000000000000006064820152608401610406565b600254610ade9060649061ffff16611922565b61ffff168161ffff1610610b805760405162461bcd60e51b815260206004820152604560248201527f4f757462696420726566756e642070657263656e74206d757374206265206c6560448201527f7373207468616e20746865206d696e2062696420696e6372656173652070657260648201527f63656e742e000000000000000000000000000000000000000000000000000000608482015260a401610406565b6002805461ffff909216620100000263ffff000019909216919091179055565b6003602081905260009182526040909120805460018201546002830154938301546004840154600585015460068601805495979496949593946001600160a01b0390931693919291610bf190611945565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1d90611945565b8015610c6a5780601f10610c3f57610100808354040283529160200191610c6a565b820191906000526020600020905b815481529060010190602001808311610c4d57829003601f168201915b5050505050905087565b6000546001600160a01b03163314610cce5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610406565b610cd860006114e1565b565b6000546001600160a01b03163314610d345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610406565b61271061ffff82161115610db05760405162461bcd60e51b815260206004820152603060248201527f4d696e2062696420696e6372656173652070657263656e74206d75737420626560448201527f206c657373207468616e20313030252e000000000000000000000000000000006064820152608401610406565b6002805461ffff191661ffff92909216919091179055565b6000818152600360205260409020600201548190610e375760405162461bcd60e51b815260206004820152602660248201527f5468657265206973206e6f2061756374696f6e20666f72207468697320746f6b60448201526532b71034b21760d11b6064820152608401610406565b6000828152600360205260409020600281015442118015610e76575060025460038201544291610e749164010000000090910461ffff16906118f3565b105b610ec25760405162461bcd60e51b815260206004820152601660248201527f41756374696f6e20686173206e6f7420656e6465642e000000000000000000006044820152606401610406565b6006805460058301546004808501546040517f3a985be70000000000000000000000000000000000000000000000000000000081526001600160a01b0394851695633a985be795610f1c949316928a92918901910161197a565b6000604051808303818588803b158015610f3557600080fd5b505af1158015610f49573d6000803e3d6000fd5b505050505060006003600060056001600580549050610f68919061190b565b81548110610f7857610f78611a3b565b600091825260208083209091015483528281019390935260409182018120548782526004909352818120548382529181208290558690526005805492935083929091908110610fc957610fc9611a3b565b60009182526020909120015560058054610fe59060019061190b565b81548110610ff557610ff5611a3b565b6000918252602080832090910182905585825260048082526040808420849055600392839052832083815560018101849055600281018490559182018390558101805473ffffffffffffffffffffffffffffffffffffffff191690556005810182905590611066600683018261153e565b505050505050565b6000546001600160a01b031633146110c85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610406565b6006546040517f4f558e79000000000000000000000000000000000000000000000000000000008152600481018790526001600160a01b0390911690634f558e799060240160206040518083038186803b15801561112557600080fd5b505afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d9190611a51565b156111aa5760405162461bcd60e51b815260206004820152601d60248201527f5468697320746f6b656e20696420616c7265616479206578697374732e0000006044820152606401610406565b6000858152600360205260409020541580156111d55750600085815260036020526040902060010154155b6112475760405162461bcd60e51b815260206004820152602960248201527f41756374696f6e20616c72656164792065786973747320666f7220746869732060448201527f746f6b656e2069642e00000000000000000000000000000000000000000000006064820152608401610406565b600580546001818101835560008390527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0909101879055905461128a919061190b565b6000868152600460209081526040808320939093556003815291902086815560018101859055600281018490556005810186905582516112d292600690920191840190611578565b50604080518481526020810184905290810185905285907f055a994bb5d755ce90191cdaaa646680575578f6d98cb0f72a4be4fff5f763be9060600160405180910390a25050505050565b6000546001600160a01b031633146113775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610406565b6000828152600360205260409020600201546113d55760405162461bcd60e51b815260206004820152601660248201527f41756374696f6e20646f6573206e6f74206578697374000000000000000000006044820152606401610406565b600082815260036020908152604090912082516113fa92600690920191840190611578565b505050565b6000546001600160a01b031633146114595760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610406565b6001600160a01b0381166114d55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610406565b6114de816114e1565b50565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b50805461154a90611945565b6000825580601f1061155a575050565b601f0160209004906000526020600020908101906114de91906115fc565b82805461158490611945565b90600052602060002090601f0160209004810192826115a657600085556115ec565b82601f106115bf57805160ff19168380011785556115ec565b828001600101855582156115ec579182015b828111156115ec5782518255916020019190600101906115d1565b506115f89291506115fc565b5090565b5b808211156115f857600081556001016115fd565b60006020828403121561162357600080fd5b5035919050565b60006020828403121561163c57600080fd5b813561ffff8116811461164e57600080fd5b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101561168d57835183529284019291840191600101611671565b50909695505050505050565b8781526000602088818401528760408401528660608401526001600160a01b03861660808401528460a084015260e060c084015283518060e085015260005b818110156116f557858101830151858201610100015282016116d8565b8181111561170857600061010083870101525b50601f01601f191692909201610100019998505050505050505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261174c57600080fd5b813567ffffffffffffffff8082111561176757611767611725565b604051601f8301601f19908116603f0116810190828211818310171561178f5761178f611725565b816040528381528660208588010111156117a857600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156117e057600080fd5b85359450602086013593506040860135925060608601359150608086013567ffffffffffffffff81111561181357600080fd5b61181f8882890161173b565b9150509295509295909350565b6000806040838503121561183f57600080fd5b82359150602083013567ffffffffffffffff81111561185d57600080fd5b6118698582860161173b565b9150509250929050565b60006020828403121561188557600080fd5b81356001600160a01b038116811461164e57600080fd5b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156118cc576118cc61189c565b500290565b6000826118ee57634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156119065761190661189c565b500190565b60008282101561191d5761191d61189c565b500390565b600061ffff8381169083168181101561193d5761193d61189c565b039392505050565b600181811c9082168061195957607f821691505b6020821081141561057057634e487b7160e01b600052602260045260246000fd5b6001600160a01b0384168152600060208481840152606060408401526000845481600182811c9150808316806119b157607f831692505b8583108114156119cf57634e487b7160e01b85526022600452602485fd5b60608801839052608088018180156119ee57600181146119ff57611a2a565b60ff19861682528782019650611a2a565b60008b81526020902060005b86811015611a2457815484820152908501908901611a0b565b83019750505b50949b9a5050505050505050505050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a6357600080fd5b8151801515811461164e57600080fdfea26469706673582212200d06a3e68455ecd8adce29916608ba92e7827b5c56fd080e803be818e3e6b85a64736f6c63430008090033000000000000000000000000d81d78f9d6eb3efab060aa213f686f02d170555300000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000000b4

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000d81d78f9d6eb3efab060aa213f686f02d170555300000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000000b4

-----Decoded View---------------
Arg [0] : _tokenAddress (address): 0xd81d78f9d6eb3efab060aa213f686f02d1705553
Arg [1] : _minBidIncreasePercent (uint16): 1000
Arg [2] : _outbidRefundPercent (uint16): 500
Arg [3] : _noSnipingSeconds (uint16): 180

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000d81d78f9d6eb3efab060aa213f686f02d1705553
Arg [1] : 00000000000000000000000000000000000000000000000000000000000003e8
Arg [2] : 00000000000000000000000000000000000000000000000000000000000001f4
Arg [3] : 00000000000000000000000000000000000000000000000000000000000000b4


Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.