ETH Price: $3,085.97 (-2.04%)

Contract

0xca098a0999762Cf81Cc8b5Ac3A6DF7e2bAED8aDa

Overview

ETH Balance

0 ETH

ETH Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

1 Internal Transaction found.

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
75014592025-08-03 18:04:30106 days ago1754244270  Contract Creation0 ETH

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BeraborrowDecoderAndSanitizer

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.21;

import {DecoderCustomTypes} from "src/interfaces/DecoderCustomTypes.sol";

contract BeraborrowDecoderAndSanitizer {
    // ========================================= ERRORS ==================================
    error BeraborrowDecoderAndSanitizer__PredepositLengthGtZero(); 
    error BeraborrowDecoderAndSanitizer__PayloadLengthGtZero(); 

    /// @dev we intentionally do not sanitize the hints here
    function openDenVault(DecoderCustomTypes.OpenDenVaultParams memory params)
        external
        pure
        virtual
        returns (bytes memory addressesFound)
    {
        if (params._preDeposit.length > 0) revert BeraborrowDecoderAndSanitizer__PredepositLengthGtZero();
        addressesFound = abi.encodePacked(params.denManager, params.collVault);
    }

    function adjustDenVault(DecoderCustomTypes.AdjustDenVaultParams memory params)
        external
        pure
        virtual
        returns (bytes memory addressesFound)
    {
        if (params._preDeposit.length > 0) revert BeraborrowDecoderAndSanitizer__PredepositLengthGtZero();
        addressesFound = abi.encodePacked(params.denManager, params.collVault);
    }

    function closeDenVault(
        address denManager,
        address collVault,
        uint256, /*minAssetsWithdrawn*/
        uint256, /*collIndex*/
        bool /*unwrap*/
    ) external pure virtual returns (bytes memory addressesFound) {
        addressesFound = abi.encodePacked(denManager, collVault);
    }

    // ========================================= Managed Vault Functions ==================================
    function deposit(uint256, /*assets*/ address receiver, DecoderCustomTypes.AddCollParams memory /*params*/ )
        external
        pure
        virtual
        returns (bytes memory addressesFound)
    {
        // upper hint and lower hint are addresses, but will not be sanitized
        addressesFound = abi.encodePacked(receiver);
    }

    function redeemIntent(uint256, /*shares*/ address receiver, address owner)
        external
        pure
        virtual
        returns (bytes memory addressesFound)
    {
        addressesFound = abi.encodePacked(receiver, owner);
    }

    function cancelWithdrawalIntent(uint256, /*epoch*/ uint256, /*sharesToCancel*/ address receiver)
        external
        pure
        virtual
        returns (bytes memory addressesFound)
    {
        addressesFound = abi.encodePacked(receiver);
    }

    function withdrawFromEpoch(
        uint256 /*epoch*/,
        address receiver,
        DecoderCustomTypes.ExternalRebalanceParams calldata unwrapParams
    ) external pure virtual returns (bytes memory addressesFound) {
        if (unwrapParams.payload.length > 0) revert BeraborrowDecoderAndSanitizer__PayloadLengthGtZero(); 
        addressesFound = abi.encodePacked(receiver, unwrapParams.swapper);  
    }
}

File 2 of 2 : DecoderCustomTypes.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.21;

contract DecoderCustomTypes {
    // ========================================= BALANCER =========================================
    struct JoinPoolRequest {
        address[] assets;
        uint256[] maxAmountsIn;
        bytes userData;
        bool fromInternalBalance;
    }

    struct ExitPoolRequest {
        address[] assets;
        uint256[] minAmountsOut;
        bytes userData;
        bool toInternalBalance;
    }

    enum SwapKind {
        GIVEN_IN,
        GIVEN_OUT
    }

    struct SingleSwap {
        bytes32 poolId;
        SwapKind kind;
        address assetIn;
        address assetOut;
        uint256 amount;
        bytes userData;
    }

    struct FundManagement {
        address sender;
        bool fromInternalBalance;
        address recipient;
        bool toInternalBalance;
    }

    // ========================================= UNISWAP V3 =========================================

    struct MintParams {
        address token0;
        address token1;
        uint24 fee;
        int24 tickLower;
        int24 tickUpper;
        uint256 amount0Desired;
        uint256 amount1Desired;
        uint256 amount0Min;
        uint256 amount1Min;
        address recipient;
        uint256 deadline;
    }

    struct IncreaseLiquidityParams {
        uint256 tokenId;
        uint256 amount0Desired;
        uint256 amount1Desired;
        uint256 amount0Min;
        uint256 amount1Min;
        uint256 deadline;
    }

    struct DecreaseLiquidityParams {
        uint256 tokenId;
        uint128 liquidity;
        uint256 amount0Min;
        uint256 amount1Min;
        uint256 deadline;
    }

    struct CollectParams {
        uint256 tokenId;
        address recipient;
        uint128 amount0Max;
        uint128 amount1Max;
    }

    struct ExactInputParams {
        bytes path;
        address recipient;
        uint256 deadline;
        uint256 amountIn;
        uint256 amountOutMinimum;
    }

    struct ExactInputParamsRouter02 {
        bytes path;
        address recipient;
        uint256 amountIn;
        uint256 amountOutMinimum;
    }

    struct PancakeSwapExactInputParams {
        bytes path;
        address recipient;
        uint256 amountIn;
        uint256 amountOutMinimum;
    }

    // ========================================= UNISWAP V4 =========================================
    
    struct SwapParams {
        /// Whether to swap token0 for token1 or vice versa
        bool zeroForOne;
        /// The desired input amount if negative (exactIn), or the desired output amount if positive (exactOut)
        int256 amountSpecified;
        /// The sqrt price at which, if reached, the swap will stop executing
        uint160 sqrtPriceLimitX96;
    }

    struct PoolKey {
        /// @notice The lower currency of the pool, sorted numerically
        address currency0;
        /// @notice The higher currency of the pool, sorted numerically
        address currency1;
        /// @notice The pool LP fee, capped at 1_000_000. If the highest bit is 1, the pool has a dynamic fee and must be exactly equal to 0x800000
        uint24 fee;
        /// @notice Ticks that involve positions must be a multiple of tick spacing
        int24 tickSpacing;
        /// @notice The hooks of the pool
        address hooks;
    }

    /// @dev comes from IV4 Router
    struct ExactInputSingleParams {
        PoolKey poolKey;
        bool zeroForOne;
        uint128 amountIn;
        uint128 amountOutMinimum;
        bytes hookData;
    }

     /// @notice Parameters for a single-hop exact-output swap
    struct ExactOutputSingleParams {
        PoolKey poolKey;
        bool zeroForOne;
        uint128 amountOut;
        uint128 amountInMaximum;
        bytes hookData;
    }


    // ========================================= MORPHO BLUE =========================================

    struct MarketParams {
        address loanToken;
        address collateralToken;
        address oracle;
        address irm;
        uint256 lltv;
    }

    // ========================================= 1INCH =========================================

    struct SwapDescription {
        address srcToken;
        address dstToken;
        address payable srcReceiver;
        address payable dstReceiver;
        uint256 amount;
        uint256 minReturnAmount;
        uint256 flags;
    }

    // ========================================= PENDLE =========================================
    struct TokenInput {
        // TOKEN DATA
        address tokenIn;
        uint256 netTokenIn;
        address tokenMintSy;
        // AGGREGATOR DATA
        address pendleSwap;
        SwapData swapData;
    }

    struct TokenOutput {
        // TOKEN DATA
        address tokenOut;
        uint256 minTokenOut;
        address tokenRedeemSy;
        // AGGREGATOR DATA
        address pendleSwap;
        SwapData swapData;
    }

    struct ApproxParams {
        uint256 guessMin;
        uint256 guessMax;
        uint256 guessOffchain; // pass 0 in to skip this variable
        uint256 maxIteration; // every iteration, the diff between guessMin and guessMax will be divided by 2
        uint256 eps; // the max eps between the returned result & the correct result, base 1e18. Normally this number will be set
            // to 1e15 (1e18/1000 = 0.1%)
    }

    struct SwapData {
        SwapType swapType;
        address extRouter;
        bytes extCalldata;
        bool needScale;
    }

    enum SwapType {
        NONE,
        KYBERSWAP,
        ONE_INCH,
        // ETH_WETH not used in Aggregator
        ETH_WETH
    }

    struct LimitOrderData {
        address limitRouter;
        uint256 epsSkipMarket; // only used for swap operations, will be ignored otherwise
        FillOrderParams[] normalFills;
        FillOrderParams[] flashFills;
        bytes optData;
    }

    struct FillOrderParams {
        Order order;
        bytes signature;
        uint256 makingAmount;
    }

    struct Order {
        uint256 salt;
        uint256 expiry;
        uint256 nonce;
        OrderType orderType;
        address token;
        address YT;
        address maker;
        address receiver;
        uint256 makingAmount;
        uint256 lnImpliedRate;
        uint256 failSafeRate;
        bytes permit;
    }

    enum OrderType {
        SY_FOR_PT,
        PT_FOR_SY,
        SY_FOR_YT,
        YT_FOR_SY
    }

    // ========================================= EIGEN LAYER =========================================

    struct QueuedWithdrawalParams {
        // Array of strategies that the QueuedWithdrawal contains
        address[] strategies;
        // Array containing the amount of shares in each Strategy in the `strategies` array
        uint256[] shares;
        // The address of the withdrawer
        address withdrawer;
    }

    struct Withdrawal {
        // The address that originated the Withdrawal
        address staker;
        // The address that the staker was delegated to at the time that the Withdrawal was created
        address delegatedTo;
        // The address that can complete the Withdrawal + will receive funds when completing the withdrawal
        address withdrawer;
        // Nonce used to guarantee that otherwise identical withdrawals have unique hashes
        uint256 nonce;
        // Block number when the Withdrawal was created
        uint32 startBlock;
        // Array of strategies that the Withdrawal contains
        address[] strategies;
        // Array containing the amount of shares in each Strategy in the `strategies` array
        uint256[] shares;
    }

    struct SignatureWithExpiry {
        // the signature itself, formatted as a single bytes object
        bytes signature;
        // the expiration timestamp (UTC) of the signature
        uint256 expiry;
    }

    struct EarnerTreeMerkleLeaf {
        address earner;
        bytes32 earnerTokenRoot;
    }

    struct TokenTreeMerkleLeaf {
        address token;
        uint256 cumulativeEarnings;
    }

    struct RewardsMerkleClaim {
        uint32 rootIndex;
        uint32 earnerIndex;
        bytes earnerTreeProof;
        EarnerTreeMerkleLeaf earnerLeaf;
        uint32[] tokenIndices;
        bytes[] tokenTreeProofs;
        TokenTreeMerkleLeaf[] tokenLeaves;
    }

    // ========================================= CCIP =========================================

    // If extraArgs is empty bytes, the default is 200k gas limit.
    struct EVM2AnyMessage {
        bytes receiver; // abi.encode(receiver address) for dest EVM chains
        bytes data; // Data payload
        EVMTokenAmount[] tokenAmounts; // Token transfers
        address feeToken; // Address of feeToken. address(0) means you will send msg.value.
        bytes extraArgs; // Populate this with _argsToBytes(EVMExtraArgsV2)
    }

    /// @dev RMN depends on this struct, if changing, please notify the RMN maintainers.
    struct EVMTokenAmount {
        address token; // token address on the local chain.
        uint256 amount; // Amount of tokens.
    }

    struct EVMExtraArgsV1 {
        uint256 gasLimit;
    }

    // ========================================= OFT =========================================

    struct SendParam {
        uint32 dstEid; // Destination endpoint ID.
        bytes32 to; // Recipient address.
        uint256 amountLD; // Amount to send in local decimals.
        uint256 minAmountLD; // Minimum amount to send in local decimals.
        bytes extraOptions; // Additional options supplied by the caller to be used in the LayerZero message.
        bytes composeMsg; // The composed message for the send() operation.
        bytes oftCmd; // The OFT command to be executed, unused in default OFT implementations.
    }

    struct MessagingFee {
        uint256 nativeFee;
        uint256 lzTokenFee;
    }
    // ========================================= L1StandardBridge =========================================

    struct WithdrawalTransaction {
        uint256 nonce;
        address sender;
        address target;
        uint256 value;
        uint256 gasLimit;
        bytes data;
    }

    struct OutputRootProof {
        bytes32 version;
        bytes32 stateRoot;
        bytes32 messagePasserStorageRoot;
        bytes32 latestBlockhash;
    }

    // ========================================= Mantle L1StandardBridge =========================================

    struct MantleWithdrawalTransaction {
        uint256 nonce;
        address sender;
        address target;
        uint256 mntValue;
        uint256 value;
        uint256 gasLimit;
        bytes data;
    }

    // ========================================= Linea Bridge =========================================

    struct ClaimMessageWithProofParams {
        bytes32[] proof;
        uint256 messageNumber;
        uint32 leafIndex;
        address from;
        address to;
        uint256 fee;
        uint256 value;
        address payable feeRecipient;
        bytes32 merkleRoot;
        bytes data;
    }

    // ========================================= Scroll Bridge =========================================

    struct L2MessageProof {
        uint256 batchIndex;
        bytes merkleProof;
    }

    // ========================================= Camelot V3 / Algebra V3  =========================================

    struct CamelotMintParams {
        address token0;
        address token1;
        int24 tickLower;
        int24 tickUpper;
        uint256 amount0Desired;
        uint256 amount1Desired;
        uint256 amount0Min;
        uint256 amount1Min;
        address recipient;
        uint256 deadline;
    }

    // ========================================= Algebra V4 =========================================
    
    struct AlgebraMintParams {
        address token0;
        address token1;
        address deployer;
        int24 tickLower;
        int24 tickUpper;
        uint256 amount0Desired;
        uint256 amount1Desired;
        uint256 amount0Min;
        uint256 amount1Min;
        address recipient;
        uint256 deadline;
    }

    // ========================================= Velodrome V3 =========================================

    struct VelodromeMintParams {
        address token0;
        address token1;
        int24 tickSpacing;
        int24 tickLower;
        int24 tickUpper;
        uint256 amount0Desired;
        uint256 amount1Desired;
        uint256 amount0Min;
        uint256 amount1Min;
        address recipient;
        uint256 deadline;
        uint160 sqrtPriceX96;
    }

    // ========================================= Karak =========================================

    struct QueuedWithdrawal {
        address staker;
        address delegatedTo;
        uint256 nonce;
        uint256 start;
        WithdrawRequest request;
    }

    struct WithdrawRequest {
        address[] vaults;
        uint256[] shares;
        address withdrawer;
    }

    // ========================================= Term Finance ==================================

    /// @dev TermAuctionOfferSubmission represents an offer submission to offeror an amount of money for a specific interest rate
    struct TermAuctionOfferSubmission {
        /// @dev For an existing offer this is the unique onchain identifier for this offer. For a new offer this is a randomized input that will be used to generate the unique onchain identifier.
        bytes32 id;
        /// @dev The address of the offeror
        address offeror;
        /// @dev Hash of the offered price as a percentage of the initial loaned amount vs amount returned at maturity. This stores 9 decimal places
        bytes32 offerPriceHash;
        /// @dev The maximum amount of purchase tokens that can be lent
        uint256 amount;
        /// @dev The address of the ERC20 purchase token
        address purchaseToken;
    }

    // ========================================= Dolomite Finance ==================================

    enum BalanceCheckFlag {
        Both,
        From,
        To,
        None
    }

    // ========================================= Silo Finance ==================================
    /// @dev There are 2 types of accounting in the system: for non-borrowable collateral deposit called "protected" and
    ///      for borrowable collateral deposit called "collateral". System does
    ///      identical calculations for each type of accounting but it uses different data. To avoid code duplication
    ///      this enum is used to decide which data should be read.
    enum CollateralType {
        Protected, // default
        Collateral
    }

    enum ActionType {
        Deposit,
        Mint,
        Repay,
        RepayShares
    }

    struct Action {
        // what do you want to do?
        uint8 actionType;
        // which Silo are you interacting with?
        address silo;
        // what asset do you want to use?
        address asset;
        // options specific for actions
        bytes options;
    }

    struct AnyAction {
        // how much assets or shares do you want to use?
        uint256 amount;
        // are you using Protected, Collateral
        uint8 assetType;
    }

    // ========================================= LBTC Bridge ==================================
    struct DepositBridgeAction {
        uint256 fromChain;
        bytes32 fromContract;
        uint256 toChain;
        address toContract;
        address recipient;
        uint64 amount;
        uint256 nonce;
    }

    // ========================================= Odos ==================================
    
    struct swapTokenInfo {
        address inputToken;
        uint256 inputAmount;
        address inputReceiver;
        address outputToken;
        uint256 outputQuote;
        uint256 outputMin;
        address outputReceiver;
    }

    struct swapTokenInfoOogaBooga {
        address inputToken;
        uint256 inputAmount;
        address outputToken;
        uint256 outputQuote;
        uint256 outputMin;
        address outputReceiver;
    }
    // ========================================= Level ==================================
    
    /// @dev for reference 
    //enum OrderType {
    //    MINT,
    //    REDEEM
    //}
    
    struct LevelOrder {
        uint8 order_type;
        address benefactor;
        address beneficiary;
        address collateral_asset;
        uint256 collateral_amount;
        uint256 lvlusd_amount;
    }    

    struct LevelOrderV2 {
        address beneficiary;
        address collateral_asset;
        uint256 collateral_amount;
        uint256 min_lvlusd_amount;
    }

    struct Route {
        address[] addresses;
        uint256[] ratios;
    }


    // ========================================= Royco ==================================
    struct APOffer { // RecipeMarketHub
        uint256 offerID;
        bytes32 targetMarketHash;
        address ap;
        address fundingVault;
        uint256 quantity;
        uint256 expiry;
        address[] incentivesRequested;
        uint256[] incentiveAmountsRequested;
    }
    struct APOfferVault { // VaultMarketHub (renamed to avoid collision)
        uint256 offerID;
        address targetVault;
        address ap;
        address fundingVault;
        uint256 expiry;
        address[] incentivesRequested;
        uint256[] incentivesRatesRequested;
    }

    struct Reward {
        uint48 startEpoch;
        uint48 endEpoch;
        address token;
        uint256 rewardRate;
    }

    // ========================================= Permit2 ==================================
    
    struct TokenSpenderPair {
        address token; 
        address spender;
    }

    // ========================================= OnChainQueue ==================================
    
    struct OnChainWithdraw {
        uint96 nonce; // read from state, used to make it impossible for request Ids to be repeated.
        address user; // msg.sender
        address assetOut; // input sanitized
        uint128 amountOfShares; // input transfered in
        uint128 amountOfAssets; // derived from amountOfShares and price
        uint40 creationTime; // time withdraw was made
        uint24 secondsToMaturity; // in contract, from withdrawAsset?
        uint24 secondsToDeadline; // in contract, from withdrawAsset? To get the deadline you take the creationTime add seconds to maturity, add the secondsToDeadline
    }

    // ========================================= Beraborrow ==================================
    
    struct OpenDenVaultParams {
        address denManager;
        address collVault;
        uint256 _maxFeePercentage;
        uint256 _debtAmount;
        uint256 _collAssetToDeposit;
        address _upperHint;
        address _lowerHint;
        uint256 _minSharesMinted;
        uint256 _collIndex;
        bytes _preDeposit;
    }

    struct AdjustDenVaultParams {
        address denManager;
        address collVault;
        uint256 _maxFeePercentage;
        uint256 _collAssetToDeposit;
        uint256 _collWithdrawal;
        uint256 _debtChange;
        bool _isDebtIncrease;
        address _upperHint;
        address _lowerHint;
        bool unwrap;
        uint256 _minSharesMinted;
        uint256 _minAssetsWithdrawn;
        uint256 _collIndex;
        bytes _preDeposit;
    }

     struct RedeemCollateralVaultParams {
        address denManager;
        address collVault;
        uint256 _debtAmount;
        address _firstRedemptionHint;
        address _upperPartialRedemptionHint;
        address _lowerPartialRedemptionHint;
        uint256 _partialRedemptionHintNICR;
        uint256 _maxIterations;
        uint256 _maxFeePercentage;
        uint256 _minSharesWithdrawn;
        uint256 minAssetsWithdrawn;
        uint256 collIndex;
        bool unwrap;
    }

    struct AddCollParams {
        address upperHint;
        address lowerHint;
        uint256 minSharesOut;
        uint256 minCollVaultShares;
    }

    struct ExternalRebalanceParams {
        address swapper;
        bytes payload;
        uint256 minRebalanceOut;
    }

    // ========================================= Tac Crosschain Layer ==================================
    
    struct TokenAmount {
        address evmAddress;
        uint256 amount;
    }

    struct NFTAmount {
        address evmAddress;
        uint256 tokenId;
        uint256 amount;
    }

    struct OutMessageV1 {
        uint64 shardsKey;
        string tvmTarget;
        string tvmPayload;
        uint256 tvmProtocolFee;
        uint256 tvmExecutorFee;
        string[] tvmValidExecutors;
        TokenAmount[] toBridge;
        NFTAmount[] toBridgeNFT;
    }

}

Settings
{
  "remappings": [
    "@solmate/=lib/solmate/src/",
    "@forge-std/=lib/forge-std/src/",
    "@ds-test/=lib/forge-std/lib/ds-test/src/",
    "ds-test/=lib/forge-std/lib/ds-test/src/",
    "@openzeppelin/=lib/openzeppelin-contracts/",
    "@ccip/=lib/ccip/",
    "@oapp-auth/=lib/OAppAuth/src/",
    "@devtools-oapp-evm/=lib/OAppAuth/lib/devtools/packages/oapp-evm/contracts/oapp/",
    "@layerzerolabs/lz-evm-messagelib-v2/=lib/OAppAuth/node_modules/@layerzerolabs/lz-evm-messagelib-v2/",
    "@layerzerolabs/lz-evm-protocol-v2/=lib/OAppAuth/lib/LayerZero-V2/packages/layerzero-v2/evm/protocol/",
    "@layerzerolabs/oapp-evm/=lib/OAppAuth/lib/devtools/packages/oapp-evm/",
    "@lz-oapp-evm/=lib/OAppAuth/lib/LayerZero-V2/packages/layerzero-v2/evm/oapp/contracts/oapp/",
    "@sbu/=lib/OAppAuth/lib/solidity-bytes-utils/",
    "LayerZero-V2/=lib/OAppAuth/lib/",
    "OAppAuth/=lib/OAppAuth/",
    "ccip/=lib/ccip/contracts/",
    "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
    "forge-std/=lib/forge-std/src/",
    "halmos-cheatcodes/=lib/OAppAuth/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/",
    "solidity-bytes-utils/=lib/OAppAuth/node_modules/solidity-bytes-utils/",
    "solmate/=lib/solmate/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "paris",
  "viaIR": false,
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"name":"BeraborrowDecoderAndSanitizer__PayloadLengthGtZero","type":"error"},{"inputs":[],"name":"BeraborrowDecoderAndSanitizer__PredepositLengthGtZero","type":"error"},{"inputs":[{"components":[{"internalType":"address","name":"denManager","type":"address"},{"internalType":"address","name":"collVault","type":"address"},{"internalType":"uint256","name":"_maxFeePercentage","type":"uint256"},{"internalType":"uint256","name":"_collAssetToDeposit","type":"uint256"},{"internalType":"uint256","name":"_collWithdrawal","type":"uint256"},{"internalType":"uint256","name":"_debtChange","type":"uint256"},{"internalType":"bool","name":"_isDebtIncrease","type":"bool"},{"internalType":"address","name":"_upperHint","type":"address"},{"internalType":"address","name":"_lowerHint","type":"address"},{"internalType":"bool","name":"unwrap","type":"bool"},{"internalType":"uint256","name":"_minSharesMinted","type":"uint256"},{"internalType":"uint256","name":"_minAssetsWithdrawn","type":"uint256"},{"internalType":"uint256","name":"_collIndex","type":"uint256"},{"internalType":"bytes","name":"_preDeposit","type":"bytes"}],"internalType":"struct DecoderCustomTypes.AdjustDenVaultParams","name":"params","type":"tuple"}],"name":"adjustDenVault","outputs":[{"internalType":"bytes","name":"addressesFound","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"cancelWithdrawalIntent","outputs":[{"internalType":"bytes","name":"addressesFound","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"denManager","type":"address"},{"internalType":"address","name":"collVault","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"closeDenVault","outputs":[{"internalType":"bytes","name":"addressesFound","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"components":[{"internalType":"address","name":"upperHint","type":"address"},{"internalType":"address","name":"lowerHint","type":"address"},{"internalType":"uint256","name":"minSharesOut","type":"uint256"},{"internalType":"uint256","name":"minCollVaultShares","type":"uint256"}],"internalType":"struct DecoderCustomTypes.AddCollParams","name":"","type":"tuple"}],"name":"deposit","outputs":[{"internalType":"bytes","name":"addressesFound","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"denManager","type":"address"},{"internalType":"address","name":"collVault","type":"address"},{"internalType":"uint256","name":"_maxFeePercentage","type":"uint256"},{"internalType":"uint256","name":"_debtAmount","type":"uint256"},{"internalType":"uint256","name":"_collAssetToDeposit","type":"uint256"},{"internalType":"address","name":"_upperHint","type":"address"},{"internalType":"address","name":"_lowerHint","type":"address"},{"internalType":"uint256","name":"_minSharesMinted","type":"uint256"},{"internalType":"uint256","name":"_collIndex","type":"uint256"},{"internalType":"bytes","name":"_preDeposit","type":"bytes"}],"internalType":"struct DecoderCustomTypes.OpenDenVaultParams","name":"params","type":"tuple"}],"name":"openDenVault","outputs":[{"internalType":"bytes","name":"addressesFound","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"redeemIntent","outputs":[{"internalType":"bytes","name":"addressesFound","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"components":[{"internalType":"address","name":"swapper","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint256","name":"minRebalanceOut","type":"uint256"}],"internalType":"struct DecoderCustomTypes.ExternalRebalanceParams","name":"unwrapParams","type":"tuple"}],"name":"withdrawFromEpoch","outputs":[{"internalType":"bytes","name":"addressesFound","type":"bytes"}],"stateMutability":"pure","type":"function"}]

608060405234801561001057600080fd5b50610865806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063811537ef1161005b578063811537ef146100d157806383f1cd9b146100e4578063bc7faa22146100f7578063ff266e481461010a57600080fd5b8063086aa0e01461008257806321dd6714146100ab578063222e162c146100be575b600080fd5b6100956100903660046103a3565b61011d565b6040516100a291906104c6565b60405180910390f35b6100956100b9366004610514565b610171565b6100956100cc366004610572565b6101da565b6100956100df366004610611565b6101fa565b6100956100f23660046106de565b610222565b610095610105366004610735565b610251565b610095610118366004610771565b610266565b6101a08101515160609015610145576040516316f58ecf60e21b815260040160405180910390fd5b815160208084015160405161015b93920161079d565b6040516020818303038152906040529050919050565b6060600061018260208401846107bf565b905011156101a35760405163544b1b3960e01b815260040160405180910390fd5b826101b1602084018461080d565b6040516020016101c292919061079d565b60405160208183030381529060405290509392505050565b604051606083811b6001600160601b0319166020830152906034016101c2565b6101208101515160609015610145576040516316f58ecf60e21b815260040160405180910390fd5b6060858560405160200161023792919061079d565b604051602081830303815290604052905095945050505050565b606082826040516020016101c292919061079d565b604051606082811b6001600160601b0319166020830152906034016101c2565b634e487b7160e01b600052604160045260246000fd5b6040516101c0810167ffffffffffffffff811182821017156102c0576102c0610286565b60405290565b604051610140810167ffffffffffffffff811182821017156102c0576102c0610286565b80356001600160a01b038116811461030157600080fd5b919050565b8035801515811461030157600080fd5b600082601f83011261032757600080fd5b813567ffffffffffffffff8082111561034257610342610286565b604051601f8301601f19908116603f0116810190828211818310171561036a5761036a610286565b8160405283815286602085880101111561038357600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000602082840312156103b557600080fd5b813567ffffffffffffffff808211156103cd57600080fd5b908301906101c082860312156103e257600080fd5b6103ea61029c565b6103f3836102ea565b8152610401602084016102ea565b602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015261043a60c08401610306565b60c082015261044b60e084016102ea565b60e082015261010061045e8185016102ea565b90820152610120610470848201610306565b908201526101408381013590820152610160808401359082015261018080840135908201526101a080840135838111156104a957600080fd5b6104b588828701610316565b918301919091525095945050505050565b600060208083528351808285015260005b818110156104f3578581018301518582016040015282016104d7565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060006060848603121561052957600080fd5b83359250610539602085016102ea565b9150604084013567ffffffffffffffff81111561055557600080fd5b84016060818703121561056757600080fd5b809150509250925092565b600080600083850360c081121561058857600080fd5b84359350610598602086016102ea565b92506080603f19820112156105ac57600080fd5b506040516080810181811067ffffffffffffffff821117156105d0576105d0610286565b80604052506105e1604086016102ea565b81526105ef606086016102ea565b60208201526080850135604082015260a0909401356060850152509093909250565b60006020828403121561062357600080fd5b813567ffffffffffffffff8082111561063b57600080fd5b90830190610140828603121561065057600080fd5b6106586102c6565b610661836102ea565b815261066f602084016102ea565b602082015260408301356040820152606083013560608201526080830135608082015261069e60a084016102ea565b60a08201526106af60c084016102ea565b60c082015260e083013560e082015261010080840135818301525061012080840135838111156104a957600080fd5b600080600080600060a086880312156106f657600080fd5b6106ff866102ea565b945061070d602087016102ea565b9350604086013592506060860135915061072960808701610306565b90509295509295909350565b60008060006060848603121561074a57600080fd5b8335925061075a602085016102ea565b9150610768604085016102ea565b90509250925092565b60008060006060848603121561078657600080fd5b8335925060208401359150610768604085016102ea565b6001600160601b0319606093841b811682529190921b16601482015260280190565b6000808335601e198436030181126107d657600080fd5b83018035915067ffffffffffffffff8211156107f157600080fd5b60200191503681900382131561080657600080fd5b9250929050565b60006020828403121561081f57600080fd5b610828826102ea565b939250505056fea2646970667358221220bf2be93113ecd1b9b7574202399eb4c22527c66b4ae169f77ece460d454a755164736f6c63430008150033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061007d5760003560e01c8063811537ef1161005b578063811537ef146100d157806383f1cd9b146100e4578063bc7faa22146100f7578063ff266e481461010a57600080fd5b8063086aa0e01461008257806321dd6714146100ab578063222e162c146100be575b600080fd5b6100956100903660046103a3565b61011d565b6040516100a291906104c6565b60405180910390f35b6100956100b9366004610514565b610171565b6100956100cc366004610572565b6101da565b6100956100df366004610611565b6101fa565b6100956100f23660046106de565b610222565b610095610105366004610735565b610251565b610095610118366004610771565b610266565b6101a08101515160609015610145576040516316f58ecf60e21b815260040160405180910390fd5b815160208084015160405161015b93920161079d565b6040516020818303038152906040529050919050565b6060600061018260208401846107bf565b905011156101a35760405163544b1b3960e01b815260040160405180910390fd5b826101b1602084018461080d565b6040516020016101c292919061079d565b60405160208183030381529060405290509392505050565b604051606083811b6001600160601b0319166020830152906034016101c2565b6101208101515160609015610145576040516316f58ecf60e21b815260040160405180910390fd5b6060858560405160200161023792919061079d565b604051602081830303815290604052905095945050505050565b606082826040516020016101c292919061079d565b604051606082811b6001600160601b0319166020830152906034016101c2565b634e487b7160e01b600052604160045260246000fd5b6040516101c0810167ffffffffffffffff811182821017156102c0576102c0610286565b60405290565b604051610140810167ffffffffffffffff811182821017156102c0576102c0610286565b80356001600160a01b038116811461030157600080fd5b919050565b8035801515811461030157600080fd5b600082601f83011261032757600080fd5b813567ffffffffffffffff8082111561034257610342610286565b604051601f8301601f19908116603f0116810190828211818310171561036a5761036a610286565b8160405283815286602085880101111561038357600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000602082840312156103b557600080fd5b813567ffffffffffffffff808211156103cd57600080fd5b908301906101c082860312156103e257600080fd5b6103ea61029c565b6103f3836102ea565b8152610401602084016102ea565b602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015261043a60c08401610306565b60c082015261044b60e084016102ea565b60e082015261010061045e8185016102ea565b90820152610120610470848201610306565b908201526101408381013590820152610160808401359082015261018080840135908201526101a080840135838111156104a957600080fd5b6104b588828701610316565b918301919091525095945050505050565b600060208083528351808285015260005b818110156104f3578581018301518582016040015282016104d7565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060006060848603121561052957600080fd5b83359250610539602085016102ea565b9150604084013567ffffffffffffffff81111561055557600080fd5b84016060818703121561056757600080fd5b809150509250925092565b600080600083850360c081121561058857600080fd5b84359350610598602086016102ea565b92506080603f19820112156105ac57600080fd5b506040516080810181811067ffffffffffffffff821117156105d0576105d0610286565b80604052506105e1604086016102ea565b81526105ef606086016102ea565b60208201526080850135604082015260a0909401356060850152509093909250565b60006020828403121561062357600080fd5b813567ffffffffffffffff8082111561063b57600080fd5b90830190610140828603121561065057600080fd5b6106586102c6565b610661836102ea565b815261066f602084016102ea565b602082015260408301356040820152606083013560608201526080830135608082015261069e60a084016102ea565b60a08201526106af60c084016102ea565b60c082015260e083013560e082015261010080840135818301525061012080840135838111156104a957600080fd5b600080600080600060a086880312156106f657600080fd5b6106ff866102ea565b945061070d602087016102ea565b9350604086013592506060860135915061072960808701610306565b90509295509295909350565b60008060006060848603121561074a57600080fd5b8335925061075a602085016102ea565b9150610768604085016102ea565b90509250925092565b60008060006060848603121561078657600080fd5b8335925060208401359150610768604085016102ea565b6001600160601b0319606093841b811682529190921b16601482015260280190565b6000808335601e198436030181126107d657600080fd5b83018035915067ffffffffffffffff8211156107f157600080fd5b60200191503681900382131561080657600080fd5b9250929050565b60006020828403121561081f57600080fd5b610828826102ea565b939250505056fea2646970667358221220bf2be93113ecd1b9b7574202399eb4c22527c66b4ae169f77ece460d454a755164736f6c63430008150033

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