Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x2222280094128761043E1e2477a35496EbCb97eA
Balance 0 ETH
Nonce 1
Code Size 2592 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

2592 bytes
0x608060405260043610610020575f3560e01c80636f57caa51461018e575f5ffd5b3661018a57604051636f57caa560e01b8152336004820152738009480094a0abe9af54998f9c18a4eacfabc1be90636f57caa590602401602060405180830381865afa158015610072573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061009691906106f3565b1580156100b25750335f9081526020819052604090205460ff16155b15610125576100c0336101d0565b1580156100d3575066b1a2bc2ec5000034105b156101255760405162461bcd60e51b815260206004820152601f60248201527f4741535f41495244524f505f414d4f554e545f494e53554646494349454e540060448201526064015b60405180910390fd5b61012e336104d1565b478015610188576040515f90339083908381818185875af1925050503d805f8114610174576040519150601f19603f3d011682016040523d82523d5f602084013e610179565b606091505b5050905080610186575f5ffd5b505b005b5f5ffd5b348015610199575f5ffd5b506101bc6101a8366004610719565b5f6020819052908152604090205460ff1681565b604051901515815260200160405180910390f35b604080517e030100110100000000000000000000000000004e200100310200000000000060208201526503782dace9d960921b603a8201526001600160a01b038316604a80830191909152825180830390910181525f606a8301818152608a8401948590526307e65f1160e51b9094529278030100110100000000000000000000000000004e200100310292670de0b6b3a7640000929185917326da582889f59eaae9da1f063be0140cd93e6a4f9163fccbe220916102979161769a918790608e0161076d565b602060405180830381865afa9250505080156102d0575060408051601f3d908101601f191682019092526102cd918101906107a7565b60015b61031b575f15157f1d8086623c4498f9291905e60751e04b4e1f82c0fa9fb9f28715c8c14a7c96ae84886040516103089291906107be565b60405180910390a2505f95945050505050565b90508047101561036d5760405162461bcd60e51b815260206004820152601c60248201527f4252494447455f424552415f4645455f494e53554646494349454e5400000000604482015260640161011c565b6040805160018082528183019092525f916020808301908036833750508151919250506001600160801b038516613b4d60e11b179082905f906103b2576103b26107e0565b60209081029190910101526040516344d140db60e11b81527326da582889f59eaae9da1f063be0140cd93e6a4f906389a281b69084906103f89085908c906004016107f4565b5f604051808303818588803b15801561040f575f5ffd5b505af193505050508015610421575060015b61046d575f15157f1d8086623c4498f9291905e60751e04b4e1f82c0fa9fb9f28715c8c14a7c96ae85896040516104599291906107be565b60405180910390a2505f9695505050505050565b335f9081526020819052604090819020805460ff1916600190811790915590517f1d8086623c4498f9291905e60751e04b4e1f82c0fa9fb9f28715c8c14a7c96ae906104bc9087908b906107be565b60405180910390a25060019695505050505050565b6040805160e08101825261769a81526001600160a01b038316602080830191909152478284018190526060830181905283515f808252818401865260808501919091528451818152808401865260a08501528451818152928301855260c08401929092529251633b6f743b60e01b81527377b2043768d28e9c9ab44e1abfc95944bce5793190633b6f743b9061056d90859085906004016108cb565b6040805180830381865afa158015610587573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105ab91906108ee565b805190915083116105fe5760405162461bcd60e51b815260206004820152601c60248201527f4252494447455f574554485f4645455f494e53554646494349454e5400000000604482015260640161011c565b805161060a908461095d565b604083018190526103e890610621906103e3610976565b61062b919061098d565b606083015260405163c7c7f5b360e01b81527377b2043768d28e9c9ab44e1abfc95944bce579319063c7c7f5b390859061066d90869086908a906004016109ac565b5f604051808303818588803b158015610684575f5ffd5b505af1158015610696573d5f5f3e3d5ffd5b50505050604083810151606080860151835192835260208301526001600160a01b038816928201929092527f99a072328ea6cc303efb8a0c96ff991189806947051f2c24d128ebb2201fb80392500160405180910390a150505050565b5f60208284031215610703575f5ffd5b81518015158114610712575f5ffd5b9392505050565b5f60208284031215610729575f5ffd5b81356001600160a01b0381168114610712575f5ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b63ffffffff84168152606060208201525f61078b606083018561073f565b828103604084015261079d818561073f565b9695505050505050565b5f602082840312156107b7575f5ffd5b5051919050565b6001600160801b039290921682526001600160a01b0316602082015260400190565b634e487b7160e01b5f52603260045260245ffd5b604080825283519082018190525f9060208501906060840190835b8181101561082d57835183526020938401939092019160010161080f565b50506001600160a01b039490941660209390930192909252509092915050565b63ffffffff81511682526020810151602083015260408101516040830152606081015160608301525f608082015160e0608085015261088f60e085018261073f565b905060a083015184820360a08601526108a8828261073f565b91505060c083015184820360c08601526108c2828261073f565b95945050505050565b604081525f6108dd604083018561084d565b905082151560208301529392505050565b5f60408284031280156108ff575f5ffd5b506040805190810167ffffffffffffffff8111828210171561092f57634e487b7160e01b5f52604160045260245ffd5b604052825181526020928301519281019290925250919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561097057610970610949565b92915050565b808202811582820484141761097057610970610949565b5f826109a757634e487b7160e01b5f52601260045260245ffd5b500490565b608081525f6109be608083018661084d565b8451602084810191909152909401516040830152506001600160a01b039190911660609091015291905056fea26469706673582212203c6e03fcae0fd36b45ee5f35652cab42aad996a539542c6e9d60b10a063b895164736f6c634300081c0033

Verified Source Code Partial Match

Compiler: v0.8.28+commit.7893614a EVM: cancun Optimization: Yes (200 runs)
BerachainBridgeV2.sol 128 lines
/*
    Name: Berachain Mainnet
    RPC: https://berachain.leakedrpc.chipswap.org
    ChainID: 80094
    Symbol: BERA
    Swap: https://chipswap.org
    X: https://x.com/ChipSwap_EVM
    Telegram: https://t.me/ChipSwap_EVM

    BerachainBridgeV2: 0x2222280094128761043E1e2477a35496EbCb97eA

    Send $ETH to birdge your funds: 
        - You'll get a bit of $BERA as gas and the remaining will be $WETH
        - $WETH on Berachain: 0x2F6F07CDcf3588944Bf4C42aC74ff24bF56e7590

    The $BERA gas in Gas.zip bridge may be drained:
        - When $BERA drained, you need to bridge no less than 0.05 $ETH and we'll airdrop 0.01 $BERA to you as gas.
        - When $BERA available, you can bridge any amount you'd like. The bridge will work as V1.
*/

//SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.28;

contract BerachainBridgeV2 {
    event BERADeposit(bool indexed success, uint256 amount, address to);
    event WETHDeposited(uint256 amountLD, uint256 minAmountLD, address to);

    uint32 constant _dstEid = 30362;
    bytes constant _emptyData = new bytes(0);

    address constant _berachainBridgeV1 = 0x8009480094A0AbE9af54998F9c18a4EAcFaBc1BE;
    address constant _beraBridge = 0x26DA582889f59EaaE9dA1f063bE0140CD93E6a4f;
    address constant _wethBridge = 0x77b2043768d28E9C9aB44E1aBfC95944bcE57931;

    mapping(address => bool) public beraBridged;

    receive() external payable {
        if (!IBerachainBridge(_berachainBridgeV1).beraBridged(msg.sender) && !beraBridged[msg.sender]) {
            if (!_bridgeBERA(msg.sender) && msg.value < 50000000000000000) {
                revert("GAS_AIRDROP_AMOUNT_INSUFFICIENT");
            }
        }
        _bridgeWETH(msg.sender);

        uint256 selfBalance = address(this).balance;
        if (selfBalance > 0) {
            (bool success, ) = msg.sender.call{value: selfBalance}("");
            require(success);
        }
    }

    function _bridgeBERA(address to) private returns (bool bridged) {
        uint208 _optionsLeft = 0x00030100110100000000000000000000000000004e2001003102;
        uint128 _beraAmount = 1000000000000000000;

        bytes memory options = abi.encodePacked(_optionsLeft, _beraAmount, bytes32(uint256(uint160(to))));
        uint256 nativeFee;
        try IBERABridge(_beraBridge).quote(_dstEid, _emptyData, options) returns (uint256 nativeFee_) {
            nativeFee = nativeFee_;
        } catch {
            emit BERADeposit(false, _beraAmount, to);
            return false;
        }
        require(address(this).balance >= nativeFee, "BRIDGE_BERA_FEE_INSUFFICIENT");

        uint256[] memory depositParams = new uint256[](1);
        depositParams[0] = uint256(_dstEid) << 224 | uint224(_beraAmount);
        try IBERABridge(_beraBridge).sendDeposits{value: nativeFee}(depositParams, to) { } catch {
            emit BERADeposit(false, _beraAmount, to);
            return false;
        }

        beraBridged[msg.sender] = true;
        emit BERADeposit(true, _beraAmount, to);
        return true;
    }

    function _bridgeWETH(address to) private {
        uint256 selfBalance = address(this).balance;
        IWETHBridge.SendParam memory sendParam = IWETHBridge.SendParam({
            dstEid: _dstEid,
            to: bytes32(uint256(uint160(to))),
            amountLD: selfBalance,
            minAmountLD: selfBalance,
            extraOptions: _emptyData,
            composeMsg: _emptyData,
            oftCmd: _emptyData
        });
        IWETHBridge.MessagingFee memory messagingFee = IWETHBridge(_wethBridge).quoteSend(sendParam, false);
        require(selfBalance > messagingFee.nativeFee, "BRIDGE_WETH_FEE_INSUFFICIENT");
        sendParam.amountLD = selfBalance - messagingFee.nativeFee;
        sendParam.minAmountLD = sendParam.amountLD * 995 / 1000;

        IWETHBridge(_wethBridge).send{value: selfBalance}(sendParam, messagingFee, to);
        emit WETHDeposited(sendParam.amountLD, sendParam.minAmountLD, to);
    }
}

interface IBerachainBridge {
    function beraBridged(address user) external view returns (bool);
}

interface IBERABridge {
    function quote(uint32 dstEid, bytes calldata message, bytes memory options) external view returns (uint256 nativeFee);

    function sendDeposits(uint256[] calldata depositParams, address to) external payable;
}

interface IWETHBridge {
    struct SendParam {
        uint32 dstEid;
        bytes32 to;
        uint256 amountLD;
        uint256 minAmountLD;
        bytes extraOptions;
        bytes composeMsg;
        bytes oftCmd;
    }

    struct MessagingFee {
        uint256 nativeFee;
        uint256 lzTokenFee;
    }

    function quoteSend(SendParam calldata sendParam, bool payInLzToken) external view returns (MessagingFee memory);

    function send(SendParam calldata sendParam, MessagingFee calldata fee, address refundAddress) external payable;
}

Read Contract

beraBridged 0x6f57caa5 → bool

Recent Transactions

No transactions found for this address