ETH Price: $2,092.20 (-0.65%)

Contract

0x8EBccb28628f740435005C4d8bC7778aA8039da4
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Age:30D
Reset Filter

Transaction Hash
Method
Block
From
To

There are no matching entries

Update your filters to view other transactions

Age:30D
Reset Filter

Advanced mode:
Parent Transaction Hash Method Block
From
To

There are no matching entries

Update your filters to view other transactions

View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PolygonzkConnector

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 50000 runs

Other Settings:
default evmVersion
// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;
pragma experimental ABIEncoderV2;

import "../interfaces/polygonzk/messengers/IPolygonZkEVMBridge.sol";
import "./Connector.sol";

contract PolygonzkConnector is Connector {

    uint32 public counterpartNetwork;
    address public messengerAddress;

    function initialize(
        address target,
        address counterpart,
        uint32 _counterpartNetwork,
        address _messengerAddress
    ) external {
        initialize(target, counterpart);

        counterpartNetwork = _counterpartNetwork;
        messengerAddress = _messengerAddress;
    }

    function onMessageReceived(
        address originAddress,
        uint32 originNetwork,
        bytes memory data
    ) external {
        require(originAddress == counterpart, "PLY_ZK_CNR: Origin address does not match counterpart address");
        require(originNetwork == counterpartNetwork, "PLY_ZK_CNR: Origin network does not match counterpart network");
        require(msg.sender == messengerAddress, "PLY_ZK_CNR: Caller is not the messenger");

        uint256 value = 0;
        target.execute(data, value);
    }

    /* ========== Internal functions ========== */

    function _forwardCrossDomainMessage() internal override {
        _forwardCrossDomainMessage(msg.data);
    }

    function _forwardCrossDomainMessage(bytes memory data) internal {
        require(msg.sender == target, "PLY_ZK_CNR: Caller is not the expected sender");

        bool forceUpdateGlobalExitRoot = false;
        IPolygonZkEVMBridge(messengerAddress).bridgeMessage(
            counterpartNetwork,
            counterpart,
            forceUpdateGlobalExitRoot,
            data
        );
    }

    function _verifyCrossDomainSender() internal override {
        revert("BASE_PLY_ZK_CNR: _verifyCrossDomainSender() is handled by onMessageReceived");
    }
}

// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

import "../libraries/ExecutorLib.sol";
import "../shared/Initializable.sol";

abstract contract Connector is Initializable {
    using ExecutorLib for address;

    address public target;
    address public counterpart;

    /// @dev initialize to keep creation code consistent for create2 deployments
    function initialize(address _target, address _counterpart) public initializer {
        require(_target != address(0), "CNR: Target cannot be zero address");
        require(_counterpart != address(0), "CNR: Counterpart cannot be zero address");

        target = _target;
        counterpart = _counterpart;
    }

    fallback () external payable {
        if (msg.sender == target) {
            _forwardCrossDomainMessage();
        } else {
            _verifyCrossDomainSender();
            target.execute(msg.data, msg.value);
        }
    }

    receive () external payable {
        revert("Do not send ETH to this contract");
    }

    /* ========== Virtual functions ========== */

    function _forwardCrossDomainMessage() internal virtual;

    function _verifyCrossDomainSender() internal virtual;
}

File 3 of 5 : IPolygonZkEVMBridge.sol
// SPDX-License-Identifier: AGPL-3.0

pragma solidity 0.6.12;

interface IPolygonZkEVMBridge {
    function bridgeMessage(
        uint32 destinationNetwork,
        address destinationAddress,
        bool forceUpdateGlobalExitRoot,
        bytes calldata metadata
    ) external payable;
}

File 4 of 5 : ExecutorLib.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;

library ExecutorLib {
    function execute(
        address to,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        (bool success, bytes memory res) = payable(to).call{value: value}(data);
        if (!success) {
            // Bubble up error message
            assembly { revert(add(res,0x20), res) }
        }
        return res;
    }
}

File 5 of 5 : Initializable.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
pragma experimental ABIEncoderV2;

contract Initializable {
    bool initialized;

    modifier initializer() {
        require(!initialized, "Initializable: contract is already initialized");
        initialized = true;
        _;
    }
}

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

Contract Security Audit

Contract ABI

API
[{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"counterpart","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"counterpartNetwork","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"address","name":"_counterpart","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"address","name":"counterpart","type":"address"},{"internalType":"uint32","name":"_counterpartNetwork","type":"uint32"},{"internalType":"address","name":"_messengerAddress","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"messengerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"originAddress","type":"address"},{"internalType":"uint32","name":"originNetwork","type":"uint32"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onMessageReceived","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"target","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b50610e47806100206000396000f3fe6080604052600436106100745760003560e01c8063a224ee9c1161004e578063a224ee9c146101bc578063b0138132146101d1578063d4b83992146101f3578063ed1f266814610208576100b4565b80631806b5f214610151578063485cc95514610171578063797594b014610191576100b4565b366100b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100ab90610a9e565b60405180910390fd5b600054610100900473ffffffffffffffffffffffffffffffffffffffff163314156100e6576100e1610228565b61014f565b6100ee61026a565b61014d6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052505473ffffffffffffffffffffffffffffffffffffffff610100909104169392503491505061029c565b505b005b34801561015d57600080fd5b5061014f61016c3660046108cb565b610324565b34801561017d57600080fd5b5061014f61018c366004610834565b610456565b34801561019d57600080fd5b506101a66105cc565b6040516101b391906109c3565b60405180910390f35b3480156101c857600080fd5b506101a66105e8565b3480156101dd57600080fd5b506101e6610604565b6040516101b39190610d27565b3480156101ff57600080fd5b506101a6610628565b34801561021457600080fd5b5061014f610223366004610868565b610649565b6102686000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506106eb92505050565b565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100ab90610c47565b6060600060608573ffffffffffffffffffffffffffffffffffffffff1684866040516102c891906109a7565b60006040518083038185875af1925050503d8060008114610305576040519150601f19603f3d011682016040523d82523d6000602084013e61030a565b606091505b50915091508161031b578060208201fd5b95945050505050565b60015473ffffffffffffffffffffffffffffffffffffffff848116911614610378576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100ab906109e4565b60015463ffffffff8381167401000000000000000000000000000000000000000090920416146103d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100ab90610a41565b60025473ffffffffffffffffffffffffffffffffffffffff163314610425576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100ab90610b8d565b6000805461044f90610100900473ffffffffffffffffffffffffffffffffffffffff16838361029c565b5050505050565b60005460ff1615610493576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100ab90610ad3565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905573ffffffffffffffffffffffffffffffffffffffff821661050b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100ab90610bea565b73ffffffffffffffffffffffffffffffffffffffff8116610558576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100ab90610cca565b600080547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff94851602179055600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60015474010000000000000000000000000000000000000000900463ffffffff1681565b600054610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6106538484610456565b6001805463ffffffff90931674010000000000000000000000000000000000000000027fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff909316929092179091556002805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790555050565b600054610100900473ffffffffffffffffffffffffffffffffffffffff163314610741576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100ab90610b30565b6002546001546040517f240ff37800000000000000000000000000000000000000000000000000000000815260009273ffffffffffffffffffffffffffffffffffffffff9081169263240ff378926107c09263ffffffff7401000000000000000000000000000000000000000084041692169086908890600401610d38565b600060405180830381600087803b1580156107da57600080fd5b505af11580156107ee573d6000803e3d6000fd5b505050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461081a57600080fd5b92915050565b803563ffffffff8116811461081a57600080fd5b60008060408385031215610846578182fd5b61085084846107f6565b915061085f84602085016107f6565b90509250929050565b6000806000806080858703121561087d578182fd5b843561088881610dec565b9350602085013561089881610dec565b9250604085013563ffffffff811681146108b0578283fd5b915060608501356108c081610dec565b939692955090935050565b6000806000606084860312156108df578283fd5b6108e985856107f6565b925060206108f986828701610820565b9250604085013567ffffffffffffffff80821115610915578384fd5b818701915087601f830112610928578384fd5b813581811115610936578485fd5b604051847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401168201018181108482111715610973578687fd5b60405281815283820185018a1015610989578586fd5b81858501868301378585838301015280955050505050509250925092565b600082516109b9818460208701610dbc565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6020808252603d908201527f504c595f5a4b5f434e523a204f726967696e206164647265737320646f65732060408201527f6e6f74206d6174636820636f756e746572706172742061646472657373000000606082015260800190565b6020808252603d908201527f504c595f5a4b5f434e523a204f726967696e206e6574776f726b20646f65732060408201527f6e6f74206d6174636820636f756e74657270617274206e6574776f726b000000606082015260800190565b6020808252818101527f446f206e6f742073656e642045544820746f207468697320636f6e7472616374604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201527f647920696e697469616c697a6564000000000000000000000000000000000000606082015260800190565b6020808252602d908201527f504c595f5a4b5f434e523a2043616c6c6572206973206e6f742074686520657860408201527f7065637465642073656e64657200000000000000000000000000000000000000606082015260800190565b60208082526027908201527f504c595f5a4b5f434e523a2043616c6c6572206973206e6f7420746865206d6560408201527f7373656e67657200000000000000000000000000000000000000000000000000606082015260800190565b60208082526022908201527f434e523a205461726765742063616e6e6f74206265207a65726f20616464726560408201527f7373000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252604b908201527f424153455f504c595f5a4b5f434e523a205f76657269667943726f7373446f6d60408201527f61696e53656e64657228292069732068616e646c6564206279206f6e4d65737360608201527f6167655265636569766564000000000000000000000000000000000000000000608082015260a00190565b60208082526027908201527f434e523a20436f756e746572706172742063616e6e6f74206265207a65726f2060408201527f6164647265737300000000000000000000000000000000000000000000000000606082015260800190565b63ffffffff91909116815260200190565b600063ffffffff8616825273ffffffffffffffffffffffffffffffffffffffff851660208301528315156040830152608060608301528251806080840152610d878160a0850160208701610dbc565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160a00195945050505050565b60005b83811015610dd7578181015183820152602001610dbf565b83811115610de6576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610e0e57600080fd5b5056fea26469706673582212208583cb330d4c62f212baf00ae3058dc912f16474f704e35bf5b6cea6b1ad715c64736f6c634300060c0033

Deployed Bytecode

0x6080604052600436106100745760003560e01c8063a224ee9c1161004e578063a224ee9c146101bc578063b0138132146101d1578063d4b83992146101f3578063ed1f266814610208576100b4565b80631806b5f214610151578063485cc95514610171578063797594b014610191576100b4565b366100b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100ab90610a9e565b60405180910390fd5b600054610100900473ffffffffffffffffffffffffffffffffffffffff163314156100e6576100e1610228565b61014f565b6100ee61026a565b61014d6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052505473ffffffffffffffffffffffffffffffffffffffff610100909104169392503491505061029c565b505b005b34801561015d57600080fd5b5061014f61016c3660046108cb565b610324565b34801561017d57600080fd5b5061014f61018c366004610834565b610456565b34801561019d57600080fd5b506101a66105cc565b6040516101b391906109c3565b60405180910390f35b3480156101c857600080fd5b506101a66105e8565b3480156101dd57600080fd5b506101e6610604565b6040516101b39190610d27565b3480156101ff57600080fd5b506101a6610628565b34801561021457600080fd5b5061014f610223366004610868565b610649565b6102686000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506106eb92505050565b565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100ab90610c47565b6060600060608573ffffffffffffffffffffffffffffffffffffffff1684866040516102c891906109a7565b60006040518083038185875af1925050503d8060008114610305576040519150601f19603f3d011682016040523d82523d6000602084013e61030a565b606091505b50915091508161031b578060208201fd5b95945050505050565b60015473ffffffffffffffffffffffffffffffffffffffff848116911614610378576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100ab906109e4565b60015463ffffffff8381167401000000000000000000000000000000000000000090920416146103d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100ab90610a41565b60025473ffffffffffffffffffffffffffffffffffffffff163314610425576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100ab90610b8d565b6000805461044f90610100900473ffffffffffffffffffffffffffffffffffffffff16838361029c565b5050505050565b60005460ff1615610493576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100ab90610ad3565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905573ffffffffffffffffffffffffffffffffffffffff821661050b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100ab90610bea565b73ffffffffffffffffffffffffffffffffffffffff8116610558576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100ab90610cca565b600080547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff94851602179055600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60015474010000000000000000000000000000000000000000900463ffffffff1681565b600054610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6106538484610456565b6001805463ffffffff90931674010000000000000000000000000000000000000000027fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff909316929092179091556002805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790555050565b600054610100900473ffffffffffffffffffffffffffffffffffffffff163314610741576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100ab90610b30565b6002546001546040517f240ff37800000000000000000000000000000000000000000000000000000000815260009273ffffffffffffffffffffffffffffffffffffffff9081169263240ff378926107c09263ffffffff7401000000000000000000000000000000000000000084041692169086908890600401610d38565b600060405180830381600087803b1580156107da57600080fd5b505af11580156107ee573d6000803e3d6000fd5b505050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461081a57600080fd5b92915050565b803563ffffffff8116811461081a57600080fd5b60008060408385031215610846578182fd5b61085084846107f6565b915061085f84602085016107f6565b90509250929050565b6000806000806080858703121561087d578182fd5b843561088881610dec565b9350602085013561089881610dec565b9250604085013563ffffffff811681146108b0578283fd5b915060608501356108c081610dec565b939692955090935050565b6000806000606084860312156108df578283fd5b6108e985856107f6565b925060206108f986828701610820565b9250604085013567ffffffffffffffff80821115610915578384fd5b818701915087601f830112610928578384fd5b813581811115610936578485fd5b604051847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401168201018181108482111715610973578687fd5b60405281815283820185018a1015610989578586fd5b81858501868301378585838301015280955050505050509250925092565b600082516109b9818460208701610dbc565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6020808252603d908201527f504c595f5a4b5f434e523a204f726967696e206164647265737320646f65732060408201527f6e6f74206d6174636820636f756e746572706172742061646472657373000000606082015260800190565b6020808252603d908201527f504c595f5a4b5f434e523a204f726967696e206e6574776f726b20646f65732060408201527f6e6f74206d6174636820636f756e74657270617274206e6574776f726b000000606082015260800190565b6020808252818101527f446f206e6f742073656e642045544820746f207468697320636f6e7472616374604082015260600190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201527f647920696e697469616c697a6564000000000000000000000000000000000000606082015260800190565b6020808252602d908201527f504c595f5a4b5f434e523a2043616c6c6572206973206e6f742074686520657860408201527f7065637465642073656e64657200000000000000000000000000000000000000606082015260800190565b60208082526027908201527f504c595f5a4b5f434e523a2043616c6c6572206973206e6f7420746865206d6560408201527f7373656e67657200000000000000000000000000000000000000000000000000606082015260800190565b60208082526022908201527f434e523a205461726765742063616e6e6f74206265207a65726f20616464726560408201527f7373000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252604b908201527f424153455f504c595f5a4b5f434e523a205f76657269667943726f7373446f6d60408201527f61696e53656e64657228292069732068616e646c6564206279206f6e4d65737360608201527f6167655265636569766564000000000000000000000000000000000000000000608082015260a00190565b60208082526027908201527f434e523a20436f756e746572706172742063616e6e6f74206265207a65726f2060408201527f6164647265737300000000000000000000000000000000000000000000000000606082015260800190565b63ffffffff91909116815260200190565b600063ffffffff8616825273ffffffffffffffffffffffffffffffffffffffff851660208301528315156040830152608060608301528251806080840152610d878160a0850160208701610dbc565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160a00195945050505050565b60005b83811015610dd7578181015183820152602001610dbf565b83811115610de6576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610e0e57600080fd5b5056fea26469706673582212208583cb330d4c62f212baf00ae3058dc912f16474f704e35bf5b6cea6b1ad715c64736f6c634300060c0033

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
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.