Scroll Sepolia Testnet

Contract

0x435c8C6048ae5601D05Dd5D42C16141602C86990

Overview

ETH Balance

Scroll Sepolia LogoScroll Sepolia LogoScroll Sepolia Logo0 ETH

Token Holdings

Multichain Info

N/A
Transaction Hash
Method
Block
From
To
Generate Robot I...84840872025-03-13 7:00:1235 days ago1741849212IN
0x435c8C60...602C86990
0.01 ETH0.000021220.04784414
Generate Robot I...84840742025-03-13 6:58:5035 days ago1741849130IN
0x435c8C60...602C86990
0.01 ETH0.000020110.04713031
Generate Robot I...84840642025-03-13 6:57:2035 days ago1741849040IN
0x435c8C60...602C86990
0.01 ETH0.000019240.04717327
Process Order84840622025-03-13 6:57:0335 days ago1741849023IN
0x435c8C60...602C86990
0 ETH0.000012790.04715659
Generate Robot I...84835752025-03-13 5:50:0035 days ago1741845000IN
0x435c8C60...602C86990
0.01 ETH0.000009650.04040799
Generate Robot I...84835642025-03-13 5:48:4035 days ago1741844920IN
0x435c8C60...602C86990
0.01 ETH0.000009590.0403695
Generate Robot I...84835532025-03-13 5:47:1035 days ago1741844830IN
0x435c8C60...602C86990
0.01 ETH0.000008710.04032126
Process Order84835502025-03-13 5:46:5035 days ago1741844810IN
0x435c8C60...602C86990
0 ETH0.000003260.04035308
Generate Robot I...84828752025-03-13 4:08:3035 days ago1741838910IN
0x435c8C60...602C86990
0.01 ETH0.00000830.03954086
Generate Robot I...84828622025-03-13 4:07:0335 days ago1741838823IN
0x435c8C60...602C86990
0.01 ETH0.000008380.03958823
Generate Robot I...84828482025-03-13 4:05:3035 days ago1741838730IN
0x435c8C60...602C86990
0.01 ETH0.000007440.03949191
Process Order84828462025-03-13 4:05:2035 days ago1741838720IN
0x435c8C60...602C86990
0 ETH0.00000210.03952371
Generate Robot I...82816572025-02-22 7:48:5354 days ago1740210533IN
0x435c8C60...602C86990
0.01 ETH0.000009420.04025959
Generate Robot I...82816422025-02-22 7:47:2054 days ago1740210440IN
0x435c8C60...602C86990
0.01 ETH0.000009460.04028545
Generate Robot I...82816262025-02-22 7:45:4354 days ago1740210343IN
0x435c8C60...602C86990
0.01 ETH0.000008540.04020594
Process Order82816232025-02-22 7:45:2354 days ago1740210323IN
0x435c8C60...602C86990
0 ETH0.000003020.04018111
Generate Robot I...82815372025-02-22 7:36:4354 days ago1740209803IN
0x435c8C60...602C86990
0.01 ETH0.000007970.03983796
Process Order82815342025-02-22 7:36:3054 days ago1740209790IN
0x435c8C60...602C86990
0 ETH0.000002530.03982882
Generate Robot I...82812852025-02-22 7:09:1354 days ago1740208153IN
0x435c8C60...602C86990
0.01 ETH0.000008620.0397467
Generate Robot I...82812692025-02-22 7:07:4654 days ago1740208066IN
0x435c8C60...602C86990
0.01 ETH0.000008660.03977299
Generate Robot I...82812542025-02-22 7:06:1754 days ago1740207977IN
0x435c8C60...602C86990
0.01 ETH0.000007880.03977497
Process Order82812502025-02-22 7:06:0454 days ago1740207964IN
0x435c8C60...602C86990
0 ETH0.000002480.03979306
Generate Robot I...82723222025-02-21 11:51:5655 days ago1740138716IN
0x435c8C60...602C86990
0.01 ETH0.000012540.03945336
Generate Robot I...82723102025-02-21 11:50:2755 days ago1740138627IN
0x435c8C60...602C86990
0.01 ETH0.000012440.03949825
Generate Robot I...82722962025-02-21 11:48:5355 days ago1740138533IN
0x435c8C60...602C86990
0.01 ETH0.000010640.03949877
View all transactions

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To
84840962025-03-13 7:01:4035 days ago1741849300
0x435c8C60...602C86990
0 ETH
84840962025-03-13 7:01:4035 days ago1741849300
0x435c8C60...602C86990
0 ETH
84840962025-03-13 7:01:4035 days ago1741849300
0x435c8C60...602C86990
0 ETH
84840962025-03-13 7:01:4035 days ago1741849300
0x435c8C60...602C86990
0 ETH
84840962025-03-13 7:01:4035 days ago1741849300
0x435c8C60...602C86990
0 ETH
84840892025-03-13 7:00:3035 days ago1741849230
0x435c8C60...602C86990
0 ETH
84840872025-03-13 7:00:1235 days ago1741849212
0x435c8C60...602C86990
0.0001781 ETH
84840872025-03-13 7:00:1235 days ago1741849212
0x435c8C60...602C86990
0.00982189 ETH
84840872025-03-13 7:00:1235 days ago1741849212
0x435c8C60...602C86990
0 ETH
84840842025-03-13 7:00:0335 days ago1741849203
0x435c8C60...602C86990
0 ETH
84840842025-03-13 7:00:0335 days ago1741849203
0x435c8C60...602C86990
0 ETH
84840772025-03-13 6:59:2035 days ago1741849160
0x435c8C60...602C86990
0 ETH
84840742025-03-13 6:58:5035 days ago1741849130
0x435c8C60...602C86990
0.00017505 ETH
84840742025-03-13 6:58:5035 days ago1741849130
0x435c8C60...602C86990
0.00982494 ETH
84840742025-03-13 6:58:5035 days ago1741849130
0x435c8C60...602C86990
0 ETH
84840722025-03-13 6:58:3335 days ago1741849113
0x435c8C60...602C86990
0 ETH
84840722025-03-13 6:58:3335 days ago1741849113
0x435c8C60...602C86990
0 ETH
84840672025-03-13 6:57:5035 days ago1741849070
0x435c8C60...602C86990
0 ETH
84840642025-03-13 6:57:2035 days ago1741849040
0x435c8C60...602C86990
0.00017523 ETH
84840642025-03-13 6:57:2035 days ago1741849040
0x435c8C60...602C86990
0.00982476 ETH
84840642025-03-13 6:57:2035 days ago1741849040
0x435c8C60...602C86990
0 ETH
84840622025-03-13 6:57:0335 days ago1741849023
0x435c8C60...602C86990
0 ETH
84835842025-03-13 5:51:2035 days ago1741845080
0x435c8C60...602C86990
0 ETH
84835842025-03-13 5:51:2035 days ago1741845080
0x435c8C60...602C86990
0 ETH
84835842025-03-13 5:51:2035 days ago1741845080
0x435c8C60...602C86990
0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Warehouse

Compiler Version
v0.8.27+commit.40a35a09

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 6 : Warehouse.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.27;

import {IAnyrand} from "./lib/Anyrand.sol";
import {IRandomiserCallbackV3} from "./lib/RandomiserCallbackV3.sol";

import "./interfaces/Enums.sol";

import "./interfaces/IShop.sol";
import "./interfaces/IProducts.sol";

error NotARobot();
error NotAnOwner();

contract Warehouse is IRandomiserCallbackV3  {

	address public immutable anyrand;
	address _owner;

	enum Activity {
		Picking, Packing, Delivering
	}

	IShop Shop;
	IProducts Products;

	mapping (address => bool) _robotApproval;
	mapping (uint256 => Activity) _requestToActivity;
	mapping (uint256 => string) _requestToOrder;

	uint8[] pickingRobots = new uint8[](0);
	uint8[] packingRobots = new uint8[](0);
	uint8[] deliveryRobots = new uint8[](0);
	mapping (string => uint8) _activeOrderRobot;

	event WarehouseActivity(string orderId, Enums.OrderStatus status);
	event AssingRobot(string orderId, Activity activity, uint256 robotId);
	event RequestRobotId(string orderId, uint256 requestId);
	event ActivityVerifier(string orderId, Activity activity, address indexed verifier);

	constructor(address shop, address products) {
		_owner = msg.sender;
		Shop = IShop(shop);
		Products = IProducts(products);
		anyrand = 0x86d8C50E04DDd04cdaafaC9672cf1D00b6057AF5;

		for(uint8 i = 1; i <= 20; i++) {
			pickingRobots.push(i);
			packingRobots.push(i);
			deliveryRobots.push(i);
		}
	}

	function setRobot(address robot) external {
		require(msg.sender == _owner, 'Not an Owner');
		_robotApproval[robot] = true;
	}

	function processOrder(string memory orderId) onlyOwner external {
		Shop.updateOrderStatus(orderId, Enums.OrderStatus.Processing);

		emit WarehouseActivity(orderId, Enums.OrderStatus.Processing);
	}

	function pickOrder(string memory orderId, address verifier) onlyRobot external {
		Shop.updateOrderStatus(orderId, Enums.OrderStatus.Picked);

		pickingRobots.push(_activeOrderRobot[orderId]);
		_activeOrderRobot[orderId] = 0;

		emit WarehouseActivity(orderId, Enums.OrderStatus.Picked);
		emit ActivityVerifier(orderId, Activity.Picking, verifier);
	} 

	function packOrder(string memory orderId, address verifier) onlyRobot external {
		Shop.updateOrderStatus(orderId, Enums.OrderStatus.Packed);

		packingRobots.push(_activeOrderRobot[orderId]);
		_activeOrderRobot[orderId] = 0;

		emit WarehouseActivity(orderId, Enums.OrderStatus.Packed);
		emit ActivityVerifier(orderId, Activity.Packing, verifier);
	}

	function deliverOrder(string memory orderId, address verifier) onlyRobot external {
		Shop.updateOrderStatus(orderId, Enums.OrderStatus.Delivered);

		Products.mintProduct(Shop.getOrderProductId(orderId), Shop.getOrderCustomer(orderId));

		deliveryRobots.push(_activeOrderRobot[orderId]);
		_activeOrderRobot[orderId] = 0;

		emit WarehouseActivity(orderId, Enums.OrderStatus.Delivered);
		emit ActivityVerifier(orderId, Activity.Delivering, verifier);
	}

	function generateRobotId(
		string memory orderId, 
		Activity activityType,
	    uint256 deadline,
        uint256 callbackGasLimit // set to 7_000_000
	) onlyOwner external payable returns(uint256) {
		require(deadline > block.timestamp, "Deadline is in the past");
        (uint256 requestPrice, ) = IAnyrand(anyrand).getRequestPrice(
            callbackGasLimit
        );
        require(msg.value >= requestPrice, "Insufficient payment");
        if (msg.value > requestPrice) {
            (bool success, ) = msg.sender.call{value: msg.value - requestPrice}(
                ""
            );
            require(success, "Refund failed");
        }
        uint256 requestId = IAnyrand(anyrand).requestRandomness{
            value: requestPrice
        }(deadline, callbackGasLimit);

		_requestToActivity[requestId] = activityType;
		_requestToOrder[requestId] = orderId;

		emit RequestRobotId(orderId, requestId);

		return requestId;
	}

	function receiveRandomness(uint256 requestId, uint256 randomWord) external {
        require(msg.sender == anyrand, "Only callable by Anyrand");

		uint8 robotId = _occupyRobot(_requestToOrder[requestId], _requestToActivity[requestId], randomWord);

		emit AssingRobot(_requestToOrder[requestId], _requestToActivity[requestId], robotId);
    }

	function activeRobots() view external returns (uint256[] memory robots) {
		robots = new uint256[](3);
		robots[0] = pickingRobots.length;
		robots[1] = packingRobots.length;
		robots[2] = deliveryRobots.length;
	}

	function robotStatus(uint8 robotId, Activity robotType) view external returns (Enums.RobotStatus) {
		uint8[] memory copy = 
			robotType == Activity.Picking ? pickingRobots :
			robotType == Activity.Packing ? packingRobots : 
			deliveryRobots;

		for(uint8 i = 0; i < copy.length; i++) {
			if(copy[i] == robotId) return Enums.RobotStatus.Free;
		}

		return Enums.RobotStatus.Occupied;
	}

	function _occupyRobot(string memory orderId, Activity activity, uint256 randomNumber) internal returns (uint8) {
		uint256 length = deliveryRobots.length;

		if (activity == Activity.Picking) {
			length = pickingRobots.length;
		} else if(activity == Activity.Packing) {
			packingRobots.length;
		} 

		uint8 index = 0;
		unchecked {
			index = uint8(randomNumber % length);
		}

		if (activity == Activity.Picking) {
			_activeOrderRobot[orderId] = pickingRobots[index];

			pickingRobots[index] = pickingRobots[length - 1];
			pickingRobots.pop();
		} else if(activity == Activity.Packing) {
			_activeOrderRobot[orderId] = packingRobots[index];

			packingRobots[index] = packingRobots[length - 1];
			packingRobots.pop();
		} else {
			_activeOrderRobot[orderId] = deliveryRobots[index];

			deliveryRobots[index] = deliveryRobots[length - 1];
			deliveryRobots.pop();
		}

		return _activeOrderRobot[orderId];
	}

	modifier onlyOwner {
		if(msg.sender != _owner) revert NotAnOwner();
		_;
	}

	modifier onlyRobot {
		if(!_robotApproval[msg.sender]) revert NotARobot();
		_;
	}
}

File 2 of 6 : Enums.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.27;

interface Enums {
	enum OrderStatus {
		Received, Processing, Picked, Packed, Delivered
	}

	enum Activity {
		Picking, Packing, Delivery
	}

	enum ProductId {
		Green, Purple, Blue
	}

	enum RobotStatus {
		Free, Occupied
	}
}

File 3 of 6 : IProducts.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.27;

import './Enums.sol';

interface IProducts {
	function mintProduct(Enums.ProductId productId, address receiver) external;
}

File 4 of 6 : IShop.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.27; 

import './Enums.sol';

interface IShop {
	struct Order {
		string orderId;
		Enums.OrderStatus status;
		address customer;
		Enums.ProductId productId;
	}

	event PlaceOrder(address indexed customer, string orderId);
	event UpdateStatus(string orderId, Enums.OrderStatus status);

	function placeOrder(string memory orderId, Enums.ProductId productId) external payable;

	function updateOrderStatus(string memory orderId, Enums.OrderStatus newStatus) external;

	function getOrderCustomer(string memory orderId) external view returns (address);

	function getOrderProductId(string memory orderId) external view returns (Enums.ProductId);
}

File 5 of 6 : Anyrand.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8;

interface IAnyrand {
    /// @notice State of a request
    enum RequestState {
        /// @notice The request does not exist
        Nonexistent,
        /// @notice A request has been made, waiting for fulfilment
        Pending,
        /// @notice The request has been fulfilled successfully
        Fulfilled,
        /// @notice The request was fulfilled, but the callback failed
        Failed
    }

    /// @notice Compute the total request price
    /// @param callbackGasLimit The callback gas limit that will be used for
    ///     the randomness request
    function getRequestPrice(
        uint256 callbackGasLimit
    ) external view returns (uint256 totalPrice, uint256 effectiveFeePerGas);

    /// @notice Request randomness
    /// @param deadline Timestamp of when the randomness should be fulfilled. A
    ///     beacon round closest to this timestamp (rounding up to the nearest
    ///     future round) will be used as the round from which to derive
    ///     randomness.
    /// @param callbackGasLimit Gas limit for callback
    function requestRandomness(
        uint256 deadline,
        uint256 callbackGasLimit
    ) external payable returns (uint256);

    /// @notice Get the state of a request
    /// @param requestId The request identifier
    function getRequestState(
        uint256 requestId
    ) external view returns (RequestState);
}

File 6 of 6 : RandomiserCallbackV3.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8;

interface IRandomiserCallbackV3 {
    /// @notice Receive random words from a randomiser.
    /// @dev Ensure that proper access control is enforced on this function;
    ///     only the designated randomiser may call this function and the
    ///     requestId should be as expected from the randomness request.
    /// @param requestId The identifier for the original randomness request
    /// @param randomWord Uniform random number in the range [0, 2**256)
    function receiveRandomness(uint256 requestId, uint256 randomWord) external;
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "evmVersion": "paris",
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"shop","type":"address"},{"internalType":"address","name":"products","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"NotARobot","type":"error"},{"inputs":[],"name":"NotAnOwner","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"orderId","type":"string"},{"indexed":false,"internalType":"enum Warehouse.Activity","name":"activity","type":"uint8"},{"indexed":true,"internalType":"address","name":"verifier","type":"address"}],"name":"ActivityVerifier","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"orderId","type":"string"},{"indexed":false,"internalType":"enum Warehouse.Activity","name":"activity","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"robotId","type":"uint256"}],"name":"AssingRobot","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"orderId","type":"string"},{"indexed":false,"internalType":"uint256","name":"requestId","type":"uint256"}],"name":"RequestRobotId","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"orderId","type":"string"},{"indexed":false,"internalType":"enum Enums.OrderStatus","name":"status","type":"uint8"}],"name":"WarehouseActivity","type":"event"},{"inputs":[],"name":"activeRobots","outputs":[{"internalType":"uint256[]","name":"robots","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"anyrand","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"orderId","type":"string"},{"internalType":"address","name":"verifier","type":"address"}],"name":"deliverOrder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"orderId","type":"string"},{"internalType":"enum Warehouse.Activity","name":"activityType","type":"uint8"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"callbackGasLimit","type":"uint256"}],"name":"generateRobotId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string","name":"orderId","type":"string"},{"internalType":"address","name":"verifier","type":"address"}],"name":"packOrder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"orderId","type":"string"},{"internalType":"address","name":"verifier","type":"address"}],"name":"pickOrder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"orderId","type":"string"}],"name":"processOrder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"requestId","type":"uint256"},{"internalType":"uint256","name":"randomWord","type":"uint256"}],"name":"receiveRandomness","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"robotId","type":"uint8"},{"internalType":"enum Warehouse.Activity","name":"robotType","type":"uint8"}],"name":"robotStatus","outputs":[{"internalType":"enum Enums.RobotStatus","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"robot","type":"address"}],"name":"setRobot","outputs":[],"stateMutability":"nonpayable","type":"function"}]

600060a081905260c0604081905261001a91600691906101de565b506040805160008152602081019182905251610038916007916101de565b506040805160008152602081019182905251610056916008916101de565b5034801561006357600080fd5b50604051611d90380380611d90833981016040819052610082916102b5565b60008054336001600160a01b0319918216179091556001805482166001600160a01b0385811691909117825560028054909316908416179091557386d8c50e04ddd04cdaafac9672cf1d00b6057af56080525b60148160ff16116101d65760068054600181810190925560208082047ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f01805460ff808716601f95861661010090810a8281029084021990941693909317909355600780548088019091558481047fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688018054918716840a808602908402199092169190911790556008805496870181556000529285047ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee301805495909416900a908102910219909216919091179055806101ce816102e8565b9150506100d5565b505050610315565b82805482825590600052602060002090601f016020900481019282156102745791602002820160005b8382111561024557835183826101000a81548160ff021916908360ff1602179055509260200192600101602081600001049283019260010302610207565b80156102725782816101000a81549060ff0219169055600101602081600001049283019260010302610245565b505b50610280929150610284565b5090565b5b808211156102805760008155600101610285565b80516001600160a01b03811681146102b057600080fd5b919050565b600080604083850312156102c857600080fd5b6102d183610299565b91506102df60208401610299565b90509250929050565b600060ff821660ff810361030c57634e487b7160e01b600052601160045260246000fd5b60010192915050565b608051611a4b61034560003960008181610150015281816104ea0152818161082a01526109a70152611a4b6000f3fe6080604052600436106100915760003560e01c806350ad03ae1161005957806350ad03ae1461013e5780636e04b1241461018a57806392b5bf9c146101ac578063acac5a22146101cc578063ddb510a8146101f957600080fd5b806309396d2114610096578063210b9f03146100b8578063263b4db6146100d85780633f7eabc9146100f85780634f857b5e14610118575b600080fd5b3480156100a257600080fd5b506100b66100b13660046113f6565b610219565b005b3480156100c457600080fd5b506100b66100d3366004611448565b6104df565b3480156100e457600080fd5b506100b66100f336600461146a565b610670565b34801561010457600080fd5b506100b661011336600461149f565b610729565b61012b6101263660046114d0565b610796565b6040519081526020015b60405180910390f35b34801561014a57600080fd5b506101727f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610135565b34801561019657600080fd5b5061019f610aa6565b604051610135919061152f565b3480156101b857600080fd5b506100b66101c73660046113f6565b610b36565b3480156101d857600080fd5b506101ec6101e7366004611572565b610cb4565b60405161013591906115bc565b34801561020557600080fd5b506100b66102143660046113f6565b610dca565b3360009081526003602052604090205460ff1661024957604051638bd7ca4360e01b815260040160405180910390fd5b600154604051630ce9e52960e31b81526001600160a01b039091169063674f29489061027b9085906004908101611626565b600060405180830381600087803b15801561029557600080fd5b505af11580156102a9573d6000803e3d6000fd5b50506002546001546040516364d4be4d60e01b81526001600160a01b03928316945063f1ae5db993509116906364d4be4d906102e9908790600401611658565b602060405180830381865afa158015610306573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032a919061166b565b60015460405163175edf0b60e31b81526001600160a01b039091169063baf6f8589061035a908890600401611658565b602060405180830381865afa158015610377573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039b9190611688565b6040518363ffffffff1660e01b81526004016103b89291906116b5565b600060405180830381600087803b1580156103d257600080fd5b505af11580156103e6573d6000803e3d6000fd5b5050505060086009836040516103fc91906116da565b908152604051908190036020908101822054835460018101855560009485528285209281049092018054601f9093166101000a60ff928316810292021990921617905560099061044d9085906116da565b908152604051908190036020018120805460ff9390931660ff19909316929092179091556000805160206119f68339815191529061048f908490600490611626565b60405180910390a1806001600160a01b03167fc3908fb60a5b75dc0493abca2f9c116dfaa9bc7ea9a0b76b69b1ec2c5041690b8360026040516104d3929190611703565b60405180910390a25050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461055c5760405162461bcd60e51b815260206004820152601860248201527f4f6e6c792063616c6c61626c6520627920416e7972616e64000000000000000060448201526064015b60405180910390fd5b60008281526005602052604081208054610612919061057a90611721565b80601f01602080910402602001604051908101604052809291908181526020018280546105a690611721565b80156105f35780601f106105c8576101008083540402835291602001916105f3565b820191906000526020600020905b8154815290600101906020018083116105d657829003601f168201915b50505060008781526004602052604090205460ff169150859050610f48565b60008481526005602090815260408083206004909252918290205491519293507f925abf81c28ff3984b742558ee05bd1cf5a3de6fc3191c94ed52fb1b08117471926106639260ff1690859061175b565b60405180910390a1505050565b6000546001600160a01b0316331461069b57604051631dd523ff60e31b815260040160405180910390fd5b60018054604051630ce9e52960e31b81526001600160a01b039091169163674f2948916106cc918591600401611626565b600060405180830381600087803b1580156106e657600080fd5b505af11580156106fa573d6000803e3d6000fd5b505050506000805160206119f683398151915281600160405161071e929190611626565b60405180910390a150565b6000546001600160a01b031633146107725760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71027bbb732b960a11b6044820152606401610553565b6001600160a01b03166000908152600360205260409020805460ff19166001179055565b600080546001600160a01b031633146107c257604051631dd523ff60e31b815260040160405180910390fd5b4283116108115760405162461bcd60e51b815260206004820152601760248201527f446561646c696e6520697320696e2074686520706173740000000000000000006044820152606401610553565b60405163085868e960e11b8152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906310b0d1d2906024016040805180830381865afa158015610878573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089c91906117fe565b509050803410156108e65760405162461bcd60e51b8152602060048201526014602482015273125b9cdd59999a58da595b9d081c185e5b595b9d60621b6044820152606401610553565b8034111561097f576000336108fb8334611838565b604051600081818185875af1925050503d8060008114610937576040519150601f19603f3d011682016040523d82523d6000602084013e61093c565b606091505b505090508061097d5760405162461bcd60e51b815260206004820152600d60248201526c1499599d5b990819985a5b1959609a1b6044820152606401610553565b505b6040516307d4f3c160e21b815260048101859052602481018490526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631f53cf0490849060440160206040518083038185885af11580156109f1573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610a16919061184b565b60008181526004602052604090208054919250879160ff19166001836002811115610a4357610a436115a6565b02179055506000818152600560205260409020610a6088826118b3565b507ff288a79ce07769b53ca3868b1d9de2231055404b5fd29efd111f5015be6b47bf8782604051610a92929190611972565b60405180910390a19150505b949350505050565b6040805160038082526080820190925260609160208201838036833701905050905060068054905081600081518110610ae157610ae1611994565b6020908102919091010152600754815182906001908110610b0457610b04611994565b6020908102919091010152600854815182906002908110610b2757610b27611994565b60200260200101818152505090565b3360009081526003602052604090205460ff16610b6657604051638bd7ca4360e01b815260040160405180910390fd5b600154604051630ce9e52960e31b81526001600160a01b039091169063674f294890610b99908590600390600401611626565b600060405180830381600087803b158015610bb357600080fd5b505af1158015610bc7573d6000803e3d6000fd5b505050506007600983604051610bdd91906116da565b908152604051908190036020908101822054835460018101855560009485528285209281049092018054601f9093166101000a60ff9283168102920219909216179055600990610c2e9085906116da565b908152604051908190036020018120805460ff9390931660ff19909316929092179091556000805160206119f683398151915290610c70908490600390611626565b60405180910390a1806001600160a01b03167fc3908fb60a5b75dc0493abca2f9c116dfaa9bc7ea9a0b76b69b1ec2c5041690b8360016040516104d3929190611703565b60008080836002811115610cca57610cca6115a6565b14610cf6576001836002811115610ce357610ce36115a6565b14610cef576008610cf9565b6007610cf9565b60065b805480602002602001604051908101604052809291908181526020018280548015610d6157602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610d325790505b5050505050905060005b81518160ff161015610dbd578460ff16828260ff1681518110610d9057610d90611994565b602002602001015160ff1603610dab57600092505050610dc4565b80610db5816119aa565b915050610d6b565b5060019150505b92915050565b3360009081526003602052604090205460ff16610dfa57604051638bd7ca4360e01b815260040160405180910390fd5b600154604051630ce9e52960e31b81526001600160a01b039091169063674f294890610e2d908590600290600401611626565b600060405180830381600087803b158015610e4757600080fd5b505af1158015610e5b573d6000803e3d6000fd5b505050506006600983604051610e7191906116da565b908152604051908190036020908101822054835460018101855560009485528285209281049092018054601f9093166101000a60ff9283168102920219909216179055600990610ec29085906116da565b908152604051908190036020018120805460ff9390931660ff19909316929092179091556000805160206119f683398151915290610f04908490600290611626565b60405180910390a1806001600160a01b03167fc3908fb60a5b75dc0493abca2f9c116dfaa9bc7ea9a0b76b69b1ec2c5041690b8360006040516104d3929190611703565b60085460009081846002811115610f6157610f616115a6565b03610f6f5750600654610f86565b6001846002811115610f8357610f836115a6565b50505b6000818481610f9757610f976119c9565b0690506000856002811115610fae57610fae6115a6565b036110d95760068160ff1681548110610fc957610fc9611994565b90600052602060002090602091828204019190069054906101000a900460ff16600987604051610ff991906116da565b908152604051908190036020019020805460ff9290921660ff199092169190911790556006611029600184611838565b8154811061103957611039611994565b90600052602060002090602091828204019190069054906101000a900460ff1660068260ff168154811061106f5761106f611994565b90600052602060002090602091828204019190066101000a81548160ff021916908360ff16021790555060068054806110aa576110aa6119df565b60019003818190600052602060002090602091828204019190066101000a81549060ff0219169055905561130b565b60018560028111156110ed576110ed6115a6565b036111e95760078160ff168154811061110857611108611994565b90600052602060002090602091828204019190069054906101000a900460ff1660098760405161113891906116da565b908152604051908190036020019020805460ff9290921660ff199092169190911790556007611168600184611838565b8154811061117857611178611994565b90600052602060002090602091828204019190069054906101000a900460ff1660078260ff16815481106111ae576111ae611994565b90600052602060002090602091828204019190066101000a81548160ff021916908360ff16021790555060078054806110aa576110aa6119df565b60088160ff16815481106111ff576111ff611994565b90600052602060002090602091828204019190069054906101000a900460ff1660098760405161122f91906116da565b908152604051908190036020019020805460ff9290921660ff19909216919091179055600861125f600184611838565b8154811061126f5761126f611994565b90600052602060002090602091828204019190069054906101000a900460ff1660088260ff16815481106112a5576112a5611994565b90600052602060002090602091828204019190066101000a81548160ff021916908360ff16021790555060088054806112e0576112e06119df565b60019003818190600052602060002090602091828204019190066101000a81549060ff021916905590555b60098660405161131b91906116da565b9081526040519081900360200190205460ff16925050509392505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261136057600080fd5b813567ffffffffffffffff81111561137a5761137a611339565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156113a9576113a9611339565b6040528181528382016020018510156113c157600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b03811681146113f357600080fd5b50565b6000806040838503121561140957600080fd5b823567ffffffffffffffff81111561142057600080fd5b61142c8582860161134f565b925050602083013561143d816113de565b809150509250929050565b6000806040838503121561145b57600080fd5b50508035926020909101359150565b60006020828403121561147c57600080fd5b813567ffffffffffffffff81111561149357600080fd5b610a9e8482850161134f565b6000602082840312156114b157600080fd5b81356114bc816113de565b9392505050565b600381106113f357600080fd5b600080600080608085870312156114e657600080fd5b843567ffffffffffffffff8111156114fd57600080fd5b6115098782880161134f565b945050602085013561151a816114c3565b93969395505050506040820135916060013590565b602080825282518282018190526000918401906040840190835b81811015611567578351835260209384019390920191600101611549565b509095945050505050565b6000806040838503121561158557600080fd5b823560ff8116811461159657600080fd5b9150602083013561143d816114c3565b634e487b7160e01b600052602160045260246000fd5b60208101600283106115d0576115d06115a6565b91905290565b60005b838110156115f15781810151838201526020016115d9565b50506000910152565b600081518084526116128160208601602086016115d6565b601f01601f19169290920160200192915050565b60408152600061163960408301856115fa565b90506005831061164b5761164b6115a6565b8260208301529392505050565b6020815260006114bc60208301846115fa565b60006020828403121561167d57600080fd5b81516114bc816114c3565b60006020828403121561169a57600080fd5b81516114bc816113de565b600381106113f3576113f36115a6565b604081016116c2846116a5565b9281526001600160a01b039190911660209091015290565b600082516116ec8184602087016115d6565b9190910192915050565b6116ff816116a5565b9052565b60408152600061171660408301856115fa565b905061164b836116a5565b600181811c9082168061173557607f821691505b60208210810361175557634e487b7160e01b600052602260045260246000fd5b50919050565b60608152600080855461176d81611721565b806060860152600182166000811461178c57600181146117a8576117dc565b60ff1983166080870152608082151560051b87010193506117dc565b88600052602060002060005b838110156117d3578154888201608001526001909101906020016117b4565b87016080019450505b505050809150506117f060208301856116f6565b60ff83166040830152610a9e565b6000806040838503121561181157600080fd5b505080516020909101519092909150565b634e487b7160e01b600052601160045260246000fd5b81810381811115610dc457610dc4611822565b60006020828403121561185d57600080fd5b5051919050565b601f8211156118ae57806000526020600020601f840160051c8101602085101561188b5750805b601f840160051c820191505b818110156118ab5760008155600101611897565b50505b505050565b815167ffffffffffffffff8111156118cd576118cd611339565b6118e1816118db8454611721565b84611864565b6020601f82116001811461191557600083156118fd5750848201515b600019600385901b1c1916600184901b1784556118ab565b600084815260208120601f198516915b828110156119455787850151825560209485019460019092019101611925565b50848210156119635786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60408152600061198560408301856115fa565b90508260208301529392505050565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff81036119c0576119c0611822565b60010192915050565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fdfe791d5895e6e1c14904e98eed7243293644a71493cc99a312921747632fef808da2646970667358221220de917f1b31ee1b68c778acfd406766f456409914c3df4c9d9ef4802852984f9364736f6c634300081b003300000000000000000000000099355ba19923ec8601f5a1cd8f9e3e93d13eb4c9000000000000000000000000420fc211db1bfb0b0e29a49e3f51e0c806f3c0e6

Deployed Bytecode

0x6080604052600436106100915760003560e01c806350ad03ae1161005957806350ad03ae1461013e5780636e04b1241461018a57806392b5bf9c146101ac578063acac5a22146101cc578063ddb510a8146101f957600080fd5b806309396d2114610096578063210b9f03146100b8578063263b4db6146100d85780633f7eabc9146100f85780634f857b5e14610118575b600080fd5b3480156100a257600080fd5b506100b66100b13660046113f6565b610219565b005b3480156100c457600080fd5b506100b66100d3366004611448565b6104df565b3480156100e457600080fd5b506100b66100f336600461146a565b610670565b34801561010457600080fd5b506100b661011336600461149f565b610729565b61012b6101263660046114d0565b610796565b6040519081526020015b60405180910390f35b34801561014a57600080fd5b506101727f00000000000000000000000086d8c50e04ddd04cdaafac9672cf1d00b6057af581565b6040516001600160a01b039091168152602001610135565b34801561019657600080fd5b5061019f610aa6565b604051610135919061152f565b3480156101b857600080fd5b506100b66101c73660046113f6565b610b36565b3480156101d857600080fd5b506101ec6101e7366004611572565b610cb4565b60405161013591906115bc565b34801561020557600080fd5b506100b66102143660046113f6565b610dca565b3360009081526003602052604090205460ff1661024957604051638bd7ca4360e01b815260040160405180910390fd5b600154604051630ce9e52960e31b81526001600160a01b039091169063674f29489061027b9085906004908101611626565b600060405180830381600087803b15801561029557600080fd5b505af11580156102a9573d6000803e3d6000fd5b50506002546001546040516364d4be4d60e01b81526001600160a01b03928316945063f1ae5db993509116906364d4be4d906102e9908790600401611658565b602060405180830381865afa158015610306573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032a919061166b565b60015460405163175edf0b60e31b81526001600160a01b039091169063baf6f8589061035a908890600401611658565b602060405180830381865afa158015610377573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039b9190611688565b6040518363ffffffff1660e01b81526004016103b89291906116b5565b600060405180830381600087803b1580156103d257600080fd5b505af11580156103e6573d6000803e3d6000fd5b5050505060086009836040516103fc91906116da565b908152604051908190036020908101822054835460018101855560009485528285209281049092018054601f9093166101000a60ff928316810292021990921617905560099061044d9085906116da565b908152604051908190036020018120805460ff9390931660ff19909316929092179091556000805160206119f68339815191529061048f908490600490611626565b60405180910390a1806001600160a01b03167fc3908fb60a5b75dc0493abca2f9c116dfaa9bc7ea9a0b76b69b1ec2c5041690b8360026040516104d3929190611703565b60405180910390a25050565b336001600160a01b037f00000000000000000000000086d8c50e04ddd04cdaafac9672cf1d00b6057af5161461055c5760405162461bcd60e51b815260206004820152601860248201527f4f6e6c792063616c6c61626c6520627920416e7972616e64000000000000000060448201526064015b60405180910390fd5b60008281526005602052604081208054610612919061057a90611721565b80601f01602080910402602001604051908101604052809291908181526020018280546105a690611721565b80156105f35780601f106105c8576101008083540402835291602001916105f3565b820191906000526020600020905b8154815290600101906020018083116105d657829003601f168201915b50505060008781526004602052604090205460ff169150859050610f48565b60008481526005602090815260408083206004909252918290205491519293507f925abf81c28ff3984b742558ee05bd1cf5a3de6fc3191c94ed52fb1b08117471926106639260ff1690859061175b565b60405180910390a1505050565b6000546001600160a01b0316331461069b57604051631dd523ff60e31b815260040160405180910390fd5b60018054604051630ce9e52960e31b81526001600160a01b039091169163674f2948916106cc918591600401611626565b600060405180830381600087803b1580156106e657600080fd5b505af11580156106fa573d6000803e3d6000fd5b505050506000805160206119f683398151915281600160405161071e929190611626565b60405180910390a150565b6000546001600160a01b031633146107725760405162461bcd60e51b815260206004820152600c60248201526b2737ba1030b71027bbb732b960a11b6044820152606401610553565b6001600160a01b03166000908152600360205260409020805460ff19166001179055565b600080546001600160a01b031633146107c257604051631dd523ff60e31b815260040160405180910390fd5b4283116108115760405162461bcd60e51b815260206004820152601760248201527f446561646c696e6520697320696e2074686520706173740000000000000000006044820152606401610553565b60405163085868e960e11b8152600481018390526000907f00000000000000000000000086d8c50e04ddd04cdaafac9672cf1d00b6057af56001600160a01b0316906310b0d1d2906024016040805180830381865afa158015610878573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089c91906117fe565b509050803410156108e65760405162461bcd60e51b8152602060048201526014602482015273125b9cdd59999a58da595b9d081c185e5b595b9d60621b6044820152606401610553565b8034111561097f576000336108fb8334611838565b604051600081818185875af1925050503d8060008114610937576040519150601f19603f3d011682016040523d82523d6000602084013e61093c565b606091505b505090508061097d5760405162461bcd60e51b815260206004820152600d60248201526c1499599d5b990819985a5b1959609a1b6044820152606401610553565b505b6040516307d4f3c160e21b815260048101859052602481018490526000906001600160a01b037f00000000000000000000000086d8c50e04ddd04cdaafac9672cf1d00b6057af51690631f53cf0490849060440160206040518083038185885af11580156109f1573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610a16919061184b565b60008181526004602052604090208054919250879160ff19166001836002811115610a4357610a436115a6565b02179055506000818152600560205260409020610a6088826118b3565b507ff288a79ce07769b53ca3868b1d9de2231055404b5fd29efd111f5015be6b47bf8782604051610a92929190611972565b60405180910390a19150505b949350505050565b6040805160038082526080820190925260609160208201838036833701905050905060068054905081600081518110610ae157610ae1611994565b6020908102919091010152600754815182906001908110610b0457610b04611994565b6020908102919091010152600854815182906002908110610b2757610b27611994565b60200260200101818152505090565b3360009081526003602052604090205460ff16610b6657604051638bd7ca4360e01b815260040160405180910390fd5b600154604051630ce9e52960e31b81526001600160a01b039091169063674f294890610b99908590600390600401611626565b600060405180830381600087803b158015610bb357600080fd5b505af1158015610bc7573d6000803e3d6000fd5b505050506007600983604051610bdd91906116da565b908152604051908190036020908101822054835460018101855560009485528285209281049092018054601f9093166101000a60ff9283168102920219909216179055600990610c2e9085906116da565b908152604051908190036020018120805460ff9390931660ff19909316929092179091556000805160206119f683398151915290610c70908490600390611626565b60405180910390a1806001600160a01b03167fc3908fb60a5b75dc0493abca2f9c116dfaa9bc7ea9a0b76b69b1ec2c5041690b8360016040516104d3929190611703565b60008080836002811115610cca57610cca6115a6565b14610cf6576001836002811115610ce357610ce36115a6565b14610cef576008610cf9565b6007610cf9565b60065b805480602002602001604051908101604052809291908181526020018280548015610d6157602002820191906000526020600020906000905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610d325790505b5050505050905060005b81518160ff161015610dbd578460ff16828260ff1681518110610d9057610d90611994565b602002602001015160ff1603610dab57600092505050610dc4565b80610db5816119aa565b915050610d6b565b5060019150505b92915050565b3360009081526003602052604090205460ff16610dfa57604051638bd7ca4360e01b815260040160405180910390fd5b600154604051630ce9e52960e31b81526001600160a01b039091169063674f294890610e2d908590600290600401611626565b600060405180830381600087803b158015610e4757600080fd5b505af1158015610e5b573d6000803e3d6000fd5b505050506006600983604051610e7191906116da565b908152604051908190036020908101822054835460018101855560009485528285209281049092018054601f9093166101000a60ff9283168102920219909216179055600990610ec29085906116da565b908152604051908190036020018120805460ff9390931660ff19909316929092179091556000805160206119f683398151915290610f04908490600290611626565b60405180910390a1806001600160a01b03167fc3908fb60a5b75dc0493abca2f9c116dfaa9bc7ea9a0b76b69b1ec2c5041690b8360006040516104d3929190611703565b60085460009081846002811115610f6157610f616115a6565b03610f6f5750600654610f86565b6001846002811115610f8357610f836115a6565b50505b6000818481610f9757610f976119c9565b0690506000856002811115610fae57610fae6115a6565b036110d95760068160ff1681548110610fc957610fc9611994565b90600052602060002090602091828204019190069054906101000a900460ff16600987604051610ff991906116da565b908152604051908190036020019020805460ff9290921660ff199092169190911790556006611029600184611838565b8154811061103957611039611994565b90600052602060002090602091828204019190069054906101000a900460ff1660068260ff168154811061106f5761106f611994565b90600052602060002090602091828204019190066101000a81548160ff021916908360ff16021790555060068054806110aa576110aa6119df565b60019003818190600052602060002090602091828204019190066101000a81549060ff0219169055905561130b565b60018560028111156110ed576110ed6115a6565b036111e95760078160ff168154811061110857611108611994565b90600052602060002090602091828204019190069054906101000a900460ff1660098760405161113891906116da565b908152604051908190036020019020805460ff9290921660ff199092169190911790556007611168600184611838565b8154811061117857611178611994565b90600052602060002090602091828204019190069054906101000a900460ff1660078260ff16815481106111ae576111ae611994565b90600052602060002090602091828204019190066101000a81548160ff021916908360ff16021790555060078054806110aa576110aa6119df565b60088160ff16815481106111ff576111ff611994565b90600052602060002090602091828204019190069054906101000a900460ff1660098760405161122f91906116da565b908152604051908190036020019020805460ff9290921660ff19909216919091179055600861125f600184611838565b8154811061126f5761126f611994565b90600052602060002090602091828204019190069054906101000a900460ff1660088260ff16815481106112a5576112a5611994565b90600052602060002090602091828204019190066101000a81548160ff021916908360ff16021790555060088054806112e0576112e06119df565b60019003818190600052602060002090602091828204019190066101000a81549060ff021916905590555b60098660405161131b91906116da565b9081526040519081900360200190205460ff16925050509392505050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261136057600080fd5b813567ffffffffffffffff81111561137a5761137a611339565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156113a9576113a9611339565b6040528181528382016020018510156113c157600080fd5b816020850160208301376000918101602001919091529392505050565b6001600160a01b03811681146113f357600080fd5b50565b6000806040838503121561140957600080fd5b823567ffffffffffffffff81111561142057600080fd5b61142c8582860161134f565b925050602083013561143d816113de565b809150509250929050565b6000806040838503121561145b57600080fd5b50508035926020909101359150565b60006020828403121561147c57600080fd5b813567ffffffffffffffff81111561149357600080fd5b610a9e8482850161134f565b6000602082840312156114b157600080fd5b81356114bc816113de565b9392505050565b600381106113f357600080fd5b600080600080608085870312156114e657600080fd5b843567ffffffffffffffff8111156114fd57600080fd5b6115098782880161134f565b945050602085013561151a816114c3565b93969395505050506040820135916060013590565b602080825282518282018190526000918401906040840190835b81811015611567578351835260209384019390920191600101611549565b509095945050505050565b6000806040838503121561158557600080fd5b823560ff8116811461159657600080fd5b9150602083013561143d816114c3565b634e487b7160e01b600052602160045260246000fd5b60208101600283106115d0576115d06115a6565b91905290565b60005b838110156115f15781810151838201526020016115d9565b50506000910152565b600081518084526116128160208601602086016115d6565b601f01601f19169290920160200192915050565b60408152600061163960408301856115fa565b90506005831061164b5761164b6115a6565b8260208301529392505050565b6020815260006114bc60208301846115fa565b60006020828403121561167d57600080fd5b81516114bc816114c3565b60006020828403121561169a57600080fd5b81516114bc816113de565b600381106113f3576113f36115a6565b604081016116c2846116a5565b9281526001600160a01b039190911660209091015290565b600082516116ec8184602087016115d6565b9190910192915050565b6116ff816116a5565b9052565b60408152600061171660408301856115fa565b905061164b836116a5565b600181811c9082168061173557607f821691505b60208210810361175557634e487b7160e01b600052602260045260246000fd5b50919050565b60608152600080855461176d81611721565b806060860152600182166000811461178c57600181146117a8576117dc565b60ff1983166080870152608082151560051b87010193506117dc565b88600052602060002060005b838110156117d3578154888201608001526001909101906020016117b4565b87016080019450505b505050809150506117f060208301856116f6565b60ff83166040830152610a9e565b6000806040838503121561181157600080fd5b505080516020909101519092909150565b634e487b7160e01b600052601160045260246000fd5b81810381811115610dc457610dc4611822565b60006020828403121561185d57600080fd5b5051919050565b601f8211156118ae57806000526020600020601f840160051c8101602085101561188b5750805b601f840160051c820191505b818110156118ab5760008155600101611897565b50505b505050565b815167ffffffffffffffff8111156118cd576118cd611339565b6118e1816118db8454611721565b84611864565b6020601f82116001811461191557600083156118fd5750848201515b600019600385901b1c1916600184901b1784556118ab565b600084815260208120601f198516915b828110156119455787850151825560209485019460019092019101611925565b50848210156119635786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60408152600061198560408301856115fa565b90508260208301529392505050565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff81036119c0576119c0611822565b60010192915050565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fdfe791d5895e6e1c14904e98eed7243293644a71493cc99a312921747632fef808da2646970667358221220de917f1b31ee1b68c778acfd406766f456409914c3df4c9d9ef4802852984f9364736f6c634300081b0033

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

00000000000000000000000099355ba19923ec8601f5a1cd8f9e3e93d13eb4c9000000000000000000000000420fc211db1bfb0b0e29a49e3f51e0c806f3c0e6

-----Decoded View---------------
Arg [0] : shop (address): 0x99355Ba19923EC8601f5A1CD8F9E3e93d13EB4C9
Arg [1] : products (address): 0x420fC211DB1Bfb0b0E29a49E3f51E0C806F3C0e6

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000099355ba19923ec8601f5a1cd8f9e3e93d13eb4c9
Arg [1] : 000000000000000000000000420fc211db1bfb0b0e29a49e3f51e0c806f3c0e6


Block Transaction Gas Used Reward
view all blocks sequenced

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
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.