GundamDweeb / super-rare-bazaar

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SuperRareBazaar

contract address: 0x6D7c44773C52D396F43c2D511B81aa168E9a7a42 startBlock: 14166744 Name: SuperRareBazaar

Things to note.

The SuperRareBazaar.sol is the implementation contract . the proxy contract that speaks to the implementatopn contract is the superRareMarketplace contract. Hence all states are maintained in the superRareMarcket place contract Each auction in unique in its own state .

Events

  event Sold(
    address indexed _originContract,
    address indexed _buyer,
    address indexed _seller,
    address _currencyAddress,
    uint256 _amount,
    uint256 _tokenId
);

event SetSalePrice(
    address indexed _originContract,
    address indexed _currencyAddress,
    address _target,
    uint256 _amount,
    uint256 _tokenId,
    address payable[] _splitRecipients,
    uint8[] _splitRatios
);

event OfferPlaced(
    address indexed _originContract,
    address indexed _bidder,
    address indexed _currencyAddress,
    uint256 _amount,
    uint256 _tokenId,
    bool _convertible
);

event AcceptOffer(
    address indexed _originContract,
    address indexed _bidder,
    address indexed _seller,
    address _currencyAddress,
    uint256 _amount,
    uint256 _tokenId,
    address payable[] _splitAddresses,
    uint8[] _splitRatios
);

event CancelOffer(
    address indexed _originContract,
    address indexed _bidder,
    address indexed _currencyAddress,
    uint256 _amount,
    uint256 _tokenId
);

event NewAuction(
    address indexed _contractAddress,
    uint256 indexed _tokenId,
    address indexed _auctionCreator,
    address _currencyAddress,
    uint256 _startingTime,
    uint256 _minimumBid,
    uint256 _lengthOfAuction
);

event CancelAuction(
    address indexed _contractAddress,
    uint256 indexed _tokenId,
    address indexed _auctionCreator
);

event AuctionBid(
    address indexed _contractAddress,
    address indexed _bidder,
    uint256 indexed _tokenId,
    address _currencyAddress,
    uint256 _amount,
    bool _startedAuction,
    uint256 _newAuctionLength,
    address _previousBidder
);

event AuctionSettled(
    address indexed _contractAddress,
    address indexed _bidder,
    address _seller,
    uint256 indexed _tokenId,
    address _currencyAddress,
    uint256 _amount
);

key functions(state changing functions)

  1. function acceptOffer( address _originContract, uint256 _tokenId, address _currencyAddress, uint256 _amount, address payable[] calldata _splitAddresses, uint8[] calldata _splitRatios ) external override

  2. @notice Purchases the token for the current sale price. @dev Covers use of any currency (0 address is eth). @dev Need to verify that the buyer (if not using eth) has the marketplace approved for _currencyContract. @dev Need to verify that the seller has the marketplace approved for _originContract. @param _originContract Contract address for asset being bought. @param _tokenId TokenId of asset being bought. @param _currencyAddress Currency address of asset being used to buy. @param _amount Amount the piece if being bought for (including marketplace fee). function buy( address _originContract, uint256 _tokenId, address _currencyAddress, uint256 _amount ) external payable override {

  3. @notice Place an offer for a given asset @dev Notice we need to verify that the msg sender has approved us to move funds on their behalf. @dev Covers use of any currency (0 address is eth). @dev _amount is the amount of the offer excluding the marketplace fee. @dev There can be multiple offers of different currencies, but only 1 per currency. @param _originContract Contract address of the asset being listed. @param _tokenId Token Id of the asset. @param _currencyAddress Address of the token being offered. @param _amount Amount being offered. @param _convertible If the offer can be converted into an auction function offer( address _originContract, uint256 _tokenId, address _currencyAddress, uint256 _amount, bool _convertible ) external payable override

  4. @notice Cancels an existing offer the sender has placed on a piece. @param _originContract Contract address of token. @param _tokenId TokenId that has an offer. @param _currencyAddress Currency address of the offer. function cancelOffer( address _originContract, uint256 _tokenId, address _currencyAddress ) external override {

Roles

Admin
Buyer
seller
AuctionCreator
Bidder

Entities

states i want to track

Auctions
Bids
Sales/ offers

Offer Creation

who creates an offer
when an offer is created/placed
when an offer is accepted
when an offer is cancelled

Auctions

when an auction is created
who creates an auction
when an auction is cancelled
when an auction is settled
when a bid is submmitted for an action

Bids

who submittted a bid
when a bid is created

Sold

when an NFT is sold

About


Languages

Language:TypeScript 100.0%