Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 55 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer Ownersh... | 6841869 | 2302 days ago | IN | 0 ETH | 0.00011751 | ||||
Transfer Ownersh... | 6002163 | 2441 days ago | IN | 0 ETH | 0.00057744 | ||||
Transfer Ownersh... | 5929971 | 2453 days ago | IN | 0 ETH | 0.00028872 | ||||
Add To Whitelist | 5926309 | 2454 days ago | IN | 0 ETH | 0.00219555 | ||||
Add To Whitelist | 5926309 | 2454 days ago | IN | 0 ETH | 0.00219555 | ||||
Add To Whitelist | 5926309 | 2454 days ago | IN | 0 ETH | 0.00219555 | ||||
Add To Whitelist | 5926309 | 2454 days ago | IN | 0 ETH | 0.00219555 | ||||
Add To Whitelist | 5926309 | 2454 days ago | IN | 0 ETH | 0.00219235 | ||||
Add To Whitelist | 5926309 | 2454 days ago | IN | 0 ETH | 0.00219555 | ||||
Add To Whitelist | 5926309 | 2454 days ago | IN | 0 ETH | 0.00219555 | ||||
Add To Whitelist | 5926309 | 2454 days ago | IN | 0 ETH | 0.00219555 | ||||
Add To Whitelist | 5926309 | 2454 days ago | IN | 0 ETH | 0.00219555 | ||||
Add To Whitelist | 5926309 | 2454 days ago | IN | 0 ETH | 0.00219555 | ||||
Add To Whitelist | 5926309 | 2454 days ago | IN | 0 ETH | 0.00219235 | ||||
Register Contrac... | 5926306 | 2454 days ago | IN | 0 ETH | 0.0038173 | ||||
Register Contrac... | 5926303 | 2454 days ago | IN | 0 ETH | 0.0054741 | ||||
Register Contrac... | 5926302 | 2454 days ago | IN | 0 ETH | 0.0054261 | ||||
Register Contrac... | 5926297 | 2454 days ago | IN | 0 ETH | 0.0054357 | ||||
Register Contrac... | 5926289 | 2454 days ago | IN | 0 ETH | 0.0054933 | ||||
Register Contrac... | 5926289 | 2454 days ago | IN | 0 ETH | 0.0054325 | ||||
Register Contrac... | 5926289 | 2454 days ago | IN | 0 ETH | 0.0054485 | ||||
Register Contrac... | 5926289 | 2454 days ago | IN | 0 ETH | 0.0054549 | ||||
Register Contrac... | 5926289 | 2454 days ago | IN | 0 ETH | 0.0054581 | ||||
Register Contrac... | 5926289 | 2454 days ago | IN | 0 ETH | 0.0054453 | ||||
Register Contrac... | 5926289 | 2454 days ago | IN | 0 ETH | 0.0054549 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
Controller
Compiler Version
v0.4.20+commit.3155dd80
Optimization Enabled:
Yes with 500 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-07-08 */ pragma solidity 0.4.20; contract IAugur { function createChildUniverse(bytes32 _parentPayoutDistributionHash, uint256[] _parentPayoutNumerators, bool _parentInvalid) public returns (IUniverse); function isKnownUniverse(IUniverse _universe) public view returns (bool); function trustedTransfer(ERC20 _token, address _from, address _to, uint256 _amount) public returns (bool); function logMarketCreated(bytes32 _topic, string _description, string _extraInfo, IUniverse _universe, address _market, address _marketCreator, bytes32[] _outcomes, int256 _minPrice, int256 _maxPrice, IMarket.MarketType _marketType) public returns (bool); function logMarketCreated(bytes32 _topic, string _description, string _extraInfo, IUniverse _universe, address _market, address _marketCreator, int256 _minPrice, int256 _maxPrice, IMarket.MarketType _marketType) public returns (bool); function logInitialReportSubmitted(IUniverse _universe, address _reporter, address _market, uint256 _amountStaked, bool _isDesignatedReporter, uint256[] _payoutNumerators, bool _invalid) public returns (bool); function disputeCrowdsourcerCreated(IUniverse _universe, address _market, address _disputeCrowdsourcer, uint256[] _payoutNumerators, uint256 _size, bool _invalid) public returns (bool); function logDisputeCrowdsourcerContribution(IUniverse _universe, address _reporter, address _market, address _disputeCrowdsourcer, uint256 _amountStaked) public returns (bool); function logDisputeCrowdsourcerCompleted(IUniverse _universe, address _market, address _disputeCrowdsourcer) public returns (bool); function logInitialReporterRedeemed(IUniverse _universe, address _reporter, address _market, uint256 _amountRedeemed, uint256 _repReceived, uint256 _reportingFeesReceived, uint256[] _payoutNumerators) public returns (bool); function logDisputeCrowdsourcerRedeemed(IUniverse _universe, address _reporter, address _market, uint256 _amountRedeemed, uint256 _repReceived, uint256 _reportingFeesReceived, uint256[] _payoutNumerators) public returns (bool); function logFeeWindowRedeemed(IUniverse _universe, address _reporter, uint256 _amountRedeemed, uint256 _reportingFeesReceived) public returns (bool); function logMarketFinalized(IUniverse _universe) public returns (bool); function logMarketMigrated(IMarket _market, IUniverse _originalUniverse) public returns (bool); function logReportingParticipantDisavowed(IUniverse _universe, IMarket _market) public returns (bool); function logMarketParticipantsDisavowed(IUniverse _universe) public returns (bool); function logOrderCanceled(IUniverse _universe, address _shareToken, address _sender, bytes32 _orderId, Order.Types _orderType, uint256 _tokenRefund, uint256 _sharesRefund) public returns (bool); function logOrderCreated(Order.Types _orderType, uint256 _amount, uint256 _price, address _creator, uint256 _moneyEscrowed, uint256 _sharesEscrowed, bytes32 _tradeGroupId, bytes32 _orderId, IUniverse _universe, address _shareToken) public returns (bool); function logOrderFilled(IUniverse _universe, address _shareToken, address _filler, bytes32 _orderId, uint256 _numCreatorShares, uint256 _numCreatorTokens, uint256 _numFillerShares, uint256 _numFillerTokens, uint256 _marketCreatorFees, uint256 _reporterFees, uint256 _amountFilled, bytes32 _tradeGroupId) public returns (bool); function logCompleteSetsPurchased(IUniverse _universe, IMarket _market, address _account, uint256 _numCompleteSets) public returns (bool); function logCompleteSetsSold(IUniverse _universe, IMarket _market, address _account, uint256 _numCompleteSets) public returns (bool); function logTradingProceedsClaimed(IUniverse _universe, address _shareToken, address _sender, address _market, uint256 _numShares, uint256 _numPayoutTokens, uint256 _finalTokenBalance) public returns (bool); function logUniverseForked() public returns (bool); function logFeeWindowTransferred(IUniverse _universe, address _from, address _to, uint256 _value) public returns (bool); function logReputationTokensTransferred(IUniverse _universe, address _from, address _to, uint256 _value) public returns (bool); function logDisputeCrowdsourcerTokensTransferred(IUniverse _universe, address _from, address _to, uint256 _value) public returns (bool); function logShareTokensTransferred(IUniverse _universe, address _from, address _to, uint256 _value) public returns (bool); function logReputationTokenBurned(IUniverse _universe, address _target, uint256 _amount) public returns (bool); function logReputationTokenMinted(IUniverse _universe, address _target, uint256 _amount) public returns (bool); function logShareTokenBurned(IUniverse _universe, address _target, uint256 _amount) public returns (bool); function logShareTokenMinted(IUniverse _universe, address _target, uint256 _amount) public returns (bool); function logFeeWindowBurned(IUniverse _universe, address _target, uint256 _amount) public returns (bool); function logFeeWindowMinted(IUniverse _universe, address _target, uint256 _amount) public returns (bool); function logDisputeCrowdsourcerTokensBurned(IUniverse _universe, address _target, uint256 _amount) public returns (bool); function logDisputeCrowdsourcerTokensMinted(IUniverse _universe, address _target, uint256 _amount) public returns (bool); function logFeeWindowCreated(IFeeWindow _feeWindow, uint256 _id) public returns (bool); function logFeeTokenTransferred(IUniverse _universe, address _from, address _to, uint256 _value) public returns (bool); function logFeeTokenBurned(IUniverse _universe, address _target, uint256 _amount) public returns (bool); function logFeeTokenMinted(IUniverse _universe, address _target, uint256 _amount) public returns (bool); function logTimestampSet(uint256 _newTimestamp) public returns (bool); function logInitialReporterTransferred(IUniverse _universe, IMarket _market, address _from, address _to) public returns (bool); function logMarketTransferred(IUniverse _universe, address _from, address _to) public returns (bool); function logMarketMailboxTransferred(IUniverse _universe, IMarket _market, address _from, address _to) public returns (bool); function logEscapeHatchChanged(bool _isOn) public returns (bool); } contract IControlled { function getController() public view returns (IController); function setController(IController _controller) public returns(bool); } contract Controlled is IControlled { IController internal controller; modifier onlyWhitelistedCallers { require(controller.assertIsWhitelisted(msg.sender)); _; } modifier onlyCaller(bytes32 _key) { require(msg.sender == controller.lookup(_key)); _; } modifier onlyControllerCaller { require(IController(msg.sender) == controller); _; } modifier onlyInGoodTimes { require(controller.stopInEmergency()); _; } modifier onlyInBadTimes { require(controller.onlyInEmergency()); _; } function Controlled() public { controller = IController(msg.sender); } function getController() public view returns(IController) { return controller; } function setController(IController _controller) public onlyControllerCaller returns(bool) { controller = _controller; return true; } } contract IController { function assertIsWhitelisted(address _target) public view returns(bool); function lookup(bytes32 _key) public view returns(address); function stopInEmergency() public view returns(bool); function onlyInEmergency() public view returns(bool); function getAugur() public view returns (IAugur); function getTimestamp() public view returns (uint256); } contract Controller is IController { struct ContractDetails { bytes32 name; address contractAddress; bytes20 commitHash; bytes32 bytecodeHash; } address public owner; mapping(address => bool) public whitelist; mapping(bytes32 => ContractDetails) public registry; bool public stopped = false; modifier onlyOwnerCaller { require(msg.sender == owner); _; } modifier onlyInBadTimes { require(stopped); _; } modifier onlyInGoodTimes { require(!stopped); _; } function Controller() public { owner = msg.sender; whitelist[msg.sender] = true; } /* * Contract Administration */ function addToWhitelist(address _target) public onlyOwnerCaller returns (bool) { whitelist[_target] = true; return true; } function removeFromWhitelist(address _target) public onlyOwnerCaller returns (bool) { whitelist[_target] = false; return true; } function assertIsWhitelisted(address _target) public view returns (bool) { require(whitelist[_target]); return true; } function registerContract(bytes32 _key, address _address, bytes20 _commitHash, bytes32 _bytecodeHash) public onlyOwnerCaller returns (bool) { require(registry[_key].contractAddress == address(0)); registry[_key] = ContractDetails(_key, _address, _commitHash, _bytecodeHash); return true; } function getContractDetails(bytes32 _key) public view returns (address, bytes20, bytes32) { ContractDetails storage _details = registry[_key]; return (_details.contractAddress, _details.commitHash, _details.bytecodeHash); } function lookup(bytes32 _key) public view returns (address) { return registry[_key].contractAddress; } function transferOwnership(address _newOwner) public onlyOwnerCaller returns (bool) { owner = _newOwner; return true; } function emergencyStop() public onlyOwnerCaller onlyInGoodTimes returns (bool) { getAugur().logEscapeHatchChanged(true); stopped = true; return true; } function stopInEmergency() public view onlyInGoodTimes returns (bool) { return true; } function onlyInEmergency() public view onlyInBadTimes returns (bool) { return true; } /* * Helper functions */ function getAugur() public view returns (IAugur) { return IAugur(lookup("Augur")); } function getTimestamp() public view returns (uint256) { return ITime(lookup("Time")).getTimestamp(); } } contract IOwnable { function getOwner() public view returns (address); function transferOwnership(address newOwner) public returns (bool); } contract ITyped { function getTypeName() public view returns (bytes32); } contract ITime is Controlled, ITyped { function getTimestamp() external view returns (uint256); } contract Initializable { bool private initialized = false; modifier afterInitialized { require(initialized); _; } modifier beforeInitialized { require(!initialized); _; } function endInitialization() internal beforeInitialized returns (bool) { initialized = true; return true; } function getInitialized() public view returns (bool) { return initialized; } } library SafeMathUint256 { function mul(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a * b; require(a == 0 || c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a); return c; } function min(uint256 a, uint256 b) internal pure returns (uint256) { if (a <= b) { return a; } else { return b; } } function max(uint256 a, uint256 b) internal pure returns (uint256) { if (a >= b) { return a; } else { return b; } } function getUint256Min() internal pure returns (uint256) { return 0; } function getUint256Max() internal pure returns (uint256) { return 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff; } function isMultipleOf(uint256 a, uint256 b) internal pure returns (bool) { return a % b == 0; } // Float [fixed point] Operations function fxpMul(uint256 a, uint256 b, uint256 base) internal pure returns (uint256) { return div(mul(a, b), base); } function fxpDiv(uint256 a, uint256 b, uint256 base) internal pure returns (uint256) { return div(mul(a, base), b); } } contract ERC20Basic { event Transfer(address indexed from, address indexed to, uint256 value); function balanceOf(address _who) public view returns (uint256); function transfer(address _to, uint256 _value) public returns (bool); function totalSupply() public view returns (uint256); } contract ERC20 is ERC20Basic { event Approval(address indexed owner, address indexed spender, uint256 value); function allowance(address _owner, address _spender) public view returns (uint256); function transferFrom(address _from, address _to, uint256 _value) public returns (bool); function approve(address _spender, uint256 _value) public returns (bool); } contract IFeeToken is ERC20, Initializable { function initialize(IFeeWindow _feeWindow) public returns (bool); function getFeeWindow() public view returns (IFeeWindow); function feeWindowBurn(address _target, uint256 _amount) public returns (bool); function mintForReportingParticipant(address _target, uint256 _amount) public returns (bool); } contract IFeeWindow is ITyped, ERC20 { function initialize(IUniverse _universe, uint256 _feeWindowId) public returns (bool); function getUniverse() public view returns (IUniverse); function getReputationToken() public view returns (IReputationToken); function getStartTime() public view returns (uint256); function getEndTime() public view returns (uint256); function getNumMarkets() public view returns (uint256); function getNumInvalidMarkets() public view returns (uint256); function getNumIncorrectDesignatedReportMarkets() public view returns (uint256); function getNumDesignatedReportNoShows() public view returns (uint256); function getFeeToken() public view returns (IFeeToken); function isActive() public view returns (bool); function isOver() public view returns (bool); function onMarketFinalized() public returns (bool); function buy(uint256 _attotokens) public returns (bool); function redeem(address _sender) public returns (bool); function redeemForReportingParticipant() public returns (bool); function mintFeeTokens(uint256 _amount) public returns (bool); function trustedUniverseBuy(address _buyer, uint256 _attotokens) public returns (bool); } contract IMailbox { function initialize(address _owner, IMarket _market) public returns (bool); function depositEther() public payable returns (bool); } contract IMarket is ITyped, IOwnable { enum MarketType { YES_NO, CATEGORICAL, SCALAR } function initialize(IUniverse _universe, uint256 _endTime, uint256 _feePerEthInAttoeth, ICash _cash, address _designatedReporterAddress, address _creator, uint256 _numOutcomes, uint256 _numTicks) public payable returns (bool _success); function derivePayoutDistributionHash(uint256[] _payoutNumerators, bool _invalid) public view returns (bytes32); function getUniverse() public view returns (IUniverse); function getFeeWindow() public view returns (IFeeWindow); function getNumberOfOutcomes() public view returns (uint256); function getNumTicks() public view returns (uint256); function getDenominationToken() public view returns (ICash); function getShareToken(uint256 _outcome) public view returns (IShareToken); function getMarketCreatorSettlementFeeDivisor() public view returns (uint256); function getForkingMarket() public view returns (IMarket _market); function getEndTime() public view returns (uint256); function getMarketCreatorMailbox() public view returns (IMailbox); function getWinningPayoutDistributionHash() public view returns (bytes32); function getWinningPayoutNumerator(uint256 _outcome) public view returns (uint256); function getReputationToken() public view returns (IReputationToken); function getFinalizationTime() public view returns (uint256); function getInitialReporterAddress() public view returns (address); function deriveMarketCreatorFeeAmount(uint256 _amount) public view returns (uint256); function isContainerForShareToken(IShareToken _shadyTarget) public view returns (bool); function isContainerForReportingParticipant(IReportingParticipant _reportingParticipant) public view returns (bool); function isInvalid() public view returns (bool); function finalize() public returns (bool); function designatedReporterWasCorrect() public view returns (bool); function designatedReporterShowed() public view returns (bool); function isFinalized() public view returns (bool); function finalizeFork() public returns (bool); function assertBalances() public view returns (bool); } contract IReportingParticipant { function getStake() public view returns (uint256); function getPayoutDistributionHash() public view returns (bytes32); function liquidateLosing() public returns (bool); function redeem(address _redeemer) public returns (bool); function isInvalid() public view returns (bool); function isDisavowed() public view returns (bool); function migrate() public returns (bool); function getPayoutNumerator(uint256 _outcome) public view returns (uint256); function getMarket() public view returns (IMarket); function getSize() public view returns (uint256); } contract IDisputeCrowdsourcer is IReportingParticipant, ERC20 { function initialize(IMarket market, uint256 _size, bytes32 _payoutDistributionHash, uint256[] _payoutNumerators, bool _invalid) public returns (bool); function contribute(address _participant, uint256 _amount) public returns (uint256); } contract IReputationToken is ITyped, ERC20 { function initialize(IUniverse _universe) public returns (bool); function migrateOut(IReputationToken _destination, uint256 _attotokens) public returns (bool); function migrateIn(address _reporter, uint256 _attotokens) public returns (bool); function trustedReportingParticipantTransfer(address _source, address _destination, uint256 _attotokens) public returns (bool); function trustedMarketTransfer(address _source, address _destination, uint256 _attotokens) public returns (bool); function trustedFeeWindowTransfer(address _source, address _destination, uint256 _attotokens) public returns (bool); function trustedUniverseTransfer(address _source, address _destination, uint256 _attotokens) public returns (bool); function getUniverse() public view returns (IUniverse); function getTotalMigrated() public view returns (uint256); function getTotalTheoreticalSupply() public view returns (uint256); function mintForReportingParticipant(uint256 _amountMigrated) public returns (bool); } contract IUniverse is ITyped { function initialize(IUniverse _parentUniverse, bytes32 _parentPayoutDistributionHash) external returns (bool); function fork() public returns (bool); function getParentUniverse() public view returns (IUniverse); function createChildUniverse(uint256[] _parentPayoutNumerators, bool _invalid) public returns (IUniverse); function getChildUniverse(bytes32 _parentPayoutDistributionHash) public view returns (IUniverse); function getReputationToken() public view returns (IReputationToken); function getForkingMarket() public view returns (IMarket); function getForkEndTime() public view returns (uint256); function getForkReputationGoal() public view returns (uint256); function getParentPayoutDistributionHash() public view returns (bytes32); function getDisputeRoundDurationInSeconds() public view returns (uint256); function getOrCreateFeeWindowByTimestamp(uint256 _timestamp) public returns (IFeeWindow); function getOrCreateCurrentFeeWindow() public returns (IFeeWindow); function getOrCreateNextFeeWindow() public returns (IFeeWindow); function getOpenInterestInAttoEth() public view returns (uint256); function getRepMarketCapInAttoeth() public view returns (uint256); function getTargetRepMarketCapInAttoeth() public view returns (uint256); function getOrCacheValidityBond() public returns (uint256); function getOrCacheDesignatedReportStake() public returns (uint256); function getOrCacheDesignatedReportNoShowBond() public returns (uint256); function getOrCacheReportingFeeDivisor() public returns (uint256); function getDisputeThresholdForFork() public view returns (uint256); function getInitialReportMinValue() public view returns (uint256); function calculateFloatingValue(uint256 _badMarkets, uint256 _totalMarkets, uint256 _targetDivisor, uint256 _previousValue, uint256 _defaultValue, uint256 _floor) public pure returns (uint256 _newValue); function getOrCacheMarketCreationCost() public returns (uint256); function getCurrentFeeWindow() public view returns (IFeeWindow); function getOrCreateFeeWindowBefore(IFeeWindow _feeWindow) public returns (IFeeWindow); function isParentOf(IUniverse _shadyChild) public view returns (bool); function updateTentativeWinningChildUniverse(bytes32 _parentPayoutDistributionHash) public returns (bool); function isContainerForFeeWindow(IFeeWindow _shadyTarget) public view returns (bool); function isContainerForMarket(IMarket _shadyTarget) public view returns (bool); function isContainerForReportingParticipant(IReportingParticipant _reportingParticipant) public view returns (bool); function isContainerForShareToken(IShareToken _shadyTarget) public view returns (bool); function isContainerForFeeToken(IFeeToken _shadyTarget) public view returns (bool); function addMarketTo() public returns (bool); function removeMarketFrom() public returns (bool); function decrementOpenInterest(uint256 _amount) public returns (bool); function decrementOpenInterestFromMarket(uint256 _amount) public returns (bool); function incrementOpenInterest(uint256 _amount) public returns (bool); function incrementOpenInterestFromMarket(uint256 _amount) public returns (bool); function getWinningChildUniverse() public view returns (IUniverse); function isForking() public view returns (bool); } contract ICash is ERC20 { function depositEther() external payable returns(bool); function depositEtherFor(address _to) external payable returns(bool); function withdrawEther(uint256 _amount) external returns(bool); function withdrawEtherTo(address _to, uint256 _amount) external returns(bool); function withdrawEtherToIfPossible(address _to, uint256 _amount) external returns (bool); } contract IOrders { function saveOrder(Order.Types _type, IMarket _market, uint256 _fxpAmount, uint256 _price, address _sender, uint256 _outcome, uint256 _moneyEscrowed, uint256 _sharesEscrowed, bytes32 _betterOrderId, bytes32 _worseOrderId, bytes32 _tradeGroupId) public returns (bytes32 _orderId); function removeOrder(bytes32 _orderId) public returns (bool); function getMarket(bytes32 _orderId) public view returns (IMarket); function getOrderType(bytes32 _orderId) public view returns (Order.Types); function getOutcome(bytes32 _orderId) public view returns (uint256); function getAmount(bytes32 _orderId) public view returns (uint256); function getPrice(bytes32 _orderId) public view returns (uint256); function getOrderCreator(bytes32 _orderId) public view returns (address); function getOrderSharesEscrowed(bytes32 _orderId) public view returns (uint256); function getOrderMoneyEscrowed(bytes32 _orderId) public view returns (uint256); function getBetterOrderId(bytes32 _orderId) public view returns (bytes32); function getWorseOrderId(bytes32 _orderId) public view returns (bytes32); function getBestOrderId(Order.Types _type, IMarket _market, uint256 _outcome) public view returns (bytes32); function getWorstOrderId(Order.Types _type, IMarket _market, uint256 _outcome) public view returns (bytes32); function getLastOutcomePrice(IMarket _market, uint256 _outcome) public view returns (uint256); function getOrderId(Order.Types _type, IMarket _market, uint256 _fxpAmount, uint256 _price, address _sender, uint256 _blockNumber, uint256 _outcome, uint256 _moneyEscrowed, uint256 _sharesEscrowed) public pure returns (bytes32); function getTotalEscrowed(IMarket _market) public view returns (uint256); function isBetterPrice(Order.Types _type, uint256 _price, bytes32 _orderId) public view returns (bool); function isWorsePrice(Order.Types _type, uint256 _price, bytes32 _orderId) public view returns (bool); function assertIsNotBetterPrice(Order.Types _type, uint256 _price, bytes32 _betterOrderId) public view returns (bool); function assertIsNotWorsePrice(Order.Types _type, uint256 _price, bytes32 _worseOrderId) public returns (bool); function recordFillOrder(bytes32 _orderId, uint256 _sharesFilled, uint256 _tokensFilled) public returns (bool); function setPrice(IMarket _market, uint256 _outcome, uint256 _price) external returns (bool); function incrementTotalEscrowed(IMarket _market, uint256 _amount) external returns (bool); function decrementTotalEscrowed(IMarket _market, uint256 _amount) external returns (bool); } contract IShareToken is ITyped, ERC20 { function initialize(IMarket _market, uint256 _outcome) external returns (bool); function createShares(address _owner, uint256 _amount) external returns (bool); function destroyShares(address, uint256 balance) external returns (bool); function getMarket() external view returns (IMarket); function getOutcome() external view returns (uint256); function trustedOrderTransfer(address _source, address _destination, uint256 _attotokens) public returns (bool); function trustedFillOrderTransfer(address _source, address _destination, uint256 _attotokens) public returns (bool); function trustedCancelOrderTransfer(address _source, address _destination, uint256 _attotokens) public returns (bool); } library Order { using SafeMathUint256 for uint256; enum Types { Bid, Ask } enum TradeDirections { Long, Short } struct Data { // Contracts IOrders orders; IMarket market; IAugur augur; // Order bytes32 id; address creator; uint256 outcome; Order.Types orderType; uint256 amount; uint256 price; uint256 sharesEscrowed; uint256 moneyEscrowed; bytes32 betterOrderId; bytes32 worseOrderId; } // // Constructor // // No validation is needed here as it is simply a librarty function for organizing data function create(IController _controller, address _creator, uint256 _outcome, Order.Types _type, uint256 _attoshares, uint256 _price, IMarket _market, bytes32 _betterOrderId, bytes32 _worseOrderId) internal view returns (Data) { require(_outcome < _market.getNumberOfOutcomes()); require(_price < _market.getNumTicks()); IOrders _orders = IOrders(_controller.lookup("Orders")); IAugur _augur = _controller.getAugur(); return Data({ orders: _orders, market: _market, augur: _augur, id: 0, creator: _creator, outcome: _outcome, orderType: _type, amount: _attoshares, price: _price, sharesEscrowed: 0, moneyEscrowed: 0, betterOrderId: _betterOrderId, worseOrderId: _worseOrderId }); } // // "public" functions // function getOrderId(Order.Data _orderData) internal view returns (bytes32) { if (_orderData.id == bytes32(0)) { bytes32 _orderId = _orderData.orders.getOrderId(_orderData.orderType, _orderData.market, _orderData.amount, _orderData.price, _orderData.creator, block.number, _orderData.outcome, _orderData.moneyEscrowed, _orderData.sharesEscrowed); require(_orderData.orders.getAmount(_orderId) == 0); _orderData.id = _orderId; } return _orderData.id; } function getOrderTradingTypeFromMakerDirection(Order.TradeDirections _creatorDirection) internal pure returns (Order.Types) { return (_creatorDirection == Order.TradeDirections.Long) ? Order.Types.Bid : Order.Types.Ask; } function getOrderTradingTypeFromFillerDirection(Order.TradeDirections _fillerDirection) internal pure returns (Order.Types) { return (_fillerDirection == Order.TradeDirections.Long) ? Order.Types.Ask : Order.Types.Bid; } function escrowFunds(Order.Data _orderData) internal returns (bool) { if (_orderData.orderType == Order.Types.Ask) { return escrowFundsForAsk(_orderData); } else if (_orderData.orderType == Order.Types.Bid) { return escrowFundsForBid(_orderData); } } function saveOrder(Order.Data _orderData, bytes32 _tradeGroupId) internal returns (bytes32) { return _orderData.orders.saveOrder(_orderData.orderType, _orderData.market, _orderData.amount, _orderData.price, _orderData.creator, _orderData.outcome, _orderData.moneyEscrowed, _orderData.sharesEscrowed, _orderData.betterOrderId, _orderData.worseOrderId, _tradeGroupId); } // // Private functions // function escrowFundsForBid(Order.Data _orderData) private returns (bool) { require(_orderData.moneyEscrowed == 0); require(_orderData.sharesEscrowed == 0); uint256 _attosharesToCover = _orderData.amount; uint256 _numberOfOutcomes = _orderData.market.getNumberOfOutcomes(); // Figure out how many almost-complete-sets (just missing `outcome` share) the creator has uint256 _attosharesHeld = 2**254; for (uint256 _i = 0; _i < _numberOfOutcomes; _i++) { if (_i != _orderData.outcome) { uint256 _creatorShareTokenBalance = _orderData.market.getShareToken(_i).balanceOf(_orderData.creator); _attosharesHeld = SafeMathUint256.min(_creatorShareTokenBalance, _attosharesHeld); } } // Take shares into escrow if they have any almost-complete-sets if (_attosharesHeld > 0) { _orderData.sharesEscrowed = SafeMathUint256.min(_attosharesHeld, _attosharesToCover); _attosharesToCover -= _orderData.sharesEscrowed; for (_i = 0; _i < _numberOfOutcomes; _i++) { if (_i != _orderData.outcome) { _orderData.market.getShareToken(_i).trustedOrderTransfer(_orderData.creator, _orderData.market, _orderData.sharesEscrowed); } } } // If not able to cover entire order with shares alone, then cover remaining with tokens if (_attosharesToCover > 0) { _orderData.moneyEscrowed = _attosharesToCover.mul(_orderData.price); require(_orderData.augur.trustedTransfer(_orderData.market.getDenominationToken(), _orderData.creator, _orderData.market, _orderData.moneyEscrowed)); } return true; } function escrowFundsForAsk(Order.Data _orderData) private returns (bool) { require(_orderData.moneyEscrowed == 0); require(_orderData.sharesEscrowed == 0); IShareToken _shareToken = _orderData.market.getShareToken(_orderData.outcome); uint256 _attosharesToCover = _orderData.amount; // Figure out how many shares of the outcome the creator has uint256 _attosharesHeld = _shareToken.balanceOf(_orderData.creator); // Take shares in escrow if user has shares if (_attosharesHeld > 0) { _orderData.sharesEscrowed = SafeMathUint256.min(_attosharesHeld, _attosharesToCover); _attosharesToCover -= _orderData.sharesEscrowed; _shareToken.trustedOrderTransfer(_orderData.creator, _orderData.market, _orderData.sharesEscrowed); } // If not able to cover entire order with shares alone, then cover remaining with tokens if (_attosharesToCover > 0) { _orderData.moneyEscrowed = _orderData.market.getNumTicks().sub(_orderData.price).mul(_attosharesToCover); require(_orderData.augur.trustedTransfer(_orderData.market.getDenominationToken(), _orderData.creator, _orderData.market, _orderData.moneyEscrowed)); } return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[{"name":"_key","type":"bytes32"}],"name":"getContractDetails","outputs":[{"name":"","type":"address"},{"name":"","type":"bytes20"},{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTimestamp","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stopInEmergency","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_key","type":"bytes32"},{"name":"_address","type":"address"},{"name":"_commitHash","type":"bytes20"},{"name":"_bytecodeHash","type":"bytes32"}],"name":"registerContract","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"onlyInEmergency","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_target","type":"address"}],"name":"assertIsWhitelisted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getAugur","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"emergencyStop","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stopped","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"registry","outputs":[{"name":"name","type":"bytes32"},{"name":"contractAddress","type":"address"},{"name":"commitHash","type":"bytes20"},{"name":"bytecodeHash","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"}],"name":"removeFromWhitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"}],"name":"addToWhitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_key","type":"bytes32"}],"name":"lookup","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]
Contract Creation Code
60606040526003805460ff19169055341561001957600080fd5b60008054600160a060020a033316600160a060020a0319909116811782558152600160208190526040909120805460ff191690911790556108248061005f6000396000f3006060604052600436106100e55763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663185e996981146100ea578063188ec3561461013c57806322763ae1146101615780632d6d8523146101885780633b048123146101bf5780633f08882f146101d25780634e94c829146101f157806363a599a41461022057806375f12b21146102335780637ef50298146102465780638ab1d6811461029f5780638da5cb5b146102be5780639b19251a146102d1578063e43252d7146102f0578063f2fde38b1461030f578063f39ec1f71461032e575b600080fd5b34156100f557600080fd5b610100600435610344565b604051600160a060020a0390931683526bffffffffffffffffffffffff1990911660208301526040808301919091526060909101905180910390f35b341561014757600080fd5b61014f610385565b60405190815260200160405180910390f35b341561016c57600080fd5b61017461042d565b604051901515815260200160405180910390f35b341561019357600080fd5b610174600435600160a060020a03602435166bffffffffffffffffffffffff1960443516606435610446565b34156101ca57600080fd5b610174610559565b34156101dd57600080fd5b610174600160a060020a036004351661056d565b34156101fc57600080fd5b61020461059c565b604051600160a060020a03909116815260200160405180910390f35b341561022b57600080fd5b6101746105cc565b341561023e57600080fd5b610174610698565b341561025157600080fd5b61025c6004356106a1565b604051938452600160a060020a0390921660208401526bffffffffffffffffffffffff191660408084019190915260608301919091526080909101905180910390f35b34156102aa57600080fd5b610174600160a060020a03600435166106e2565b34156102c957600080fd5b610204610724565b34156102dc57600080fd5b610174600160a060020a0360043516610733565b34156102fb57600080fd5b610174600160a060020a0360043516610748565b341561031a57600080fd5b610174600160a060020a036004351661078c565b341561033957600080fd5b6102046004356107da565b6000908152600260208190526040909120600181015491810154600390910154600160a060020a03909216926c010000000000000000000000009091029190565b60006103b07f54696d65000000000000000000000000000000000000000000000000000000006107da565b600160a060020a031663188ec3566000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561040e57600080fd5b6102c65a03f1151561041f57600080fd5b505050604051805191505090565b60035460009060ff161561044057600080fd5b50600190565b6000805433600160a060020a0390811691161461046257600080fd5b600085815260026020526040902060010154600160a060020a03161561048757600080fd5b60806040519081016040908152868252600160a060020a0386166020808401919091526bffffffffffffffffffffffff1986168284015260608301859052600088815260029091522081518155602082015160018201805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055604082015160028201805473ffffffffffffffffffffffffffffffffffffffff19166c0100000000000000000000000090920491909117905560608201516003909101555060019050949350505050565b60035460009060ff16151561044057600080fd5b600160a060020a03811660009081526001602052604081205460ff16151561059457600080fd5b506001919050565b60006105c77f41756775720000000000000000000000000000000000000000000000000000006107da565b905090565b6000805433600160a060020a039081169116146105e857600080fd5b60035460ff16156105f857600080fd5b61060061059c565b600160a060020a031663a3b1dc5260016000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff84160281529015156004820152602401602060405180830381600087803b151561066857600080fd5b6102c65a03f1151561067957600080fd5b505050604051805150506003805460ff19166001908117909155905090565b60035460ff1681565b600260208190526000918252604090912080546001820154928201546003909201549092600160a060020a0316916c01000000000000000000000000029084565b6000805433600160a060020a039081169116146106fe57600080fd5b50600160a060020a03166000908152600160208190526040909120805460ff1916905590565b600054600160a060020a031681565b60016020526000908152604090205460ff1681565b6000805433600160a060020a0390811691161461076457600080fd5b50600160a060020a03166000908152600160208190526040909120805460ff19168217905590565b6000805433600160a060020a039081169116146107a857600080fd5b5060008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b600090815260026020526040902060010154600160a060020a0316905600a165627a7a7230582097fa392fba32872d37de2362c5e4038b9c76361901f8e4b0ed2de6f0c5e8f22e0029
Deployed Bytecode
0x6060604052600436106100e55763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663185e996981146100ea578063188ec3561461013c57806322763ae1146101615780632d6d8523146101885780633b048123146101bf5780633f08882f146101d25780634e94c829146101f157806363a599a41461022057806375f12b21146102335780637ef50298146102465780638ab1d6811461029f5780638da5cb5b146102be5780639b19251a146102d1578063e43252d7146102f0578063f2fde38b1461030f578063f39ec1f71461032e575b600080fd5b34156100f557600080fd5b610100600435610344565b604051600160a060020a0390931683526bffffffffffffffffffffffff1990911660208301526040808301919091526060909101905180910390f35b341561014757600080fd5b61014f610385565b60405190815260200160405180910390f35b341561016c57600080fd5b61017461042d565b604051901515815260200160405180910390f35b341561019357600080fd5b610174600435600160a060020a03602435166bffffffffffffffffffffffff1960443516606435610446565b34156101ca57600080fd5b610174610559565b34156101dd57600080fd5b610174600160a060020a036004351661056d565b34156101fc57600080fd5b61020461059c565b604051600160a060020a03909116815260200160405180910390f35b341561022b57600080fd5b6101746105cc565b341561023e57600080fd5b610174610698565b341561025157600080fd5b61025c6004356106a1565b604051938452600160a060020a0390921660208401526bffffffffffffffffffffffff191660408084019190915260608301919091526080909101905180910390f35b34156102aa57600080fd5b610174600160a060020a03600435166106e2565b34156102c957600080fd5b610204610724565b34156102dc57600080fd5b610174600160a060020a0360043516610733565b34156102fb57600080fd5b610174600160a060020a0360043516610748565b341561031a57600080fd5b610174600160a060020a036004351661078c565b341561033957600080fd5b6102046004356107da565b6000908152600260208190526040909120600181015491810154600390910154600160a060020a03909216926c010000000000000000000000009091029190565b60006103b07f54696d65000000000000000000000000000000000000000000000000000000006107da565b600160a060020a031663188ec3566000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561040e57600080fd5b6102c65a03f1151561041f57600080fd5b505050604051805191505090565b60035460009060ff161561044057600080fd5b50600190565b6000805433600160a060020a0390811691161461046257600080fd5b600085815260026020526040902060010154600160a060020a03161561048757600080fd5b60806040519081016040908152868252600160a060020a0386166020808401919091526bffffffffffffffffffffffff1986168284015260608301859052600088815260029091522081518155602082015160018201805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055604082015160028201805473ffffffffffffffffffffffffffffffffffffffff19166c0100000000000000000000000090920491909117905560608201516003909101555060019050949350505050565b60035460009060ff16151561044057600080fd5b600160a060020a03811660009081526001602052604081205460ff16151561059457600080fd5b506001919050565b60006105c77f41756775720000000000000000000000000000000000000000000000000000006107da565b905090565b6000805433600160a060020a039081169116146105e857600080fd5b60035460ff16156105f857600080fd5b61060061059c565b600160a060020a031663a3b1dc5260016000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff84160281529015156004820152602401602060405180830381600087803b151561066857600080fd5b6102c65a03f1151561067957600080fd5b505050604051805150506003805460ff19166001908117909155905090565b60035460ff1681565b600260208190526000918252604090912080546001820154928201546003909201549092600160a060020a0316916c01000000000000000000000000029084565b6000805433600160a060020a039081169116146106fe57600080fd5b50600160a060020a03166000908152600160208190526040909120805460ff1916905590565b600054600160a060020a031681565b60016020526000908152604090205460ff1681565b6000805433600160a060020a0390811691161461076457600080fd5b50600160a060020a03166000908152600160208190526040909120805460ff19168217905590565b6000805433600160a060020a039081169116146107a857600080fd5b5060008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b600090815260026020526040902060010154600160a060020a0316905600a165627a7a7230582097fa392fba32872d37de2362c5e4038b9c76361901f8e4b0ed2de6f0c5e8f22e0029
Swarm Source
bzzr://97fa392fba32872d37de2362c5e4038b9c76361901f8e4b0ed2de6f0c5e8f22e
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.