Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 5 from a total of 5 transactions
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Polygon zkEVM Broadcaster
Compiler Version
vyper:0.3.10
Contract Source Code (Vyper language format)
# pragma version 0.3.10 """ @title Polygon zkEVM Broadcaster @author CurveFi @license MIT @custom:version 1.0.1 """ version: public(constant(String[8])) = "1.0.1" interface PolygonZkEVMBridge: def bridgeMessage(destination_network: uint32, destination_address: address, force_update: bool, metadata: Bytes[MAX_MESSAGE_RECEIVED]): payable event Broadcast: chain_id: indexed(uint256) agent: indexed(Agent) messages: DynArray[Message, MAX_MESSAGES] event SetDestinationData: chain_id: indexed(uint256) data: DestinationData event SetNewBridge: new_bridge: PolygonZkEVMBridge event SetNewDestinationNetwork: new_network: uint32 event ApplyAdmins: admins: AdminSet event CommitAdmins: future_admins: AdminSet enum Agent: OWNERSHIP PARAMETER EMERGENCY struct AdminSet: ownership: address parameter: address emergency: address struct Message: target: address data: Bytes[MAX_BYTES] struct DestinationData: network: uint32 relayer: address MAX_BYTES: constant(uint256) = 1024 MAX_MESSAGES: constant(uint256) = 8 MAX_MESSAGE_RECEIVED: constant(uint256) = 9400 admins: public(AdminSet) future_admins: public(AdminSet) destination_data: public(HashMap[uint256, DestinationData]) agent: public(HashMap[address, Agent]) POLYGON_ZKEVM_BRIDGE: public(immutable(PolygonZkEVMBridge)) @external def __init__(_admins: AdminSet, _polygon_zkevm_bridge: PolygonZkEVMBridge): assert _admins.ownership != _admins.parameter # a != b assert _admins.ownership != _admins.emergency # a != c assert _admins.parameter != _admins.emergency # b != c self.admins = _admins self.agent[_admins.ownership] = Agent.OWNERSHIP self.agent[_admins.parameter] = Agent.PARAMETER self.agent[_admins.emergency] = Agent.EMERGENCY POLYGON_ZKEVM_BRIDGE = _polygon_zkevm_bridge log ApplyAdmins(_admins) @external def broadcast(_chain_id: uint256, _messages: DynArray[Message, MAX_MESSAGES], _force_update: bool=True, _destination_data: DestinationData=empty(DestinationData)): """ @notice Broadcast a sequence of messages. @dev Save `depositCount` from POLYGON_ZKEVM_BRIDGE.BridgeEvent to claim message on destination chain @param _chain_id Chain ID of L2 @param _messages The sequence of messages to broadcast. @param _force_update Indicates if the new global exit root is updated or not (forceUpdateGlobalExitRoot) @param _destination_data Specific DestinationData (self.destination_data by default) """ agent: Agent = self.agent[msg.sender] assert agent != empty(Agent) destination: DestinationData = _destination_data if destination.relayer == empty(address): destination = self.destination_data[_chain_id] assert destination.relayer != empty(address) POLYGON_ZKEVM_BRIDGE.bridgeMessage(destination.network, destination.relayer, _force_update, _abi_encode( # relay(uint256,(address,bytes)[]) agent, _messages, method_id=method_id("relay(uint256,(address,bytes)[])"), ), ) log Broadcast(_chain_id, agent, _messages) @external def set_destination_data(_chain_id: uint256, _destination_data: DestinationData): """ @notice Set destination data for child chain. """ assert msg.sender == self.admins.ownership self.destination_data[_chain_id] = _destination_data log SetDestinationData(_chain_id, _destination_data) @external def commit_admins(_future_admins: AdminSet): """ @notice Commit an admin set to use in the future. """ assert msg.sender == self.admins.ownership assert _future_admins.ownership != _future_admins.parameter # a != b assert _future_admins.ownership != _future_admins.emergency # a != c assert _future_admins.parameter != _future_admins.emergency # b != c self.future_admins = _future_admins log CommitAdmins(_future_admins) @external def apply_admins(): """ @notice Apply the future admin set. """ admins: AdminSet = self.admins assert msg.sender == admins.ownership # reset old admins self.agent[admins.ownership] = empty(Agent) self.agent[admins.parameter] = empty(Agent) self.agent[admins.emergency] = empty(Agent) # set new admins future_admins: AdminSet = self.future_admins self.agent[future_admins.ownership] = Agent.OWNERSHIP self.agent[future_admins.parameter] = Agent.PARAMETER self.agent[future_admins.emergency] = Agent.EMERGENCY self.admins = future_admins log ApplyAdmins(future_admins)
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"name":"Broadcast","inputs":[{"name":"chain_id","type":"uint256","indexed":true},{"name":"agent","type":"uint256","indexed":true},{"name":"messages","type":"tuple[]","components":[{"name":"target","type":"address"},{"name":"data","type":"bytes"}],"indexed":false}],"anonymous":false,"type":"event"},{"name":"SetDestinationData","inputs":[{"name":"chain_id","type":"uint256","indexed":true},{"name":"data","type":"tuple","components":[{"name":"network","type":"uint32"},{"name":"relayer","type":"address"}],"indexed":false}],"anonymous":false,"type":"event"},{"name":"SetNewBridge","inputs":[{"name":"new_bridge","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetNewDestinationNetwork","inputs":[{"name":"new_network","type":"uint32","indexed":false}],"anonymous":false,"type":"event"},{"name":"ApplyAdmins","inputs":[{"name":"admins","type":"tuple","components":[{"name":"ownership","type":"address"},{"name":"parameter","type":"address"},{"name":"emergency","type":"address"}],"indexed":false}],"anonymous":false,"type":"event"},{"name":"CommitAdmins","inputs":[{"name":"future_admins","type":"tuple","components":[{"name":"ownership","type":"address"},{"name":"parameter","type":"address"},{"name":"emergency","type":"address"}],"indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_admins","type":"tuple","components":[{"name":"ownership","type":"address"},{"name":"parameter","type":"address"},{"name":"emergency","type":"address"}]},{"name":"_polygon_zkevm_bridge","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"broadcast","inputs":[{"name":"_chain_id","type":"uint256"},{"name":"_messages","type":"tuple[]","components":[{"name":"target","type":"address"},{"name":"data","type":"bytes"}]}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"broadcast","inputs":[{"name":"_chain_id","type":"uint256"},{"name":"_messages","type":"tuple[]","components":[{"name":"target","type":"address"},{"name":"data","type":"bytes"}]},{"name":"_force_update","type":"bool"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"broadcast","inputs":[{"name":"_chain_id","type":"uint256"},{"name":"_messages","type":"tuple[]","components":[{"name":"target","type":"address"},{"name":"data","type":"bytes"}]},{"name":"_force_update","type":"bool"},{"name":"_destination_data","type":"tuple","components":[{"name":"network","type":"uint32"},{"name":"relayer","type":"address"}]}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_destination_data","inputs":[{"name":"_chain_id","type":"uint256"},{"name":"_destination_data","type":"tuple","components":[{"name":"network","type":"uint32"},{"name":"relayer","type":"address"}]}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"commit_admins","inputs":[{"name":"_future_admins","type":"tuple","components":[{"name":"ownership","type":"address"},{"name":"parameter","type":"address"},{"name":"emergency","type":"address"}]}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"apply_admins","inputs":[],"outputs":[]},{"stateMutability":"view","type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"view","type":"function","name":"admins","inputs":[],"outputs":[{"name":"","type":"tuple","components":[{"name":"ownership","type":"address"},{"name":"parameter","type":"address"},{"name":"emergency","type":"address"}]}]},{"stateMutability":"view","type":"function","name":"future_admins","inputs":[],"outputs":[{"name":"","type":"tuple","components":[{"name":"ownership","type":"address"},{"name":"parameter","type":"address"},{"name":"emergency","type":"address"}]}]},{"stateMutability":"view","type":"function","name":"destination_data","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"tuple","components":[{"name":"network","type":"uint32"},{"name":"relayer","type":"address"}]}]},{"stateMutability":"view","type":"function","name":"agent","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"POLYGON_ZKEVM_BRIDGE","inputs":[],"outputs":[{"name":"","type":"address"}]}]
Contract Creation Code
61077e5150346101105760206108a75f395f518060a01c6101105760405260206108c75f395f518060a01c6101105760605260206108e75f395f518060a01c6101105760805260206109075f395f518060a01c6101105760a0526060516040511461011057608051604051146101105760805160605114610110576040515f55606051600155608051600255600160076040516020525f5260405f2055600260076060516020525f5260405f2055600460076080516020525f5260405f205560a05161077e527fe0f6eb67e95817aeae79003a3bb27a26759368de7d4ce19e604f2c26e48a3b5b60405160c05260605160e05260805161010052606060c0a161077e6101146100003961079e610000f35b5f80fd5f3560e01c6002600a820660011b61076a01601e395f51565b6354fd4d50811861076257346107665760208060805260056040527f312e302e3100000000000000000000000000000000000000000000000000000060605260408160800181518152602082015160208201528051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506080f3610762565b63a5de361981186100c15734610766575f5460405260015460605260025460805260606040f35b63b06565ad8118610762576024361034176107665760066004356020525f5260405f20805460405260018101546060525060406040f3610762565b630a501674811861076257346107665760035460405260045460605260055460805260606040f3610762565b6392e423b5811861016357602436103417610766576004358060a01c6107665760405260076040516020525f5260405f205460605260206060f35b639b209ca781186107625760c436103417610766576044358060011c61076657612260526064358060201c61076657612280526084358060a01c610766576122a0525b60243560040160088135116107665780355f816008811161076657801561021a57905b61044081026060018160051b602086010135602086010180358060a01c61076657825260208101358101610400813511610766576020813501602084018183823750505050506001018181186101c9575b50508060405250506007336020525f5260405f20546122c0526122c0511561076657612280516122e0526122a05161230052612300516102735760066004356020525f5260405f2080546122e052600181015461230052505b612300511561076657602061077e5f395f5163240ff3786147c05260806122e0516147e05261230051614800526122605161482052806148405263f6caf91061232452600460406122c05161234452806123645280612344015f6040518083528060051b5f826008811161076657801561035e57905b828160051b60208801015261044081026060018360208801016040825182528060208301526020830181830160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f82516020010116905090508101905090509050830192506001018181186102e9575b505082016020019150509050810190500161232052612320816147e00160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f825160200101169050905081015050803b15610766575f6147c06125246147dc5f855af16103d2573d5f5f3e3d5ffd5b506122c0516004357f241535e867e2e70c9b90c78bf421cd608d5aa2fee669e7f606763ae02e0890b76020806123205280612320015f6040518083528060051b5f826008811161076657801561049957905b828160051b60208801015261044081026060018360208801016040825182528060208301526020830181830160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190509050905083019250600101818118610424575b50508201602001915050905081019050612320a300610762565b63c0db068381186104d1573461076657602061077e60403960206040f35b635b6bb17b811861076257606436103417610766576024358060201c610766576040526044358060a01c610766576060525f5433186107665760066004356020525f5260405f2060405181556060516001820155506004357fb4ed998abeea397c18e3b1fee36f5ba118c096e929f9d31f1d3e2d836dff029960405160805260605160a05260406080a200610762565b630ac1e51b81186107625760643610341761076657600161226052604036612280376101a656610762565b63dd95aad281186105bc57608436103417610766576044358060011c6107665761226052604036612280376101a6565b6367d20a5c81186107625734610766575f546040526001546060526002546080526040513318610766575f60076040516020525f5260405f20555f60076060516020525f5260405f20555f60076080516020525f5260405f205560035460a05260045460c05260055460e0526001600760a0516020525f5260405f20556002600760c0516020525f5260405f20556004600760e0516020525f5260405f205560a0515f5560c05160015560e0516002557fe0f6eb67e95817aeae79003a3bb27a26759368de7d4ce19e604f2c26e48a3b5b60a0516101005260c0516101205260e051610140526060610100a100610762565b63579f1ece811861076257606436103417610766576004358060a01c610766576040526024358060a01c610766576060526044358060a01c610766576080525f543318610766576060516040511461076657608051604051146107665760805160605114610766576040516003556060516004556080516005557faab5f73e74c83b7bbe381c885335c8bc6f8638e2eee26576cf80844c7ca0f11b60405160a05260605160c05260805160e052606060a0a1005b5f5ffd5b5f80fd058c009a06ae04b3001801280762076200fc05618419077e81141820a16576797065728300030a001500000000000000000000000071f718d3e4d1449d1502a6a7595eb84ebccb16830000000000000000000000004eeb3ba4f221ca16ed4a0cc7254e2e32df948c5f000000000000000000000000467947ee34af926cf1dcac093870f613c96b1e0c0000000000000000000000002a3dd3eb832af982ec71669e178424b10dca2ede
Deployed Bytecode
0x5f3560e01c6002600a820660011b61076a01601e395f51565b6354fd4d50811861076257346107665760208060805260056040527f312e302e3100000000000000000000000000000000000000000000000000000060605260408160800181518152602082015160208201528051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506080f3610762565b63a5de361981186100c15734610766575f5460405260015460605260025460805260606040f35b63b06565ad8118610762576024361034176107665760066004356020525f5260405f20805460405260018101546060525060406040f3610762565b630a501674811861076257346107665760035460405260045460605260055460805260606040f3610762565b6392e423b5811861016357602436103417610766576004358060a01c6107665760405260076040516020525f5260405f205460605260206060f35b639b209ca781186107625760c436103417610766576044358060011c61076657612260526064358060201c61076657612280526084358060a01c610766576122a0525b60243560040160088135116107665780355f816008811161076657801561021a57905b61044081026060018160051b602086010135602086010180358060a01c61076657825260208101358101610400813511610766576020813501602084018183823750505050506001018181186101c9575b50508060405250506007336020525f5260405f20546122c0526122c0511561076657612280516122e0526122a05161230052612300516102735760066004356020525f5260405f2080546122e052600181015461230052505b612300511561076657602061077e5f395f5163240ff3786147c05260806122e0516147e05261230051614800526122605161482052806148405263f6caf91061232452600460406122c05161234452806123645280612344015f6040518083528060051b5f826008811161076657801561035e57905b828160051b60208801015261044081026060018360208801016040825182528060208301526020830181830160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f82516020010116905090508101905090509050830192506001018181186102e9575b505082016020019150509050810190500161232052612320816147e00160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f825160200101169050905081015050803b15610766575f6147c06125246147dc5f855af16103d2573d5f5f3e3d5ffd5b506122c0516004357f241535e867e2e70c9b90c78bf421cd608d5aa2fee669e7f606763ae02e0890b76020806123205280612320015f6040518083528060051b5f826008811161076657801561049957905b828160051b60208801015261044081026060018360208801016040825182528060208301526020830181830160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190509050905083019250600101818118610424575b50508201602001915050905081019050612320a300610762565b63c0db068381186104d1573461076657602061077e60403960206040f35b635b6bb17b811861076257606436103417610766576024358060201c610766576040526044358060a01c610766576060525f5433186107665760066004356020525f5260405f2060405181556060516001820155506004357fb4ed998abeea397c18e3b1fee36f5ba118c096e929f9d31f1d3e2d836dff029960405160805260605160a05260406080a200610762565b630ac1e51b81186107625760643610341761076657600161226052604036612280376101a656610762565b63dd95aad281186105bc57608436103417610766576044358060011c6107665761226052604036612280376101a6565b6367d20a5c81186107625734610766575f546040526001546060526002546080526040513318610766575f60076040516020525f5260405f20555f60076060516020525f5260405f20555f60076080516020525f5260405f205560035460a05260045460c05260055460e0526001600760a0516020525f5260405f20556002600760c0516020525f5260405f20556004600760e0516020525f5260405f205560a0515f5560c05160015560e0516002557fe0f6eb67e95817aeae79003a3bb27a26759368de7d4ce19e604f2c26e48a3b5b60a0516101005260c0516101205260e051610140526060610100a100610762565b63579f1ece811861076257606436103417610766576004358060a01c610766576040526024358060a01c610766576060526044358060a01c610766576080525f543318610766576060516040511461076657608051604051146107665760805160605114610766576040516003556060516004556080516005557faab5f73e74c83b7bbe381c885335c8bc6f8638e2eee26576cf80844c7ca0f11b60405160a05260605160c05260805160e052606060a0a1005b5f5ffd5b5f80fd058c009a06ae04b3001801280762076200fc05610000000000000000000000002a3dd3eb832af982ec71669e178424b10dca2ede
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000071f718d3e4d1449d1502a6a7595eb84ebccb16830000000000000000000000004eeb3ba4f221ca16ed4a0cc7254e2e32df948c5f000000000000000000000000467947ee34af926cf1dcac093870f613c96b1e0c0000000000000000000000002a3dd3eb832af982ec71669e178424b10dca2ede
-----Decoded View---------------
Arg [0] : _admins (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
Arg [1] : _polygon_zkevm_bridge (address): 0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 00000000000000000000000071f718d3e4d1449d1502a6a7595eb84ebccb1683
Arg [1] : 0000000000000000000000004eeb3ba4f221ca16ed4a0cc7254e2e32df948c5f
Arg [2] : 000000000000000000000000467947ee34af926cf1dcac093870f613c96b1e0c
Arg [3] : 0000000000000000000000002a3dd3eb832af982ec71669e178424b10dca2ede
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.