Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- pragma solidity ^0.4.24;
- import "./MarketPlace.sol";
- contract Auction{
- bytes32 public offerTitle;
- address public owner;
- int256 public lastOffer ;
- address public winner;
- MarketPlace public parentMarketPlace;
- bool public auctionEndedFlag;
- bool public auctionCanceledFlag;
- event OfferAdded(address offrFrom, int256 price);
- event AuctionCreated(address indexed parentMarketPlace, address indexed createdBy, bytes32 auctionName);
- event AuctionEnded(address winner, int256 winningPrice);
- event AuctionCanceled();
- constructor(bytes32 _offerTitle, address _owner) public {
- parentMarketPlace = MarketPlace(msg.sender);
- offerTitle = _offerTitle;
- owner = _owner;
- lastOffer = 0;
- winner = address(0);
- auctionEndedFlag = false;
- emit AuctionCreated(parentMarketPlace, owner, offerTitle);
- }
- modifier auctionOpen(){
- require(auctionEndedFlag == false, "auction already ended");
- _;
- }
- modifier onlyAuthorized(){
- require(parentMarketPlace.users(msg.sender) == true, "Not autorized for this auction");
- _;
- }
- function addOffer(int256 price) external auctionOpen onlyAuthorized {
- require(msg.sender != owner, "you can not offer for your own auction");
- require(price > lastOffer, "Offer to small");
- lastOffer = price;
- winner = msg.sender;
- emit OfferAdded(msg.sender, price);
- }
- modifier onlyOwner(){
- require(owner == msg.sender);
- _;
- }
- function endAuction() external onlyOwner{
- require(auctionCanceledFlag == false, "auction already canceled");
- require(auctionEndedFlag == false, "auction already eneded");
- auctionEndedFlag = true;
- emit AuctionEnded(winner, lastOffer);
- }
- function cancelAuction() external onlyOwner{
- require(auctionEndedFlag == false, "auction already eneded");
- require(auctionCanceledFlag == false, "auction already canceled");
- auctionCanceledFlag = true;
- emit AuctionCanceled();
- }
- }
Add Comment
Please, Sign In to add comment