Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Advanced mode: Intended for advanced users or developers and will display all Internal Transactions including zero value transfers. Name tag integration is not available in advanced view.
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
||||
---|---|---|---|---|---|---|---|
19514850 | 337 days ago | 0 ETH | |||||
19514850 | 337 days ago | 0 ETH | |||||
19507429 | 338 days ago | 0 ETH | |||||
19507429 | 338 days ago | 0 ETH | |||||
19500011 | 339 days ago | 0 ETH | |||||
19500011 | 339 days ago | 0 ETH | |||||
19492596 | 340 days ago | 0 ETH | |||||
19492596 | 340 days ago | 0 ETH | |||||
19485179 | 341 days ago | 0 ETH | |||||
19485179 | 341 days ago | 0 ETH | |||||
19477741 | 342 days ago | 0 ETH | |||||
19477741 | 342 days ago | 0 ETH | |||||
19470305 | 343 days ago | 0 ETH | |||||
19470305 | 343 days ago | 0 ETH | |||||
19409412 | 352 days ago | 0 ETH | |||||
19409412 | 352 days ago | 0 ETH | |||||
19401890 | 353 days ago | 0 ETH | |||||
19401890 | 353 days ago | 0 ETH | |||||
19394430 | 354 days ago | 0 ETH | |||||
19394430 | 354 days ago | 0 ETH | |||||
19359161 | 359 days ago | 0 ETH | |||||
19359161 | 359 days ago | 0 ETH | |||||
19338998 | 362 days ago | 0 ETH | |||||
19338998 | 362 days ago | 0 ETH | |||||
19335051 | 362 days ago | 0 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
CallExecutorV2
Compiler Version
v0.8.10+commit.fc410830
Optimization Enabled:
Yes with 800 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity =0.8.10; pragma abicoder v1; /** * ,, ,, * *MM db `7MM * MM MM * MM,dMMb. `7Mb,od8 `7MM `7MMpMMMb. MM ,MP' * MM `Mb MM' "' MM MM MM MM ;Y * MM M8 MM MM MM MM MM;Mm * MM. ,M9 MM MM MM MM MM `Mb. * P^YbmdP' .JMML. .JMML. .JMML JMML. .JMML. YA. * * CallExecutorV2.sol :: 0x6FE756B9C61CF7e9f11D96740B096e51B64eBf13 * etherscan.io verified 2022-11-01 */ import '@openzeppelin/contracts/security/ReentrancyGuard.sol'; /** * @dev Used as a proxy for call execution to obscure msg.sender of the * caller. msg.sender will be the address of the CallExecutor contract. * * Instances of Proxy (user account contracts) use CallExecutor to execute * unsigned data calls without exposing themselves as msg.sender. Users can * sign messages that allow public unsigned data execution via CallExecutor * without allowing public calls to be executed directly from their Proxy * contract. * * This is implemented specifically for swap calls that allow unsigned data * execution. If unsigned data was executed directly from the Proxy contract, * an attacker could make a call that satisfies the swap required conditions * but also makes other malicious calls that rely on msg.sender. Forcing all * unsigned data execution to be done through a CallExecutor ensures that an * attacker cannot impersonate the users's account. * * ReentrancyGuard is implemented here to revert on callbacks to any verifier * functions that use CallExecutorV2.proxyCall() * * CallExecutorV2 is modified from https://github.com/brinktrade/brink-verifiers/blob/985900cb405e4d59e37258416d68f36ac443481f/contracts/External/CallExecutor.sol * This version adds ReentrancyGuard and removes the data return so that the * nonReentrant modifier always unlocks the guard at the end of the function * */ contract CallExecutorV2 is ReentrancyGuard { constructor () ReentrancyGuard() {} /** * @dev A payable function that executes a call with `data` on the * contract address `to` * * Sets value for the call to `callvalue`, the amount of Eth provided with * the call */ function proxyCall(address to, bytes memory data) external payable nonReentrant() { // execute `data` on execution contract address `to` assembly { let result := call(gas(), to, callvalue(), add(data, 0x20), mload(data), 0, 0) returndatacopy(0, 0, returndatasize()) if eq(result, 0) { revert(0, returndatasize()) } } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
{ "optimizer": { "enabled": true, "runs": 800 }, "metadata": { "bytecodeHash": "none" }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"proxyCall","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b506001600055610178806100256000396000f3fe60806040526004361061001e5760003560e01c80632a31f6b414610023575b600080fd5b6100e66004803603604081101561003957600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516919081019060408101602082013564010000000081111561007157600080fd5b82018360208201111561008357600080fd5b803590602001918460018302840111640100000000831117156100a557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506100e8945050505050565b005b6002600054141561013f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640160405180910390fd5b60026000908155815181906020840134865af13d6000803e80610161573d6000fd5b505060016000555056fea164736f6c634300080a000a
Deployed Bytecode
0x60806040526004361061001e5760003560e01c80632a31f6b414610023575b600080fd5b6100e66004803603604081101561003957600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516919081019060408101602082013564010000000081111561007157600080fd5b82018360208201111561008357600080fd5b803590602001918460018302840111640100000000831117156100a557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506100e8945050505050565b005b6002600054141561013f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640160405180910390fd5b60026000908155815181906020840134865af13d6000803e80610161573d6000fd5b505060016000555056fea164736f6c634300080a000a
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
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.