Commit ad594772 authored by BHAVYA CHOUDHARY's avatar BHAVYA CHOUDHARY

add public modifier and getter function

parent 09c1f8f7
test.sol
\ No newline at end of file
pragma solidity ^0.4.4; pragma solidity ^0.4.4;
contract DAuction { contract Auction {
uint256 minimumPrice; uint256 public minimumPrice;
uint256 biddingBlocksNum; uint256 public biddingBlocksNum;
address judgeAddr; address judgeAddr;
uint256 startBlockNum; uint256 public startBlockNum;
address creator; address public creator;
address highestBidder; address highestBidder;
uint256 highestBid; uint256 highestBid;
// constructor // constructor
function DAuction(uint256 reservePrice, uint256 biddingTimePeriod, address judgeAddress) { function Auction(uint256 reservePrice, uint256 biddingTimePeriod, address judgeAddress) {
minimumPrice = reservePrice; minimumPrice = reservePrice;
blocksNum = biddingTimePeriod; biddingBlocksNum = biddingTimePeriod;
judgeAddr = judgeAddress; judgeAddr = judgeAddress;
startBlockNum = block.number; startBlockNum = block.number;
creator = msg.sender; creator = msg.sender;
} }
// Three types of bidding functions. If not overriden, these generate errors // Three types of bidding functions. If not overriden, these generate errors
function bid() biddingOpen payable { function bid() biddingOpen payable returns(address) {
throw; require(false);
} }
function commitBid(bytes32 bidCommitment) biddingOpen payable returns(bool) { function commitBid(bytes32 bidCommitment) biddingOpen payable returns(bool) {
throw; require(false);
} }
function revealBid(uint256 nonce) payable returns(address highestBidder) { function revealBid(uint256 nonce) payable returns(address) {
throw; require(false);
} }
function finalize() auctionOver { function finalize() auctionOver {
throw; require(false);
} }
function refund(uint256 refundAmount) auctionOver judgeOnly { function refund(uint256 refundAmount) auctionOver judgeOnly {
throw; require(false);
} }
modifier biddingOpen { modifier biddingOpen {
throw; require(false);
_; _;
} }
modifier auctionOver { modifier auctionOver {
throw; require(false);
_; _;
} }
modifier judgeOnly { modifier judgeOnly {
require(msg.sender == judgeAddress); require(msg.sender == judgeAddr);
_; _;
} }
......
pragma solidity ^0.4.4; pragma solidity ^0.4.4;
import "DAuction.sol"; import "Auction.sol";
import "DVickreyAuction.sol"; import "VickreyAuction.sol";
import "DDutchAuction.sol"; import "DutchAuction.sol";
import "DEnglishAuction.sol"; import "EnglishAuction.sol";
//This code is provided for you. You can modify if you want to for debugging, but you shouldn't need to put any logic here. contract Auctions {
contract DAuctions {
mapping(uint256 => DAuction) auctions; mapping(uint256 => Auction) auctions;
uint256 numAuctions; uint256 numAuctions;
// This function is used for testing // This function is used for testing
...@@ -17,39 +16,21 @@ contract DAuctions { ...@@ -17,39 +16,21 @@ contract DAuctions {
function beginDutchAuction(uint256 reservePrice, address judgeAddress, uint256 biddingTimePeriod, uint256 offerPriceDecrement) returns(uint256 auctionID) { function beginDutchAuction(uint256 reservePrice, address judgeAddress, uint256 biddingTimePeriod, uint256 offerPriceDecrement) returns(uint256 auctionID) {
auctionID = numAuctions++; auctionID = numAuctions++;
auctions[auctionID] = new DDutchAuction(reservePrice, judgeAddress, biddingTimePeriod, offerPriceDecrement); auctions[auctionID] = new DutchAuction(reservePrice, judgeAddress, biddingTimePeriod, offerPriceDecrement);
return auctionID; return auctionID;
} }
function beginEnglishAuction(uint256 reservePrice, address judgeAddress, uint256 biddingTimePeriod, uint256 minBidIncrement) returns(uint256 auctionID) { function beginEnglishAuction(uint256 reservePrice, address judgeAddress, uint256 biddingTimePeriod, uint256 minBidIncrement) returns(uint256 auctionID) {
auctionID = numAuctions++; auctionID = numAuctions++;
auctions[auctionID] = new DEnglishAuction(reservePrice, judgeAddress, biddingTimePeriod, minBidIncrement); auctions[auctionID] = new EnglishAuction(reservePrice, judgeAddress, biddingTimePeriod, minBidIncrement);
return auctionID; return auctionID;
} }
function beginVickreyAuction(uint256 reservePrice, address judgeAddress, uint256 commitTimePeriod, uint256 revealTimePeriod, uint256 bidDepositAmount) returns(uint256 auctionID) { function beginVickreyAuction(uint256 reservePrice, address judgeAddress, uint256 commitTimePeriod, uint256 revealTimePeriod, uint256 bidDepositAmount) returns(uint256 auctionID) {
auctionID = numAuctions++; auctionID = numAuctions++;
auctions[auctionID] = new DVickreyAuction(reservePrice, judgeAddress, commitTimePeriod, revealTimePeriod, bidDepositAmount); auctions[auctionID] = new VickreyAuction(reservePrice, judgeAddress, commitTimePeriod, revealTimePeriod, bidDepositAmount);
return auctionID; return auctionID;
} }
function bid(uint256 id) payable returns(address) { // you bid directly to the contract
return auctions[id].bid.value(msg.value)();
}
function finalize(uint256 id) {
auctions[id].finalize();
}
function refund(uint256 id, uint256 amount) {
auctions[id].refund(amount);
}
function revealBid(uint256 id, uint256 nonce) payable returns(address) {
return auctions[id].revealBid.value(msg.value)(nonce);
}
function commitBid(uint256 id, bytes32 bidCommitment) payable returns(bool) {
return auctions[id].commitBid.value(msg.value)(bidCommitment);
}
} }
pragma solidity ^0.4.4; pragma solidity ^0.4.4;
import "DAuction.sol"; import "Auction.sol";
contract DDutchAuction is DAuction { contract DutchAuction is Auction {
uint256 decrementPerBlock; uint256 public decrementPerBlock;
bool bidover; bool public bidover;
uint256 startPrice; uint256 public startPrice;
bool refundCalled; bool refundCalled;
bool finalizeCalled; bool finalizeCalled;
// constructor // constructor
function DDutchAuction(uint256 reservePrice, address judgeAddress, uint256 biddingPeriod, uint256 offerPriceDecrement) DAuction(reservePrice, biddingPeriod, judgeAddress) { function DutchAuction(uint256 reservePrice, address judgeAddress, uint256 biddingPeriod, uint256 offerPriceDecrement) Auction(reservePrice, biddingPeriod, judgeAddress) {
decrementPerBlock = offerPriceDecrement; decrementPerBlock = offerPriceDecrement;
startPrice = reservePrice+biddingPeriod*offerPriceDecrement; startPrice = reservePrice+biddingPeriod*offerPriceDecrement;
} }
...@@ -25,15 +23,13 @@ contract DDutchAuction is DAuction { ...@@ -25,15 +23,13 @@ contract DDutchAuction is DAuction {
return highestBidder; return highestBidder;
} }
function finalize(){ function finalize(){
require(msg.sender==highestBidder || msg.sender = judgeAddress); require(msg.sender==highestBidder || msg.sender == judgeAddr);
require(!refundCalled && !finalizeCalled); require(!refundCalled && !finalizeCalled);
finalizeCalled=truel finalizeCalled=true;
creator.transfer(highestBid); creator.transfer(highestBid);
} }
function refund(uint256 refundAmount) auctionOver judgeOnly { function refund(uint256 refundAmount) auctionOver judgeOnly {
require(highestBidder!=0); require(highestBidder!=0);
require(refundAmount<= this.balance); require(refundAmount<= this.balance);
......
pragma solidity ^0.4.4; pragma solidity ^0.4.4;
import "DAuction.sol"; import "Auction.sol";
contract DEnglishAuction is DAuction { contract EnglishAuction is Auction {
uint256 minBidIncrement; uint256 public minBidIncrement;
uint numUnchallengedBlocks; uint public numUnchallengedBlocks;
uint lastBidBlock; uint public lastBidBlock;
mapping (address => uint) PendingWithdrawals; mapping (address => uint) public PendingWithdrawals;
bool refundCalled; bool refundCalled;
bool finalizeCalle bool finalizeCalled;
// constructor // constructor
function DEnglishAuction(uint256 reservePrice, address judgeAddress, uint256 biddingTimePeriod, uint256 minBidIncrement) DAuction(reservePrice, biddingTimePeriod, judgeAddress) { function EnglishAuction(uint256 reservePrice, address judgeAddress, uint256 biddingTimePeriod, uint256 minimumBidIncrement) Auction(reservePrice, biddingTimePeriod, judgeAddress) {
this.minBidIncrement = minBidIncrement; minBidIncrement = minimumBidIncrement;
numUnchallengedBlocks = 3; numUnchallengedBlocks = 3;
} }
...@@ -29,12 +29,10 @@ contract DEnglishAuction is DAuction { ...@@ -29,12 +29,10 @@ contract DEnglishAuction is DAuction {
highestBid = msg.value; highestBid = msg.value;
lastBidBlock = block.number; lastBidBlock = block.number;
return highestBidder; return highestBidder;
} }
function finalize() auctionOver { function finalize() auctionOver {
require(msg.sender==highestBidder || msg.sender = judgeAddress); require(msg.sender==highestBidder || msg.sender == judgeAddr);
require(!refundCalled && !finalizeCalled); require(!refundCalled && !finalizeCalled);
finalizeCalled=true; finalizeCalled=true;
creator.transfer(highestBid); creator.transfer(highestBid);
...@@ -50,7 +48,7 @@ contract DEnglishAuction is DAuction { ...@@ -50,7 +48,7 @@ contract DEnglishAuction is DAuction {
} }
function withdraw(){ function withdraw(){
int amount = PendingWithdrawals[msg.sender]; uint amount = PendingWithdrawals[msg.sender];
PendingWithdrawals[msg.sender]=0; PendingWithdrawals[msg.sender]=0;
if(amount>0){ if(amount>0){
msg.sender.transfer(amount); msg.sender.transfer(amount);
......
pragma solidity ^0.4.4; pragma solidity ^0.4.4;
import "DAuction.sol"; import "Auction.sol";
contract DVickreyAuction is DAuction { contract VickreyAuction is Auction {
uint256 public bidDepositAmount; uint256 public bidDepositAmount;
uint256 public revealBlocksNum; uint256 public revealBlocksNum;
...@@ -15,18 +15,17 @@ contract DVickreyAuction is DAuction { ...@@ -15,18 +15,17 @@ contract DVickreyAuction is DAuction {
mapping ( address => uint ) bidAmount; mapping ( address => uint ) bidAmount;
// constructor // constructor
function DVickreyAuction(uint256 reservePrice, address judgeAddress, uint256 commitTimePeriod, uint256 revealTimePeriod, uint256 _bidDepositAmount) DAuction(reservePrice, commitTimePeriod, judgeAddress) { function VickreyAuction(uint256 reservePrice, address judgeAddress, uint256 commitTimePeriod, uint256 revealTimePeriod, uint256 _bidDepositAmount) Auction(reservePrice, commitTimePeriod, judgeAddress) {
bidDepositAmount = _bidDepositAmount; bidDepositAmount = _bidDepositAmount;
revealBlockNum = revealTimePeriod; revealBlocksNum = revealTimePeriod;
} }
function commitBid(bytes32 bidCommitment) biddingOpen payable returns(bool) { function commitBid(bytes32 bidCommitment) biddingOpen payable returns(bool) {
require(msg.value == bidDepositAmount); require(msg.value == bidDepositAmount);
deposits[msg.sender][bidCommitment]+=msg.value; deposits[msg.sender][bidCommitment]+=1;
return true; return true;
} }
function revealBid(uint256 nonce) revealOpen payable returns(address highestBidder) { function revealBid(uint256 nonce) revealOpen payable returns(address highestBidder) {
bytes32 commitval = sha3(nonce,msg.value); bytes32 commitval = sha3(nonce,msg.value);
require(deposits[msg.sender][commitval]>0); require(deposits[msg.sender][commitval]>0);
...@@ -42,11 +41,11 @@ contract DVickreyAuction is DAuction { ...@@ -42,11 +41,11 @@ contract DVickreyAuction is DAuction {
} }
} }
msg.sender.transfer(bidDepositAmount); msg.sender.transfer(bidDepositAmount);
returns highestBidder; return highestBidder;
} }
function finalize() auctionover { function finalize() auctionover {
require(msg.sender == highestBidder); require(msg.sender == highestBidder || msg.sender == judgeAddr);
require(!refundCalled && !finalizeCalled); require(!refundCalled && !finalizeCalled);
finalizeCalled=true; finalizeCalled=true;
if(secondHighestBid==0 && highestBid!=0){ if(secondHighestBid==0 && highestBid!=0){
...@@ -64,7 +63,7 @@ contract DVickreyAuction is DAuction { ...@@ -64,7 +63,7 @@ contract DVickreyAuction is DAuction {
highestBidder.transfer(refundAmount); highestBidder.transfer(refundAmount);
if(secondHighestBid==0 && highestBid>0){ if(secondHighestBid==0 && highestBid>0){
if(minimumPrice>refundAmount) if(minimumPrice>refundAmount)
creator.transfer(minimumPrice-refundAmount) creator.transfer(minimumPrice-refundAmount);
}else if (secondHighestBid>refundAmount) }else if (secondHighestBid>refundAmount)
creator.transfer(secondHighestBid-refundAmount); creator.transfer(secondHighestBid-refundAmount);
} }
...@@ -87,18 +86,18 @@ contract DVickreyAuction is DAuction { ...@@ -87,18 +86,18 @@ contract DVickreyAuction is DAuction {
} }
modifier auctionover { modifier auctionover {
require(block.blockNum > startBlockNum+biddingBlocksNum+revealBlocksNum); require(block.number > startBlockNum+biddingBlocksNum+revealBlocksNum);
_; _;
} }
modifier biddingOpen { modifier biddingOpen {
require(block.blockNum <= startBlockNum+biddingBlocksNum); require(block.number <= startBlockNum+biddingBlocksNum);
_; _;
} }
modifier revealOpen { modifier revealOpen {
require(block.blockNum > startBlockNum+biddingBlocksNum); require(block.number > startBlockNum+biddingBlocksNum);
require(block.blockNum <= startBlockNum+biddingBlocksNum+revealBlocksNum); require(block.number <= startBlockNum+biddingBlocksNum+revealBlocksNum);
_; _;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment