Arbitrum Sepolia Testnet

Contract

0x703C16c050887A340a18B61794d20926D3A14e7a

Overview

ETH Balance

0 ETH

More Info

Multichain Info

N/A
Transaction Hash
Method
Block
From
To
Amount

There are no matching entries

Please try again later

Parent Transaction Hash Block From To Amount
View All Internal Transactions

Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
RemoveWasmCacheManagerAction

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 20000 runs

Other Settings:
london EvmVersion

Contract Source Code (Solidity Standard Json-Input format)

// SPDX-License-Identifier: Apache-2.0
pragma solidity 0.8.16;

import "@arbitrum/nitro-contracts/src/precompiles/ArbSys.sol";

// ArbOwner interface will include addWasmCacheManager as of stylus upgrade
interface IUpdatedArbOwner {
    function removeWasmCacheManager(address manager) external;
}

// ArbWasmCache precompile interface
interface IArbWasmCache {
    /// @notice See if the user is a cache manager.
    function isCacheManager(address manager) external view returns (bool);
}

// @notice For deployment on an Arbitrum chain;
// adds wasm cache manager only when the stylus ArbOS upgrade activates.
// Should be called via retryable ticket so that if executed before the ArbOS upgrade,
// it reverts can be retried until the target ArbOS version number is active.
contract RemoveWasmCacheManagerAction {
    // wasm cache manager to add
    address public immutable wasmCachemanager;

    constructor(address _wasmCachemanager) {
        wasmCachemanager = _wasmCachemanager;
    }

    function perform() external {
        IUpdatedArbOwner(0x0000000000000000000000000000000000000070).removeWasmCacheManager(
            wasmCachemanager
        );

        // verify:
        require(
            !IArbWasmCache(0x0000000000000000000000000000000000000072).isCacheManager(
                wasmCachemanager
            ),
            "AIPArbOS30AddWasmCacheManagerAction: is cache manager"
        );
    }
}

// Copyright 2021-2022, Offchain Labs, Inc.
// For license information, see https://github.com/OffchainLabs/nitro-contracts/blob/main/LICENSE
// SPDX-License-Identifier: BUSL-1.1

pragma solidity >=0.4.21 <0.9.0;

/**
 * @title System level functionality
 * @notice For use by contracts to interact with core L2-specific functionality.
 * Precompiled contract that exists in every Arbitrum chain at address(100), 0x0000000000000000000000000000000000000064.
 */
interface ArbSys {
    /**
     * @notice Get Arbitrum block number (distinct from L1 block number; Arbitrum genesis block has block number 0)
     * @return block number as int
     */
    function arbBlockNumber() external view returns (uint256);

    /**
     * @notice Get Arbitrum block hash (reverts unless currentBlockNum-256 <= arbBlockNum < currentBlockNum)
     * @return block hash
     */
    function arbBlockHash(uint256 arbBlockNum) external view returns (bytes32);

    /**
     * @notice Gets the rollup's unique chain identifier
     * @return Chain identifier as int
     */
    function arbChainID() external view returns (uint256);

    /**
     * @notice Get internal version number identifying an ArbOS build
     * @return version number as int
     */
    function arbOSVersion() external view returns (uint256);

    /**
     * @notice Returns 0 since Nitro has no concept of storage gas
     * @return uint 0
     */
    function getStorageGasAvailable() external view returns (uint256);

    /**
     * @notice (deprecated) check if current call is top level (meaning it was triggered by an EoA or a L1 contract)
     * @dev this call has been deprecated and may be removed in a future release
     * @return true if current execution frame is not a call by another L2 contract
     */
    function isTopLevelCall() external view returns (bool);

    /**
     * @notice map L1 sender contract address to its L2 alias
     * @param sender sender address
     * @param unused argument no longer used
     * @return aliased sender address
     */
    function mapL1SenderContractAddressToL2Alias(address sender, address unused)
        external
        pure
        returns (address);

    /**
     * @notice check if the caller (of this caller of this) is an aliased L1 contract address
     * @return true iff the caller's address is an alias for an L1 contract address
     */
    function wasMyCallersAddressAliased() external view returns (bool);

    /**
     * @notice return the address of the caller (of this caller of this), without applying L1 contract address aliasing
     * @return address of the caller's caller, without applying L1 contract address aliasing
     */
    function myCallersAddressWithoutAliasing() external view returns (address);

    /**
     * @notice Send given amount of Eth to dest from sender.
     * This is a convenience function, which is equivalent to calling sendTxToL1 with empty data.
     * @param destination recipient address on L1
     * @return unique identifier for this L2-to-L1 transaction.
     */
    function withdrawEth(address destination) external payable returns (uint256);

    /**
     * @notice Send a transaction to L1
     * @dev it is not possible to execute on the L1 any L2-to-L1 transaction which contains data
     * to a contract address without any code (as enforced by the Bridge contract).
     * @param destination recipient address on L1
     * @param data (optional) calldata for L1 contract call
     * @return a unique identifier for this L2-to-L1 transaction.
     */
    function sendTxToL1(address destination, bytes calldata data)
        external
        payable
        returns (uint256);

    /**
     * @notice Get send Merkle tree state
     * @return size number of sends in the history
     * @return root root hash of the send history
     * @return partials hashes of partial subtrees in the send history tree
     */
    function sendMerkleTreeState()
        external
        view
        returns (
            uint256 size,
            bytes32 root,
            bytes32[] memory partials
        );

    /**
     * @notice creates a send txn from L2 to L1
     * @param position = (level << 192) + leaf = (0 << 192) + leaf = leaf
     */
    event L2ToL1Tx(
        address caller,
        address indexed destination,
        uint256 indexed hash,
        uint256 indexed position,
        uint256 arbBlockNum,
        uint256 ethBlockNum,
        uint256 timestamp,
        uint256 callvalue,
        bytes data
    );

    /// @dev DEPRECATED in favour of the new L2ToL1Tx event above after the nitro upgrade
    event L2ToL1Transaction(
        address caller,
        address indexed destination,
        uint256 indexed uniqueId,
        uint256 indexed batchNumber,
        uint256 indexInBatch,
        uint256 arbBlockNum,
        uint256 ethBlockNum,
        uint256 timestamp,
        uint256 callvalue,
        bytes data
    );

    /**
     * @notice logs a merkle branch for proof synthesis
     * @param reserved an index meant only to align the 4th index with L2ToL1Transaction's 4th event
     * @param hash the merkle hash
     * @param position = (level << 192) + leaf
     */
    event SendMerkleUpdate(
        uint256 indexed reserved,
        bytes32 indexed hash,
        uint256 indexed position
    );

    error InvalidBlockNumber(uint256 requested, uint256 current);
}

Settings
{
  "remappings": [
    "forge-std/=lib/forge-std/src/",
    "solady/=lib/solady/src/",
    "@arbitrum/token-bridge-contracts/=node_modules/@arbitrum/token-bridge-contracts/",
    "@arbitrum/nitro-contracts/=node_modules/@arbitrum/nitro-contracts/",
    "@openzeppelin/contracts-upgradeable/=node_modules/@openzeppelin/contracts-upgradeable/",
    "@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/",
    "@gnosis.pm/safe-contracts/=node_modules/@gnosis.pm/safe-contracts/",
    "ds-test/=lib/forge-std/lib/ds-test/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 20000
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs"
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "london",
  "viaIR": false,
  "libraries": {}
}

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_wasmCachemanager","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"perform","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wasmCachemanager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60a060405234801561001057600080fd5b5060405161036d38038061036d83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516102d661009760003960008181604a0152818160d2015261017001526102d66000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063b147f40c1461003b578063b676309914610045575b600080fd5b610043610095565b005b61006c7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6040517fbf19732200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016600482015260709063bf19732290602401600060405180830381600087803b15801561011d57600080fd5b505af1158015610131573d6000803e3d6000fd5b50506040517f85e2de8500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166004820152607292506385e2de859150602401602060405180830381865afa1580156101c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e49190610277565b15610275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4149504172624f5333304164645761736d43616368654d616e6167657241637460448201527f696f6e3a206973206361636865206d616e616765720000000000000000000000606482015260840160405180910390fd5b565b60006020828403121561028957600080fd5b8151801515811461029957600080fd5b939250505056fea26469706673582212205f6592a0b0f19e2d056515cb1b5397cb5ca51882b5971d7b829f15ef772d92dc64736f6c63430008100033000000000000000000000000d01c86379c53650b02ae259ae4b608684687c73a

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063b147f40c1461003b578063b676309914610045575b600080fd5b610043610095565b005b61006c7f000000000000000000000000d01c86379c53650b02ae259ae4b608684687c73a81565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6040517fbf19732200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000d01c86379c53650b02ae259ae4b608684687c73a16600482015260709063bf19732290602401600060405180830381600087803b15801561011d57600080fd5b505af1158015610131573d6000803e3d6000fd5b50506040517f85e2de8500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000d01c86379c53650b02ae259ae4b608684687c73a166004820152607292506385e2de859150602401602060405180830381865afa1580156101c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e49190610277565b15610275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4149504172624f5333304164645761736d43616368654d616e6167657241637460448201527f696f6e3a206973206361636865206d616e616765720000000000000000000000606482015260840160405180910390fd5b565b60006020828403121561028957600080fd5b8151801515811461029957600080fd5b939250505056fea26469706673582212205f6592a0b0f19e2d056515cb1b5397cb5ca51882b5971d7b829f15ef772d92dc64736f6c63430008100033

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

000000000000000000000000d01c86379c53650b02ae259ae4b608684687c73a

-----Decoded View---------------
Arg [0] : _wasmCachemanager (address): 0xd01C86379C53650B02aE259ae4b608684687C73A

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000d01c86379c53650b02ae259ae4b608684687c73a


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
0x703C16c050887A340a18B61794d20926D3A14e7a
Loading...
Loading
Loading...
Loading

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.