ETH Price: $3,678.31 (+0.18%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Save Withdrawals190743632024-01-24 5:17:11348 days ago1706073431IN
0x831fbCE2...25CFe9177
0 ETH0.00169417.5663031
Save Withdrawals190743632024-01-24 5:17:11348 days ago1706073431IN
0x831fbCE2...25CFe9177
0 ETH0.0024867825.7021853
Save Withdrawals190743632024-01-24 5:17:11348 days ago1706073431IN
0x831fbCE2...25CFe9177
0 ETH0.0026407128.52178985
Save Withdrawals190743632024-01-24 5:17:11348 days ago1706073431IN
0x831fbCE2...25CFe9177
0 ETH0.0019197422.986787
Save Withdrawals190743632024-01-24 5:17:11348 days ago1706073431IN
0x831fbCE2...25CFe9177
0 ETH0.0020911423.44278633
Save Withdrawals190743632024-01-24 5:17:11348 days ago1706073431IN
0x831fbCE2...25CFe9177
0 ETH0.0016588119.8624617
Save Withdrawals190743632024-01-24 5:17:11348 days ago1706073431IN
0x831fbCE2...25CFe9177
0 ETH0.0017628519.76252921
Save Withdrawals190743632024-01-24 5:17:11348 days ago1706073431IN
0x831fbCE2...25CFe9177
0 ETH0.0015741418.84866812
Save Withdrawals190743632024-01-24 5:17:11348 days ago1706073431IN
0x831fbCE2...25CFe9177
0 ETH0.0016504618.50255615
Save Withdrawals190743632024-01-24 5:17:11348 days ago1706073431IN
0x831fbCE2...25CFe9177
0 ETH0.0017403120.83840144
Save Withdrawals190743632024-01-24 5:17:11348 days ago1706073431IN
0x831fbCE2...25CFe9177
0 ETH0.0019105321.41812307
Save Withdrawals190743632024-01-24 5:17:11348 days ago1706073431IN
0x831fbCE2...25CFe9177
0 ETH0.0017118520.49754066
Save Withdrawals190743632024-01-24 5:17:11348 days ago1706073431IN
0x831fbCE2...25CFe9177
0 ETH0.0018639820.89622489
Save Withdrawals190743632024-01-24 5:17:11348 days ago1706073431IN
0x831fbCE2...25CFe9177
0 ETH0.0017439920.88242909
Save Withdrawals190743632024-01-24 5:17:11348 days ago1706073431IN
0x831fbCE2...25CFe9177
0 ETH0.0018904521.19296249
Save Withdrawals190743632024-01-24 5:17:11348 days ago1706073431IN
0x831fbCE2...25CFe9177
0 ETH0.0018743722.44358275
Save Withdrawals190743632024-01-24 5:17:11348 days ago1706073431IN
0x831fbCE2...25CFe9177
0 ETH0.0020522323.00661147
Save Withdrawals190743632024-01-24 5:17:11348 days ago1706073431IN
0x831fbCE2...25CFe9177
0 ETH0.0017958221.5030616
Save Withdrawals190743632024-01-24 5:17:11348 days ago1706073431IN
0x831fbCE2...25CFe9177
0 ETH0.0019331921.67206527
Save Withdrawals190743632024-01-24 5:17:11348 days ago1706073431IN
0x831fbCE2...25CFe9177
0 ETH0.0016937120.28034385
Save Withdrawals190743632024-01-24 5:17:11348 days ago1706073431IN
0x831fbCE2...25CFe9177
0 ETH0.0018035520.21871722
Save Withdrawals190743632024-01-24 5:17:11348 days ago1706073431IN
0x831fbCE2...25CFe9177
0 ETH0.0012140514.53693097
Save Withdrawals190743632024-01-24 5:17:11348 days ago1706073431IN
0x831fbCE2...25CFe9177
0 ETH0.0012919114.48298078
Save Withdrawals190743632024-01-24 5:17:11348 days ago1706073431IN
0x831fbCE2...25CFe9177
0 ETH0.0011682613.98866963
Save Withdrawals190743632024-01-24 5:17:11348 days ago1706073431IN
0x831fbCE2...25CFe9177
0 ETH0.0012399413.90043756
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block
From
To
173145962023-05-22 11:39:59595 days ago1684755599  Contract Creation0 ETH
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xFAe32051...2F302d5B5
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
BatchSaver

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU AGPLv3 license
File 1 of 4 : BatchSaver.sol
// SPDX-License-Identifier: AGPL-3.0
pragma solidity 0.8.0;


import "../multivault/interfaces/multivault/IMultiVaultFacetWithdraw.sol";


contract BatchSaver {
    address immutable public multivault;

    constructor(
        address _multivault
    ) {
        multivault = _multivault;
    }

    event WithdrawalAlreadyUsed(bytes32 indexed withdrawalId);
    event WithdrawalSaved(bytes32 indexed withdrawalId);

    struct Withdraw {
        bool isNative;
        bytes payload;
        bytes[] signatures;
    }

    function checkWithdrawalAlreadySeen(bytes32 withdrawalId) public view returns (bool) {
        return IMultiVaultFacetWithdraw(multivault).withdrawalIds(withdrawalId);
    }

    function saveWithdrawals(
        Withdraw[] memory withdrawals
    ) external {
        for (uint i = 0; i < withdrawals.length; i++) {
            Withdraw memory withdraw = withdrawals[i];

            bytes32 withdrawalId = keccak256(withdraw.payload);

            if (checkWithdrawalAlreadySeen(withdrawalId)) {
                emit WithdrawalAlreadyUsed(withdrawalId);

                continue;
            }

            if (withdraw.isNative) {
                IMultiVaultFacetWithdraw(multivault).saveWithdrawNative(
                    withdraw.payload,
                    withdraw.signatures
                );
            } else {
                IMultiVaultFacetWithdraw(multivault).saveWithdrawAlien(
                    withdraw.payload,
                    withdraw.signatures
                );
            }

            emit WithdrawalSaved(withdrawalId);
        }
    }
}

File 2 of 4 : IEverscale.sol
// SPDX-License-Identifier: AGPL-3.0
pragma solidity 0.8.0;


interface IEverscale {
    struct EverscaleAddress {
        int8 wid;
        uint256 addr;
    }

    struct EverscaleEvent {
        uint64 eventTransactionLt;
        uint32 eventTimestamp;
        bytes eventData;
        int8 configurationWid;
        uint256 configurationAddress;
        int8 eventContractWid;
        uint256 eventContractAddress;
        address proxy;
        uint32 round;
    }
}

File 3 of 4 : IMultiVaultFacetTokens.sol
// SPDX-License-Identifier: AGPL-3.0
pragma solidity 0.8.0;


import "./../IEverscale.sol";


interface IMultiVaultFacetTokens {
    enum TokenType { Native, Alien }

    struct TokenPrefix {
        uint activation;
        string name;
        string symbol;
    }

    struct TokenMeta {
        string name;
        string symbol;
        uint8 decimals;
    }

    struct Token {
        uint activation;
        bool blacklisted;
        uint depositFee;
        uint withdrawFee;
        bool isNative;
        address custom;
    }

    function prefixes(address _token) external view returns (TokenPrefix memory);
    function tokens(address _token) external view returns (Token memory);
    function natives(address _token) external view returns (IEverscale.EverscaleAddress memory);

    function setPrefix(
        address token,
        string memory name_prefix,
        string memory symbol_prefix
    ) external;

    function setTokenBlacklist(
        address token,
        bool blacklisted
    ) external;

    function getNativeToken(
        IEverscale.EverscaleAddress memory native
    ) external view returns (address);
}

File 4 of 4 : IMultiVaultFacetWithdraw.sol
// SPDX-License-Identifier: AGPL-3.0
pragma solidity 0.8.0;


import "./IMultiVaultFacetTokens.sol";
import "../IEverscale.sol";


interface IMultiVaultFacetWithdraw {
    struct Callback {
        address recipient;
        bytes payload;
        bool strict;
    }

    struct NativeWithdrawalParams {
        IEverscale.EverscaleAddress native;
        IMultiVaultFacetTokens.TokenMeta meta;
        uint256 amount;
        address recipient;
        uint256 chainId;
        Callback callback;
    }

    struct AlienWithdrawalParams {
        address token;
        uint256 amount;
        address recipient;
        uint256 chainId;
        Callback callback;
    }

    function withdrawalIds(bytes32) external view returns (bool);

    function saveWithdrawNative(
        bytes memory payload,
        bytes[] memory signatures
    ) external;

    function saveWithdrawAlien(
        bytes memory payload,
        bytes[] memory signatures
    ) external;

    function saveWithdrawAlien(
        bytes memory payload,
        bytes[] memory signatures,
        uint bounty
    ) external;
}

Settings
{
  "evmVersion": "istanbul",
  "libraries": {},
  "metadata": {
    "bytecodeHash": "ipfs",
    "useLiteralContent": true
  },
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "remappings": [],
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_multivault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"withdrawalId","type":"bytes32"}],"name":"WithdrawalAlreadyUsed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"withdrawalId","type":"bytes32"}],"name":"WithdrawalSaved","type":"event"},{"inputs":[{"internalType":"bytes32","name":"withdrawalId","type":"bytes32"}],"name":"checkWithdrawalAlreadySeen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"multivault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"bool","name":"isNative","type":"bool"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}],"internalType":"struct BatchSaver.Withdraw[]","name":"withdrawals","type":"tuple[]"}],"name":"saveWithdrawals","outputs":[],"stateMutability":"nonpayable","type":"function"}]

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100415760003560e01c806392694f41146100465780639a5ce5ee14610064578063a5c0cb4214610079575b600080fd5b61004e610099565b60405161005b91906105ad565b60405180910390f35b610077610072366004610419565b6100bd565b005b61008c61008736600461054a565b6102a2565b60405161005b91906105c1565b7f00000000000000000000000054c55369a6900731d22eacb0df7c0253cf19dfff81565b60005b815181101561029e5760008282815181106100eb57634e487b7160e01b600052603260045260246000fd5b602002602001015190506000816020015180519060200120905061010e816102a2565b156101455760405181907f646cdd4b68fd5065de4b9bdc3ec5562cab7245da40ce2638b906f3e8194ed04190600090a2505061028c565b8151156101d75760208201516040808401519051630e063cb560e41b81526001600160a01b037f00000000000000000000000054c55369a6900731d22eacb0df7c0253cf19dfff169263e063cb50926101a0926004016105d5565b600060405180830381600087803b1580156101ba57600080fd5b505af11580156101ce573d6000803e3d6000fd5b5050505061025e565b602082015160408084015190516351ce9d2160e01b81526001600160a01b037f00000000000000000000000054c55369a6900731d22eacb0df7c0253cf19dfff16926351ce9d219261022b926004016105d5565b600060405180830381600087803b15801561024557600080fd5b505af1158015610259573d6000803e3d6000fd5b505050505b60405181907f6fff42f63f1eb2769727b4d72b3fac1f7525c176a55b0c24843306e12f53e0d790600090a250505b8061029681610684565b9150506100c0565b5050565b60405163dc7fc7c760e01b81526000906001600160a01b037f00000000000000000000000054c55369a6900731d22eacb0df7c0253cf19dfff169063dc7fc7c7906102f19085906004016105cc565b60206040518083038186803b15801561030957600080fd5b505afa15801561031d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103419190610527565b92915050565b600082601f830112610357578081fd5b8135602061036c61036783610660565b610636565b82815281810190858301855b858110156103a15761038f898684358b01016103ae565b84529284019290840190600101610378565b5090979650505050505050565b600082601f8301126103be578081fd5b813567ffffffffffffffff8111156103d8576103d86106ab565b6103eb601f8201601f1916602001610636565b8181528460208386010111156103ff578283fd5b816020850160208301379081016020019190915292915050565b6000602080838503121561042b578182fd5b823567ffffffffffffffff80821115610442578384fd5b818501915085601f830112610455578384fd5b813561046361036782610660565b81815284810190848601875b8481101561051857813587016060818d03601f1901121561048e57898afd5b60408051606081018181108a821117156104aa576104aa6106ab565b8252828b01356104b9816106c1565b815282820135898111156104cb578c8dfd5b6104d98f8d838701016103ae565b8c830152506060830135898111156104ef578c8dfd5b6104fd8f8d83870101610347565b9282019290925286525050928701929087019060010161046f565b50909998505050505050505050565b600060208284031215610538578081fd5b8151610543816106c1565b9392505050565b60006020828403121561055b578081fd5b5035919050565b60008151808452815b818110156105875760208185018101518683018201520161056b565b818111156105985782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b901515815260200190565b90815260200190565b6000604082526105e86040830185610562565b602083820381850152818551808452828401915082838202850101838801865b8381101561051857601f19878403018552610624838351610562565b94860194925090850190600101610608565b60405181810167ffffffffffffffff81118282101715610658576106586106ab565b604052919050565b600067ffffffffffffffff82111561067a5761067a6106ab565b5060209081020190565b60006000198214156106a457634e487b7160e01b81526011600452602481fd5b5060010190565b634e487b7160e01b600052604160045260246000fd5b80151581146106cf57600080fd5b5056fea2646970667358221220e975ea5adb7483c652398be6c4309ff90036f7e922c61fec7716268b15bf174e64736f6c63430008000033

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