| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
Latest 3 internal transactions
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 9103786 | 519 days ago | Contract Creation | 0 FRAX | |||
| 9103786 | 519 days ago | Contract Creation | 0 FRAX | |||
| 9103786 | 519 days ago | Contract Creation | 0 FRAX |
Cross-Chain Transactions
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Optimism Relayer
Compiler Version
vyper:0.3.10
Contract Source Code (Vyper language format)
# pragma version 0.3.10
"""
@title Optimism Relayer
@author CurveFi
@license MIT
@custom:version 1.0.1
"""
version: public(constant(String[8])) = "1.0.1"
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
BROADCASTER: public(immutable(address))
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__(_broadcaster: address, _agent_blueprint: address, _messenger: address):
BROADCASTER = _broadcaster
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() == BROADCASTER
IAgent(self.agent[_agent]).execute(_messages)Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_broadcaster","type":"address"},{"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":"version","inputs":[],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"view","type":"function","name":"BROADCASTER","inputs":[],"outputs":[{"name":"","type":"address"}]},{"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"}]}]Contract Creation Code
6103bc51503461011957602061046e5f395f518060a01c61011957604052602061048e5f395f518060a01c6101195760605260206104ae5f395f518060a01c6101195760805260405161033c5260805161035c526060516003813b0359600182126101195781600382853c81815ff080156101195790509050905061037c526060516003813b0359600182126101195781600382853c81815ff080156101195790509050905061039c526060516003813b0359600182126101195781600382853c81815ff08015610119579050905090506103bc5261037c515f60016020525f5260405f205561039c515f60026020525f5260405f20556103bc515f60046020525f5260405f205561033c61011d610000396103dc610000f35b5f80fd5f3560e01c60026005820660011b61033201601e395f51565b6354fd4d508118610096573461032e5760208060805260056040527f312e302e3100000000000000000000000000000000000000000000000000000060605260408160800181518152602082015160208201528051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506080f35b63927ede2d811861032a573461032e57602061035c60403960206040f361032a565b63f8d9de4e811861032a573461032e57602061033c60403960206040f361032a565b63b8eee20e811861032a573461032e57602061037c60403960206040f361032a565b633175905b811861032a573461032e57602061039c60403960206040f361032a565b63c67aac47811861013c573461032e5760206103bc60403960206040f35b63f6caf910811861032a5760643610341761032e576004358060031c61032e57604052602435600401600881351161032e5780355f816008811161032e5780156101d357905b61044081026080018160051b602086010135602086010180358060a01c61032e5782526020810135810161040081351161032e57602081350160208401818382375050505050600101818118610182575b5050806060525050602061035c5f395f51331861032e57602061033c5f395f51602061035c5f395f51636e296e45612280526020612280600461229c845afa61021e573d5f5f3e3d5ffd5b60203d1061032e57612280518060a01c61032e576122c0526122c09050511861032e575f6040516020525f5260405f205463baae8abf612280526020806122a052806122a0015f6060518083528060051b5f826008811161032e5780156102f657905b828160051b60208801015261044081026080018360208801016040825182528060208301526020830181830160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190509050905083019250600101818118610281575b50508201602001915050905081015050803b1561032e575f61228061244461229c5f855af1610327573d5f5f3e3d5ffd5b50005b5f5ffd5b5f80fd00b800fc00da011e00188419033c810a18a0a16576797065728300030a0015000000000000000000000000e0fe4416214e95f0c67dc044aaf1e63d6972e0b900000000000000000000000047fe2319e3ea3451f87196aca4973563ceda838b0000000000000000000000004200000000000000000000000000000000000007
Deployed Bytecode
0x5f3560e01c60026005820660011b61033201601e395f51565b6354fd4d508118610096573461032e5760208060805260056040527f312e302e3100000000000000000000000000000000000000000000000000000060605260408160800181518152602082015160208201528051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506080f35b63927ede2d811861032a573461032e57602061035c60403960206040f361032a565b63f8d9de4e811861032a573461032e57602061033c60403960206040f361032a565b63b8eee20e811861032a573461032e57602061037c60403960206040f361032a565b633175905b811861032a573461032e57602061039c60403960206040f361032a565b63c67aac47811861013c573461032e5760206103bc60403960206040f35b63f6caf910811861032a5760643610341761032e576004358060031c61032e57604052602435600401600881351161032e5780355f816008811161032e5780156101d357905b61044081026080018160051b602086010135602086010180358060a01c61032e5782526020810135810161040081351161032e57602081350160208401818382375050505050600101818118610182575b5050806060525050602061035c5f395f51331861032e57602061033c5f395f51602061035c5f395f51636e296e45612280526020612280600461229c845afa61021e573d5f5f3e3d5ffd5b60203d1061032e57612280518060a01c61032e576122c0526122c09050511861032e575f6040516020525f5260405f205463baae8abf612280526020806122a052806122a0015f6060518083528060051b5f826008811161032e5780156102f657905b828160051b60208801015261044081026080018360208801016040825182528060208301526020830181830160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190509050905083019250600101818118610281575b50508201602001915050905081015050803b1561032e575f61228061244461229c5f855af1610327573d5f5f3e3d5ffd5b50005b5f5ffd5b5f80fd00b800fc00da011e0018000000000000000000000000e0fe4416214e95f0c67dc044aaf1e63d6972e0b900000000000000000000000042000000000000000000000000000000000000070000000000000000000000004bbdfed5696b3a8f6b3813506b5389959c5cdc5700000000000000000000000061e0521a1fa8ca2f544ab6b7b7e89059e5b361ff000000000000000000000000ef3d6bc9a603acabaed46f43506f01e7ec4d1301
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000e0fe4416214e95f0c67dc044aaf1e63d6972e0b900000000000000000000000047fe2319e3ea3451f87196aca4973563ceda838b0000000000000000000000004200000000000000000000000000000000000007
-----Decoded View---------------
Arg [0] : _broadcaster (address): 0xE0fE4416214e95F0C67Dc044AAf1E63d6972e0b9
Arg [1] : _agent_blueprint (address): 0x47fE2319e3Ea3451f87196Aca4973563CEda838b
Arg [2] : _messenger (address): 0x4200000000000000000000000000000000000007
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000e0fe4416214e95f0c67dc044aaf1e63d6972e0b9
Arg [1] : 00000000000000000000000047fe2319e3ea3451f87196aca4973563ceda838b
Arg [2] : 0000000000000000000000004200000000000000000000000000000000000007
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in FRAX
0
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ 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.