ETH Price: $3,413.27 (-0.92%)
Gas: 1 Gwei

Contract

0x8d7799258CDCA0B2acB65f09856f37BFCcA319de
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Redeem Tickets200094172024-06-03 6:10:2329 days ago1717395023IN
0x8d779925...FCcA319de
0.00011354 ETH0.001146817.60248648
Redeem Tickets198548802024-05-12 15:38:1151 days ago1715528291IN
0x8d779925...FCcA319de
0.00008251 ETH0.000660744.37987208
Redeem Tickets198505892024-05-12 1:12:2352 days ago1715476343IN
0x8d779925...FCcA319de
0.00006709 ETH0.000484363.21072904
Redeem Tickets198190972024-05-07 15:31:1156 days ago1715095871IN
0x8d779925...FCcA319de
0.00022793 ETH0.0019852611.21196656
Redeem Tickets198135942024-05-06 21:02:1157 days ago1715029331IN
0x8d779925...FCcA319de
0.00009463 ETH0.001070195.56111453
Redeem Tickets198134532024-05-06 20:33:5957 days ago1715027639IN
0x8d779925...FCcA319de
0.00011947 ETH0.001065957.06644241
Redeem Tickets197923292024-05-03 21:40:2360 days ago1714772423IN
0x8d779925...FCcA319de
0.00010743 ETH0.001104067.31852513
Redeem Tickets197712402024-04-30 22:55:4763 days ago1714517747IN
0x8d779925...FCcA319de
0.00011153 ETH0.001068457.08245957
Redeem Tickets197702482024-04-30 19:35:1163 days ago1714505711IN
0x8d779925...FCcA319de
0.00019565 ETH0.0020116413.33462359
Redeem Tickets197586082024-04-29 4:33:2364 days ago1714365203IN
0x8d779925...FCcA319de
0.00009931 ETH0.000915546.06885834
Redeem Tickets197387482024-04-26 9:50:1167 days ago1714125011IN
0x8d779925...FCcA319de
0.00017349 ETH0.001057466.94032009
Redeem Tickets197036472024-04-21 12:01:5972 days ago1713700919IN
0x8d779925...FCcA319de
0.00012113 ETH0.001129927.48992087
Redeem Tickets196907652024-04-19 16:47:2374 days ago1713545243IN
0x8d779925...FCcA319de
0.00024939 ETH0.0024944216.48039276
Redeem Tickets196826002024-04-18 13:20:1175 days ago1713446411IN
0x8d779925...FCcA319de
0.00018457 ETH0.0017812511.80742895
Redeem Tickets196806962024-04-18 6:56:3575 days ago1713423395IN
0x8d779925...FCcA319de
0.0001592 ETH0.0017711210.10098239
Redeem Tickets196789082024-04-18 0:56:5976 days ago1713401819IN
0x8d779925...FCcA319de
0.0001636 ETH0.0018218512.07656189
Redeem Tickets196332992024-04-11 15:34:1182 days ago1712849651IN
0x8d779925...FCcA319de
0.00075211 ETH0.0039443325.70822564
Redeem Tickets195729772024-04-03 4:50:4790 days ago1712119847IN
0x8d779925...FCcA319de
0.00031478 ETH0.0038178321.7721372
Redeem Tickets195694592024-04-02 17:02:1191 days ago1712077331IN
0x8d779925...FCcA319de
0.00073843 ETH0.0080464853.3335601
Redeem Tickets195359372024-03-28 23:56:5996 days ago1711670219IN
0x8d779925...FCcA319de
0.00039252 ETH0.0037892125.11556271
Redeem Tickets195328162024-03-28 13:10:2396 days ago1711631423IN
0x8d779925...FCcA319de
0.00055119 ETH0.0058215338.462274
Redeem Tickets195299752024-03-28 3:36:1196 days ago1711596971IN
0x8d779925...FCcA319de
0.00032439 ETH0.004013926.60490036
Redeem Tickets195090182024-03-25 4:04:5999 days ago1711339499IN
0x8d779925...FCcA319de
0.00035239 ETH0.0022620314.60039398
Redeem Tickets195083732024-03-25 1:53:4799 days ago1711331627IN
0x8d779925...FCcA319de
0.00025138 ETH0.0024190315.98358757
Redeem Tickets194889882024-03-22 8:30:59102 days ago1711096259IN
0x8d779925...FCcA319de
0.00030785 ETH0.0032254721.38071693
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
200094172024-06-03 6:10:2329 days ago1717395023
0x8d779925...FCcA319de
0.00011354 ETH
198548802024-05-12 15:38:1151 days ago1715528291
0x8d779925...FCcA319de
0.00008251 ETH
198505892024-05-12 1:12:2352 days ago1715476343
0x8d779925...FCcA319de
0.00006709 ETH
198190972024-05-07 15:31:1156 days ago1715095871
0x8d779925...FCcA319de
0.00022793 ETH
198135942024-05-06 21:02:1157 days ago1715029331
0x8d779925...FCcA319de
0.00009463 ETH
198134532024-05-06 20:33:5957 days ago1715027639
0x8d779925...FCcA319de
0.00011947 ETH
197923292024-05-03 21:40:2360 days ago1714772423
0x8d779925...FCcA319de
0.00010743 ETH
197712402024-04-30 22:55:4763 days ago1714517747
0x8d779925...FCcA319de
0.00011153 ETH
197702482024-04-30 19:35:1163 days ago1714505711
0x8d779925...FCcA319de
0.00019565 ETH
197586082024-04-29 4:33:2364 days ago1714365203
0x8d779925...FCcA319de
0.00009931 ETH
197387482024-04-26 9:50:1167 days ago1714125011
0x8d779925...FCcA319de
0.00017349 ETH
197036472024-04-21 12:01:5972 days ago1713700919
0x8d779925...FCcA319de
0.00012113 ETH
196907652024-04-19 16:47:2374 days ago1713545243
0x8d779925...FCcA319de
0.00024939 ETH
196826002024-04-18 13:20:1175 days ago1713446411
0x8d779925...FCcA319de
0.00018457 ETH
196806962024-04-18 6:56:3575 days ago1713423395
0x8d779925...FCcA319de
0.0001592 ETH
196789082024-04-18 0:56:5976 days ago1713401819
0x8d779925...FCcA319de
0.0001636 ETH
196332992024-04-11 15:34:1182 days ago1712849651
0x8d779925...FCcA319de
0.00075211 ETH
195729772024-04-03 4:50:4790 days ago1712119847
0x8d779925...FCcA319de
0.00031478 ETH
195694592024-04-02 17:02:1191 days ago1712077331
0x8d779925...FCcA319de
0.00073843 ETH
195359372024-03-28 23:56:5996 days ago1711670219
0x8d779925...FCcA319de
0.00039252 ETH
195328162024-03-28 13:10:2396 days ago1711631423
0x8d779925...FCcA319de
0.00055119 ETH
195299752024-03-28 3:36:1196 days ago1711596971
0x8d779925...FCcA319de
0.00032439 ETH
195090182024-03-25 4:04:5999 days ago1711339499
0x8d779925...FCcA319de
0.00035239 ETH
195083732024-03-25 1:53:4799 days ago1711331627
0x8d779925...FCcA319de
0.00025138 ETH
194889882024-03-22 8:30:59102 days ago1711096259
0x8d779925...FCcA319de
0.00030785 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TicketsRedeemL1

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, MIT license
File 1 of 8 : TicketsRedeemL1.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

import "arb-bridge-eth/contracts/bridge/interfaces/IInbox.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "./TicketsRedeemL2.sol";

interface IERC1155Burnable {
    function mint(
        address account,
        uint256 id,
        uint256 amount,
        bytes memory data
    ) external;

    function burnBatch(
        address account,
        uint256[] memory ids,
        uint256[] memory values
    ) external;
}

contract TicketsRedeemL1 is Ownable {
    IERC1155Burnable public ferryTickets;
    IERC1155Burnable public goldenBadges;
    IInbox public inbox;
    address public l2Target;

    event TicketsRedeemInitiated(
        uint indexed ticket,
        address indexed wallet,
        uint[] ids,
        uint[] amounts
    );

    constructor(address _ferryTickets, address _goldenBadges, address _inbox) {
        ferryTickets = IERC1155Burnable(_ferryTickets);
        goldenBadges = IERC1155Burnable(_goldenBadges);
        inbox = IInbox(_inbox);
    }

    function updateL2Target(address _l2Target) external onlyOwner {
        l2Target = _l2Target;
    }

    function _random() internal view returns (uint) {
        return
            uint(
                keccak256(
                    abi.encodePacked(
                        block.difficulty,
                        block.timestamp,
                        msg.sender,
                        gasleft()
                    )
                )
            ) % 100;
    }

    function redeemTickets(
        uint[] calldata ids,
        uint[] calldata amounts,
        uint maxSubmissionCost,
        uint maxGas,
        uint gasPriceBid
    ) public payable returns (uint) {
        ferryTickets.burnBatch(msg.sender, ids, amounts);

        // Sending tickets to L2
        bytes memory data = abi.encodeWithSelector(
            TicketsRedeemL2.redeemTickets.selector,
            msg.sender,
            ids,
            amounts
        );
        uint ticket = inbox.createRetryableTicket{value: msg.value}(
            l2Target,
            0,
            maxSubmissionCost,
            msg.sender,
            msg.sender,
            maxGas,
            gasPriceBid,
            data
        );

        // Minting Golden badges
        uint badges = 0;
        for (uint i = 0; i < ids.length; i++) {
            if (ids[i] == 1) {
                badges += amounts[i];
            } else if (ids[i] == 2) {
                for (uint j = 0; j < amounts[i]; j++) {
                    if (_random() < 10) {
                        badges += 1;
                    }
                }
            }
        }

        if (badges > 0) {
            goldenBadges.mint(msg.sender, 1, badges, "");
        }

        emit TicketsRedeemInitiated(ticket, msg.sender, ids, amounts);
        return ticket;
    }
}

File 2 of 8 : AddressAliasHelper.sol
// Copyright 2021-2022, Offchain Labs, Inc.
// For license information, see https://github.com/nitro/blob/master/LICENSE
// SPDX-License-Identifier: BUSL-1.1

pragma solidity ^0.8.0;

library AddressAliasHelper {
    uint160 internal constant OFFSET = uint160(0x1111000000000000000000000000000000001111);

    /// @notice Utility function that converts the address in the L1 that submitted a tx to
    /// the inbox to the msg.sender viewed in the L2
    /// @param l1Address the address in the L1 that triggered the tx to L2
    /// @return l2Address L2 address as viewed in msg.sender
    function applyL1ToL2Alias(address l1Address) internal pure returns (address l2Address) {
        unchecked {
            l2Address = address(uint160(l1Address) + OFFSET);
        }
    }

    /// @notice Utility function that converts the msg.sender viewed in the L2 to the
    /// address in the L1 that submitted a tx to the inbox
    /// @param l2Address L2 address as viewed in msg.sender
    /// @return l1Address the address in the L1 that triggered the tx to L2
    function undoL1ToL2Alias(address l2Address) internal pure returns (address l1Address) {
        unchecked {
            l1Address = address(uint160(l2Address) - OFFSET);
        }
    }
}

File 3 of 8 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 4 of 8 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

File 5 of 8 : IBridge.sol
// SPDX-License-Identifier: Apache-2.0

/*
 * Copyright 2021, Offchain Labs, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// solhint-disable-next-line compiler-version
pragma solidity >=0.6.9 <0.9.0;

interface IBridge {
    event MessageDelivered(
        uint256 indexed messageIndex,
        bytes32 indexed beforeInboxAcc,
        address inbox,
        uint8 kind,
        address sender,
        bytes32 messageDataHash
    );

    event BridgeCallTriggered(
        address indexed outbox,
        address indexed destAddr,
        uint256 amount,
        bytes data
    );

    event InboxToggle(address indexed inbox, bool enabled);

    event OutboxToggle(address indexed outbox, bool enabled);

    function deliverMessageToInbox(
        uint8 kind,
        address sender,
        bytes32 messageDataHash
    ) external payable returns (uint256);

    function executeCall(
        address destAddr,
        uint256 amount,
        bytes calldata data
    ) external returns (bool success, bytes memory returnData);

    // These are only callable by the admin
    function setInbox(address inbox, bool enabled) external;

    function setOutbox(address inbox, bool enabled) external;

    // View functions

    function activeOutbox() external view returns (address);

    function allowedInboxes(address inbox) external view returns (bool);

    function allowedOutboxes(address outbox) external view returns (bool);

    function inboxAccs(uint256 index) external view returns (bytes32);

    function messageCount() external view returns (uint256);
}

File 6 of 8 : IInbox.sol
// SPDX-License-Identifier: Apache-2.0

/*
 * Copyright 2021, Offchain Labs, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// solhint-disable-next-line compiler-version
pragma solidity >=0.6.9 <0.9.0;

import "./IBridge.sol";
import "./IMessageProvider.sol";

interface IInbox is IMessageProvider {
    function sendL2Message(bytes calldata messageData) external returns (uint256);

    function sendUnsignedTransaction(
        uint256 maxGas,
        uint256 gasPriceBid,
        uint256 nonce,
        address destAddr,
        uint256 amount,
        bytes calldata data
    ) external returns (uint256);

    function sendContractTransaction(
        uint256 maxGas,
        uint256 gasPriceBid,
        address destAddr,
        uint256 amount,
        bytes calldata data
    ) external returns (uint256);

    function sendL1FundedUnsignedTransaction(
        uint256 maxGas,
        uint256 gasPriceBid,
        uint256 nonce,
        address destAddr,
        bytes calldata data
    ) external payable returns (uint256);

    function sendL1FundedContractTransaction(
        uint256 maxGas,
        uint256 gasPriceBid,
        address destAddr,
        bytes calldata data
    ) external payable returns (uint256);

    function createRetryableTicket(
        address destAddr,
        uint256 arbTxCallValue,
        uint256 maxSubmissionCost,
        address submissionRefundAddress,
        address valueRefundAddress,
        uint256 maxGas,
        uint256 gasPriceBid,
        bytes calldata data
    ) external payable returns (uint256);

    function unsafeCreateRetryableTicket(
        address destAddr,
        uint256 arbTxCallValue,
        uint256 maxSubmissionCost,
        address submissionRefundAddress,
        address valueRefundAddress,
        uint256 maxGas,
        uint256 gasPriceBid,
        bytes calldata data
    ) external payable returns (uint256);

    function depositEth(uint256 maxSubmissionCost) external payable returns (uint256);

    function bridge() external view returns (IBridge);

    function pauseCreateRetryables() external;

    function unpauseCreateRetryables() external;

    function startRewriteAddress() external;

    function stopRewriteAddress() external;
}

File 7 of 8 : IMessageProvider.sol
// SPDX-License-Identifier: Apache-2.0

/*
 * Copyright 2021, Offchain Labs, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// solhint-disable-next-line compiler-version
pragma solidity >=0.6.9 <0.9.0;

interface IMessageProvider {
    event InboxMessageDelivered(uint256 indexed messageNum, bytes data);

    event InboxMessageDeliveredFromOrigin(uint256 indexed messageNum);
}

File 8 of 8 : TicketsRedeemL2.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

import "@arbitrum/nitro-contracts/src/libraries/AddressAliasHelper.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

interface BeastContract {
    function safeMint(address to) external returns (uint256);
}

contract TicketsRedeemL2 is Ownable {
    address public l1Target;
    BeastContract public originBeasts;
    BeastContract public beasts;

    enum BeastCollection {
        OriginBeast,
        StarterBeast
    }

    event BeastRedeemed(
        uint indexed tokenId,
        BeastCollection indexed collection,
        bool fromGoldenTicket
    );
    event TicketsRedeemed(address indexed from, uint[] ids, uint[] amounts);

    constructor(address _l1Target, address _originBeasts, address _beasts) {
        l1Target = _l1Target;
        originBeasts = BeastContract(_originBeasts);
        beasts = BeastContract(_beasts);
    }

    function updateL1Target(address _l1Target) external onlyOwner {
        l1Target = _l1Target;
    }

    function _random() internal view returns (uint) {
        return
            uint(
                keccak256(
                    abi.encodePacked(
                        block.difficulty,
                        block.timestamp,
                        msg.sender,
                        gasleft()
                    )
                )
            ) % 100;
    }

    function redeemTickets(
        address from,
        uint[] calldata ids,
        uint[] calldata amounts
    ) public {
        require(
            msg.sender == AddressAliasHelper.applyL1ToL2Alias(l1Target),
            "Can only be called by L1 contract"
        );

        require(ids.length == amounts.length, "Invalid input length");

        for (uint i = 0; i < ids.length; i++) {
            uint256 tokenId = ids[i];
            uint256 amount = amounts[i];
            for (uint j = 0; j < amount; j++) {
                if (tokenId == 1) {
                    uint originId = originBeasts.safeMint(from);
                    uint starterId = beasts.safeMint(from);
                    emit BeastRedeemed(
                        originId,
                        BeastCollection.OriginBeast,
                        true
                    );
                    emit BeastRedeemed(
                        starterId,
                        BeastCollection.StarterBeast,
                        true
                    );
                } else if (tokenId == 2) {
                    uint originId = originBeasts.safeMint(from);
                    emit BeastRedeemed(
                        originId,
                        BeastCollection.OriginBeast,
                        false
                    );

                    if (_random() < 10) {
                        uint starterId = beasts.safeMint(from);
                        emit BeastRedeemed(
                            starterId,
                            BeastCollection.StarterBeast,
                            false
                        );
                    }
                }
            }
        }

        emit TicketsRedeemed(from, ids, amounts);
    }
}

Settings
{
  "evmVersion": "london",
  "libraries": {},
  "metadata": {
    "bytecodeHash": "ipfs",
    "useLiteralContent": true
  },
  "optimizer": {
    "enabled": true,
    "runs": 1000
  },
  "remappings": [],
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_ferryTickets","type":"address"},{"internalType":"address","name":"_goldenBadges","type":"address"},{"internalType":"address","name":"_inbox","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"ticket","type":"uint256"},{"indexed":true,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"TicketsRedeemInitiated","type":"event"},{"inputs":[],"name":"ferryTickets","outputs":[{"internalType":"contract IERC1155Burnable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"goldenBadges","outputs":[{"internalType":"contract IERC1155Burnable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inbox","outputs":[{"internalType":"contract IInbox","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l2Target","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256","name":"maxSubmissionCost","type":"uint256"},{"internalType":"uint256","name":"maxGas","type":"uint256"},{"internalType":"uint256","name":"gasPriceBid","type":"uint256"}],"name":"redeemTickets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_l2Target","type":"address"}],"name":"updateL2Target","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50604051610ba0380380610ba083398101604081905261002f916100e6565b6100383361007a565b600180546001600160a01b039485166001600160a01b031991821617909155600280549385169382169390931790925560038054919093169116179055610129565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146100e157600080fd5b919050565b6000806000606084860312156100fb57600080fd5b610104846100ca565b9250610112602085016100ca565b9150610120604085016100ca565b90509250925092565b610a68806101386000396000f3fe6080604052600436106100965760003560e01c8063a110cfcf11610069578063c2b530d61161004e578063c2b530d61461016a578063f2fde38b1461018a578063fb0e722b146101aa57600080fd5b8063a110cfcf1461012a578063b67307f61461014a57600080fd5b8063150c3c4e1461009b57806318e95324146100c1578063715018a6146100e35780638da5cb5b146100f8575b600080fd5b6100ae6100a936600461078a565b6101ca565b6040519081526020015b60405180910390f35b3480156100cd57600080fd5b506100e16100dc366004610811565b610545565b005b3480156100ef57600080fd5b506100e161057c565b34801561010457600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016100b8565b34801561013657600080fd5b50600254610112906001600160a01b031681565b34801561015657600080fd5b50600154610112906001600160a01b031681565b34801561017657600080fd5b50600454610112906001600160a01b031681565b34801561019657600080fd5b506100e16101a5366004610811565b610590565b3480156101b657600080fd5b50600354610112906001600160a01b031681565b6001546040517f6b20c4540000000000000000000000000000000000000000000000000000000081526000916001600160a01b031690636b20c4549061021c9033908c908c908c908c9060040161088c565b600060405180830381600087803b15801561023657600080fd5b505af115801561024a573d6000803e3d6000fd5b50505050600063334d05bd60e01b338a8a8a8a60405160240161027195949392919061088c565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092526003546004805493517f679b6ded0000000000000000000000000000000000000000000000000000000081529294506000936001600160a01b039283169363679b6ded933493610332939091169187918d91339182918f918f918e91016108ce565b60206040518083038185885af1158015610350573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906103759190610967565b90506000805b8a811015610455578b8b8281811061039557610395610980565b905060200201356001036103ce578989828181106103b5576103b5610980565b90506020020135826103c791906109ac565b9150610443565b8b8b828181106103e0576103e0610980565b905060200201356002036104435760005b8a8a8381811061040357610403610980565b9050602002013581101561044157600a61041b610625565b101561042f5761042c6001846109ac565b92505b80610439816109c5565b9150506103f1565b505b8061044d816109c5565b91505061037b565b5080156104ef576002546040517f731133e9000000000000000000000000000000000000000000000000000000008152336004820152600160248201526044810183905260806064820152600060848201526001600160a01b039091169063731133e99060a401600060405180830381600087803b1580156104d657600080fd5b505af11580156104ea573d6000803e3d6000fd5b505050505b336001600160a01b0316827f80fb78b6bb0156517fdaa0969a885abe1503b568430bae4b144e7f0ae30af7668d8d8d8d60405161052f94939291906109de565b60405180910390a3509998505050505050505050565b61054d610687565b6004805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610584610687565b61058e60006106e1565b565b610598610687565b6001600160a01b0381166106195760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610622816106e1565b50565b600060644442335a6040805160208101959095528401929092526bffffffffffffffffffffffff19606091821b169083015260748201526094016040516020818303038152906040528051906020012060001c6106829190610a10565b905090565b6000546001600160a01b0316331461058e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610610565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075057600080fd5b50813567ffffffffffffffff81111561076857600080fd5b6020830191508360208260051b850101111561078357600080fd5b9250929050565b600080600080600080600060a0888a0312156107a557600080fd5b873567ffffffffffffffff808211156107bd57600080fd5b6107c98b838c0161073e565b909950975060208a01359150808211156107e257600080fd5b506107ef8a828b0161073e565b989b979a50986040810135976060820135975060809091013595509350505050565b60006020828403121561082357600080fd5b81356001600160a01b038116811461083a57600080fd5b9392505050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561087357600080fd5b8260051b80836020870137939093016020019392505050565b6001600160a01b03861681526060602082015260006108af606083018688610841565b82810360408401526108c2818587610841565b98975050505050505050565b60006101006001600160a01b03808c16845260208b818601528a6040860152818a16606086015281891660808601528760a08601528660c08601528260e0860152855191508183860152600092505b8183101561093c5785830181015185840161012001529182019161091d565b506101209150600082828601015281601f19601f830116850101925050509998505050505050505050565b60006020828403121561097957600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156109bf576109bf610996565b92915050565b6000600182016109d7576109d7610996565b5060010190565b6040815260006109f2604083018688610841565b8281036020840152610a05818587610841565b979650505050505050565b600082610a2d57634e487b7160e01b600052601260045260246000fd5b50069056fea26469706673582212204687a493d6bd27089f6077374c6f4da010abf88ee5845bc43954434125f1a60b64736f6c634300081100330000000000000000000000006a47f2e78e6a594e594fd3e318f301e987b60d55000000000000000000000000a24eab851c71dc043bb7195e7da9fbcfd01860960000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f

Deployed Bytecode

0x6080604052600436106100965760003560e01c8063a110cfcf11610069578063c2b530d61161004e578063c2b530d61461016a578063f2fde38b1461018a578063fb0e722b146101aa57600080fd5b8063a110cfcf1461012a578063b67307f61461014a57600080fd5b8063150c3c4e1461009b57806318e95324146100c1578063715018a6146100e35780638da5cb5b146100f8575b600080fd5b6100ae6100a936600461078a565b6101ca565b6040519081526020015b60405180910390f35b3480156100cd57600080fd5b506100e16100dc366004610811565b610545565b005b3480156100ef57600080fd5b506100e161057c565b34801561010457600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016100b8565b34801561013657600080fd5b50600254610112906001600160a01b031681565b34801561015657600080fd5b50600154610112906001600160a01b031681565b34801561017657600080fd5b50600454610112906001600160a01b031681565b34801561019657600080fd5b506100e16101a5366004610811565b610590565b3480156101b657600080fd5b50600354610112906001600160a01b031681565b6001546040517f6b20c4540000000000000000000000000000000000000000000000000000000081526000916001600160a01b031690636b20c4549061021c9033908c908c908c908c9060040161088c565b600060405180830381600087803b15801561023657600080fd5b505af115801561024a573d6000803e3d6000fd5b50505050600063334d05bd60e01b338a8a8a8a60405160240161027195949392919061088c565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092526003546004805493517f679b6ded0000000000000000000000000000000000000000000000000000000081529294506000936001600160a01b039283169363679b6ded933493610332939091169187918d91339182918f918f918e91016108ce565b60206040518083038185885af1158015610350573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906103759190610967565b90506000805b8a811015610455578b8b8281811061039557610395610980565b905060200201356001036103ce578989828181106103b5576103b5610980565b90506020020135826103c791906109ac565b9150610443565b8b8b828181106103e0576103e0610980565b905060200201356002036104435760005b8a8a8381811061040357610403610980565b9050602002013581101561044157600a61041b610625565b101561042f5761042c6001846109ac565b92505b80610439816109c5565b9150506103f1565b505b8061044d816109c5565b91505061037b565b5080156104ef576002546040517f731133e9000000000000000000000000000000000000000000000000000000008152336004820152600160248201526044810183905260806064820152600060848201526001600160a01b039091169063731133e99060a401600060405180830381600087803b1580156104d657600080fd5b505af11580156104ea573d6000803e3d6000fd5b505050505b336001600160a01b0316827f80fb78b6bb0156517fdaa0969a885abe1503b568430bae4b144e7f0ae30af7668d8d8d8d60405161052f94939291906109de565b60405180910390a3509998505050505050505050565b61054d610687565b6004805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b610584610687565b61058e60006106e1565b565b610598610687565b6001600160a01b0381166106195760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610622816106e1565b50565b600060644442335a6040805160208101959095528401929092526bffffffffffffffffffffffff19606091821b169083015260748201526094016040516020818303038152906040528051906020012060001c6106829190610a10565b905090565b6000546001600160a01b0316331461058e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610610565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008083601f84011261075057600080fd5b50813567ffffffffffffffff81111561076857600080fd5b6020830191508360208260051b850101111561078357600080fd5b9250929050565b600080600080600080600060a0888a0312156107a557600080fd5b873567ffffffffffffffff808211156107bd57600080fd5b6107c98b838c0161073e565b909950975060208a01359150808211156107e257600080fd5b506107ef8a828b0161073e565b989b979a50986040810135976060820135975060809091013595509350505050565b60006020828403121561082357600080fd5b81356001600160a01b038116811461083a57600080fd5b9392505050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561087357600080fd5b8260051b80836020870137939093016020019392505050565b6001600160a01b03861681526060602082015260006108af606083018688610841565b82810360408401526108c2818587610841565b98975050505050505050565b60006101006001600160a01b03808c16845260208b818601528a6040860152818a16606086015281891660808601528760a08601528660c08601528260e0860152855191508183860152600092505b8183101561093c5785830181015185840161012001529182019161091d565b506101209150600082828601015281601f19601f830116850101925050509998505050505050505050565b60006020828403121561097957600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156109bf576109bf610996565b92915050565b6000600182016109d7576109d7610996565b5060010190565b6040815260006109f2604083018688610841565b8281036020840152610a05818587610841565b979650505050505050565b600082610a2d57634e487b7160e01b600052601260045260246000fd5b50069056fea26469706673582212204687a493d6bd27089f6077374c6f4da010abf88ee5845bc43954434125f1a60b64736f6c63430008110033

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

0000000000000000000000006a47f2e78e6a594e594fd3e318f301e987b60d55000000000000000000000000a24eab851c71dc043bb7195e7da9fbcfd01860960000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f

-----Decoded View---------------
Arg [0] : _ferryTickets (address): 0x6A47f2e78E6a594E594fd3e318f301e987b60d55
Arg [1] : _goldenBadges (address): 0xa24EaB851C71Dc043Bb7195e7dA9fBCfd0186096
Arg [2] : _inbox (address): 0x4Dbd4fc535Ac27206064B68FfCf827b0A60BAB3f

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000006a47f2e78e6a594e594fd3e318f301e987b60d55
Arg [1] : 000000000000000000000000a24eab851c71dc043bb7195e7da9fbcfd0186096
Arg [2] : 0000000000000000000000004dbd4fc535ac27206064b68ffcf827b0a60bab3f


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.