ETH Price: $3,691.51 (-4.43%)

Contract

0x8e1e5001C7B8920196c7E3EdF2BCf47B2B6153ff

Overview

ETH Balance

0 ETH

ETH Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

Latest 3 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
284529692022-10-10 1:25:54792 days ago1665365154
Curve.fi: X-Gov L2 Relayer
 Contract Creation0 ETH
284529692022-10-10 1:25:54792 days ago1665365154
Curve.fi: X-Gov L2 Relayer
 Contract Creation0 ETH
284529692022-10-10 1:25:54792 days ago1665365154
Curve.fi: X-Gov L2 Relayer
 Contract Creation0 ETH

Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vyper_contract

Compiler Version
vyper:0.3.7

Optimization Enabled:
N/A

Other Settings:
default evmVersion, None license

Contract Source Code (Vyper language format)

# @version 0.3.7
"""
@title Optimism Relayer
@author CurveFi
"""


interface IAgent:
    def execute(_messages: DynArray[Message, MAX_MESSAGES]): nonpayable

interface IMessenger:
    def xDomainMessageSender() -> address: view


enum Agent:
    OWNERSHIP
    PARAMETER
    EMERGENCY


struct Message:
    target: address
    data: Bytes[MAX_BYTES]


MAX_BYTES: constant(uint256) = 1024
MAX_MESSAGES: constant(uint256) = 8

CODE_OFFSET: constant(uint256) = 3


MESSENGER: public(immutable(address))

OWNERSHIP_AGENT: public(immutable(address))
PARAMETER_AGENT: public(immutable(address))
EMERGENCY_AGENT: public(immutable(address))


agent: HashMap[Agent, address]


@external
def __init__(_agent_blueprint: address, _messenger: address):
    MESSENGER = _messenger

    OWNERSHIP_AGENT = create_from_blueprint(_agent_blueprint, code_offset=CODE_OFFSET)
    PARAMETER_AGENT = create_from_blueprint(_agent_blueprint, code_offset=CODE_OFFSET)
    EMERGENCY_AGENT = create_from_blueprint(_agent_blueprint, code_offset=CODE_OFFSET)

    self.agent[Agent.OWNERSHIP] = OWNERSHIP_AGENT
    self.agent[Agent.PARAMETER] = PARAMETER_AGENT
    self.agent[Agent.EMERGENCY] = EMERGENCY_AGENT


@external
def relay(_agent: Agent, _messages: DynArray[Message, MAX_MESSAGES]):
    """
    @notice Receive messages for an agent and relay them.
    @param _agent The agent to relay messages to.
    @param _messages The sequence of messages to relay.
    """
    assert msg.sender == MESSENGER
    assert IMessenger(MESSENGER).xDomainMessageSender() == self

    IAgent(self.agent[_agent]).execute(_messages)

Contract Security Audit

Contract ABI

[{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_agent_blueprint","type":"address"},{"name":"_messenger","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"relay","inputs":[{"name":"_agent","type":"uint256"},{"name":"_messages","type":"tuple[]","components":[{"name":"target","type":"address"},{"name":"data","type":"bytes"}]}],"outputs":[]},{"stateMutability":"view","type":"function","name":"MESSENGER","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"OWNERSHIP_AGENT","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"PARAMETER_AGENT","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"EMERGENCY_AGENT","inputs":[],"outputs":[{"name":"","type":"address"}]}]

60206103e86000396000518060a01c6103e35760405260206104086000396000518060a01c6103e357606052346103e3576060516102d9526040516003813b0359600182126103e35781600382853c81816000f080156103e3579050905090506102f9526040516003813b0359600182126103e35781600382853c81816000f080156103e357905090509050610319526040516003813b0359600182126103e35781600382853c81816000f080156103e357905090509050610339526102f95160006001602052600052604060002055610319516000600260205260005260406000205561033951600060046020526000526040600020556102d961010961000039610359610000f36003361161000c576102c1565b60003560e01c346102c75763f6caf910811861022357606436106102c7576004358060031c6102c75760405260243560040160088135116102c757803580606052600081600881116102c75780156100bc57905b61044081026080018160051b602086010135602086010180358060a01c6102c7578252602081013581016104008135116102c7578035806020850152602082016020602086010182828237505050505050600101818118610060575b5050505060206102d960003960005133186102c7573060206102d9600039600051636e296e45612280526020612280600461229c845afa610102573d600060003e3d6000fd5b60203d106102c757612280518060a01c6102c7576122c0526122c0905051186102c757600060405160205260005260406000205463baae8abf612280526020806122a052806122a00160006060518083528060051b600082600881116102c75780156101ea57905b828160051b602088010152610440810260800183602088010160408251825280602083015260208301818301815180825260208301602083018281848460045afa505050508051806020830101601f82600003163682375050601f19601f825160200101169050905081019050905090508301925060010181811861016a575b50508201602001915050905081015050803b156102c757600061228061244461229c6000855af1610220573d600060003e3d6000fd5b50005b63927ede2d811861024a57600436106102c75760206102d960003960005160405260206040f35b63b8eee20e811861027157600436106102c75760206102f960003960005160405260206040f35b633175905b811861029857600436106102c757602061031960003960005160405260206040f35b63c67aac4781186102bf57600436106102c757602061033960003960005160405260206040f35b505b60006000fd5b600080fda165767970657283000307000b005b600080fd000000000000000000000000c5fd5d3b06a8ef50b911972ca313e4d327f7c0ac0000000000000000000000004200000000000000000000000000000000000007

Deployed Bytecode

0x6003361161000c576102c1565b60003560e01c346102c75763f6caf910811861022357606436106102c7576004358060031c6102c75760405260243560040160088135116102c757803580606052600081600881116102c75780156100bc57905b61044081026080018160051b602086010135602086010180358060a01c6102c7578252602081013581016104008135116102c7578035806020850152602082016020602086010182828237505050505050600101818118610060575b5050505060206102d960003960005133186102c7573060206102d9600039600051636e296e45612280526020612280600461229c845afa610102573d600060003e3d6000fd5b60203d106102c757612280518060a01c6102c7576122c0526122c0905051186102c757600060405160205260005260406000205463baae8abf612280526020806122a052806122a00160006060518083528060051b600082600881116102c75780156101ea57905b828160051b602088010152610440810260800183602088010160408251825280602083015260208301818301815180825260208301602083018281848460045afa505050508051806020830101601f82600003163682375050601f19601f825160200101169050905081019050905090508301925060010181811861016a575b50508201602001915050905081015050803b156102c757600061228061244461229c6000855af1610220573d600060003e3d6000fd5b50005b63927ede2d811861024a57600436106102c75760206102d960003960005160405260206040f35b63b8eee20e811861027157600436106102c75760206102f960003960005160405260206040f35b633175905b811861029857600436106102c757602061031960003960005160405260206040f35b63c67aac4781186102bf57600436106102c757602061033960003960005160405260206040f35b505b60006000fd5b600080fda165767970657283000307000b000000000000000000000000420000000000000000000000000000000000000700000000000000000000000028c4a1fa47eee9226f8de7d6af0a41c62ca98267000000000000000000000000e7f2b72e94d1c2497150c24ea8d65afff1027b9b0000000000000000000000009ff1dde4be9bbd891836863d227248047b3d881b

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

000000000000000000000000c5fd5d3b06a8ef50b911972ca313e4d327f7c0ac0000000000000000000000004200000000000000000000000000000000000007

-----Decoded View---------------
Arg [0] : _agent_blueprint (address): 0xC5fd5D3b06a8ef50b911972CA313E4d327F7c0aC
Arg [1] : _messenger (address): 0x4200000000000000000000000000000000000007

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000c5fd5d3b06a8ef50b911972ca313e4d327f7c0ac
Arg [1] : 0000000000000000000000004200000000000000000000000000000000000007


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