ETH Price: $3,002.07 (+5.30%)
Gas: 3 Gwei

Contract

0xB7FaddF3eCD2402a7E48cEa6d2637D90EeB5A7e6
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Execute Request84781762019-09-03 16:13:251767 days ago1567527205IN
0xB7FaddF3...0EeB5A7e6
0 ETH0.000125893
Request Registra...80497932019-06-29 1:18:401834 days ago1561771120IN
0xB7FaddF3...0EeB5A7e6
0.06 ETH0.0013819110
Execute Request74773302019-03-31 16:50:461923 days ago1554051046IN
0xB7FaddF3...0EeB5A7e6
0 ETH0.000125893
Request Registra...74704492019-03-30 15:21:311924 days ago1553959291IN
0xB7FaddF3...0EeB5A7e6
0.06 ETH0.000414573
Execute Request74516802019-03-27 16:25:321927 days ago1553703932IN
0xB7FaddF3...0EeB5A7e6
0 ETH0.000083932
Request Registra...74388682019-03-25 16:23:421929 days ago1553531022IN
0xB7FaddF3...0EeB5A7e6
0.06 ETH0.001243719
Challenge Regist...72858992019-03-01 20:20:391953 days ago1551471639IN
0xB7FaddF3...0EeB5A7e6
0.06 ETH0.000858933
Request Registra...72831422019-03-01 9:38:431953 days ago1551433123IN
0xB7FaddF3...0EeB5A7e6
0.06 ETH0.000690955
Execute Request72716612019-02-26 20:46:501956 days ago1551214010IN
0xB7FaddF3...0EeB5A7e6
0 ETH0.000209835
Execute Request72716602019-02-26 20:46:471956 days ago1551214007IN
0xB7FaddF3...0EeB5A7e6
0 ETH0.000209835
Execute Request72716582019-02-26 20:46:091956 days ago1551213969IN
0xB7FaddF3...0EeB5A7e6
0 ETH0.000209835
Execute Request72716542019-02-26 20:45:211956 days ago1551213921IN
0xB7FaddF3...0EeB5A7e6
0 ETH0.000209835
Execute Request72715072019-02-26 19:58:571956 days ago1551211137IN
0xB7FaddF3...0EeB5A7e6
0 ETH0.000209835
Request Registra...72673042019-02-25 20:30:121957 days ago1551126612IN
0xB7FaddF3...0EeB5A7e6
0.06 ETH0.000690955
Request Registra...72672902019-02-25 20:25:481957 days ago1551126348IN
0xB7FaddF3...0EeB5A7e6
0.06 ETH0.0027638220
Challenge Regist...72672812019-02-25 20:21:041957 days ago1551126064IN
0xB7FaddF3...0EeB5A7e6
0.06 ETH0.000145775
Challenge Regist...72672672019-02-25 20:16:351957 days ago1551125795IN
0xB7FaddF3...0EeB5A7e6
0.06 ETH0.000145775
Request Registra...72672612019-02-25 20:14:491957 days ago1551125689IN
0xB7FaddF3...0EeB5A7e6
0.06 ETH0.0027638220
Request Registra...72672612019-02-25 20:14:491957 days ago1551125689IN
0xB7FaddF3...0EeB5A7e6
0.06 ETH0.0027638220
Challenge Regist...72672592019-02-25 20:13:561957 days ago1551125636IN
0xB7FaddF3...0EeB5A7e6
0.06 ETH0.0057262620
Request Registra...72672442019-02-25 20:08:131957 days ago1551125293IN
0xB7FaddF3...0EeB5A7e6
0.06 ETH0.0027638220
Request Registra...72671662019-02-25 19:43:181957 days ago1551123798IN
0xB7FaddF3...0EeB5A7e6
0.06 ETH0.000829146
Execute Request72158502019-02-13 16:18:131969 days ago1550074693IN
0xB7FaddF3...0EeB5A7e6
0 ETH0.000335728
Execute Request72158502019-02-13 16:18:131969 days ago1550074693IN
0xB7FaddF3...0EeB5A7e6
0 ETH0.00033478
Execute Request72158482019-02-13 16:18:031969 days ago1550074683IN
0xB7FaddF3...0EeB5A7e6
0 ETH0.000335728
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
84781762019-09-03 16:13:251767 days ago1567527205
0xB7FaddF3...0EeB5A7e6
0.06 ETH
74773302019-03-31 16:50:461923 days ago1554051046
0xB7FaddF3...0EeB5A7e6
0.06 ETH
74516802019-03-27 16:25:321927 days ago1553703932
0xB7FaddF3...0EeB5A7e6
0.06 ETH
73189632019-03-07 0:21:271948 days ago1551918087
0xB7FaddF3...0EeB5A7e6
0.09 ETH
72965172019-03-03 12:14:341951 days ago1551615274
0xB7FaddF3...0EeB5A7e6
0.045 ETH
72965172019-03-03 12:14:341951 days ago1551615274
0xB7FaddF3...0EeB5A7e6
0.045 ETH
72858992019-03-01 20:20:391953 days ago1551471639
0xB7FaddF3...0EeB5A7e6
0.03 ETH
72716612019-02-26 20:46:501956 days ago1551214010
0xB7FaddF3...0EeB5A7e6
0.06 ETH
72716602019-02-26 20:46:471956 days ago1551214007
0xB7FaddF3...0EeB5A7e6
0.06 ETH
72716582019-02-26 20:46:091956 days ago1551213969
0xB7FaddF3...0EeB5A7e6
0.06 ETH
72716542019-02-26 20:45:211956 days ago1551213921
0xB7FaddF3...0EeB5A7e6
0.06 ETH
72715072019-02-26 19:58:571956 days ago1551211137
0xB7FaddF3...0EeB5A7e6
0.06 ETH
72672592019-02-25 20:13:561957 days ago1551125636
0xB7FaddF3...0EeB5A7e6
0.03 ETH
72315392019-02-17 10:39:241965 days ago1550399964
0xB7FaddF3...0EeB5A7e6
0.045 ETH
72315392019-02-17 10:39:241965 days ago1550399964
0xB7FaddF3...0EeB5A7e6
0.045 ETH
72158502019-02-13 16:18:131969 days ago1550074693
0xB7FaddF3...0EeB5A7e6
0.06 ETH
72158502019-02-13 16:18:131969 days ago1550074693
0xB7FaddF3...0EeB5A7e6
0.06 ETH
72158482019-02-13 16:18:031969 days ago1550074683
0xB7FaddF3...0EeB5A7e6
0.06 ETH
72158442019-02-13 16:15:261969 days ago1550074526
0xB7FaddF3...0EeB5A7e6
0.06 ETH
72111032019-02-12 13:21:101970 days ago1549977670
0xB7FaddF3...0EeB5A7e6
0.03 ETH
71741042019-02-04 16:13:401978 days ago1549296820
0xB7FaddF3...0EeB5A7e6
0.06 ETH
71335452019-01-27 9:59:241986 days ago1548583164
0xB7FaddF3...0EeB5A7e6
0.045 ETH
71335452019-01-27 9:59:241986 days ago1548583164
0xB7FaddF3...0EeB5A7e6
0.045 ETH
71193952019-01-24 14:50:501989 days ago1548341450
0xB7FaddF3...0EeB5A7e6
0.03 ETH
71157902019-01-23 21:51:391990 days ago1548280299
0xB7FaddF3...0EeB5A7e6
0.09 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ArbitrablePermissionList

Compiler Version
v0.4.23+commit.124ca40d

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-07-31
*/

/**
 *  @title Arbitrable Permission List
 *  @author Clément Lesaege - <[email protected]>
 *  This code has undertaken a 15 ETH max price bug bounty program.
 */

pragma solidity ^0.4.23;

/**
 *  @title Permission Interface
 *  This is a permission interface for arbitrary values. The values can be cast to the required types.
 */
interface PermissionInterface{
    /* External */

    /**
     *  @dev Return true if the value is allowed.
     *  @param _value The value we want to check.
     *  @return allowed True if the value is allowed, false otherwise.
     */
    function isPermitted(bytes32 _value) external view returns (bool allowed);
}

/** @title Arbitrator
 *  Arbitrator abstract contract.
 *  When developing arbitrator contracts we need to:
 *  -Define the functions for dispute creation (createDispute) and appeal (appeal). Don't forget to store the arbitrated contract and the disputeID (which should be unique, use nbDisputes).
 *  -Define the functions for cost display (arbitrationCost and appealCost).
 *  -Allow giving rulings. For this a function must call arbitrable.rule(disputeID,ruling).
 */
contract Arbitrator{

    enum DisputeStatus {Waiting, Appealable, Solved}

    modifier requireArbitrationFee(bytes _extraData) {require(msg.value>=arbitrationCost(_extraData)); _;}
    modifier requireAppealFee(uint _disputeID, bytes _extraData) {require(msg.value>=appealCost(_disputeID, _extraData)); _;}

    /** @dev To be raised when a dispute can be appealed.
     *  @param _disputeID ID of the dispute.
     */
    event AppealPossible(uint _disputeID);

    /** @dev To be raised when a dispute is created.
     *  @param _disputeID ID of the dispute.
     *  @param _arbitrable The contract which created the dispute.
     */
    event DisputeCreation(uint indexed _disputeID, Arbitrable _arbitrable);

    /** @dev To be raised when the current ruling is appealed.
     *  @param _disputeID ID of the dispute.
     *  @param _arbitrable The contract which created the dispute.
     */
    event AppealDecision(uint indexed _disputeID, Arbitrable _arbitrable);

    /** @dev Create a dispute. Must be called by the arbitrable contract.
     *  Must be paid at least arbitrationCost(_extraData).
     *  @param _choices Amount of choices the arbitrator can make in this dispute.
     *  @param _extraData Can be used to give additional info on the dispute to be created.
     *  @return disputeID ID of the dispute created.
     */
    function createDispute(uint _choices, bytes _extraData) public requireArbitrationFee(_extraData) payable returns(uint disputeID)  {}

    /** @dev Compute the cost of arbitration. It is recommended not to increase it often, as it can be highly time and gas consuming for the arbitrated contracts to cope with fee augmentation.
     *  @param _extraData Can be used to give additional info on the dispute to be created.
     *  @return fee Amount to be paid.
     */
    function arbitrationCost(bytes _extraData) public constant returns(uint fee);

    /** @dev Appeal a ruling. Note that it has to be called before the arbitrator contract calls rule.
     *  @param _disputeID ID of the dispute to be appealed.
     *  @param _extraData Can be used to give extra info on the appeal.
     */
    function appeal(uint _disputeID, bytes _extraData) public requireAppealFee(_disputeID,_extraData) payable {
        emit AppealDecision(_disputeID, Arbitrable(msg.sender));
    }

    /** @dev Compute the cost of appeal. It is recommended not to increase it often, as it can be higly time and gas consuming for the arbitrated contracts to cope with fee augmentation.
     *  @param _disputeID ID of the dispute to be appealed.
     *  @param _extraData Can be used to give additional info on the dispute to be created.
     *  @return fee Amount to be paid.
     */
    function appealCost(uint _disputeID, bytes _extraData) public constant returns(uint fee);

    /** @dev Return the status of a dispute.
     *  @param _disputeID ID of the dispute to rule.
     *  @return status The status of the dispute.
     */
    function disputeStatus(uint _disputeID) public constant returns(DisputeStatus status);

    /** @dev Return the current ruling of a dispute. This is useful for parties to know if they should appeal.
     *  @param _disputeID ID of the dispute.
     *  @return ruling The ruling which has been given or the one which will be given if there is no appeal.
     */
    function currentRuling(uint _disputeID) public constant returns(uint ruling);

}

/** @title Arbitrable
 *  Arbitrable abstract contract.
 *  When developing arbitrable contracts, we need to:
 *  -Define the action taken when a ruling is received by the contract. We should do so in executeRuling.
 *  -Allow dispute creation. For this a function must:
 *      -Call arbitrator.createDispute.value(_fee)(_choices,_extraData);
 *      -Create the event Dispute(_arbitrator,_disputeID,_rulingOptions);
 */
contract Arbitrable{
    Arbitrator public arbitrator;
    bytes public arbitratorExtraData; // Extra data to require particular dispute and appeal behaviour.

    modifier onlyArbitrator {require(msg.sender==address(arbitrator)); _;}

    /** @dev To be raised when a ruling is given.
     *  @param _arbitrator The arbitrator giving the ruling.
     *  @param _disputeID ID of the dispute in the Arbitrator contract.
     *  @param _ruling The ruling which was given.
     */
    event Ruling(Arbitrator indexed _arbitrator, uint indexed _disputeID, uint _ruling);

    /** @dev To be emmited when meta-evidence is submitted.
     *  @param _metaEvidenceID Unique identifier of meta-evidence.
     *  @param _evidence A link to the meta-evidence JSON.
     */
    event MetaEvidence(uint indexed _metaEvidenceID, string _evidence);

    /** @dev To be emmited when a dispute is created to link the correct meta-evidence to the disputeID
     *  @param _arbitrator The arbitrator of the contract.
     *  @param _disputeID ID of the dispute in the Arbitrator contract.
     *  @param _metaEvidenceID Unique identifier of meta-evidence.
     */
    event Dispute(Arbitrator indexed _arbitrator, uint indexed _disputeID, uint _metaEvidenceID);

    /** @dev To be raised when evidence are submitted. Should point to the ressource (evidences are not to be stored on chain due to gas considerations).
     *  @param _arbitrator The arbitrator of the contract.
     *  @param _disputeID ID of the dispute in the Arbitrator contract.
     *  @param _party The address of the party submiting the evidence. Note that 0x0 refers to evidence not submitted by any party.
     *  @param _evidence A URI to the evidence JSON file whose name should be its keccak256 hash followed by .json.
     */
    event Evidence(Arbitrator indexed _arbitrator, uint indexed _disputeID, address _party, string _evidence);

    /** @dev Constructor. Choose the arbitrator.
     *  @param _arbitrator The arbitrator of the contract.
     *  @param _arbitratorExtraData Extra data for the arbitrator.
     */
    constructor(Arbitrator _arbitrator, bytes _arbitratorExtraData) public {
        arbitrator = _arbitrator;
        arbitratorExtraData = _arbitratorExtraData;
    }

    /** @dev Give a ruling for a dispute. Must be called by the arbitrator.
     *  The purpose of this function is to ensure that the address calling it has the right to rule on the contract.
     *  @param _disputeID ID of the dispute in the Arbitrator contract.
     *  @param _ruling Ruling given by the arbitrator. Note that 0 is reserved for "Not able/wanting to make a decision".
     */
    function rule(uint _disputeID, uint _ruling) public onlyArbitrator {
        emit Ruling(Arbitrator(msg.sender),_disputeID,_ruling);

        executeRuling(_disputeID,_ruling);
    }


    /** @dev Execute a ruling of a dispute.
     *  @param _disputeID ID of the dispute in the Arbitrator contract.
     *  @param _ruling Ruling given by the arbitrator. Note that 0 is reserved for "Not able/wanting to make a decision".
     */
    function executeRuling(uint _disputeID, uint _ruling) internal;
}

/**
 *  @title Arbitrable Permission List
 *  @dev This is an arbitrator curated registry. Anyone can post an item with a deposit. If no one complains within a defined time period, the item is added to the registry.
 *  Anyone can complain and also post a deposit. If someone does, a dispute is created. The winner of the dispute gets the deposit of the other party and the item is added or removed accordingly.
 *  To make a request, parties have to deposit a stake and the arbitration fees. If the arbitration fees change between the submitter's payment and the challenger's payment, a part of the submitter stake can be used as an arbitration fee deposit.
 *  In case the arbitrator refuses to rule, the item is put in the initial absent status and the balance is split equally between parties.
 */
contract ArbitrablePermissionList is PermissionInterface, Arbitrable {
    /* Enums */

    enum ItemStatus {
        Absent, // The item has never been submitted.
        Cleared, // The item has been submitted and the dispute resolution process determined it should not be added or a clearing request has been submitted and not contested.
        Resubmitted, // The item has been cleared but someone has resubmitted it.
        Registered, // The item has been submitted and the dispute resolution process determined it should be added or the submission was never contested.
        Submitted, // The item has been submitted.
        ClearingRequested, // The item is registered, but someone has requested to remove it.
        PreventiveClearingRequested // The item has never been registered, but someone asked to clear it preemptively to avoid it being shown as not registered during the dispute resolution process.
    }

    /* Structs */

    struct Item {
        ItemStatus status; // Status of the item.
        uint lastAction; // Time of the last action.
        address submitter; // Address of the submitter of the item status change request, if any.
        address challenger; // Address of the challenger, if any.
        uint balance; // The total amount of funds to be given to the winner of a potential dispute. Includes stake and reimbursement of arbitration fees.
        bool disputed; // True if a dispute is taking place.
        uint disputeID; // ID of the dispute, if any.
    }

    /* Events */

    /**
     *  @dev Called when the item's status changes or when it is contested/resolved.
     *  @param submitter Address of the submitter, if any.
     *  @param challenger Address of the challenger, if any.
     *  @param value The value of the item.
     *  @param status The status of the item.
     *  @param disputed The item is being disputed.
     */
    event ItemStatusChange(
        address indexed submitter,
        address indexed challenger,
        bytes32 indexed value,
        ItemStatus status,
        bool disputed
    );

    /* Storage */

    // Settings
    bool public blacklist; // True if the list should function as a blacklist, false if it should function as a whitelist.
    bool public appendOnly; // True if the list should be append only.
    bool public rechallengePossible; // True if items winning their disputes can be challenged again.
    uint public stake; // The stake to put to submit/clear/challenge and item in addition of arbitration fees.
    uint public timeToChallenge; // The time before which an action is executable if not challenged.

    // Ruling Options
    uint8 constant REGISTER = 1;
    uint8 constant CLEAR = 2;

    // Items
    mapping(bytes32 => Item) public items;
    mapping(uint => bytes32) public disputeIDToItem;
    bytes32[] public itemsList;

    /* Constructor */

    /**
     *  @dev Constructs the arbitrable permission list and sets the type.
     *  @param _arbitrator The chosen arbitrator.
     *  @param _arbitratorExtraData Extra data for the arbitrator contract.
     *  @param _metaEvidence The URL of the meta evidence object.
     *  @param _blacklist True if the list should function as a blacklist, false if it should function as a whitelist.
     *  @param _appendOnly True if the list should be append only.
     *  @param _rechallengePossible True if it is possible to challenge again a submission which has won a dispute.
     *  @param _stake The amount in Weis of deposit required for a submission or a challenge in addition of the arbitration fees.
     *  @param _timeToChallenge The time in seconds, other parties have to challenge.
     */
    constructor(
        Arbitrator _arbitrator,
        bytes _arbitratorExtraData,
        string _metaEvidence,
        bool _blacklist,
        bool _appendOnly,
        bool _rechallengePossible,
        uint _stake,
        uint _timeToChallenge) Arbitrable(_arbitrator, _arbitratorExtraData) public {
        emit MetaEvidence(0, _metaEvidence);
        blacklist = _blacklist;
        appendOnly = _appendOnly;
        rechallengePossible = _rechallengePossible;
        stake = _stake;
        timeToChallenge = _timeToChallenge;
    }

    /* Public */

    /**
     *  @dev Request for an item to be registered.
     *  @param _value The value of the item to register.
     */
    function requestRegistration(bytes32 _value) public payable {
        Item storage item = items[_value];
        uint arbitratorCost = arbitrator.arbitrationCost(arbitratorExtraData);
        require(msg.value >= stake + arbitratorCost);

        if (item.status == ItemStatus.Absent)
            item.status = ItemStatus.Submitted;
        else if (item.status == ItemStatus.Cleared)
            item.status = ItemStatus.Resubmitted;
        else
            revert(); // If the item is neither Absent nor Cleared, it is not possible to request registering it.

        if (item.lastAction == 0) {
            itemsList.push(_value);
        }

        item.submitter = msg.sender;
        item.balance += msg.value;
        item.lastAction = now;

        emit ItemStatusChange(item.submitter, item.challenger, _value, item.status, item.disputed);
    }

    /**
     *  @dev Request an item to be cleared.
     *  @param _value The value of the item to clear.
     */
    function requestClearing(bytes32 _value) public payable {
        Item storage item = items[_value];
        uint arbitratorCost = arbitrator.arbitrationCost(arbitratorExtraData);
        require(!appendOnly);
        require(msg.value >= stake + arbitratorCost);

        if (item.status == ItemStatus.Registered)
            item.status = ItemStatus.ClearingRequested;
        else if (item.status == ItemStatus.Absent)
            item.status = ItemStatus.PreventiveClearingRequested;
        else
            revert(); // If the item is neither Registered nor Absent, it is not possible to request clearing it.
        
        if (item.lastAction == 0) {
            itemsList.push(_value);
        }

        item.submitter = msg.sender;
        item.balance += msg.value;
        item.lastAction = now;

        emit ItemStatusChange(item.submitter, item.challenger, _value, item.status, item.disputed);
    }

    /**
     *  @dev Challenge a registration request.
     *  @param _value The value of the item subject to the registering request.
     */
    function challengeRegistration(bytes32 _value) public payable {
        Item storage item = items[_value];
        uint arbitratorCost = arbitrator.arbitrationCost(arbitratorExtraData);
        require(msg.value >= stake + arbitratorCost);
        require(item.status == ItemStatus.Resubmitted || item.status == ItemStatus.Submitted);
        require(!item.disputed);

        if (item.balance >= arbitratorCost) { // In the general case, create a dispute.
            item.challenger = msg.sender;
            item.balance += msg.value-arbitratorCost;
            item.disputed = true;
            item.disputeID = arbitrator.createDispute.value(arbitratorCost)(2,arbitratorExtraData);
            disputeIDToItem[item.disputeID] = _value;
            emit Dispute(arbitrator, item.disputeID, 0);
        } else { // In the case the arbitration fees increased so much that the deposit of the requester is not high enough. Cancel the request.
            if (item.status == ItemStatus.Resubmitted)
                item.status = ItemStatus.Cleared;
            else
                item.status = ItemStatus.Absent;

            item.submitter.send(item.balance); // Deliberate use of send in order to not block the contract in case of reverting fallback.
            item.balance = 0;
            msg.sender.transfer(msg.value);
        }

        item.lastAction = now;

        emit ItemStatusChange(item.submitter, item.challenger, _value, item.status, item.disputed);
    }

    /**
     *  @dev Challenge a clearing request.
     *  @param _value The value of the item subject to the clearing request.
     */
    function challengeClearing(bytes32 _value) public payable {
        Item storage item = items[_value];
        uint arbitratorCost = arbitrator.arbitrationCost(arbitratorExtraData);
        require(msg.value >= stake + arbitratorCost);
        require(item.status == ItemStatus.ClearingRequested || item.status == ItemStatus.PreventiveClearingRequested);
        require(!item.disputed);

        if (item.balance >= arbitratorCost) { // In the general case, create a dispute.
            item.challenger = msg.sender;
            item.balance += msg.value-arbitratorCost;
            item.disputed = true;
            item.disputeID = arbitrator.createDispute.value(arbitratorCost)(2,arbitratorExtraData);
            disputeIDToItem[item.disputeID] = _value;
            emit Dispute(arbitrator, item.disputeID, 0);
        } else { // In the case the arbitration fees increased so much that the deposit of the requester is not high enough. Cancel the request.
            if (item.status == ItemStatus.ClearingRequested)
                item.status = ItemStatus.Registered;
            else
                item.status = ItemStatus.Absent;

            item.submitter.send(item.balance); // Deliberate use of send in order to not block the contract in case of reverting fallback.
            item.balance = 0;
            msg.sender.transfer(msg.value);
        }

        item.lastAction = now;

        emit ItemStatusChange(item.submitter, item.challenger, _value, item.status, item.disputed);
    }

    /**
     *  @dev Appeal ruling. Anyone can appeal to prevent a malicious actor from challenging its own submission and loosing on purpose.
     *  @param _value The value of the item with the dispute to appeal on.
     */
    function appeal(bytes32 _value) public payable {
        Item storage item = items[_value];
        arbitrator.appeal.value(msg.value)(item.disputeID,arbitratorExtraData); // Appeal, no need to check anything as the arbitrator does it.
    }

    /**
     *  @dev Execute a request after the time for challenging it has passed. Can be called by anyone.
     *  @param _value The value of the item with the request to execute.
     */
    function executeRequest(bytes32 _value) public {
        Item storage item = items[_value];
        require(now - item.lastAction >= timeToChallenge);
        require(!item.disputed);

        if (item.status == ItemStatus.Resubmitted || item.status == ItemStatus.Submitted)
            item.status = ItemStatus.Registered;
        else if (item.status == ItemStatus.ClearingRequested || item.status == ItemStatus.PreventiveClearingRequested)
            item.status = ItemStatus.Cleared;
        else
            revert();

        item.submitter.send(item.balance); // Deliberate use of send in order to not block the contract in case of reverting fallback.

        emit ItemStatusChange(item.submitter, item.challenger, _value, item.status, item.disputed);
    }

    /* Public Views */

    /**
     *  @dev Return true if the item is allowed. 
     *  We consider the item to be in the list if its status is contested and it has not won a dispute previously.
     *  @param _value The value of the item to check.
     *  @return allowed True if the item is allowed, false otherwise.
     */
    function isPermitted(bytes32 _value) public view returns (bool allowed) {
        Item storage item = items[_value];
        bool _excluded = item.status <= ItemStatus.Resubmitted ||
            (item.status == ItemStatus.PreventiveClearingRequested && !item.disputed);
        return blacklist ? _excluded : !_excluded; // Items excluded from blacklist should return true.
    }

    /* Internal */

    /**
     *  @dev Execute the ruling of a dispute.
     *  @param _disputeID ID of the dispute in the Arbitrator contract.
     *  @param _ruling Ruling given by the arbitrator. Note that 0 is reserved for "Not able/wanting to make a decision".
     */
    function executeRuling(uint _disputeID, uint _ruling) internal {
        Item storage item = items[disputeIDToItem[_disputeID]];
        require(item.disputed);

        if (_ruling == REGISTER) {
            if (rechallengePossible && item.status==ItemStatus.Submitted) {
                uint arbitratorCost = arbitrator.arbitrationCost(arbitratorExtraData);
                if (arbitratorCost + stake < item.balance) { // Check that the balance is enough.
                    uint toSend = item.balance - (arbitratorCost + stake);
                    item.submitter.send(toSend); // Keep the arbitration cost and the stake and send the remaining to the submitter.
                    item.balance -= toSend;
                }
            } else {
                if (item.status==ItemStatus.Resubmitted || item.status==ItemStatus.Submitted)
                    item.submitter.send(item.balance); // Deliberate use of send in order to not block the contract in case of reverting fallback.
                else
                    item.challenger.send(item.balance);
                    
                item.status = ItemStatus.Registered;
            }
        } else if (_ruling == CLEAR) {
            if (item.status == ItemStatus.PreventiveClearingRequested || item.status == ItemStatus.ClearingRequested)
                item.submitter.send(item.balance);
            else
                item.challenger.send(item.balance);

            item.status = ItemStatus.Cleared;
        } else { // Split the balance 50-50 and give the item the initial status.
            if (item.status==ItemStatus.Resubmitted)
                item.status = ItemStatus.Cleared;
            else if (item.status==ItemStatus.ClearingRequested)
                item.status = ItemStatus.Registered;
            else
                item.status = ItemStatus.Absent;
            item.submitter.send(item.balance / 2);
            item.challenger.send(item.balance / 2);
        }
        
        item.disputed = false;
        if (rechallengePossible && item.status==ItemStatus.Submitted && _ruling==REGISTER) 
            item.lastAction=now; // If the item can be rechallenged, update the time and keep the remaining balance.
        else
            item.balance = 0;

        emit ItemStatusChange(item.submitter, item.challenger, disputeIDToItem[_disputeID], item.status, item.disputed);
    }

    /* Interface Views */

    /**
     *  @dev Return the number of items in the list.
     *  @return The number of items in the list.
     */
    function itemsCount() public view returns (uint count) {
        count = itemsList.length;
    }

    /**
     *  @dev Return the numbers of items in the list per status.
     *  @return The numbers of items in the list per status.
     */
    function itemsCounts() public view returns (uint pending, uint challenged, uint accepted, uint rejected) {
        for (uint i = 0; i < itemsList.length; i++) {
            Item storage item = items[itemsList[i]];
            if (item.disputed) challenged++;
            else if (item.status == ItemStatus.Resubmitted || item.status == ItemStatus.Submitted) pending++;
            else if (item.status == ItemStatus.Registered) accepted++;
            else if (item.status == ItemStatus.Cleared) rejected++;
        }
    }

    /**
     *  @dev Return the values of the items the query finds.
     *  This function is O(n) at worst, where n is the number of items. This could exceed the gas limit, therefore this function should only be used for interface display and not by other contracts.
     *  @param _cursor The pagination cursor.
     *  @param _count The number of items to return.
     *  @param _filter The filter to use.
     *  @param _sort The sort order to use.
     *  @return The values of the items found and wether there are more items for the current filter and sort.
     */
    function queryItems(bytes32 _cursor, uint _count, bool[6] _filter, bool _sort) public view returns (bytes32[] values, bool hasMore) {
        uint _cursorIndex;
        values = new bytes32[](_count);
        uint _index = 0;

        if (_cursor == 0)
            _cursorIndex = 0;
        else {
            for (uint j = 0; j < itemsList.length; j++) {
                if (itemsList[j] == _cursor) {
                    _cursorIndex = j;
                    break;
                }
            }
            require(_cursorIndex != 0);
        }

        for (
                uint i = _cursorIndex == 0 ? (_sort ? 0 : 1) : (_sort ? _cursorIndex + 1 : itemsList.length - _cursorIndex + 1);
                _sort ? i < itemsList.length : i <= itemsList.length;
                i++
            ) { // Oldest or newest first
            Item storage item = items[itemsList[_sort ? i : itemsList.length - i]];
            if (
                item.status != ItemStatus.Absent && item.status != ItemStatus.PreventiveClearingRequested && (
                    (_filter[0] && (item.status == ItemStatus.Resubmitted || item.status == ItemStatus.Submitted)) || // Pending
                    (_filter[1] && item.disputed) || // Challenged
                    (_filter[2] && item.status == ItemStatus.Registered) || // Accepted
                    (_filter[3] && item.status == ItemStatus.Cleared) || // Rejected
                    (_filter[4] && item.submitter == msg.sender) || // My Submissions
                    (_filter[5] && item.challenger == msg.sender) // My Challenges
                )
            ) {
                if (_index < _count) {
                    values[_index] = itemsList[_sort ? i : itemsList.length - i];
                    _index++;
                } else {
                    hasMore = true;
                    break;
                }
            }
        }
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"timeToChallenge","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"arbitratorExtraData","outputs":[{"name":"","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rechallengePossible","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_disputeID","type":"uint256"},{"name":"_ruling","type":"uint256"}],"name":"rule","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"bytes32"}],"name":"challengeClearing","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"stake","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"disputeIDToItem","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"items","outputs":[{"name":"status","type":"uint8"},{"name":"lastAction","type":"uint256"},{"name":"submitter","type":"address"},{"name":"challenger","type":"address"},{"name":"balance","type":"uint256"},{"name":"disputed","type":"bool"},{"name":"disputeID","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"appendOnly","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"arbitrator","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"itemsCounts","outputs":[{"name":"pending","type":"uint256"},{"name":"challenged","type":"uint256"},{"name":"accepted","type":"uint256"},{"name":"rejected","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_cursor","type":"bytes32"},{"name":"_count","type":"uint256"},{"name":"_filter","type":"bool[6]"},{"name":"_sort","type":"bool"}],"name":"queryItems","outputs":[{"name":"values","type":"bytes32[]"},{"name":"hasMore","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"bytes32"}],"name":"requestClearing","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"blacklist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"bytes32"}],"name":"challengeRegistration","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"bytes32"}],"name":"requestRegistration","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_value","type":"bytes32"}],"name":"isPermitted","outputs":[{"name":"allowed","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"itemsList","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"itemsCount","outputs":[{"name":"count","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"bytes32"}],"name":"executeRequest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"bytes32"}],"name":"appeal","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"inputs":[{"name":"_arbitrator","type":"address"},{"name":"_arbitratorExtraData","type":"bytes"},{"name":"_metaEvidence","type":"string"},{"name":"_blacklist","type":"bool"},{"name":"_appendOnly","type":"bool"},{"name":"_rechallengePossible","type":"bool"},{"name":"_stake","type":"uint256"},{"name":"_timeToChallenge","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"submitter","type":"address"},{"indexed":true,"name":"challenger","type":"address"},{"indexed":true,"name":"value","type":"bytes32"},{"indexed":false,"name":"status","type":"uint8"},{"indexed":false,"name":"disputed","type":"bool"}],"name":"ItemStatusChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_arbitrator","type":"address"},{"indexed":true,"name":"_disputeID","type":"uint256"},{"indexed":false,"name":"_ruling","type":"uint256"}],"name":"Ruling","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_metaEvidenceID","type":"uint256"},{"indexed":false,"name":"_evidence","type":"string"}],"name":"MetaEvidence","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_arbitrator","type":"address"},{"indexed":true,"name":"_disputeID","type":"uint256"},{"indexed":false,"name":"_metaEvidenceID","type":"uint256"}],"name":"Dispute","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_arbitrator","type":"address"},{"indexed":true,"name":"_disputeID","type":"uint256"},{"indexed":false,"name":"_party","type":"address"},{"indexed":false,"name":"_evidence","type":"string"}],"name":"Evidence","type":"event"}]

60806040523480156200001157600080fd5b5060405162001e7238038062001e728339810160409081528151602080840151928401516060850151608086015160a087015160c088015160e089015160008054600160a060020a031916600160a060020a038a16179055978901805197999098950196939592949193909289918991620000929160019184019062000180565b50505060007f61606860eb6c87306811e2695215385101daab53bd6ab4e9f9049aead9363c7d876040518080602001828103825283818151815260200191508051906020019080838360005b83811015620000f8578181015183820152602001620000de565b50505050905090810190601f168015620001265780820380516001836020036101000a031916815260200191505b509250505060405180910390a26002805460ff19169515159590951761ff001916610100941515949094029390931762ff000019166201000092151592909202919091179092556003919091556004555062000225915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001c357805160ff1916838001178555620001f3565b82800160010185558215620001f3579182015b82811115620001f3578251825591602001919060010190620001d6565b506200020192915062000205565b5090565b6200022291905b808211156200020157600081556001016200020c565b90565b611c3d80620002356000396000f30060806040526004361061011c5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630689d0ff81146101215780630c7ac7b61461014857806324642510146101d2578063311a6c56146101fb578063342d9a04146102185780633a4b66f114610223578063409c88281461023857806348f343f314610250578063675629fe146102c65780636cc6cde1146102db57806381a1fa021461030c5780638e604b1d1461034757806393519d66146103f5578063a4b5fa5614610400578063b783d6c714610415578063bc16272d14610420578063beabdb7b1461042b578063c2bd9d9514610443578063e2c03ace1461045b578063e9c2416614610470578063ece1de4414610488575b600080fd5b34801561012d57600080fd5b50610136610493565b60408051918252519081900360200190f35b34801561015457600080fd5b5061015d610499565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019757818101518382015260200161017f565b50505050905090810190601f1680156101c45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101de57600080fd5b506101e7610526565b604080519115158252519081900360200190f35b34801561020757600080fd5b50610216600435602435610535565b005b61021660043561059e565b34801561022f57600080fd5b506101366109d4565b34801561024457600080fd5b506101366004356109da565b34801561025c57600080fd5b506102686004356109ec565b6040518088600681111561027857fe5b60ff168152602081019790975250600160a060020a039485166040808801919091529390941660608601526080850191909152151560a084015260c0830191909152519081900360e0019150f35b3480156102d257600080fd5b506101e7610a3e565b3480156102e757600080fd5b506102f0610a4c565b60408051600160a060020a039092168252519081900360200190f35b34801561031857600080fd5b50610321610a5b565b604080519485526020850193909352838301919091526060830152519081900360800190f35b34801561035357600080fd5b506040805160c08181019092526103969160048035926024359236929161010491604490600690839083908082843750939650505050903515159150610b489050565b604051808060200183151515158152602001828103825284818151815260200191508051906020019060200280838360005b838110156103e05781810151838201526020016103c8565b50505050905001935050505060405180910390f35b610216600435610e13565b34801561040c57600080fd5b506101e7611059565b610216600435611062565b6102166004356112d2565b34801561043757600080fd5b506101e760043561143c565b34801561044f57600080fd5b506101366004356114a7565b34801561046757600080fd5b506101366114c6565b34801561047c57600080fd5b506102166004356114cc565b610216600435611628565b60045481565b60018054604080516020600284861615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561051e5780601f106104f35761010080835404028352916020019161051e565b820191906000526020600020905b81548152906001019060200180831161050157829003601f168201915b505050505081565b60025462010000900460ff1681565b60005433600160a060020a0390811691161461055057600080fd5b6040805182815290518391600160a060020a033316917f394027a5fa6e098a1191094d1719d6929b9abc535fcc0c8f448d6a4e756222769181900360200190a361059a8282611736565b5050565b60008181526005602090815260408083208354915160e060020a63f7434ea9028152600481019384526001805460028183161561010002600019019091160460248301819052929594600160a060020a039094169363f7434ea99391929091829160440190849080156106525780601f1061062757610100808354040283529160200191610652565b820191906000526020600020905b81548152906001019060200180831161063557829003601f168201915b505092505050602060405180830381600087803b15801561067257600080fd5b505af1158015610686573d6000803e3d6000fd5b505050506040513d602081101561069c57600080fd5b505160035490915081013410156106b257600080fd5b6005825460ff1660068111156106c457fe5b14806106df57506006825460ff1660068111156106dd57fe5b145b15156106ea57600080fd5b600582015460ff16156106fc57600080fd5b600482015481116108bc5760038201805473ffffffffffffffffffffffffffffffffffffffff191633600160a060020a0390811691909117909155600480840180543485900301905560058401805460ff19166001908117909155600054604080517fc13517e100000000000000000000000000000000000000000000000000000000815260029481018581526024820192835284546101008187161502600019011686900460448301819052939096169563c13517e1958895909490939192606401908490801561080f5780601f106107e45761010080835404028352916020019161080f565b820191906000526020600020905b8154815290600101906020018083116107f257829003601f168201915b505093505050506020604051808303818588803b15801561082f57600080fd5b505af1158015610843573d6000803e3d6000fd5b50505050506040513d602081101561085a57600080fd5b5051600680840182815560009283526020918252604080842087905590548354825194855291519093600160a060020a03909216927fc21357d76c2ee05713ed6e2edb9a5f60ab1e8748c56201385df30007f774f58d928290030190a3610965565b6005825460ff1660068111156108ce57fe5b14156108ed578154600390839060ff19166001835b02179055506108f6565b815460ff191682555b60028201546004830154604051600160a060020a039092169181156108fc0291906000818181858888f15050600060048601819055604051600160a060020a03331694503480156108fc029450925090818181858888f19350505050158015610963573d6000803e3d6000fd5b505b42600183015560038201546002830154835460058501546040518794600160a060020a03908116941692600080516020611bf28339815191529260ff91821692911690808360068111156109b557fe5b60ff1681529115156020830152506040805191829003019150a4505050565b60035481565b60066020526000908152604090205481565b6005602081905260009182526040909120805460018201546002830154600384015460048501549585015460069095015460ff948516969395600160a060020a03938416959290931693929091169087565b600254610100900460ff1681565b600054600160a060020a031681565b600080808080805b600754821015610b405760056000600784815481101515610a8057fe5b600091825260208083209091015483528201929092526040019020600581015490915060ff1615610ab657600190940193610b35565b6002815460ff166006811115610ac857fe5b1480610ae357506004815460ff166006811115610ae157fe5b145b15610af357600190950194610b35565b6003815460ff166006811115610b0557fe5b1415610b1657600190930192610b35565b6001815460ff166006811115610b2857fe5b1415610b35576001909201915b600190910190610a63565b505090919293565b606060008060008060008089604051908082528060200260200182016040528015610b7d578160200160208202803883390190505b509650600093508a1515610b945760009450610be5565b600092505b600754831015610bd957600780548c919085908110610bb457fe5b6000918252602090912001541415610bce57829450610bd9565b600190920191610b99565b841515610be557600080fd5b8415610c085787610bfe57600754859003600101610c03565b846001015b610c1b565b87610c14576001610c17565b60005b60ff165b91505b87610c2e57600754821115610c34565b60075482105b15610e05576005600060078a610c4f57600754859003610c51565b845b81548110610c5b57fe5b6000918252602080832090910154835282019290925260400181209150815460ff166006811115610c8857fe5b14158015610ca657506006815460ff166006811115610ca357fe5b14155b8015610d98575088518015610ce357506002815460ff166006811115610cc857fe5b1480610ce357506004815460ff166006811115610ce157fe5b145b80610cfe575060208901518015610cfe5750600581015460ff165b80610d24575060408901518015610d2457506003815460ff166006811115610d2257fe5b145b80610d4a575060608901518015610d4a57506001815460ff166006811115610d4857fe5b145b80610d71575060808901518015610d715750600281015433600160a060020a039081169116145b80610d98575060a08901518015610d985750600381015433600160a060020a039081169116145b15610dfa5789841015610df157600788610db757600754839003610db9565b825b81548110610dc357fe5b90600052602060002001548785815181101515610ddc57fe5b60209081029091010152600190930192610dfa565b60019550610e05565b600190910190610c1e565b505050505094509492505050565b60008181526005602090815260408083208354915160e060020a63f7434ea9028152600481019384526001805460028183161561010002600019019091160460248301819052929594600160a060020a039094169363f7434ea9939192909182916044019084908015610ec75780601f10610e9c57610100808354040283529160200191610ec7565b820191906000526020600020905b815481529060010190602001808311610eaa57829003601f168201915b505092505050602060405180830381600087803b158015610ee757600080fd5b505af1158015610efb573d6000803e3d6000fd5b505050506040513d6020811015610f1157600080fd5b5051600254909150610100900460ff1615610f2b57600080fd5b6003548101341015610f3c57600080fd5b6003825460ff166006811115610f4e57fe5b1415610f6d578154600590839060ff19166001835b0217905550610f98565b6000825460ff166006811115610f7f57fe5b141561011c578154600690839060ff1916600183610f63565b60018201541515610fd957600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688018390555b60028201805473ffffffffffffffffffffffffffffffffffffffff191633600160a060020a039081169190911791829055600484018054340190554260018501556003840154845460058601546040518895938516949390931692600080516020611bf28339815191529260ff908116921690808360068111156109b557fe5b60025460ff1681565b60008181526005602090815260408083208354915160e060020a63f7434ea9028152600481019384526001805460028183161561010002600019019091160460248301819052929594600160a060020a039094169363f7434ea99391929091829160440190849080156111165780601f106110eb57610100808354040283529160200191611116565b820191906000526020600020905b8154815290600101906020018083116110f957829003601f168201915b505092505050602060405180830381600087803b15801561113657600080fd5b505af115801561114a573d6000803e3d6000fd5b505050506040513d602081101561116057600080fd5b5051600354909150810134101561117657600080fd5b6002825460ff16600681111561118857fe5b14806111a357506004825460ff1660068111156111a157fe5b145b15156111ae57600080fd5b600582015460ff16156111c057600080fd5b600482015481116112a85760038201805473ffffffffffffffffffffffffffffffffffffffff191633600160a060020a0390811691909117909155600480840180543485900301905560058401805460ff19166001908117909155600054604080517fc13517e100000000000000000000000000000000000000000000000000000000815260029481018581526024820192835284546101008187161502600019011686900460448301819052939096169563c13517e1958895909490939192606401908490801561080f5780601f106107e45761010080835404028352916020019161080f565b6002825460ff1660068111156112ba57fe5b14156108ed578154600190839060ff191682806108e3565b60008181526005602090815260408083208354915160e060020a63f7434ea9028152600481019384526001805460028183161561010002600019019091160460248301819052929594600160a060020a039094169363f7434ea99391929091829160440190849080156113865780601f1061135b57610100808354040283529160200191611386565b820191906000526020600020905b81548152906001019060200180831161136957829003601f168201915b505092505050602060405180830381600087803b1580156113a657600080fd5b505af11580156113ba573d6000803e3d6000fd5b505050506040513d60208110156113d057600080fd5b505160035490915081013410156113e657600080fd5b6000825460ff1660068111156113f857fe5b1415611411578154600490839060ff1916600183610f63565b6001825460ff16600681111561142357fe5b141561011c578154600290839060ff1916600183610f63565b6000818152600560205260408120816002825460ff16600681111561145d57fe5b11158061148957506006825460ff16600681111561147757fe5b1480156114895750600582015460ff16155b60025490915060ff1661149d57801561149f565b805b949350505050565b60078054829081106114b557fe5b600091825260209091200154905081565b60075490565b60008181526005602052604090206004546001820154420310156114ef57600080fd5b600581015460ff161561150157600080fd5b6002815460ff16600681111561151357fe5b148061152e57506004815460ff16600681111561152c57fe5b145b1561154c578054600390829060ff19166001835b0217905550611590565b6005815460ff16600681111561155e57fe5b148061157957506006815460ff16600681111561157757fe5b145b1561011c578054600190829060ff19168280611542565b60028101546004820154604051600160a060020a039092169181156108fc0291906000818181858888f1505050506003820154600283015483546005850154604051879550600160a060020a039485169490931692600080516020611bf28339815191529260ff9081169216908083600681111561160a57fe5b60ff1681529115156020830152506040805191829003019150a45050565b6000818152600560205260408082209154600683015482517f49912f8800000000000000000000000000000000000000000000000000000000815260048101828152602482019485526001805460028183161561010002600019019091160460448401819052600160a060020a03909516956349912f889534959492939260640190849080156116f95780601f106116ce576101008083540402835291602001916116f9565b820191906000526020600020905b8154815290600101906020018083116116dc57829003601f168201915b505093505050506000604051808303818588803b15801561171957600080fd5b505af115801561172d573d6000803e3d6000fd5b50505050505050565b6000828152600660209081526040808320548352600591829052822090810154909190819060ff16151561176957600080fd5b60018414156119a05760025462010000900460ff16801561179957506004835460ff16600681111561179757fe5b145b156118ef5760005460405160e060020a63f7434ea90281526020600482019081526001805460026000198284161561010002019091160460248401819052600160a060020a039094169363f7434ea9939192918291604490910190849080156118435780601f1061181857610100808354040283529160200191611843565b820191906000526020600020905b81548152906001019060200180831161182657829003601f168201915b505092505050602060405180830381600087803b15801561186357600080fd5b505af1158015611877573d6000803e3d6000fd5b505050506040513d602081101561188d57600080fd5b5051600484015460035491935090830110156118ea57506003546004830154600284015460405192840190910391600160a060020a039091169082156108fc029083906000818181858888f1505050600485018054849003905550505b61199b565b6002835460ff16600681111561190157fe5b148061191c57506004835460ff16600681111561191a57fe5b145b156119565760028301546004840154604051600160a060020a039092169181156108fc0291906000818181858888f1935050505050611986565b60038301546004840154604051600160a060020a039092169181156108fc0291906000818181858888f150505050505b8254600390849060ff19166001835b02179055505b611b1a565b6002841415611a52576006835460ff1660068111156119bb57fe5b14806119d657506005835460ff1660068111156119d457fe5b145b15611a105760028301546004840154604051600160a060020a039092169181156108fc0291906000818181858888f1935050505050611a40565b60038301546004840154604051600160a060020a039092169181156108fc0291906000818181858888f150505050505b8254600190849060ff19168280611995565b6002835460ff166006811115611a6457fe5b1415611a82578254600190849060ff191682805b0217905550611ab6565b6005835460ff166006811115611a9457fe5b1415611aad578254600390849060ff1916600183611a78565b825460ff191683555b6002838101546004850154604051600160a060020a0390921692900480156108fc02916000818181858888f15050505060038401546004850154604051600160a060020a0390921692506002900480156108fc02916000818181858888f150505050505b60058301805460ff1916905560025462010000900460ff168015611b4d57506004835460ff166006811115611b4b57fe5b145b8015611b595750600184145b15611b6957426001840155611b71565b600060048401555b60008581526006602081905260409182902054600386015460028701548754600589015495519395600160a060020a03938416959290931693600080516020611bf28339815191529360ff9283169392169181908490811115611bd057fe5b60ff1681529115156020830152506040805191829003019150a450505050505600a4beab79462e336293c2f229498d5942d3b4642806ab2820d6b7846d42d7e21aa165627a7a7230582046649d1e43840009556ed04cb78ba4f4d30688d0db678287cacd7dc629b69ccd0029000000000000000000000000211f01e59b425253c0a0e9a7bf612605b42ce82c00000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000006a94d74f43000000000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b68747470733a2f2f73332e75732d656173742d322e616d617a6f6e6177732e636f6d2f70726f64756374696f6e2d646f6765732d6f6e2d747269616c2d646f67652d696d616765732f6d6574612d65766964656e63652e6a736f6e0000000000

Deployed Bytecode

0x60806040526004361061011c5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630689d0ff81146101215780630c7ac7b61461014857806324642510146101d2578063311a6c56146101fb578063342d9a04146102185780633a4b66f114610223578063409c88281461023857806348f343f314610250578063675629fe146102c65780636cc6cde1146102db57806381a1fa021461030c5780638e604b1d1461034757806393519d66146103f5578063a4b5fa5614610400578063b783d6c714610415578063bc16272d14610420578063beabdb7b1461042b578063c2bd9d9514610443578063e2c03ace1461045b578063e9c2416614610470578063ece1de4414610488575b600080fd5b34801561012d57600080fd5b50610136610493565b60408051918252519081900360200190f35b34801561015457600080fd5b5061015d610499565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561019757818101518382015260200161017f565b50505050905090810190601f1680156101c45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101de57600080fd5b506101e7610526565b604080519115158252519081900360200190f35b34801561020757600080fd5b50610216600435602435610535565b005b61021660043561059e565b34801561022f57600080fd5b506101366109d4565b34801561024457600080fd5b506101366004356109da565b34801561025c57600080fd5b506102686004356109ec565b6040518088600681111561027857fe5b60ff168152602081019790975250600160a060020a039485166040808801919091529390941660608601526080850191909152151560a084015260c0830191909152519081900360e0019150f35b3480156102d257600080fd5b506101e7610a3e565b3480156102e757600080fd5b506102f0610a4c565b60408051600160a060020a039092168252519081900360200190f35b34801561031857600080fd5b50610321610a5b565b604080519485526020850193909352838301919091526060830152519081900360800190f35b34801561035357600080fd5b506040805160c08181019092526103969160048035926024359236929161010491604490600690839083908082843750939650505050903515159150610b489050565b604051808060200183151515158152602001828103825284818151815260200191508051906020019060200280838360005b838110156103e05781810151838201526020016103c8565b50505050905001935050505060405180910390f35b610216600435610e13565b34801561040c57600080fd5b506101e7611059565b610216600435611062565b6102166004356112d2565b34801561043757600080fd5b506101e760043561143c565b34801561044f57600080fd5b506101366004356114a7565b34801561046757600080fd5b506101366114c6565b34801561047c57600080fd5b506102166004356114cc565b610216600435611628565b60045481565b60018054604080516020600284861615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561051e5780601f106104f35761010080835404028352916020019161051e565b820191906000526020600020905b81548152906001019060200180831161050157829003601f168201915b505050505081565b60025462010000900460ff1681565b60005433600160a060020a0390811691161461055057600080fd5b6040805182815290518391600160a060020a033316917f394027a5fa6e098a1191094d1719d6929b9abc535fcc0c8f448d6a4e756222769181900360200190a361059a8282611736565b5050565b60008181526005602090815260408083208354915160e060020a63f7434ea9028152600481019384526001805460028183161561010002600019019091160460248301819052929594600160a060020a039094169363f7434ea99391929091829160440190849080156106525780601f1061062757610100808354040283529160200191610652565b820191906000526020600020905b81548152906001019060200180831161063557829003601f168201915b505092505050602060405180830381600087803b15801561067257600080fd5b505af1158015610686573d6000803e3d6000fd5b505050506040513d602081101561069c57600080fd5b505160035490915081013410156106b257600080fd5b6005825460ff1660068111156106c457fe5b14806106df57506006825460ff1660068111156106dd57fe5b145b15156106ea57600080fd5b600582015460ff16156106fc57600080fd5b600482015481116108bc5760038201805473ffffffffffffffffffffffffffffffffffffffff191633600160a060020a0390811691909117909155600480840180543485900301905560058401805460ff19166001908117909155600054604080517fc13517e100000000000000000000000000000000000000000000000000000000815260029481018581526024820192835284546101008187161502600019011686900460448301819052939096169563c13517e1958895909490939192606401908490801561080f5780601f106107e45761010080835404028352916020019161080f565b820191906000526020600020905b8154815290600101906020018083116107f257829003601f168201915b505093505050506020604051808303818588803b15801561082f57600080fd5b505af1158015610843573d6000803e3d6000fd5b50505050506040513d602081101561085a57600080fd5b5051600680840182815560009283526020918252604080842087905590548354825194855291519093600160a060020a03909216927fc21357d76c2ee05713ed6e2edb9a5f60ab1e8748c56201385df30007f774f58d928290030190a3610965565b6005825460ff1660068111156108ce57fe5b14156108ed578154600390839060ff19166001835b02179055506108f6565b815460ff191682555b60028201546004830154604051600160a060020a039092169181156108fc0291906000818181858888f15050600060048601819055604051600160a060020a03331694503480156108fc029450925090818181858888f19350505050158015610963573d6000803e3d6000fd5b505b42600183015560038201546002830154835460058501546040518794600160a060020a03908116941692600080516020611bf28339815191529260ff91821692911690808360068111156109b557fe5b60ff1681529115156020830152506040805191829003019150a4505050565b60035481565b60066020526000908152604090205481565b6005602081905260009182526040909120805460018201546002830154600384015460048501549585015460069095015460ff948516969395600160a060020a03938416959290931693929091169087565b600254610100900460ff1681565b600054600160a060020a031681565b600080808080805b600754821015610b405760056000600784815481101515610a8057fe5b600091825260208083209091015483528201929092526040019020600581015490915060ff1615610ab657600190940193610b35565b6002815460ff166006811115610ac857fe5b1480610ae357506004815460ff166006811115610ae157fe5b145b15610af357600190950194610b35565b6003815460ff166006811115610b0557fe5b1415610b1657600190930192610b35565b6001815460ff166006811115610b2857fe5b1415610b35576001909201915b600190910190610a63565b505090919293565b606060008060008060008089604051908082528060200260200182016040528015610b7d578160200160208202803883390190505b509650600093508a1515610b945760009450610be5565b600092505b600754831015610bd957600780548c919085908110610bb457fe5b6000918252602090912001541415610bce57829450610bd9565b600190920191610b99565b841515610be557600080fd5b8415610c085787610bfe57600754859003600101610c03565b846001015b610c1b565b87610c14576001610c17565b60005b60ff165b91505b87610c2e57600754821115610c34565b60075482105b15610e05576005600060078a610c4f57600754859003610c51565b845b81548110610c5b57fe5b6000918252602080832090910154835282019290925260400181209150815460ff166006811115610c8857fe5b14158015610ca657506006815460ff166006811115610ca357fe5b14155b8015610d98575088518015610ce357506002815460ff166006811115610cc857fe5b1480610ce357506004815460ff166006811115610ce157fe5b145b80610cfe575060208901518015610cfe5750600581015460ff165b80610d24575060408901518015610d2457506003815460ff166006811115610d2257fe5b145b80610d4a575060608901518015610d4a57506001815460ff166006811115610d4857fe5b145b80610d71575060808901518015610d715750600281015433600160a060020a039081169116145b80610d98575060a08901518015610d985750600381015433600160a060020a039081169116145b15610dfa5789841015610df157600788610db757600754839003610db9565b825b81548110610dc357fe5b90600052602060002001548785815181101515610ddc57fe5b60209081029091010152600190930192610dfa565b60019550610e05565b600190910190610c1e565b505050505094509492505050565b60008181526005602090815260408083208354915160e060020a63f7434ea9028152600481019384526001805460028183161561010002600019019091160460248301819052929594600160a060020a039094169363f7434ea9939192909182916044019084908015610ec75780601f10610e9c57610100808354040283529160200191610ec7565b820191906000526020600020905b815481529060010190602001808311610eaa57829003601f168201915b505092505050602060405180830381600087803b158015610ee757600080fd5b505af1158015610efb573d6000803e3d6000fd5b505050506040513d6020811015610f1157600080fd5b5051600254909150610100900460ff1615610f2b57600080fd5b6003548101341015610f3c57600080fd5b6003825460ff166006811115610f4e57fe5b1415610f6d578154600590839060ff19166001835b0217905550610f98565b6000825460ff166006811115610f7f57fe5b141561011c578154600690839060ff1916600183610f63565b60018201541515610fd957600780546001810182556000919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688018390555b60028201805473ffffffffffffffffffffffffffffffffffffffff191633600160a060020a039081169190911791829055600484018054340190554260018501556003840154845460058601546040518895938516949390931692600080516020611bf28339815191529260ff908116921690808360068111156109b557fe5b60025460ff1681565b60008181526005602090815260408083208354915160e060020a63f7434ea9028152600481019384526001805460028183161561010002600019019091160460248301819052929594600160a060020a039094169363f7434ea99391929091829160440190849080156111165780601f106110eb57610100808354040283529160200191611116565b820191906000526020600020905b8154815290600101906020018083116110f957829003601f168201915b505092505050602060405180830381600087803b15801561113657600080fd5b505af115801561114a573d6000803e3d6000fd5b505050506040513d602081101561116057600080fd5b5051600354909150810134101561117657600080fd5b6002825460ff16600681111561118857fe5b14806111a357506004825460ff1660068111156111a157fe5b145b15156111ae57600080fd5b600582015460ff16156111c057600080fd5b600482015481116112a85760038201805473ffffffffffffffffffffffffffffffffffffffff191633600160a060020a0390811691909117909155600480840180543485900301905560058401805460ff19166001908117909155600054604080517fc13517e100000000000000000000000000000000000000000000000000000000815260029481018581526024820192835284546101008187161502600019011686900460448301819052939096169563c13517e1958895909490939192606401908490801561080f5780601f106107e45761010080835404028352916020019161080f565b6002825460ff1660068111156112ba57fe5b14156108ed578154600190839060ff191682806108e3565b60008181526005602090815260408083208354915160e060020a63f7434ea9028152600481019384526001805460028183161561010002600019019091160460248301819052929594600160a060020a039094169363f7434ea99391929091829160440190849080156113865780601f1061135b57610100808354040283529160200191611386565b820191906000526020600020905b81548152906001019060200180831161136957829003601f168201915b505092505050602060405180830381600087803b1580156113a657600080fd5b505af11580156113ba573d6000803e3d6000fd5b505050506040513d60208110156113d057600080fd5b505160035490915081013410156113e657600080fd5b6000825460ff1660068111156113f857fe5b1415611411578154600490839060ff1916600183610f63565b6001825460ff16600681111561142357fe5b141561011c578154600290839060ff1916600183610f63565b6000818152600560205260408120816002825460ff16600681111561145d57fe5b11158061148957506006825460ff16600681111561147757fe5b1480156114895750600582015460ff16155b60025490915060ff1661149d57801561149f565b805b949350505050565b60078054829081106114b557fe5b600091825260209091200154905081565b60075490565b60008181526005602052604090206004546001820154420310156114ef57600080fd5b600581015460ff161561150157600080fd5b6002815460ff16600681111561151357fe5b148061152e57506004815460ff16600681111561152c57fe5b145b1561154c578054600390829060ff19166001835b0217905550611590565b6005815460ff16600681111561155e57fe5b148061157957506006815460ff16600681111561157757fe5b145b1561011c578054600190829060ff19168280611542565b60028101546004820154604051600160a060020a039092169181156108fc0291906000818181858888f1505050506003820154600283015483546005850154604051879550600160a060020a039485169490931692600080516020611bf28339815191529260ff9081169216908083600681111561160a57fe5b60ff1681529115156020830152506040805191829003019150a45050565b6000818152600560205260408082209154600683015482517f49912f8800000000000000000000000000000000000000000000000000000000815260048101828152602482019485526001805460028183161561010002600019019091160460448401819052600160a060020a03909516956349912f889534959492939260640190849080156116f95780601f106116ce576101008083540402835291602001916116f9565b820191906000526020600020905b8154815290600101906020018083116116dc57829003601f168201915b505093505050506000604051808303818588803b15801561171957600080fd5b505af115801561172d573d6000803e3d6000fd5b50505050505050565b6000828152600660209081526040808320548352600591829052822090810154909190819060ff16151561176957600080fd5b60018414156119a05760025462010000900460ff16801561179957506004835460ff16600681111561179757fe5b145b156118ef5760005460405160e060020a63f7434ea90281526020600482019081526001805460026000198284161561010002019091160460248401819052600160a060020a039094169363f7434ea9939192918291604490910190849080156118435780601f1061181857610100808354040283529160200191611843565b820191906000526020600020905b81548152906001019060200180831161182657829003601f168201915b505092505050602060405180830381600087803b15801561186357600080fd5b505af1158015611877573d6000803e3d6000fd5b505050506040513d602081101561188d57600080fd5b5051600484015460035491935090830110156118ea57506003546004830154600284015460405192840190910391600160a060020a039091169082156108fc029083906000818181858888f1505050600485018054849003905550505b61199b565b6002835460ff16600681111561190157fe5b148061191c57506004835460ff16600681111561191a57fe5b145b156119565760028301546004840154604051600160a060020a039092169181156108fc0291906000818181858888f1935050505050611986565b60038301546004840154604051600160a060020a039092169181156108fc0291906000818181858888f150505050505b8254600390849060ff19166001835b02179055505b611b1a565b6002841415611a52576006835460ff1660068111156119bb57fe5b14806119d657506005835460ff1660068111156119d457fe5b145b15611a105760028301546004840154604051600160a060020a039092169181156108fc0291906000818181858888f1935050505050611a40565b60038301546004840154604051600160a060020a039092169181156108fc0291906000818181858888f150505050505b8254600190849060ff19168280611995565b6002835460ff166006811115611a6457fe5b1415611a82578254600190849060ff191682805b0217905550611ab6565b6005835460ff166006811115611a9457fe5b1415611aad578254600390849060ff1916600183611a78565b825460ff191683555b6002838101546004850154604051600160a060020a0390921692900480156108fc02916000818181858888f15050505060038401546004850154604051600160a060020a0390921692506002900480156108fc02916000818181858888f150505050505b60058301805460ff1916905560025462010000900460ff168015611b4d57506004835460ff166006811115611b4b57fe5b145b8015611b595750600184145b15611b6957426001840155611b71565b600060048401555b60008581526006602081905260409182902054600386015460028701548754600589015495519395600160a060020a03938416959290931693600080516020611bf28339815191529360ff9283169392169181908490811115611bd057fe5b60ff1681529115156020830152506040805191829003019150a450505050505600a4beab79462e336293c2f229498d5942d3b4642806ab2820d6b7846d42d7e21aa165627a7a7230582046649d1e43840009556ed04cb78ba4f4d30688d0db678287cacd7dc629b69ccd0029

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000211f01e59b425253c0a0e9a7bf612605b42ce82c00000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000006a94d74f43000000000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b68747470733a2f2f73332e75732d656173742d322e616d617a6f6e6177732e636f6d2f70726f64756374696f6e2d646f6765732d6f6e2d747269616c2d646f67652d696d616765732f6d6574612d65766964656e63652e6a736f6e0000000000

-----Decoded View---------------
Arg [0] : _arbitrator (address): 0x211F01e59b425253C0a0E9a7Bf612605b42ce82c
Arg [1] : _arbitratorExtraData (bytes): 0x
Arg [2] : _metaEvidence (string): https://s3.us-east-2.amazonaws.com/production-doges-on-trial-doge-images/meta-evidence.json
Arg [3] : _blacklist (bool): False
Arg [4] : _appendOnly (bool): True
Arg [5] : _rechallengePossible (bool): True
Arg [6] : _stake (uint256): 30000000000000000
Arg [7] : _timeToChallenge (uint256): 86400

-----Encoded View---------------
13 Constructor Arguments found :
Arg [0] : 000000000000000000000000211f01e59b425253c0a0e9a7bf612605b42ce82c
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [6] : 000000000000000000000000000000000000000000000000006a94d74f430000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000015180
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [9] : 000000000000000000000000000000000000000000000000000000000000005b
Arg [10] : 68747470733a2f2f73332e75732d656173742d322e616d617a6f6e6177732e63
Arg [11] : 6f6d2f70726f64756374696f6e2d646f6765732d6f6e2d747269616c2d646f67
Arg [12] : 652d696d616765732f6d6574612d65766964656e63652e6a736f6e0000000000


Swarm Source

bzzr://46649d1e43840009556ed04cb78ba4f4d30688d0db678287cacd7dc629b69ccd

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ 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.