S Price: $0.571603 (+10.30%)

Contract

0x4656d8088521Ae95AD9602c36E6DE8ABe84DF0EE

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Commit_transfer_...15785232024-12-25 16:52:4737 days ago1735145567IN
0x4656d808...Be84DF0EE
0 S0.000046271

Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Layer Zero Bridge - Curve DAO Token

Compiler Version
vyper:0.3.10

Optimization Enabled:
N/A

Other Settings:
default evmVersion, MIT license

Contract Source Code (Vyper language format)

# @version 0.3.10
"""
@title Layer Zero Bridge - Curve DAO Token
@license MIT
@author Curve Finance
"""

interface ERC20:
    def transferFrom(_from: address, _to: address, _value: uint256) -> bool: nonpayable
    def transfer(_to: address, _value: uint256): nonpayable
    def burn(_value: uint256) -> bool: nonpayable

interface LZEndpoint:
    def send(
        _dst_chain_id: uint16,
        _destination: Bytes[40],
        _payload: Bytes[64],
        _refund_address: address,
        _zro_payment_address: address,
        _adapter_params: Bytes[34]
    ): payable
    def estimateFees(
        _dst_chain_id: uint16,
        _user_application: address,
        _payload: Bytes[64],
        _pay_in_zro: bool,
        _adapter_params: Bytes[34]
    ) -> uint256: view

interface Minter:
    def mint(_gauge: address): nonpayable


event BridgeSent:
    receiver: indexed(address)
    amount: uint256

event BridgeReceived:
    receiver: indexed(address)
    amount: uint256

event Delayed:
    nonce: indexed(uint64)
    receiver: indexed(address)
    amount: uint256

event SetPeriod:
    period: uint256

event SetLimit:
    limit: uint256

event SetGasLimit:
    gas_limit: uint256

event SetKilled:
    killed: bool

event TransferOwnership:
    owner: address


TOKEN: public(immutable(address))
MINTER: public(immutable(address))
LZ_ENDPOINT: public(immutable(address))

TOKEN_MIRROR: immutable(address)  # token address on the other side of the bridge
LZ_CHAIN_ID: immutable(uint16)
LZ_ADDRESS: immutable(Bytes[40])
KECCAK_LZ_ADDRESS: immutable(bytes32)


integrate_fraction: public(HashMap[address, uint256])

cache: uint256  # [last timestamp uint64][last available uint192]
limit: public(uint256)
period: public(uint256)

delayed: public(HashMap[uint64, bytes32])

gas_limit: public(uint256)
is_killed: public(bool)

owner: public(address)
future_owner: public(address)


@external
def __init__(
    _period: uint256,
    _limit: uint256,
    _gas_limit: uint256,
    _token: address,
    _minter: address,
    _lz_endpoint: address,
    _token_mirror: address,
    _lz_chain_id: uint16
):
    assert _period != 0

    self.period = _period
    log SetPeriod(_period)

    self.limit = _limit
    log SetLimit(_limit)

    self.gas_limit = _gas_limit
    log SetGasLimit(_gas_limit)

    self.owner = msg.sender
    log TransferOwnership(msg.sender)

    TOKEN = _token
    MINTER = _minter
    LZ_ENDPOINT = _lz_endpoint

    TOKEN_MIRROR = _token_mirror
    LZ_CHAIN_ID = _lz_chain_id
    LZ_ADDRESS = concat(
        slice(convert(self, bytes32), 12, 20), slice(convert(self, bytes32), 12, 20)
    )
    KECCAK_LZ_ADDRESS = keccak256(LZ_ADDRESS)


@payable
@external
def bridge(_receiver: address, _amount: uint256, _refund: address = msg.sender):
    """
    @notice Bridge tokens.
    """
    assert not self.is_killed
    assert _receiver not in [empty(address), TOKEN_MIRROR] and _amount != 0

    assert ERC20(TOKEN).transferFrom(msg.sender, self, _amount)
    assert ERC20(TOKEN).burn(_amount)

    LZEndpoint(LZ_ENDPOINT).send(
        LZ_CHAIN_ID,
        LZ_ADDRESS,
        _abi_encode(_receiver, _amount),
        _refund,
        empty(address),
        concat(b"\x00\x01", convert(self.gas_limit, bytes32)),
        value=msg.value
    )

    log BridgeSent(_receiver, _amount)


@external
def lzReceive(_lz_chain_id: uint16, _lz_address: Bytes[40], _nonce: uint64, _payload: Bytes[64]):
    assert msg.sender == LZ_ENDPOINT

    assert _lz_chain_id == LZ_CHAIN_ID
    assert keccak256(_lz_address) == KECCAK_LZ_ADDRESS

    receiver: address = empty(address)
    amount: uint256 = empty(uint256)
    receiver, amount = _abi_decode(_payload, (address, uint256))

    if receiver in [empty(address), TOKEN] or amount == 0:
        # safeguard
        return

    limit: uint256 = self.limit

    if self.is_killed or amount > limit:
        self.delayed[_nonce] = keccak256(_abi_encode(block.timestamp, receiver, amount))
        log Delayed(_nonce, receiver, amount)
        return

    cache: uint256 = self.cache
    ts: uint256 = cache >> 192
    available: uint256 = cache & convert(max_value(uint192), uint256)

    period: uint256 = self.period

    if period <= (block.timestamp - ts):
        available = limit
    else:
        # regenerate amount which is available to mint at a rate of (limit / period)
        available = min(available + (limit * (block.timestamp - ts) / period), limit)

    if amount > available:
        remainder: uint256 = amount - available
        amount = available
        available = 0

        # delay the remainder
        self.delayed[_nonce] = keccak256(_abi_encode(block.timestamp, receiver, remainder))
        log Delayed(_nonce, receiver, remainder)
    else:
        available -= amount

    self.cache = (block.timestamp << 192) + available

    if amount != 0:
        self.integrate_fraction[self] += amount

        Minter(MINTER).mint(self)
        ERC20(TOKEN).transfer(receiver, amount)
        log BridgeReceived(receiver, amount)


@external
def retry(_nonce: uint64, _timestamp: uint256, _receiver: address, _amount: uint256):
    """
    @notice Retry a delayed bridge attempt.
    """
    assert not self.is_killed or msg.sender == self.owner
    assert self.delayed[_nonce] == keccak256(_abi_encode(_timestamp, _receiver, _amount))

    self.delayed[_nonce] = empty(bytes32)

    period: uint256 = self.period
    assert block.timestamp >= _timestamp + period

    cache: uint256 = self.cache
    ts: uint256 = cache >> 192
    available: uint256 = cache & convert(max_value(uint192), uint256)

    limit: uint256 = self.limit

    if period <= (block.timestamp - ts):
        available = limit
    else:
        available = min(available + (limit * (block.timestamp - ts) / period), limit)

    amount: uint256 = _amount
    if amount > available:
        remainder: uint256 = amount - available
        amount = available
        available = 0

        # delay the remainder with the waiting period removed
        self.delayed[_nonce] = keccak256(_abi_encode(_timestamp, _receiver, remainder))
        log Delayed(_nonce, _receiver, remainder)
    else:
        available -= amount

    self.cache = (block.timestamp << 192) + available

    if amount != 0:
        self.integrate_fraction[self] += amount

        Minter(MINTER).mint(self)
        ERC20(TOKEN).transfer(_receiver, amount)
        log BridgeReceived(_receiver, amount)


@view
@external
def quote() -> uint256:
    """
    @notice Quote the cost to bridge tokens.
    """
    return LZEndpoint(LZ_ENDPOINT).estimateFees(
        LZ_CHAIN_ID,
        self,
        _abi_encode(self, block.timestamp),
        False,
        concat(b"\x00\x01", convert(self.gas_limit, bytes32)),
    )


@view
@external
def available() -> uint256:
    """
    @notice Query the available amount this bridge can currently mint.
    """
    cache: uint256 = self.cache
    ts: uint256 = cache >> 192
    available: uint256 = cache & convert(max_value(uint192), uint256)

    limit: uint256 = self.limit
    period: uint256 = self.period

    if period <= (block.timestamp - ts):
        available = limit
    else:
        # regenerate amount which is available to mint at a rate of (limit / period)
        available = min(available + (limit * (block.timestamp - ts) / period), limit)

    return available


@external
def user_checkpoint(_user: address) -> bool:
    return True


@external
def set_period(_period: uint256):
    """
    @notice Set the bridge limit period.
    """
    assert msg.sender == self.owner
    assert _period != 0

    self.period = _period
    log SetPeriod(_period)


@external
def set_limit(_limit: uint256):
    """
    @notice Set the bridge limit.
    """
    assert msg.sender == self.owner

    self.limit = _limit
    log SetLimit(_limit)


@external
def set_gas_limit(_gas_limit: uint256):
    """
    @notice Set the gas limit for bridge execution.
    """
    assert msg.sender == self.owner

    self.gas_limit = _gas_limit
    log SetGasLimit(_gas_limit)


@external
def set_killed(_killed: bool):
    assert msg.sender == self.owner

    self.is_killed = _killed
    log SetKilled(_killed)


@external
def commit_transfer_ownership(_future_owner: address):
    """
    @notice Transfer ownership to `_future_owner`
    @param _future_owner The account to commit as the future owner
    """
    assert msg.sender == self.owner  # dev: only owner

    self.future_owner = _future_owner


@external
def accept_transfer_ownership():
    """
    @notice Accept the transfer of ownership
    @dev Only the committed future owner can call this function
    """
    assert msg.sender == self.future_owner  # dev: only future owner

    self.owner = msg.sender
    log TransferOwnership(msg.sender)

Contract Security Audit

Contract ABI

[{"name":"BridgeSent","inputs":[{"name":"receiver","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"BridgeReceived","inputs":[{"name":"receiver","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Delayed","inputs":[{"name":"nonce","type":"uint64","indexed":true},{"name":"receiver","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetPeriod","inputs":[{"name":"period","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetLimit","inputs":[{"name":"limit","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetGasLimit","inputs":[{"name":"gas_limit","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetKilled","inputs":[{"name":"killed","type":"bool","indexed":false}],"anonymous":false,"type":"event"},{"name":"TransferOwnership","inputs":[{"name":"owner","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_period","type":"uint256"},{"name":"_limit","type":"uint256"},{"name":"_gas_limit","type":"uint256"},{"name":"_token","type":"address"},{"name":"_minter","type":"address"},{"name":"_lz_endpoint","type":"address"},{"name":"_token_mirror","type":"address"},{"name":"_lz_chain_id","type":"uint16"}],"outputs":[]},{"stateMutability":"payable","type":"function","name":"bridge","inputs":[{"name":"_receiver","type":"address"},{"name":"_amount","type":"uint256"}],"outputs":[]},{"stateMutability":"payable","type":"function","name":"bridge","inputs":[{"name":"_receiver","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_refund","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"lzReceive","inputs":[{"name":"_lz_chain_id","type":"uint16"},{"name":"_lz_address","type":"bytes"},{"name":"_nonce","type":"uint64"},{"name":"_payload","type":"bytes"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"retry","inputs":[{"name":"_nonce","type":"uint64"},{"name":"_timestamp","type":"uint256"},{"name":"_receiver","type":"address"},{"name":"_amount","type":"uint256"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"quote","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"available","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"user_checkpoint","inputs":[{"name":"_user","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"set_period","inputs":[{"name":"_period","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_limit","inputs":[{"name":"_limit","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_gas_limit","inputs":[{"name":"_gas_limit","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_killed","inputs":[{"name":"_killed","type":"bool"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"commit_transfer_ownership","inputs":[{"name":"_future_owner","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"accept_transfer_ownership","inputs":[],"outputs":[]},{"stateMutability":"view","type":"function","name":"TOKEN","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"MINTER","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"LZ_ENDPOINT","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"integrate_fraction","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"limit","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"period","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"delayed","inputs":[{"name":"arg0","type":"uint64"}],"outputs":[{"name":"","type":"bytes32"}]},{"stateMutability":"view","type":"function","name":"gas_limit","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"is_killed","inputs":[],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"future_owner","inputs":[],"outputs":[{"name":"","type":"address"}]}]

6111585150346102905760206113635f395f518060a01c6102905760405260206113835f395f518060a01c6102905760605260206113a35f395f518060a01c6102905760805260206113c35f395f518060a01c6102905760a05260206113e35f395f518060101c6102905760c05260206113035f395f51156102905760206113035f395f516003557f1445a8659aa0e3feb1c4a3ea8344a4e720c388d7ce59ab4824248fbc3bd1ef94602061130360e039602060e0a160206113235f395f516002557f479881bf41e329f328c21c2cbb11514b05a021cd33ea4e5a576ea6bc03874fd6602061132360e039602060e0a160206113435f395f516005557ff5bdeca176beddded5a1132996e4edf0d16be5100214b17d8bada54bf8676297602061134360e039602060e0a1336007557fcfaaa26691e16e66e73290fc725eee1a6b4e0e693a1640484937aac25ffb55a43360e052602060e0a160405161105852606051611078526080516110985260a0516110b85260c0516110d8525f3060e05260e0600c8101805161012052506014610100526101009050805160208201836101c001815181525050808301925050503061014052610140600c8101805161018052506014610160526101609050805160208201836101c00181518152505080830192505050806101a0526101a0905060208151015f81601f0160051c6003811161029057801561022a57905b8060051b8401518160051b60a001611058015260010181811861020c575b5050505060206110f851015f81601f0160051c6003811161029057801561026c57905b8060051b60a00161105801518160051b60e0015260010181811861024d575b50505060e08051602082012090506111585261105861029461000039611178610000f35b5f80fd5f3560e01c60026017820660011b61102a01601e395f51565b6382bfefc88118610036573461102657602061105860403960206040f35b63fe6d81248118611022573461102657602061107860403960206040f3611022565b63cd4d1c648118611022573461102657602061109860403960206040f3611022565b630940070781186100b457602436103417611026576004358060a01c611026576040525f6040516020525f5260405f205460605260206060f35b6348a0d754811861102257346110265760015460405260405160c01c60605277ffffffffffffffffffffffffffffffffffffffffffffffff6040511660805260025460a05260035460c05242606051808203828111611026579050905060c051111561017c5760805160a051426060518082038281116110265790509050808202811583838304141715611026579050905060c05180156110265780820490509050808201828110611026579050905060a05180828118828410021890509050608052610183565b60a0516080525b60206080f3611022565b63a4d66daf811861102257346110265760025460405260206040f3611022565b63ef78d4fd811861102257346110265760035460405260206040f3611022565b639155ba68811861102257602436103417611026576004358060401c6110265760405260046040516020525f5260405f205460605260206060f3611022565b63d4180b58811861022857346110265760055460405260206040f35b638da5cb5b811861102257346110265760075460405260206040f3611022565b639c868ac0811861102257346110265760065460405260206040f3611022565b631ec0cdc1811861028457346110265760085460405260206040f35b6349e33d73811861102257602436103417611026576007543318611026576004356005557ff5bdeca176beddded5a1132996e4edf0d16be5100214b17d8bada54bf867629760043560405260206040a100611022565b63c3de453d8118611022576043361115611026573360605261031e56611022565b636aea40ed81186105bc576063361115611026576044358060a01c611026576060525b6004358060a01c6110265760405260065461102657604051801561034d5760206110b85f395f5181141561034f565b5f5b905061035b575f610361565b60243515155b156110265760206110585f395f516323b872dd6080523360a0523060c05260243560e052602060806064609c5f855af161039d573d5f5f3e3d5ffd5b60203d10611026576080518060011c6110265761010052610100905051156110265760206110585f395f516342966c6860805260243560a052602060806024609c5f855af16103ee573d5f5f3e3d5ffd5b60203d10611026576080518060011c6110265760c05260c0905051156110265760206110985f395f5163c58031006101805260c060206110d86101a039806101c052806101a001602060206110f85f395f5101806110f88339508051806020830101601f825f03163682375050601f19601f82516020010116905081019050806101e05260405160a05260243560c05260406080526080816101a00160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f825160200101169050905081019050606051610200525f6102205280610240525f600260e0527e010000000000000000000000000000000000000000000000000000000000006101005260e080516020820183610140018151815250508083019250505060055481610140015260208101905080610120526101209050816101a00160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f825160200101169050905081015050803b15611026575f6101806101e461019c34855af161058a573d5f5f3e3d5ffd5b506040517f777da483241f48da719a29340d31b6a40d4e1f4596cab4c19b6c9483d7bc090b60243560805260206080a2005b63e5ea47b88118611022573461102657600854331861102657336007557fcfaaa26691e16e66e73290fc725eee1a6b4e0e693a1640484937aac25ffb55a43360405260206040a100611022565b621d356781186110225760c436103417611026576004358060101c611026576040526024356004016028813511611026576020813501808260603750506044358060401c6110265760c0526064356004016040813511611026576020813501808260e037505060206110985f395f5133186110265760206110d85f395f51604051186110265760206111585f395f51606051608020186110265760403661014037604060e0511861102657610100518060a01c6110265761018052610120516101a0526101808051610140526020810151610160525061014051806106ef5760016106fc565b60206110585f395f518118155b905061070c57610160511561070f565b60015b1561071957610a2a565b6002546101805260065461073557610180516101605111610738565b60015b156107ae57426101c052610140516101e052610160516102005260606101a0526101a0805160208201209050600460c0516020525f5260405f20556101405160c0517f2f9d03e55b4e245db68169fb64481b4794dd8a7f22fb8f4a5b99c1c6a6f743c5610160516101a05260206101a0a3610a2a565b6001546101a0526101a05160c01c6101c05277ffffffffffffffffffffffffffffffffffffffffffffffff6101a051166101e05260035461020052426101c051808203828111611026579050905061020051111561086e576101e05161018051426101c051808203828111611026579050905080820281158383830414171561102657905090506102005180156110265780820490509050808201828110611026579050905061018051808281188284100218905090506101e052610877565b610180516101e0525b6101e05161016051116108a3576101e0516101605180820382811161102657905090506101e052610937565b610160516101e0518082038281116110265790509050610220526101e051610160525f6101e05242610260526101405161028052610220516102a052606061024052610240805160208201209050600460c0516020525f5260405f20556101405160c0517f2f9d03e55b4e245db68169fb64481b4794dd8a7f22fb8f4a5b99c1c6a6f743c561022051610240526020610240a35b4260c01b6101e05180820182811061102657905090506001556101605115610a2a575f306020525f5260405f20805461016051808201828110611026579050905081555060206110785f395f51636a627842610220523061024052803b15611026575f610220602461023c5f855af16109b2573d5f5f3e3d5ffd5b5060206110585f395f5163a9059cbb6102205261014051610240526101605161026052803b15611026575f610220604461023c5f855af16109f5573d5f5f3e3d5ffd5b50610140517f7ac74faccfcb8a61818a637e0b0c68069a699338973a73c9a47e9f55cede536861016051610220526020610220a25b00611022565b63b5fb0b42811861102257608436103417611026576004358060401c611026576040526044358060a01c61102657606052600654610a6f576001610a76565b6007543318155b156110265760243560a05260605160c05260643560e0526060608052608080516020820120905060046040516020525f5260405f205418611026575f60046040516020525f5260405f2055600354608052602435608051808201828110611026579050905042106110265760015460a05260a05160c01c60c05277ffffffffffffffffffffffffffffffffffffffffffffffff60a0511660e052600254610100524260c05180820382811161102657905090506080511115610b965760e051610100514260c05180820382811161102657905090508082028115838383041417156110265790509050608051801561102657808204905090508082018281106110265790509050610100518082811882841002189050905060e052610b9e565b6101005160e0525b6064356101205260e0516101205111610bce5760e05161012051808203828111611026579050905060e052610c5f565b6101205160e05180820382811161102657905090506101405260e051610120525f60e052602435610180526060516101a052610140516101c05260606101605261016080516020820120905060046040516020525f5260405f20556060516040517f2f9d03e55b4e245db68169fb64481b4794dd8a7f22fb8f4a5b99c1c6a6f743c561014051610160526020610160a35b4260c01b60e05180820182811061102657905090506001556101205115610d4f575f306020525f5260405f20805461012051808201828110611026579050905081555060206110785f395f51636a627842610140523061016052803b15611026575f610140602461015c5f855af1610cd9573d5f5f3e3d5ffd5b5060206110585f395f5163a9059cbb61014052606051610160526101205161018052803b15611026575f610140604461015c5f855af1610d1b573d5f5f3e3d5ffd5b506060517f7ac74faccfcb8a61818a637e0b0c68069a699338973a73c9a47e9f55cede536861012051610140526020610140a25b00611022565b63999b93af8118611022573461102657602060206110985f395f516340a7bb106101405260a060206110d8610160393061018052806101a052306060524260805260406040526040816101600160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190505f6101c052806101e0525f600260a0527e0100000000000000000000000000000000000000000000000000000000000060c05260a08051602082018361010001815181525050808301925050506005548161010001526020810190508060e05260e09050816101600160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f825160200101169050905081015050602061014061016461015c845afa610e91573d5f5f3e3d5ffd5b60203d10611026576101409050f3611022565b634b820093811861102257602436103417611026576004358060a01c61102657604052600160605260206060f3611022565b637ff4ee4b8118611022576024361034176110265760075433186110265760043515611026576004356003557f1445a8659aa0e3feb1c4a3ea8344a4e720c388d7ce59ab4824248fbc3bd1ef9460043560405260206040a100611022565b63be028426811861102257602436103417611026576007543318611026576004356002557f479881bf41e329f328c21c2cbb11514b05a021cd33ea4e5a576ea6bc03874fd660043560405260206040a100611022565b6390b22997811861102257602436103417611026576004358060011c611026576040526007543318611026576040516006557ff6a23ecf31263066d4cc1ac21837c1714818045ecc5c0dd89f279e0bd4b7ef8760405160605260206060a100611022565b636b441a40811861102257602436103417611026576004358060a01c61102657604052600754331861102657604051600855005b5f5ffd5b5f80fd0a300d55018d102201ad001801cd0ea410220fee02da0268020c10220f8a02fb0f3406090058007a0ed6024810228419105881182e190120a16576797065728300030a001700000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a12000000000000000000000000009f8d940ead55853c51045bcbfe67341b686c0710000000000000000000000000094ad026643994c8fb2136ec912d508b15fe0e5000000000000000000000000b6319cc6c8c27a8f5daf0dd3df91ea35c4720dd7000000000000000000000000d533a949740bb3306d119cc777fa900ba034cd520000000000000000000000000000000000000000000000000000000000000065

Deployed Bytecode

0x5f3560e01c60026017820660011b61102a01601e395f51565b6382bfefc88118610036573461102657602061105860403960206040f35b63fe6d81248118611022573461102657602061107860403960206040f3611022565b63cd4d1c648118611022573461102657602061109860403960206040f3611022565b630940070781186100b457602436103417611026576004358060a01c611026576040525f6040516020525f5260405f205460605260206060f35b6348a0d754811861102257346110265760015460405260405160c01c60605277ffffffffffffffffffffffffffffffffffffffffffffffff6040511660805260025460a05260035460c05242606051808203828111611026579050905060c051111561017c5760805160a051426060518082038281116110265790509050808202811583838304141715611026579050905060c05180156110265780820490509050808201828110611026579050905060a05180828118828410021890509050608052610183565b60a0516080525b60206080f3611022565b63a4d66daf811861102257346110265760025460405260206040f3611022565b63ef78d4fd811861102257346110265760035460405260206040f3611022565b639155ba68811861102257602436103417611026576004358060401c6110265760405260046040516020525f5260405f205460605260206060f3611022565b63d4180b58811861022857346110265760055460405260206040f35b638da5cb5b811861102257346110265760075460405260206040f3611022565b639c868ac0811861102257346110265760065460405260206040f3611022565b631ec0cdc1811861028457346110265760085460405260206040f35b6349e33d73811861102257602436103417611026576007543318611026576004356005557ff5bdeca176beddded5a1132996e4edf0d16be5100214b17d8bada54bf867629760043560405260206040a100611022565b63c3de453d8118611022576043361115611026573360605261031e56611022565b636aea40ed81186105bc576063361115611026576044358060a01c611026576060525b6004358060a01c6110265760405260065461102657604051801561034d5760206110b85f395f5181141561034f565b5f5b905061035b575f610361565b60243515155b156110265760206110585f395f516323b872dd6080523360a0523060c05260243560e052602060806064609c5f855af161039d573d5f5f3e3d5ffd5b60203d10611026576080518060011c6110265761010052610100905051156110265760206110585f395f516342966c6860805260243560a052602060806024609c5f855af16103ee573d5f5f3e3d5ffd5b60203d10611026576080518060011c6110265760c05260c0905051156110265760206110985f395f5163c58031006101805260c060206110d86101a039806101c052806101a001602060206110f85f395f5101806110f88339508051806020830101601f825f03163682375050601f19601f82516020010116905081019050806101e05260405160a05260243560c05260406080526080816101a00160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f825160200101169050905081019050606051610200525f6102205280610240525f600260e0527e010000000000000000000000000000000000000000000000000000000000006101005260e080516020820183610140018151815250508083019250505060055481610140015260208101905080610120526101209050816101a00160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f825160200101169050905081015050803b15611026575f6101806101e461019c34855af161058a573d5f5f3e3d5ffd5b506040517f777da483241f48da719a29340d31b6a40d4e1f4596cab4c19b6c9483d7bc090b60243560805260206080a2005b63e5ea47b88118611022573461102657600854331861102657336007557fcfaaa26691e16e66e73290fc725eee1a6b4e0e693a1640484937aac25ffb55a43360405260206040a100611022565b621d356781186110225760c436103417611026576004358060101c611026576040526024356004016028813511611026576020813501808260603750506044358060401c6110265760c0526064356004016040813511611026576020813501808260e037505060206110985f395f5133186110265760206110d85f395f51604051186110265760206111585f395f51606051608020186110265760403661014037604060e0511861102657610100518060a01c6110265761018052610120516101a0526101808051610140526020810151610160525061014051806106ef5760016106fc565b60206110585f395f518118155b905061070c57610160511561070f565b60015b1561071957610a2a565b6002546101805260065461073557610180516101605111610738565b60015b156107ae57426101c052610140516101e052610160516102005260606101a0526101a0805160208201209050600460c0516020525f5260405f20556101405160c0517f2f9d03e55b4e245db68169fb64481b4794dd8a7f22fb8f4a5b99c1c6a6f743c5610160516101a05260206101a0a3610a2a565b6001546101a0526101a05160c01c6101c05277ffffffffffffffffffffffffffffffffffffffffffffffff6101a051166101e05260035461020052426101c051808203828111611026579050905061020051111561086e576101e05161018051426101c051808203828111611026579050905080820281158383830414171561102657905090506102005180156110265780820490509050808201828110611026579050905061018051808281188284100218905090506101e052610877565b610180516101e0525b6101e05161016051116108a3576101e0516101605180820382811161102657905090506101e052610937565b610160516101e0518082038281116110265790509050610220526101e051610160525f6101e05242610260526101405161028052610220516102a052606061024052610240805160208201209050600460c0516020525f5260405f20556101405160c0517f2f9d03e55b4e245db68169fb64481b4794dd8a7f22fb8f4a5b99c1c6a6f743c561022051610240526020610240a35b4260c01b6101e05180820182811061102657905090506001556101605115610a2a575f306020525f5260405f20805461016051808201828110611026579050905081555060206110785f395f51636a627842610220523061024052803b15611026575f610220602461023c5f855af16109b2573d5f5f3e3d5ffd5b5060206110585f395f5163a9059cbb6102205261014051610240526101605161026052803b15611026575f610220604461023c5f855af16109f5573d5f5f3e3d5ffd5b50610140517f7ac74faccfcb8a61818a637e0b0c68069a699338973a73c9a47e9f55cede536861016051610220526020610220a25b00611022565b63b5fb0b42811861102257608436103417611026576004358060401c611026576040526044358060a01c61102657606052600654610a6f576001610a76565b6007543318155b156110265760243560a05260605160c05260643560e0526060608052608080516020820120905060046040516020525f5260405f205418611026575f60046040516020525f5260405f2055600354608052602435608051808201828110611026579050905042106110265760015460a05260a05160c01c60c05277ffffffffffffffffffffffffffffffffffffffffffffffff60a0511660e052600254610100524260c05180820382811161102657905090506080511115610b965760e051610100514260c05180820382811161102657905090508082028115838383041417156110265790509050608051801561102657808204905090508082018281106110265790509050610100518082811882841002189050905060e052610b9e565b6101005160e0525b6064356101205260e0516101205111610bce5760e05161012051808203828111611026579050905060e052610c5f565b6101205160e05180820382811161102657905090506101405260e051610120525f60e052602435610180526060516101a052610140516101c05260606101605261016080516020820120905060046040516020525f5260405f20556060516040517f2f9d03e55b4e245db68169fb64481b4794dd8a7f22fb8f4a5b99c1c6a6f743c561014051610160526020610160a35b4260c01b60e05180820182811061102657905090506001556101205115610d4f575f306020525f5260405f20805461012051808201828110611026579050905081555060206110785f395f51636a627842610140523061016052803b15611026575f610140602461015c5f855af1610cd9573d5f5f3e3d5ffd5b5060206110585f395f5163a9059cbb61014052606051610160526101205161018052803b15611026575f610140604461015c5f855af1610d1b573d5f5f3e3d5ffd5b506060517f7ac74faccfcb8a61818a637e0b0c68069a699338973a73c9a47e9f55cede536861012051610140526020610140a25b00611022565b63999b93af8118611022573461102657602060206110985f395f516340a7bb106101405260a060206110d8610160393061018052806101a052306060524260805260406040526040816101600160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190505f6101c052806101e0525f600260a0527e0100000000000000000000000000000000000000000000000000000000000060c05260a08051602082018361010001815181525050808301925050506005548161010001526020810190508060e05260e09050816101600160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f825160200101169050905081015050602061014061016461015c845afa610e91573d5f5f3e3d5ffd5b60203d10611026576101409050f3611022565b634b820093811861102257602436103417611026576004358060a01c61102657604052600160605260206060f3611022565b637ff4ee4b8118611022576024361034176110265760075433186110265760043515611026576004356003557f1445a8659aa0e3feb1c4a3ea8344a4e720c388d7ce59ab4824248fbc3bd1ef9460043560405260206040a100611022565b63be028426811861102257602436103417611026576007543318611026576004356002557f479881bf41e329f328c21c2cbb11514b05a021cd33ea4e5a576ea6bc03874fd660043560405260206040a100611022565b6390b22997811861102257602436103417611026576004358060011c611026576040526007543318611026576040516006557ff6a23ecf31263066d4cc1ac21837c1714818045ecc5c0dd89f279e0bd4b7ef8760405160605260206060a100611022565b636b441a40811861102257602436103417611026576004358060a01c61102657604052600754331861102657604051600855005b5f5ffd5b5f80fd0a300d55018d102201ad001801cd0ea410220fee02da0268020c10220f8a02fb0f3406090058007a0ed60248102200000000000000000000000009f8d940ead55853c51045bcbfe67341b686c0710000000000000000000000000094ad026643994c8fb2136ec912d508b15fe0e5000000000000000000000000b6319cc6c8c27a8f5daf0dd3df91ea35c4720dd7000000000000000000000000d533a949740bb3306d119cc777fa900ba034cd52000000000000000000000000000000000000000000000000000000000000006500000000000000000000000000000000000000000000000000000000000000284656d8088521ae95ad9602c36e6de8abe84df0ee4656d8088521ae95ad9602c36e6de8abe84df0ee0000000000000000000000000000000000000000000000008426e47a40a05287e1211674d79870d6e8cfac292abdf6a544f0dcec60b4bb62

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

00000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a12000000000000000000000000009f8d940ead55853c51045bcbfe67341b686c0710000000000000000000000000094ad026643994c8fb2136ec912d508b15fe0e5000000000000000000000000b6319cc6c8c27a8f5daf0dd3df91ea35c4720dd7000000000000000000000000d533a949740bb3306d119cc777fa900ba034cd520000000000000000000000000000000000000000000000000000000000000065

-----Decoded View---------------
Arg [0] : _period (uint256): 86400
Arg [1] : _limit (uint256): 0
Arg [2] : _gas_limit (uint256): 500000
Arg [3] : _token (address): 0x09F8D940EAD55853c51045bcbfE67341B686C071
Arg [4] : _minter (address): 0x0094Ad026643994c8fB2136ec912D508B15fe0E5
Arg [5] : _lz_endpoint (address): 0xb6319cC6c8c27A8F5dAF0dD3DF91EA35C4720dd7
Arg [6] : _token_mirror (address): 0xD533a949740bb3306d119CC777fa900bA034cd52
Arg [7] : _lz_chain_id (uint16): 101

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000015180
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [2] : 000000000000000000000000000000000000000000000000000000000007a120
Arg [3] : 00000000000000000000000009f8d940ead55853c51045bcbfe67341b686c071
Arg [4] : 0000000000000000000000000094ad026643994c8fb2136ec912d508b15fe0e5
Arg [5] : 000000000000000000000000b6319cc6c8c27a8f5daf0dd3df91ea35c4720dd7
Arg [6] : 000000000000000000000000d533a949740bb3306d119cc777fa900ba034cd52
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000065


Block Transaction 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.