ETH Price: $2,493.11 (-0.82%)

Contract

0x131c220c18874e32ABbe945eb8AA998B84f63625
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
Age
From
To

There are no matching entries

Please try again later

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GasRelayPaymasterLib

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
istanbul EvmVersion
File 1 of 20 : GasRelayPaymasterLib.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: GPL-3.0
/*
This file is part of the Enzyme Protocol.
(c) Enzyme Council <council@enzyme.finance>
For the full license information, please view the LICENSE
file that was distributed with this source code.
*/
pragma solidity 0.6.12;
pragma experimental ABIEncoderV2;
import {SafeMath} from "openzeppelin-solc-0.6/math/SafeMath.sol";
import {Address} from "openzeppelin-solc-0.6/utils/Address.sol";
import {IGsnPaymaster} from "../../../external-interfaces/IGsnPaymaster.sol";
import {IGsnRelayHub} from "../../../external-interfaces/IGsnRelayHub.sol";
import {IGsnTypes} from "../../../external-interfaces/IGsnTypes.sol";
import {IWETH} from "../../../external-interfaces/IWETH.sol";
import {IComptroller} from "../../core/fund/comptroller/IComptroller.sol";
import {IVault} from "../../core/fund/vault/IVault.sol";
import {IFundDeployer} from "../../core/fund-deployer/IFundDeployer.sol";
import {IPolicyManager} from "../../extensions/policy-manager/IPolicyManager.sol";
import {GasRelayPaymasterLibBase2} from "./bases/GasRelayPaymasterLibBase2.sol";
import {IGasRelayPaymaster} from "./IGasRelayPaymaster.sol";
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 2 of 20 : SafeMath.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;
/**
* @dev Wrappers over Solidity's arithmetic operations with added overflow
* checks.
*
* Arithmetic operations in Solidity wrap on overflow. This can easily result
* in bugs, because programmers usually assume that an overflow raises an
* error, which is the standard behavior in high level programming languages.
* `SafeMath` restores this intuition by reverting the transaction when an
* operation overflows.
*
* Using this library instead of the unchecked operations eliminates an entire
* class of bugs, so it's recommended to use it always.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, with an overflow flag.
*
* _Available since v3.4._
*/
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
uint256 c = a + b;
if (c < a) return (false, 0);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 3 of 20 : Address.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
pragma solidity >=0.6.2 <0.8.0;
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*/
function isContract(address account) internal view returns (bool) {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 4 of 20 : IGsnPaymaster.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: GPL-3.0
/*
This file is part of the Enzyme Protocol.
(c) Enzyme Council <council@enzyme.finance>
For the full license information, please view the LICENSE
file that was distributed with this source code.
*/
pragma solidity >=0.6.0 <0.9.0;
pragma experimental ABIEncoderV2;
import "./IGsnTypes.sol";
/// @title IGsnPaymaster interface
/// @author Enzyme Council <security@enzyme.finance>
interface IGsnPaymaster {
struct GasAndDataLimits {
uint256 acceptanceBudget;
uint256 preRelayedCallGasLimit;
uint256 postRelayedCallGasLimit;
uint256 calldataSizeLimit;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 5 of 20 : IGsnRelayHub.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: GPL-3.0
/*
This file is part of the Enzyme Protocol.
(c) Enzyme Council <council@enzyme.finance>
For the full license information, please view the LICENSE
file that was distributed with this source code.
*/
pragma solidity >=0.6.0 <0.9.0;
pragma experimental ABIEncoderV2;
import "./IGsnTypes.sol";
/// @title IGsnRelayHub Interface
/// @author Enzyme Council <security@enzyme.finance>
interface IGsnRelayHub {
function balanceOf(address target) external view returns (uint256);
function calculateCharge(uint256 gasUsed, IGsnTypes.RelayData calldata relayData) external view returns (uint256);
function depositFor(address target) external payable;
function relayCall(
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 6 of 20 : IGsnTypes.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: GPL-3.0
/*
This file is part of the Enzyme Protocol.
(c) Enzyme Council <council@enzyme.finance>
For the full license information, please view the LICENSE
file that was distributed with this source code.
*/
pragma solidity >=0.6.0 <0.9.0;
pragma experimental ABIEncoderV2;
import "./IGsnForwarder.sol";
/// @title IGsnTypes Interface
/// @author Enzyme Council <security@enzyme.finance>
interface IGsnTypes {
struct RelayData {
uint256 gasPrice;
uint256 pctRelayFee;
uint256 baseRelayFee;
address relayWorker;
address paymaster;
address forwarder;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 7 of 20 : IWETH.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// SPDX-License-Identifier: GPL-3.0
/*
This file is part of the Enzyme Protocol.
(c) Enzyme Council <council@enzyme.finance>
For the full license information, please view the LICENSE
file that was distributed with this source code.
*/
pragma solidity >=0.6.0 <0.9.0;
/// @title IWETH Interface
/// @author Enzyme Council <security@enzyme.finance>
interface IWETH {
function deposit() external payable;
function withdraw(uint256) external;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 8 of 20 : IComptroller.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: GPL-3.0
/*
This file is part of the Enzyme Protocol.
(c) Enzyme Council <council@enzyme.finance>
For the full license information, please view the LICENSE
file that was distributed with this source code.
*/
pragma solidity >=0.6.0 <0.9.0;
import {IVault} from "../vault/IVault.sol";
/// @title IComptroller Interface
/// @author Enzyme Council <security@enzyme.finance>
interface IComptroller {
function activate(bool _isMigration) external;
function buyBackProtocolFeeShares(uint256 _sharesAmount) external;
function buyShares(uint256 _investmentAmount, uint256 _minSharesQuantity)
external
returns (uint256 sharesReceived_);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 9 of 20 : IVault.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: GPL-3.0
/*
This file is part of the Enzyme Protocol.
(c) Enzyme Council <council@enzyme.finance>
For the full license information, please view the LICENSE
file that was distributed with this source code.
*/
pragma solidity >=0.6.0 <0.9.0;
import {IExternalPositionVault} from "../../../../persistent/vault/interfaces/IExternalPositionVault.sol";
import {IFreelyTransferableSharesVault} from
"../../../../persistent/vault/interfaces/IFreelyTransferableSharesVault.sol";
import {IMigratableVault} from "../../../../persistent/vault/interfaces/IMigratableVault.sol";
import {IVaultCore} from "../../../../persistent/vault/interfaces/IVaultCore.sol";
/// @title IVault Interface
/// @author Enzyme Council <security@enzyme.finance>
interface IVault is IVaultCore, IMigratableVault, IFreelyTransferableSharesVault, IExternalPositionVault {
enum VaultAction {
None,
// Shares management
BurnShares,
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 10 of 20 : IFundDeployer.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: GPL-3.0
/*
This file is part of the Enzyme Protocol.
(c) Enzyme Council <council@enzyme.finance>
For the full license information, please view the LICENSE
file that was distributed with this source code.
*/
pragma solidity >=0.6.0 <0.9.0;
pragma experimental ABIEncoderV2;
/// @title IFundDeployer Interface
/// @author Enzyme Council <security@enzyme.finance>
interface IFundDeployer {
struct ReconfigurationRequest {
address nextComptrollerProxy;
uint256 executableTimestamp;
}
function cancelMigration(address _vaultProxy, bool _bypassPrevReleaseFailure) external;
function cancelReconfiguration(address _vaultProxy) external;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 11 of 20 : IPolicyManager.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: GPL-3.0
/*
This file is part of the Enzyme Protocol.
(c) Enzyme Council <council@enzyme.finance>
For the full license information, please view the LICENSE
file that was distributed with this source code.
*/
pragma solidity >=0.6.0 <0.9.0;
pragma experimental ABIEncoderV2;
/// @title PolicyManager Interface
/// @author Enzyme Council <security@enzyme.finance>
/// @notice Interface for the PolicyManager
interface IPolicyManager {
// When updating PolicyHook, also update these functions in PolicyManager:
// 1. __getAllPolicyHooks()
// 2. __policyHookRestrictsCurrentInvestorActions()
enum PolicyHook {
PostBuyShares,
PostCallOnIntegration,
PreTransferShares,
RedeemSharesForSpecificAssets,
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 12 of 20 : GasRelayPaymasterLibBase2.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// SPDX-License-Identifier: GPL-3.0
/*
This file is part of the Enzyme Protocol.
(c) Enzyme Council <council@enzyme.finance>
For the full license information, please view the LICENSE
file that was distributed with this source code.
*/
pragma solidity 0.6.12;
import {GasRelayPaymasterLibBase1} from "./GasRelayPaymasterLibBase1.sol";
/// @title GasRelayPaymasterLibBase2 Contract
/// @author Enzyme Council <security@enzyme.finance>
/// @notice A persistent contract containing all required storage variables and events
/// for a GasRelayPaymasterLib
/// @dev DO NOT EDIT CONTRACT ONCE DEPLOYED. If new events or storage are necessary,
/// they should be added to a numbered GasRelayPaymasterLibBaseXXX that inherits the previous base.
/// e.g., `GasRelayPaymasterLibBase2 is GasRelayPaymasterLibBase1`
abstract contract GasRelayPaymasterLibBase2 is GasRelayPaymasterLibBase1 {
uint256 internal lastDepositTimestamp;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 13 of 20 : IGasRelayPaymaster.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: GPL-3.0
/*
This file is part of the Enzyme Protocol.
(c) Enzyme Council <council@enzyme.finance>
For the full license information, please view the LICENSE
file that was distributed with this source code.
*/
pragma solidity >=0.6.0 <0.9.0;
pragma experimental ABIEncoderV2;
import {IGsnPaymaster} from "../../../external-interfaces/IGsnPaymaster.sol";
/// @title IGasRelayPaymaster Interface
/// @author Enzyme Council <security@enzyme.finance>
interface IGasRelayPaymaster is IGsnPaymaster {
function addAdditionalRelayUsers(address[] calldata _usersToAdd) external;
function deposit() external;
function getLastDepositTimestamp() external view returns (uint256 lastDepositTimestamp_);
function getParentComptroller() external view returns (address parentComptroller_);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 14 of 20 : IGasRelayPaymasterDepositor.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// SPDX-License-Identifier: GPL-3.0
/*
This file is part of the Enzyme Protocol.
(c) Enzyme Council <council@enzyme.finance>
For the full license information, please view the LICENSE
file that was distributed with this source code.
*/
pragma solidity >=0.6.0 <0.9.0;
/// @title IGasRelayPaymasterDepositor Interface
/// @author Enzyme Council <security@enzyme.finance>
interface IGasRelayPaymasterDepositor {
function pullWethForGasRelayer(uint256) external;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 15 of 20 : IGsnForwarder.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: GPL-3.0
/*
This file is part of the Enzyme Protocol.
(c) Enzyme Council <council@enzyme.finance>
For the full license information, please view the LICENSE
file that was distributed with this source code.
*/
pragma solidity >=0.6.0 <0.9.0;
/// @title IGsnForwarder interface
/// @author Enzyme Council <security@enzyme.finance>
interface IGsnForwarder {
struct ForwardRequest {
address from;
address to;
uint256 value;
uint256 gas;
uint256 nonce;
bytes data;
uint256 validUntil;
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 16 of 20 : IExternalPositionVault.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// SPDX-License-Identifier: GPL-3.0
/*
This file is part of the Enzyme Protocol.
(c) Enzyme Council <council@enzyme.finance>
For the full license information, please view the LICENSE
file that was distributed with this source code.
*/
pragma solidity >=0.6.0 <0.9.0;
/// @title IExternalPositionVault interface
/// @author Enzyme Council <security@enzyme.finance>
/// Provides an interface to get the externalPositionLib for a given type from the Vault
interface IExternalPositionVault {
function getExternalPositionLibForType(uint256) external view returns (address);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 17 of 20 : IFreelyTransferableSharesVault.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// SPDX-License-Identifier: GPL-3.0
/*
This file is part of the Enzyme Protocol.
(c) Enzyme Council <council@enzyme.finance>
For the full license information, please view the LICENSE
file that was distributed with this source code.
*/
pragma solidity >=0.6.0 <0.9.0;
/// @title IFreelyTransferableSharesVault Interface
/// @author Enzyme Council <security@enzyme.finance>
/// @notice Provides the interface for determining whether a vault's shares
/// are guaranteed to be freely transferable.
/// @dev DO NOT EDIT CONTRACT
interface IFreelyTransferableSharesVault {
function sharesAreFreelyTransferable() external view returns (bool sharesAreFreelyTransferable_);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 18 of 20 : IMigratableVault.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// SPDX-License-Identifier: GPL-3.0
/*
This file is part of the Enzyme Protocol.
(c) Enzyme Council <council@enzyme.finance>
For the full license information, please view the LICENSE
file that was distributed with this source code.
*/
pragma solidity >=0.6.0 <0.9.0;
/// @title IMigratableVault Interface
/// @author Enzyme Council <security@enzyme.finance>
/// @dev DO NOT EDIT CONTRACT
interface IMigratableVault {
function canMigrate(address _who) external view returns (bool canMigrate_);
function init(address _owner, address _accessor, string calldata _fundName) external;
function setAccessor(address _nextAccessor) external;
function setVaultLib(address _nextVaultLib) external;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 19 of 20 : IVaultCore.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: GPL-3.0
/*
This file is part of the Enzyme Protocol.
(c) Enzyme Council <council@enzyme.finance>
For the full license information, please view the LICENSE
file that was distributed with this source code.
*/
pragma solidity >=0.6.0 <0.9.0;
/// @title IVaultCore interface
/// @author Enzyme Council <security@enzyme.finance>
/// @notice Interface for getters of core vault storage
/// @dev DO NOT EDIT CONTRACT
interface IVaultCore {
function getAccessor() external view returns (address accessor_);
function getCreator() external view returns (address creator_);
function getMigrator() external view returns (address migrator_);
function getOwner() external view returns (address owner_);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 20 of 20 : GasRelayPaymasterLibBase1.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: GPL-3.0
/*
This file is part of the Enzyme Protocol.
(c) Enzyme Council <council@enzyme.finance>
For the full license information, please view the LICENSE
file that was distributed with this source code.
*/
pragma solidity 0.6.12;
/// @title GasRelayPaymasterLibBase1 Contract
/// @author Enzyme Council <security@enzyme.finance>
/// @notice A persistent contract containing all required storage variables and events
/// for a GasRelayPaymasterLib
/// @dev DO NOT EDIT CONTRACT ONCE DEPLOYED. If new events or storage are necessary,
/// they should be added to a numbered GasRelayPaymasterLibBaseXXX that inherits the previous base.
/// e.g., `GasRelayPaymasterLibBase2 is GasRelayPaymasterLibBase1`
abstract contract GasRelayPaymasterLibBase1 {
event Deposited(uint256 amount);
event TransactionRelayed(address indexed authorizer, bytes4 invokedSelector, bool successful);
event Withdrawn(uint256 amount);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Settings
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
"remappings": [
"@openzeppelin/contracts/=lib/openzeppelin-solc-0.6/contracts/",
"@uniswap/v3-core/=lib/uniswap-v3-core/",
"ds-test/=lib/forge-std/lib/ds-test/src/",
"forge-std/=lib/forge-std/src/",
"openzeppelin-solc-0.6/=lib/openzeppelin-solc-0.6/contracts/",
"openzeppelin-solc-0.7/=lib/openzeppelin-solc-0.7/contracts/",
"openzeppelin-solc-0.8/=lib/openzeppelin-solc-0.8/contracts/",
"uniswap-v3-core/=lib/uniswap-v3-core/",
"uniswap-v3-core-0.8/=lib/uniswap-v3-core-0.8/",
"uniswap-v3-periphery/=lib/uniswap-v3-periphery/contracts/",
"uniswap-v3-periphery-0.8/=lib/uniswap-v3-periphery-0.8/contracts/"
],
"optimizer": {
"enabled": true,
"runs": 200,
"details": {
"yul": false
}
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "none"
},
"outputSelection": {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_wethToken","type":"address"},{"internalType":"address","name":"_relayHub","type":"address"},{"internalType":"address","name":"_trustedForwarder","type":"address"},{"internalType":"uint256","name":"_depositCooldown","type":"uint256"},{"internalType":"uint256","name":"_depositMaxTotal","type":"uint256"},{"internalType":"uint256","name":"_relayFeeMaxBase","type":"uint256"},{"internalType":"uint256","name":"_relayFeeMaxPercent","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"AdditionalRelayUserAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"AdditionalRelayUserRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"authorizer","type":"address"},{"indexed":false,"internalType":"bytes4","name":"invokedSelector","type":"bytes4"},{"indexed":false,"internalType":"bool","name":"successful","type":"bool"}],"name":"TransactionRelayed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"address[]","name":"_usersToAdd","type":"address[]"}],"name":"addAdditionalRelayUsers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getGasAndDataLimits","outputs":[{"components":[{"internalType":"uint256","name":"acceptanceBudget","type":"uint256"},{"internalType":"uint256","name":"preRelayedCallGasLimit","type":"uint256"},{"internalType":"uint256","name":"postRelayedCallGasLimit","type":"uint256"},{"internalType":"uint256","name":"calldataSizeLimit","type":"uint256"}],"internalType":"struct IGsnPaymaster.GasAndDataLimits","name":"limits_","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getHubAddr","outputs":[{"internalType":"address","name":"relayHub_","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastDepositTimestamp","outputs":[{"internalType":"uint256","name":"lastDepositTimestamp_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getParentComptroller","outputs":[{"internalType":"address","name":"parentComptroller_","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getParentVault","outputs":[{"internalType":"address","name":"parentVault_","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelayHubDeposit","outputs":[{"internalType":"uint256","name":"depositBalance_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWethToken","outputs":[{"internalType":"address","name":"wethToken_","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_who","type":"address"}],"name":"isAdditionalRelayUser","outputs":[{"internalType":"bool","name":"isAdditionalRelayUser_","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"_context","type":"bytes"},{"internalType":"bool","name":"_success","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"components":[{"internalType":"uint256","name":"gasPrice","type":"uint256"},{"internalType":"uint256","name":"pctRelayFee","type":"uint256"},{"internalType":"uint256","name":"baseRelayFee","type":"uint256"},{"internalType":"address","name":"relayWorker","type":"address"},{"internalType":"address","name":"paymaster","type":"address"},{"internalType":"address","name":"forwarder","type":"address"},{"internalType":"bytes","name":"paymasterData","type":"bytes"},{"internalType":"uint256","name":"clientId","type":"uint256"}],"internalType":"struct IGsnTypes.RelayData","name":"_relayData","type":"tuple"}],"name":"postRelayedCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"components":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"validUntil","type":"uint256"}],"internalType":"struct IGsnForwarder.ForwardRequest","name":"request","type":"tuple"},{"components":[{"internalType":"uint256","name":"gasPrice","type":"uint256"},{"internalType":"uint256","name":"pctRelayFee","type":"uint256"},{"internalType":"uint256","name":"baseRelayFee","type":"uint256"},{"internalType":"address","name":"relayWorker","type":"address"},{"internalType":"address","name":"paymaster","type":"address"},{"internalType":"address","name":"forwarder","type":"address"},{"internalType":"bytes","name":"paymasterData","type":"bytes"},{"internalType":"uint256","name":"clientId","type":"uint256"}],"internalType":"struct IGsnTypes.RelayData","name":"relayData","type":"tuple"}],"internalType":"struct IGsnTypes.RelayRequest","name":"_relayRequest","type":"tuple"},{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"preRelayedCall","outputs":[{"internalType":"bytes","name":"context_","type":"bytes"},{"internalType":"bool","name":"rejectOnRecipientRevert_","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_usersToRemove","type":"address[]"}],"name":"removeAdditionalRelayUsers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"trustedForwarder","outputs":[{"internalType":"address","name":"trustedForwarder_","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"versionPaymaster","outputs":[{"internalType":"string","name":"versionString_","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawBalance","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6101606040523480156200001257600080fd5b5060405162001e5a38038062001e5a833981016040819052620000359162000092565b60809390935260a09190915260c05260e0526001600160601b0319606092831b81166101005290821b81166101205291901b166101405262000177565b80516200007f8162000152565b92915050565b80516200007f816200016c565b600080600080600080600060e0888a031215620000ae57600080fd5b6000620000bc8a8a62000072565b9750506020620000cf8a828b0162000072565b9650506040620000e28a828b0162000072565b9550506060620000f58a828b0162000085565b9450506080620001088a828b0162000085565b93505060a06200011b8a828b0162000085565b92505060c06200012e8a828b0162000085565b91505092959891949750929550565b60006001600160a01b0382166200007f565b90565b6200015d816200013d565b81146200016957600080fd5b50565b6200015d816200014f565b60805160a05160c05160e0516101005160601c6101205160601c6101405160601c611c77620001e3600039806105db52508061028252806109f65280610cfe5250806107b25250806103385250806102e8525080610e8c5280610ebe525080610e4a5250611c776000f3fe608060405234801561001057600080fd5b506004361061010a5760003560e01c80637abfbd47116100a2578063970d4c1611610071578063970d4c16146101f3578063ad5cb1cf14610206578063b039a88f1461020e578063d0e30db014610223578063de8662001461022b5761010a565b80637abfbd47146101bb5780637da0a877146101ce5780638f4698d2146101d6578063921276ea146101de5761010a565b80635fd8c710116100de5780635fd8c710146101785780636231179d1461018057806374e861d6146101a057806376fa01c3146101a85761010a565b8062be5dd41461010f57806319ab453c146101395780632afe31c11461014e5780634c252f9114610163575b600080fd5b61012261011d366004611339565b610233565b6040516101309291906119ae565b60405180910390f35b61014c6101473660046111a8565b6104fc565b005b61015661054e565b6040516101309190611aed565b61016b6105d9565b6040516101309190611955565b61014c6105fd565b61019361018e3660046111a8565b610792565b6040516101309190611985565b61016b6107b0565b61014c6101b63660046112a4565b6107d4565b61014c6101c9366004611226565b610898565b61016b6109f4565b610156610a18565b6101e6610a1e565b60405161013091906119ce565b61014c610201366004611226565b610a3e565b61016b610b91565b610216610ba7565b6040516101309190611adf565b61014c610be0565b61016b610c22565b6060600061023f6107b0565b6001600160a01b0316336001600160a01b0316146102785760405162461bcd60e51b815260040161026f90611a6f565b60405180910390fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166102af60208a018a611b8d565b6102c09060c081019060a0016111a8565b6001600160a01b0316146102e65760405162461bcd60e51b815260040161026f906119ff565b7f000000000000000000000000000000000000000000000000000000000000000061031460208a018a611b8d565b6040013511156103365760405162461bcd60e51b815260040161026f90611a9f565b7f000000000000000000000000000000000000000000000000000000000000000061036460208a018a611b8d565b6020013511156103865760405162461bcd60e51b815260040161026f90611abf565b6103908880611b6c565b60400135156103b15760405162461bcd60e51b815260040161026f90611a0f565b60006103bb610c22565b90506001600160a01b03811663368618896103d68b80611b6c565b6103e49060208101906111a8565b6040518263ffffffff1660e01b81526004016104009190611955565b60206040518083038186803b15801561041857600080fd5b505afa15801561042c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104509190611286565b8061047157506104716104638a80611b6c565b61018e9060208101906111a8565b61048d5760405162461bcd60e51b815260040161026f906119df565b60006104af61049c8b80611b6c565b6104aa9060a0810190611b16565b610c31565b90506104bb8a80611b6c565b6104c99060208101906111a8565b816040516020016104db929190611963565b60408051601f198184030181529190529a60009a5098505050505050505050565b6000610506610c22565b6001600160a01b03161461052c5760405162461bcd60e51b815260040161026f90611a7f565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006105586107b0565b6001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016105839190611955565b60206040518083038186803b15801561059b57600080fd5b505afa1580156105af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d391906113e9565b90505b90565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610607610c22565b90506000610613610ce5565b9050816001600160a01b031663893d20e86040518163ffffffff1660e01b815260040160206040518083038186803b15801561064e57600080fd5b505afa158015610662573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068691906111ce565b6001600160a01b0316816001600160a01b031614806106be57506106a982610d39565b6001600160a01b0316816001600160a01b0316145b6106da5760405162461bcd60e51b815260040161026f90611a5f565b6106e26107b0565b6001600160a01b031662f714ce6106f761054e565b306040518363ffffffff1660e01b8152600401610715929190611afb565b600060405180830381600087803b15801561072f57600080fd5b505af1158015610743573d6000803e3d6000fd5b5050505060004790506107568382610dac565b7f430648de173157e069201c943adb2d4e340e7cf5b27b1b09c9cb852f03d63b56816040516107859190611aed565b60405180910390a1505050565b6001600160a01b031660009081526002602052604090205460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b6107dc6107b0565b6001600160a01b0316336001600160a01b03161461080c5760405162461bcd60e51b815260040161026f90611a6f565b600061081b60c0830183611b16565b8101906108289190611268565b9050801561083857610838610e48565b600080610847878901896111ec565b91509150816001600160a01b03167f0899cabaea081bac7a32055422e160973f6e38e6ecb8faee1f6aa46b1b76d9148288604051610886929190611993565b60405180910390a25050505050505050565b6108a0610c22565b6001600160a01b031663893d20e86040518163ffffffff1660e01b815260040160206040518083038186803b1580156108d857600080fd5b505afa1580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091091906111ce565b6001600160a01b0316610921610ce5565b6001600160a01b0316146109475760405162461bcd60e51b815260040161026f90611acf565b60005b818110156109ef57600083838381811061096057fe5b905060200201602081019061097591906111a8565b905061098081610792565b1561099d5760405162461bcd60e51b815260040161026f90611a8f565b6001600160a01b038116600081815260026020526040808220805460ff19166001179055517f1c72adb3c9c3b4bb9d4122a7ae7d398fa5d7dc73e3619a55899a9f9022e11fd69190a25060010161094a565b505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60015490565b6060604051806060016040528060238152602001611c4860239139905090565b610a46610c22565b6001600160a01b031663893d20e86040518163ffffffff1660e01b815260040160206040518083038186803b158015610a7e57600080fd5b505afa158015610a92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab691906111ce565b6001600160a01b0316610ac7610ce5565b6001600160a01b031614610aed5760405162461bcd60e51b815260040161026f90611acf565b60005b818110156109ef576000838383818110610b0657fe5b9050602002016020810190610b1b91906111a8565b9050610b2681610792565b610b425760405162461bcd60e51b815260040161026f90611a1f565b6001600160a01b038116600081815260026020526040808220805460ff19169055517f478b42f734cf6f6a312ca94cf5fb82bfbdc49fd1507bb5fac53e0b390182cf689190a250600101610af0565b600080546105d3906001600160a01b0316610d39565b610baf61107d565b6040518060800160405280620249f08152602001620186a081526020016201adb08152602001612904815250905090565b610be8610b91565b6001600160a01b0316336001600160a01b031614610c185760405162461bcd60e51b815260040161026f90611aaf565b610c20610e48565b565b6000546001600160a01b031690565b60006004821015610c545760405162461bcd60e51b815260040161026f906119ef565b601883836003818110610c6357fe5b909101356001600160f81b03191690911c9050601084846002818110610c8557fe5b909101356001600160f81b03191690911c9050600885856001818110610ca757fe5b909101356001600160f81b03191690911c90508585600081610cc557fe5b9050013560f81c60f81b6001600160f81b03191617171790505b92915050565b600060143610801590610d205750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b15610d34575060131936013560601c6105d6565b503390565b6000816001600160a01b0316635a53e3486040518163ffffffff1660e01b815260040160206040518083038186803b158015610d7457600080fd5b505afa158015610d88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdf91906111ce565b80471015610dcc5760405162461bcd60e51b815260040161026f90611a4f565b6000826001600160a01b031682604051610de59061194a565b60006040518083038185875af1925050503d8060008114610e22576040519150601f19603f3d011682016040523d82523d6000602084013e610e27565b606091505b50509050806109ef5760405162461bcd60e51b815260040161026f90611a3f565b7f0000000000000000000000000000000000000000000000000000000000000000610e71610a18565b42031015610e7e57610c20565b6000610e8861054e565b90507f00000000000000000000000000000000000000000000000000000000000000008110610eb75750610c20565b6000610ee37f000000000000000000000000000000000000000000000000000000000000000083611055565b9050610eed610b91565b6001600160a01b03166379951f0f826040518263ffffffff1660e01b8152600401610f189190611aed565b600060405180830381600087803b158015610f3257600080fd5b505af1158015610f46573d6000803e3d6000fd5b50505050610f526105d9565b6001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b8152600401610f7d9190611aed565b600060405180830381600087803b158015610f9757600080fd5b505af1158015610fab573d6000803e3d6000fd5b50505050610fb76107b0565b6001600160a01b031663aa67c91982306040518363ffffffff1660e01b8152600401610fe39190611955565b6000604051808303818588803b158015610ffc57600080fd5b505af1158015611010573d6000803e3d6000fd5b50504260015550506040517f2a89b2e3d580398d6dc2db5e0f336b52602bbaa51afa9bb5cdf59239cf0d2bea9150611049908390611aed565b60405180910390a15050565b6000828211156110775760405162461bcd60e51b815260040161026f90611a2f565b50900390565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b8035610cdf81611c15565b8051610cdf81611c15565b60008083601f8401126110cd57600080fd5b50813567ffffffffffffffff8111156110e557600080fd5b6020830191508360208202830111156110fd57600080fd5b9250929050565b8035610cdf81611c2c565b8051610cdf81611c2c565b8035610cdf81611c35565b60008083601f84011261113757600080fd5b50813567ffffffffffffffff81111561114f57600080fd5b6020830191508360018202830111156110fd57600080fd5b6000610100828403121561117a57600080fd5b50919050565b60006040828403121561117a57600080fd5b8035610cdf81611c3e565b8051610cdf81611c3e565b6000602082840312156111ba57600080fd5b60006111c684846110a5565b949350505050565b6000602082840312156111e057600080fd5b60006111c684846110b0565b600080604083850312156111ff57600080fd5b600061120b85856110a5565b925050602061121c8582860161111a565b9150509250929050565b6000806020838503121561123957600080fd5b823567ffffffffffffffff81111561125057600080fd5b61125c858286016110bb565b92509250509250929050565b60006020828403121561127a57600080fd5b60006111c68484611104565b60006020828403121561129857600080fd5b60006111c6848461110f565b6000806000806000608086880312156112bc57600080fd5b853567ffffffffffffffff8111156112d357600080fd5b6112df88828901611125565b955095505060206112f288828901611104565b935050604061130388828901611192565b925050606086013567ffffffffffffffff81111561132057600080fd5b61132c88828901611167565b9150509295509295909350565b6000806000806000806080878903121561135257600080fd5b863567ffffffffffffffff81111561136957600080fd5b61137589828a01611180565b965050602087013567ffffffffffffffff81111561139257600080fd5b61139e89828a01611125565b9550955050604087013567ffffffffffffffff8111156113bd57600080fd5b6113c989828a01611125565b935093505060606113dc89828a01611192565b9150509295509295509295565b6000602082840312156113fb57600080fd5b60006111c6848461119d565b61141081611bb6565b82525050565b61141081611bc1565b61141081611bc6565b600061143382611ba4565b61143d8185611ba8565b935061144d818560208601611bdf565b61145681611c0b565b9093019392505050565b600061146d602383611ba8565b7f70726552656c6179656443616c6c3a20556e617574686f72697a65642063616c8152623632b960e91b602082015260400192915050565b60006114b2603c83611ba8565b7f5f5f706172736554784461746146756e6374696f6e53656c6563746f723a205f81527f747844617461206973206e6f7420612076616c6964206c656e67746800000000602082015260400192915050565b6000611511602683611ba8565b7f70726552656c6179656443616c6c3a20556e617574686f72697a656420666f728152653bb0b93232b960d11b602082015260400192915050565b6000611559601e83611ba8565b7f70726552656c6179656443616c6c3a204e6f6e2d7a65726f2076616c75650000815260200192915050565b6000611592602f83611ba8565b7f72656d6f76654164646974696f6e616c52656c617955736572733a205573657281526e081b9bdd081c9959da5cdd195c9959608a1b602082015260400192915050565b60006115e3601e83611ba8565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815260200192915050565b600061161c603a83611ba8565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207281527f6563697069656e74206d61792068617665207265766572746564000000000000602082015260400192915050565b600061167b601d83611ba8565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000815260200192915050565b60006116b4603883611ba8565b7f776974686472617742616c616e63653a204f6e6c79206f776e6572206f72206381527f6f6d7074726f6c6c657220697320617574686f72697a65640000000000000000602082015260400192915050565b6000611713601e83611ba8565b7f43616e206f6e6c792062652063616c6c65642062792052656c61794875620000815260200192915050565b600061174c602383611ba8565b7f696e69743a205061796d617374657220616c726561647920696e697469616c698152621e995960ea1b602082015260400192915050565b6000611791602883611ba8565b7f6164644164646974696f6e616c52656c617955736572733a205573657220726581526719da5cdd195c995960c21b602082015260400192915050565b60006117db602183611ba8565b7f70726552656c6179656443616c6c3a2048696768206261736552656c617946658152606560f81b602082015260400192915050565b600061181e602c83611ba8565b7f43616e206f6e6c792062652063616c6c65642062792074686520706172656e7481526b1031b7b6b83a3937b63632b960a11b602082015260400192915050565b600061186c602083611ba8565b7f70726552656c6179656443616c6c3a20486967682070637452656c6179466565815260200192915050565b6000610cdf600083611bb1565b60006118b2602a83611ba8565b7f4f6e6c79207468652066756e64206f776e65722063616e2063616c6c207468698152693990333ab731ba34b7b760b11b602082015260400192915050565b805160808301906119028482611941565b5060208201516119156020850182611941565b5060408201516119286040850182611941565b50606082015161193b6060850182611941565b50505050565b611410816105d6565b6000610cdf82611898565b60208101610cdf8284611407565b604081016119718285611407565b61197e602083018461141f565b9392505050565b60208101610cdf8284611416565b604081016119a1828561141f565b61197e6020830184611416565b604080825281016119bf8185611428565b905061197e6020830184611416565b6020808252810161197e8184611428565b60208082528101610cdf81611460565b60208082528101610cdf816114a5565b60208082528101610cdf81611504565b60208082528101610cdf8161154c565b60208082528101610cdf81611585565b60208082528101610cdf816115d6565b60208082528101610cdf8161160f565b60208082528101610cdf8161166e565b60208082528101610cdf816116a7565b60208082528101610cdf81611706565b60208082528101610cdf8161173f565b60208082528101610cdf81611784565b60208082528101610cdf816117ce565b60208082528101610cdf81611811565b60208082528101610cdf8161185f565b60208082528101610cdf816118a5565b60808101610cdf82846118f1565b60208101610cdf8284611941565b60408101611b098285611941565b61197e6020830184611407565b6000808335601e1936859003018112611b2e57600080fd5b80840192508235915067ffffffffffffffff821115611b4c57600080fd5b602083019250600182023603831315611b6457600080fd5b509250929050565b6000823560de1936849003018112611b8357600080fd5b9190910192915050565b6000823560fe1936849003018112611b8357600080fd5b5190565b90815260200190565b919050565b6000610cdf82611bd3565b151590565b6001600160e01b03191690565b6001600160a01b031690565b60005b83811015611bfa578181015183820152602001611be2565b8381111561193b5750506000910152565b601f01601f191690565b611c1e81611bb6565b8114611c2957600080fd5b50565b611c1e81611bc1565b611c1e81611bc6565b611c1e816105d656fe322e322e332b6f70656e67736e2e656e7a796d6566756e642e697061796d6173746572a164736f6c634300060c000a000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000009e59ea5333cd4f402dac320a04fafa023fe3810d000000000000000000000000ca57e5d6218aeb093d76372b51ba355cfb3c6cd000000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061010a5760003560e01c80637abfbd47116100a2578063970d4c1611610071578063970d4c16146101f3578063ad5cb1cf14610206578063b039a88f1461020e578063d0e30db014610223578063de8662001461022b5761010a565b80637abfbd47146101bb5780637da0a877146101ce5780638f4698d2146101d6578063921276ea146101de5761010a565b80635fd8c710116100de5780635fd8c710146101785780636231179d1461018057806374e861d6146101a057806376fa01c3146101a85761010a565b8062be5dd41461010f57806319ab453c146101395780632afe31c11461014e5780634c252f9114610163575b600080fd5b61012261011d366004611339565b610233565b6040516101309291906119ae565b60405180910390f35b61014c6101473660046111a8565b6104fc565b005b61015661054e565b6040516101309190611aed565b61016b6105d9565b6040516101309190611955565b61014c6105fd565b61019361018e3660046111a8565b610792565b6040516101309190611985565b61016b6107b0565b61014c6101b63660046112a4565b6107d4565b61014c6101c9366004611226565b610898565b61016b6109f4565b610156610a18565b6101e6610a1e565b60405161013091906119ce565b61014c610201366004611226565b610a3e565b61016b610b91565b610216610ba7565b6040516101309190611adf565b61014c610be0565b61016b610c22565b6060600061023f6107b0565b6001600160a01b0316336001600160a01b0316146102785760405162461bcd60e51b815260040161026f90611a6f565b60405180910390fd5b6001600160a01b037f000000000000000000000000ca57e5d6218aeb093d76372b51ba355cfb3c6cd0166102af60208a018a611b8d565b6102c09060c081019060a0016111a8565b6001600160a01b0316146102e65760405162461bcd60e51b815260040161026f906119ff565b7f000000000000000000000000000000000000000000000000000000000000000061031460208a018a611b8d565b6040013511156103365760405162461bcd60e51b815260040161026f90611a9f565b7f000000000000000000000000000000000000000000000000000000000000000a61036460208a018a611b8d565b6020013511156103865760405162461bcd60e51b815260040161026f90611abf565b6103908880611b6c565b60400135156103b15760405162461bcd60e51b815260040161026f90611a0f565b60006103bb610c22565b90506001600160a01b03811663368618896103d68b80611b6c565b6103e49060208101906111a8565b6040518263ffffffff1660e01b81526004016104009190611955565b60206040518083038186803b15801561041857600080fd5b505afa15801561042c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104509190611286565b8061047157506104716104638a80611b6c565b61018e9060208101906111a8565b61048d5760405162461bcd60e51b815260040161026f906119df565b60006104af61049c8b80611b6c565b6104aa9060a0810190611b16565b610c31565b90506104bb8a80611b6c565b6104c99060208101906111a8565b816040516020016104db929190611963565b60408051601f198184030181529190529a60009a5098505050505050505050565b6000610506610c22565b6001600160a01b03161461052c5760405162461bcd60e51b815260040161026f90611a7f565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006105586107b0565b6001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016105839190611955565b60206040518083038186803b15801561059b57600080fd5b505afa1580156105af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d391906113e9565b90505b90565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290565b6000610607610c22565b90506000610613610ce5565b9050816001600160a01b031663893d20e86040518163ffffffff1660e01b815260040160206040518083038186803b15801561064e57600080fd5b505afa158015610662573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068691906111ce565b6001600160a01b0316816001600160a01b031614806106be57506106a982610d39565b6001600160a01b0316816001600160a01b0316145b6106da5760405162461bcd60e51b815260040161026f90611a5f565b6106e26107b0565b6001600160a01b031662f714ce6106f761054e565b306040518363ffffffff1660e01b8152600401610715929190611afb565b600060405180830381600087803b15801561072f57600080fd5b505af1158015610743573d6000803e3d6000fd5b5050505060004790506107568382610dac565b7f430648de173157e069201c943adb2d4e340e7cf5b27b1b09c9cb852f03d63b56816040516107859190611aed565b60405180910390a1505050565b6001600160a01b031660009081526002602052604090205460ff1690565b7f0000000000000000000000009e59ea5333cd4f402dac320a04fafa023fe3810d90565b6107dc6107b0565b6001600160a01b0316336001600160a01b03161461080c5760405162461bcd60e51b815260040161026f90611a6f565b600061081b60c0830183611b16565b8101906108289190611268565b9050801561083857610838610e48565b600080610847878901896111ec565b91509150816001600160a01b03167f0899cabaea081bac7a32055422e160973f6e38e6ecb8faee1f6aa46b1b76d9148288604051610886929190611993565b60405180910390a25050505050505050565b6108a0610c22565b6001600160a01b031663893d20e86040518163ffffffff1660e01b815260040160206040518083038186803b1580156108d857600080fd5b505afa1580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061091091906111ce565b6001600160a01b0316610921610ce5565b6001600160a01b0316146109475760405162461bcd60e51b815260040161026f90611acf565b60005b818110156109ef57600083838381811061096057fe5b905060200201602081019061097591906111a8565b905061098081610792565b1561099d5760405162461bcd60e51b815260040161026f90611a8f565b6001600160a01b038116600081815260026020526040808220805460ff19166001179055517f1c72adb3c9c3b4bb9d4122a7ae7d398fa5d7dc73e3619a55899a9f9022e11fd69190a25060010161094a565b505050565b7f000000000000000000000000ca57e5d6218aeb093d76372b51ba355cfb3c6cd090565b60015490565b6060604051806060016040528060238152602001611c4860239139905090565b610a46610c22565b6001600160a01b031663893d20e86040518163ffffffff1660e01b815260040160206040518083038186803b158015610a7e57600080fd5b505afa158015610a92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab691906111ce565b6001600160a01b0316610ac7610ce5565b6001600160a01b031614610aed5760405162461bcd60e51b815260040161026f90611acf565b60005b818110156109ef576000838383818110610b0657fe5b9050602002016020810190610b1b91906111a8565b9050610b2681610792565b610b425760405162461bcd60e51b815260040161026f90611a1f565b6001600160a01b038116600081815260026020526040808220805460ff19169055517f478b42f734cf6f6a312ca94cf5fb82bfbdc49fd1507bb5fac53e0b390182cf689190a250600101610af0565b600080546105d3906001600160a01b0316610d39565b610baf61107d565b6040518060800160405280620249f08152602001620186a081526020016201adb08152602001612904815250905090565b610be8610b91565b6001600160a01b0316336001600160a01b031614610c185760405162461bcd60e51b815260040161026f90611aaf565b610c20610e48565b565b6000546001600160a01b031690565b60006004821015610c545760405162461bcd60e51b815260040161026f906119ef565b601883836003818110610c6357fe5b909101356001600160f81b03191690911c9050601084846002818110610c8557fe5b909101356001600160f81b03191690911c9050600885856001818110610ca757fe5b909101356001600160f81b03191690911c90508585600081610cc557fe5b9050013560f81c60f81b6001600160f81b03191617171790505b92915050565b600060143610801590610d205750336001600160a01b037f000000000000000000000000ca57e5d6218aeb093d76372b51ba355cfb3c6cd016145b15610d34575060131936013560601c6105d6565b503390565b6000816001600160a01b0316635a53e3486040518163ffffffff1660e01b815260040160206040518083038186803b158015610d7457600080fd5b505afa158015610d88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdf91906111ce565b80471015610dcc5760405162461bcd60e51b815260040161026f90611a4f565b6000826001600160a01b031682604051610de59061194a565b60006040518083038185875af1925050503d8060008114610e22576040519150601f19603f3d011682016040523d82523d6000602084013e610e27565b606091505b50509050806109ef5760405162461bcd60e51b815260040161026f90611a3f565b7f0000000000000000000000000000000000000000000000000000000000015180610e71610a18565b42031015610e7e57610c20565b6000610e8861054e565b90507f0000000000000000000000000000000000000000000000000de0b6b3a76400008110610eb75750610c20565b6000610ee37f0000000000000000000000000000000000000000000000000de0b6b3a764000083611055565b9050610eed610b91565b6001600160a01b03166379951f0f826040518263ffffffff1660e01b8152600401610f189190611aed565b600060405180830381600087803b158015610f3257600080fd5b505af1158015610f46573d6000803e3d6000fd5b50505050610f526105d9565b6001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b8152600401610f7d9190611aed565b600060405180830381600087803b158015610f9757600080fd5b505af1158015610fab573d6000803e3d6000fd5b50505050610fb76107b0565b6001600160a01b031663aa67c91982306040518363ffffffff1660e01b8152600401610fe39190611955565b6000604051808303818588803b158015610ffc57600080fd5b505af1158015611010573d6000803e3d6000fd5b50504260015550506040517f2a89b2e3d580398d6dc2db5e0f336b52602bbaa51afa9bb5cdf59239cf0d2bea9150611049908390611aed565b60405180910390a15050565b6000828211156110775760405162461bcd60e51b815260040161026f90611a2f565b50900390565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b8035610cdf81611c15565b8051610cdf81611c15565b60008083601f8401126110cd57600080fd5b50813567ffffffffffffffff8111156110e557600080fd5b6020830191508360208202830111156110fd57600080fd5b9250929050565b8035610cdf81611c2c565b8051610cdf81611c2c565b8035610cdf81611c35565b60008083601f84011261113757600080fd5b50813567ffffffffffffffff81111561114f57600080fd5b6020830191508360018202830111156110fd57600080fd5b6000610100828403121561117a57600080fd5b50919050565b60006040828403121561117a57600080fd5b8035610cdf81611c3e565b8051610cdf81611c3e565b6000602082840312156111ba57600080fd5b60006111c684846110a5565b949350505050565b6000602082840312156111e057600080fd5b60006111c684846110b0565b600080604083850312156111ff57600080fd5b600061120b85856110a5565b925050602061121c8582860161111a565b9150509250929050565b6000806020838503121561123957600080fd5b823567ffffffffffffffff81111561125057600080fd5b61125c858286016110bb565b92509250509250929050565b60006020828403121561127a57600080fd5b60006111c68484611104565b60006020828403121561129857600080fd5b60006111c6848461110f565b6000806000806000608086880312156112bc57600080fd5b853567ffffffffffffffff8111156112d357600080fd5b6112df88828901611125565b955095505060206112f288828901611104565b935050604061130388828901611192565b925050606086013567ffffffffffffffff81111561132057600080fd5b61132c88828901611167565b9150509295509295909350565b6000806000806000806080878903121561135257600080fd5b863567ffffffffffffffff81111561136957600080fd5b61137589828a01611180565b965050602087013567ffffffffffffffff81111561139257600080fd5b61139e89828a01611125565b9550955050604087013567ffffffffffffffff8111156113bd57600080fd5b6113c989828a01611125565b935093505060606113dc89828a01611192565b9150509295509295509295565b6000602082840312156113fb57600080fd5b60006111c6848461119d565b61141081611bb6565b82525050565b61141081611bc1565b61141081611bc6565b600061143382611ba4565b61143d8185611ba8565b935061144d818560208601611bdf565b61145681611c0b565b9093019392505050565b600061146d602383611ba8565b7f70726552656c6179656443616c6c3a20556e617574686f72697a65642063616c8152623632b960e91b602082015260400192915050565b60006114b2603c83611ba8565b7f5f5f706172736554784461746146756e6374696f6e53656c6563746f723a205f81527f747844617461206973206e6f7420612076616c6964206c656e67746800000000602082015260400192915050565b6000611511602683611ba8565b7f70726552656c6179656443616c6c3a20556e617574686f72697a656420666f728152653bb0b93232b960d11b602082015260400192915050565b6000611559601e83611ba8565b7f70726552656c6179656443616c6c3a204e6f6e2d7a65726f2076616c75650000815260200192915050565b6000611592602f83611ba8565b7f72656d6f76654164646974696f6e616c52656c617955736572733a205573657281526e081b9bdd081c9959da5cdd195c9959608a1b602082015260400192915050565b60006115e3601e83611ba8565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815260200192915050565b600061161c603a83611ba8565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207281527f6563697069656e74206d61792068617665207265766572746564000000000000602082015260400192915050565b600061167b601d83611ba8565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000815260200192915050565b60006116b4603883611ba8565b7f776974686472617742616c616e63653a204f6e6c79206f776e6572206f72206381527f6f6d7074726f6c6c657220697320617574686f72697a65640000000000000000602082015260400192915050565b6000611713601e83611ba8565b7f43616e206f6e6c792062652063616c6c65642062792052656c61794875620000815260200192915050565b600061174c602383611ba8565b7f696e69743a205061796d617374657220616c726561647920696e697469616c698152621e995960ea1b602082015260400192915050565b6000611791602883611ba8565b7f6164644164646974696f6e616c52656c617955736572733a205573657220726581526719da5cdd195c995960c21b602082015260400192915050565b60006117db602183611ba8565b7f70726552656c6179656443616c6c3a2048696768206261736552656c617946658152606560f81b602082015260400192915050565b600061181e602c83611ba8565b7f43616e206f6e6c792062652063616c6c65642062792074686520706172656e7481526b1031b7b6b83a3937b63632b960a11b602082015260400192915050565b600061186c602083611ba8565b7f70726552656c6179656443616c6c3a20486967682070637452656c6179466565815260200192915050565b6000610cdf600083611bb1565b60006118b2602a83611ba8565b7f4f6e6c79207468652066756e64206f776e65722063616e2063616c6c207468698152693990333ab731ba34b7b760b11b602082015260400192915050565b805160808301906119028482611941565b5060208201516119156020850182611941565b5060408201516119286040850182611941565b50606082015161193b6060850182611941565b50505050565b611410816105d6565b6000610cdf82611898565b60208101610cdf8284611407565b604081016119718285611407565b61197e602083018461141f565b9392505050565b60208101610cdf8284611416565b604081016119a1828561141f565b61197e6020830184611416565b604080825281016119bf8185611428565b905061197e6020830184611416565b6020808252810161197e8184611428565b60208082528101610cdf81611460565b60208082528101610cdf816114a5565b60208082528101610cdf81611504565b60208082528101610cdf8161154c565b60208082528101610cdf81611585565b60208082528101610cdf816115d6565b60208082528101610cdf8161160f565b60208082528101610cdf8161166e565b60208082528101610cdf816116a7565b60208082528101610cdf81611706565b60208082528101610cdf8161173f565b60208082528101610cdf81611784565b60208082528101610cdf816117ce565b60208082528101610cdf81611811565b60208082528101610cdf8161185f565b60208082528101610cdf816118a5565b60808101610cdf82846118f1565b60208101610cdf8284611941565b60408101611b098285611941565b61197e6020830184611407565b6000808335601e1936859003018112611b2e57600080fd5b80840192508235915067ffffffffffffffff821115611b4c57600080fd5b602083019250600182023603831315611b6457600080fd5b509250929050565b6000823560de1936849003018112611b8357600080fd5b9190910192915050565b6000823560fe1936849003018112611b8357600080fd5b5190565b90815260200190565b919050565b6000610cdf82611bd3565b151590565b6001600160e01b03191690565b6001600160a01b031690565b60005b83811015611bfa578181015183820152602001611be2565b8381111561193b5750506000910152565b601f01601f191690565b611c1e81611bb6565b8114611c2957600080fd5b50565b611c1e81611bc1565b611c1e81611bc6565b611c1e816105d656fe322e322e332b6f70656e67736e2e656e7a796d6566756e642e697061796d6173746572a164736f6c634300060c000a

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

000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000009e59ea5333cd4f402dac320a04fafa023fe3810d000000000000000000000000ca57e5d6218aeb093d76372b51ba355cfb3c6cd000000000000000000000000000000000000000000000000000000000000151800000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a

-----Decoded View---------------
Arg [0] : _wethToken (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
Arg [1] : _relayHub (address): 0x9e59Ea5333cD4f402dAc320a04fafA023fe3810D
Arg [2] : _trustedForwarder (address): 0xca57e5D6218AeB093D76372B51Ba355CfB3C6Cd0
Arg [3] : _depositCooldown (uint256): 86400
Arg [4] : _depositMaxTotal (uint256): 1000000000000000000
Arg [5] : _relayFeeMaxBase (uint256): 0
Arg [6] : _relayFeeMaxPercent (uint256): 10

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [1] : 0000000000000000000000009e59ea5333cd4f402dac320a04fafa023fe3810d
Arg [2] : 000000000000000000000000ca57e5d6218aeb093d76372b51ba355cfb3c6cd0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000015180
Arg [4] : 0000000000000000000000000000000000000000000000000de0b6b3a7640000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [6] : 000000000000000000000000000000000000000000000000000000000000000a


Block Age Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Age Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Age Amount
View All Withdrawals

Transaction Hash Block Age Value Eth2 PubKey Valid
View All Deposits
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.