Sponsored:   Ubex.com - Token sale will end in just 4 days. 98% hard cap already reached. Don't Miss Out!
 Latest 25 txns From a total of 2317 Transactions
(+9 PendingTxns)

TxHash Age From To Value [TxFee]
0xe8ee3237c42d18fb0ac45f50ea26e85321f0a89fec168f099b856eaa737924cf(pending)0x27401ad12cdaffe1fb76fe1cffd2c512e3034e12  IN  0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0 Ether(Pending)
0x47d41a741a5c80655e1ea57b3ca47789afe13cc08ba0e586b827e5549b5bd636(pending)0x256047a80b0bc1f363c5868ca171c7fff38b458d  IN  0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0 Ether(Pending)
0x7275fa6328223c0a2a6bc1c024fdcd40f6d2557d22d4d2768103e2269a4f64f9(pending)0xd4f1231e0dcc86785a9b71a996bf5e6f4a331b43  IN  0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0 Ether(Pending)
0xfd8c6b5cace87de64f5b93942c56758c8004d9735627a366e719a224d9ba8f26(pending)0x054f686702e9f1c002aac1aff7bf006a6c97ae52  IN  0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0 Ether(Pending)
0x42ee2b56cb630412310f0d625f5e1ebda38ffede1672cceb25fba6220df9c971(pending)0x4759ea66e086dd0acdcb611149300ecc7f4ad506  IN  0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0 Ether(Pending)
0xb9d06e9037936bf8890f1dc0822ee160e4dfbe9ec8df358198a3e2c647e2595c(pending)0xac47052c48c0d2dca16b6fb3d4e05107415fe1b6  IN  0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0 Ether(Pending)
0xd85717b54c7b342381ddeafea962bde6d4b34fce3b20928ae518f61e9db3b132(pending)0x5778dbdea3eb560f43056fdadf1dc6eee8b8ab01  IN  0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0 Ether(Pending)
0x5f041c02b9151bb9b8eba29ce5eec4d6a1dc0d4906e46e3704674e704add7f8d(pending)0xcf8933ce1fc0ff87f81a6d8e641b3615a151355f  IN  0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0 Ether(Pending)
0x047595eb3c2927d0ca8bb4723d4333b453590f213f30f6050a888fe6e07b66df(pending)0x518a6d6878a82d2e7fc07cc95928164fb0939490  IN  0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0 Ether(Pending)
0x00aa644905ddbd288e52de077930ad82f645ebc46457cabe5de8de18e6abd6cb7 hrs 13 mins ago0x32bfaf7b4c6a5e448bc044f098a86672af081b7b  IN   0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0 Ether0.000411296
0x660743a67a6baf939d77ab184216aa0168ab7a9abb53c94e704566483cdf3f328 hrs 55 mins ago0xd4d984e317762c23a2c8d29498442a2387a6a684  IN   0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0 Ether0.00051412
0xc518489a2412c9e60fdace433c908866f2e22b69c42640a3388253aae861499610 hrs 29 mins ago0x30ba379e47dd753ff0db95a4a1050fffbf67edfa  IN   0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0 Ether0.0003804488
0x57aea6c378cbf23bba4ad65617d50276852efc3f47ffd880186879b03ccb231d13 hrs 14 mins ago0xfe5a65645f2dc8fa5fbcdb7a578ee65dbaa3476d  IN   0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0 Ether0.00025706
0x807677676936ac3182084f98b5b7dc64cf9008ca7b4d7481b04340aad56af91719 hrs 32 mins ago0x0045e35fab51fb8459ed8d3deb799fdc41b5ca9a  IN   0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0 Ether0.000308472
0x96ddf2810d4887f9af30ede701064123d2064b6b57a5d33a5d37f67c16c9ba961 day 28 mins ago0x9ce8f85083fcf364467a827cb15730102306ed1c  IN   0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0 Ether0.000291296
0x60e3fe6ed0f2b6d3ee53ecaa537b64e420f0a075bad44993aea172e7e1f578e51 day 28 mins ago0x9ce8f85083fcf364467a827cb15730102306ed1c  IN   0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0 Ether0.000411296
0x7e704db91234046c658ebdf1c4cc7d1a37ba69b4184c1f0bb77a8eebf9f024021 day 3 hrs ago0xee9dac46b1ad5cb4520a6e0aa52347674a7c96ff  IN   0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0 Ether0.000359884
0xb3408fef49e4cbd261e49969422e5bc266ff56769177ff810cf07a3bd09f80551 day 5 hrs ago0xe46558cf24163f2e744a7ce6954a0e53dea0c2d5  IN   0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0 Ether0.00018206
0xbf79ed1f1c73c0f947cc7b75332fb21fef25fd1910336e3907c377ff741e16231 day 9 hrs ago0xe46558cf24163f2e744a7ce6954a0e53dea0c2d5  IN   0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0 Ether0.000218472
0x734f4bd9c9c3f20ad4395e013d6eb3c38b40119426f979d14691081561e459f81 day 9 hrs ago0xe46558cf24163f2e744a7ce6954a0e53dea0c2d5  IN   0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0 Ether0.000308472
0x0491e3956ef183a01bf7e915c8c24b44bc3cf7577cd496e888bd6b3eacae504d1 day 12 hrs ago0x27cba1153c9a0807a9af4dcf9b04dfb7016006c0  IN   0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0 Ether0.00018206
0x7474e8e70a7edf4eb3c512824da4da0ab4210b2b7cd90e5ef6098f6bd33d39a11 day 12 hrs ago0x27cba1153c9a0807a9af4dcf9b04dfb7016006c0  IN   0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0 Ether0.00025706
0xdb43b7e494e6a1926ebe8ab7ffef5a5c773fc989558e29a56d14415e6c8417121 day 15 hrs ago0xe994ad77173b4bb23bcafb395e542c27d7a2f997  IN   0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0 Ether0.000154236
0x4619528759d29a31098002d44272d70aa21c49541f512fc66ef5bc343a1a01f61 day 21 hrs ago0xd4f1231e0dcc86785a9b71a996bf5e6f4a331b43  IN   0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0 Ether0.000036412
0xbdb4f08a67736ec21e6ef204779bcea0f48de376c76b3c5e34cc80314a25c3ff1 day 21 hrs ago0x69f47fb8e99a7b9ffc639d105e1a70795512035d  IN   0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0 Ether0.000308472
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click Here To View More View All
ParentTxHash Block Age From To Value
0x333f567036703f18451d7159d3d7ffb2744751a1b95b10ec70ef377807dd88fd64009696 mins ago0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0x99b665bce8f9e64aa6e4b683f6bca14476fe6a340.45 Ether
0xb6469538c6e495e394e2601e58d4efa70775e4ab7472908b16d52c3175138a32640088329 mins ago0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0xc64e96319366da7d00ef4bc14b42e8b1f3a31f520.256 Ether
0xb6469538c6e495e394e2601e58d4efa70775e4ab7472908b16d52c3175138a32640088329 mins ago0x24e2b1d415e6e0d04042eaa45dc2a08fc33ca6cd0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0.256 Ether
0x58e78f3515ea239151c293e2e21d42aa0184f60e720497cf68cdea19f928620a64007441 hr 5 mins ago0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0x6be9fa484fa24fedb0369b6ccb343f9c3a6210260.1275 Ether
0x58e78f3515ea239151c293e2e21d42aa0184f60e720497cf68cdea19f928620a64007441 hr 5 mins ago0x24e2b1d415e6e0d04042eaa45dc2a08fc33ca6cd0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0.3145 Ether
0x737422ee5e8d3a115f343fbf78973b7748f36c1fe0cd54a6d5dc23894943d02364003582 hrs 40 mins ago0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0xa7f3dfed2bcf7b35a8824e11ae8f723650edfb580.2 Ether
0xef3e411b6163cc97b69e0d3a004c744a20fff6e6d6d038558643915bf7b9df5a63999064 hrs 18 mins ago0x24e2b1d415e6e0d04042eaa45dc2a08fc33ca6cd0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0.01 Ether
0x1bffd3deab5b328b71e0f6f4400b2dfde74ed786a89ddb8aff7a1ee2b32923f463997664 hrs 50 mins ago0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0x66ba684c60bbff0558b3498d0d657f8bfbcf13600.3772 Ether
0x1bffd3deab5b328b71e0f6f4400b2dfde74ed786a89ddb8aff7a1ee2b32923f463997664 hrs 50 mins ago0x24e2b1d415e6e0d04042eaa45dc2a08fc33ca6cd0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0.3772 Ether
0xf85090ea2d93dc75707bd059bd3416d7b170b0e07dc121721ac1051c9a2f845563996045 hrs 29 mins ago0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0x8ad05dfa9330d3f3af88a19ccb35752e15fc2f330.00763 Ether
0xba72bfab2761a1531d33089c1b124626b6672eedad4354f172cfc9263794186363994955 hrs 51 mins ago0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0x9ce8f85083fcf364467a827cb15730102306ed1c0.3187 Ether
0xba72bfab2761a1531d33089c1b124626b6672eedad4354f172cfc9263794186363994955 hrs 51 mins ago0x24e2b1d415e6e0d04042eaa45dc2a08fc33ca6cd0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0.374 Ether
0x077f72894de956a15cc14b514be97fe6c1f074844cc664787f4288e8d577885563993536 hrs 29 mins ago0x24e2b1d415e6e0d04042eaa45dc2a08fc33ca6cd0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0.3544533 Ether
0x4f00ff706107d50d679833ba160ecebf3326b4f024eaa05f653a8a8a8b510bcd63993296 hrs 35 mins ago0x24e2b1d415e6e0d04042eaa45dc2a08fc33ca6cd0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0.25 Ether
0xbe803a45350b59a070f6c8adafb44bb0902813ea83c139fbeade982aa91185c863993256 hrs 35 mins ago0x24e2b1d415e6e0d04042eaa45dc2a08fc33ca6cd0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0.03 Ether
0xff664a9579f12c32eeafc79bce3f9d18c13a3a27723578bb60e810867340fe3063991527 hrs 16 mins ago0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0xaead03169f705178659760f6cba9b2e297d699d40.000001515277478463 Ether
0x0d397a7d8c77d49557309bd2efbdcc3bb14189a717280d3043897ded0e7761da63991337 hrs 20 mins ago0x24e2b1d415e6e0d04042eaa45dc2a08fc33ca6cd0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b1 Ether
0xdc50ae04492e9582660f00b8152d55894e4f1ad1c2a867f5509ab92d493cce4363991327 hrs 20 mins ago0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0x66ba684c60bbff0558b3498d0d657f8bfbcf13600.0328 Ether
0x5dd0d997cc42758b2e515f493da4dec9aa1009d26fd0de13a3985fa640443e4c63989218 hrs 12 mins ago0x24e2b1d415e6e0d04042eaa45dc2a08fc33ca6cd0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b2.79 Ether
0x2b7439c94eaadfb05a0e2e253078cd87ab46c020efe9244322204b1378fb703863988868 hrs 21 mins ago0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0xdf8d7f7d2d2c25f02a347a001c3ba2cceadbf4c23.64 Ether
0x01c0620459a44a9867e8994cb4c9038e91e6382d2a70a96e3e6e4ecd518da42663987698 hrs 50 mins ago0x24e2b1d415e6e0d04042eaa45dc2a08fc33ca6cd0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0.066 Ether
0xab0b2de734719e0b404ae0595f5b4d55d779c96c7ba8c763c05ab001d8b5806363986419 hrs 19 mins ago0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0x06c68d04aaaf5da137d4a3be785d388bab9f5c231 Ether
0xdcd3784f04483f4390063e731f55e3b3a4086f54606c6865cdd47a4b0009214663985399 hrs 46 mins ago0x24e2b1d415e6e0d04042eaa45dc2a08fc33ca6cd0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b1 Ether
0xfd45d67988f1305141102ac5ffff52e818a88460e967b99b3d86dddf6db7f5bf63984779 hrs 59 mins ago0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b0xe8f13a9a503fb7c56e06601c51105c4c530fde090.02228576 Ether
0x4f0adc22cc7fa63169b3eda7f43c0cca66826c735cd53d9c815772301a11be0a639830310 hrs 39 mins ago0x24e2b1d415e6e0d04042eaa45dc2a08fc33ca6cd0xd5524179cb7ae012f5b642c1d6d700bbaa76b96b1.44 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Similar Match)
Note: Displaying Similar Match Verified Source Code At Contract 0x10b5589fc6922f5c27061ac79ad9a4af35e15806(Excluding Constructor Arguments if_any)
Contract Name: Delegator
Compiler Text: v0.4.20+commit.3155dd80
Optimization Enabled: Yes
Runs (Optimiser):  500



  Contract Source Code   Find Similiar Contracts

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 DelegationTarget is Controlled {
    bytes32 public controllerLookupName;
}

contract Delegator is DelegationTarget {
    function Delegator(IController _controller, bytes32 _controllerLookupName) public {
        controller = _controller;
        controllerLookupName = _controllerLookupName;
    }

    function() external payable {
        // Do nothing if we haven't properly set up the delegator to delegate calls
        if (controllerLookupName == 0) {
            return;
        }

        // Get the delegation target contract
        address _target = controller.lookup(controllerLookupName);

        assembly {
            //0x40 is the address where the next free memory slot is stored in Solidity
            let _calldataMemoryOffset := mload(0x40)
            // new "memory end" including padding. The bitwise operations here ensure we get rounded up to the nearest 32 byte boundary
            let _size := and(add(calldatasize, 0x1f), not(0x1f))
            // Update the pointer at 0x40 to point at new free memory location so any theoretical allocation doesn't stomp our memory in this call
            mstore(0x40, add(_calldataMemoryOffset, _size))
            // Copy method signature and parameters of this call into memory
            calldatacopy(_calldataMemoryOffset, 0x0, calldatasize)
            // Call the actual method via delegation
            let _retval := delegatecall(gas, _target, _calldataMemoryOffset, calldatasize, 0, 0)
            switch _retval
            case 0 {
                // 0 == it threw, so we revert
                revert(0,0)
            } default {
                // If the call succeeded return the return data from the delegate call
                let _returndataMemoryOffset := mload(0x40)
                // Update the pointer at 0x40 again to point at new free memory location so any theoretical allocation doesn't stomp our memory in this call
                mstore(0x40, add(_returndataMemoryOffset, returndatasize))
                returndatacopy(_returndataMemoryOffset, 0x0, returndatasize)
                return(_returndataMemoryOffset, returndatasize)
            }
        }
    }
}

contract IOwnable {
    function getOwner() public view returns (address);
    function transferOwnership(address newOwner) public returns (bool);
}

contract ITyped {
    function getTypeName() public view returns (bytes32);
}

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 ABI  
[{"constant":true,"inputs":[],"name":"getController","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_controller","type":"address"}],"name":"setController","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"controllerLookupName","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_controller","type":"address"},{"name":"_controllerLookupName","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"}]

  Contract Creation Code Switch To Opcodes View
6060604052341561000f57600080fd5b6040516040806102fd833981016040528080519190602001805160008054600160a060020a039586163396909616600160a060020a03199182161716949094179093555050600155610297806100666000396000f3006060604052600436106100565763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416633018205f811461014057806392eefe9b1461017c578063bef72fa2146101bc575b60015460009015156100675761013d565b6000805460015473ffffffffffffffffffffffffffffffffffffffff9091169163f39ec1f79190604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff84160281526004810191909152602401602060405180830381600087803b15156100e457600080fd5b6102c65a03f115156100f557600080fd5b505050604051805190509050604051601f19601f36011680820160405236600083376000803684865af4808015610138576040513d81016040523d6000823e3d81f35b600080fd5b50005b341561014b57600080fd5b6101536101e1565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b341561018757600080fd5b6101a873ffffffffffffffffffffffffffffffffffffffff600435166101fd565b604051901515815260200160405180910390f35b34156101c757600080fd5b6101cf610265565b60405190815260200160405180910390f35b60005473ffffffffffffffffffffffffffffffffffffffff1690565b600080543373ffffffffffffffffffffffffffffffffffffffff90811691161461022657600080fd5b506000805473ffffffffffffffffffffffffffffffffffffffff831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b600154815600a165627a7a7230582084796531768a1d75b70a76b8cd7c7db53c078e5abbed437bd74b1419316ec5990029000000000000000000000000b3337164e91b9f05c87c7662c7ac684e8e0ff3e754726164696e6745736361706548617463685461726765740000000000000000

   Swarm Source:
bzzr://84796531768a1d75b70a76b8cd7c7db53c078e5abbed437bd74b1419316ec599

 

View All
Block Age transaction Difficulty Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.