ETH Price: $2,348.06 (-5.79%)

Contract

0x31137AD0d18eEdf26C6c0E72D48c959a0E032D3d

Overview

ETH Balance

0 ETH

ETH Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

1 Internal Transaction found.

Latest 1 internal transaction

Parent Transaction Hash Block From To
2454692025-01-27 15:40:0430 days ago1737992404  Contract Creation0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DYLIAAPaymaster

Compiler Version
v0.8.24+commit.e11b9ed9

ZkSolc Version
v1.5.7

Optimization Enabled:
Yes with Mode 3

Other Settings:
paris EvmVersion
File 1 of 3 : DYLIAAPaymaster.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

import "./IPaymaster.sol";

contract DYLIAAPaymaster is IPaymaster {
    address constant BOOTLOADER = address(0x8001);
    address public owner;

    modifier onlyOwner() {
        require(msg.sender == owner, "Not the owner");
        _;
    }

    constructor() {
        owner = msg.sender;
    }

    function validateAndPayForPaymasterTransaction(
        bytes32,
        bytes32,
        Transaction calldata _transaction
    ) external payable returns (bytes4 magic, bytes memory context) {
        require(
            msg.sender == BOOTLOADER,
            "Only the Bootloader can call this function"
        );

        context = "";
        magic = PAYMASTER_VALIDATION_SUCCESS_MAGIC;

        uint requiredETH = _transaction.gasLimit * _transaction.maxFeePerGas;

        (bool success, ) = BOOTLOADER.call{value: requiredETH}("");
        require(success, "Bootloader call failed");
    }

    function withdraw(address payable _to, uint256 _amount) external onlyOwner {
        require(_to != address(0), "Invalid address");
        require(_amount <= address(this).balance, "Insufficient balance");

        (bool success, ) = _to.call{value: _amount}("");
        require(success, "Withdraw failed");
    }

    receive() external payable {}
}

File 2 of 3 : IPaymaster.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

import "./Transaction.sol";

enum ExecutionResult {
    Revert,
    Success
}

bytes4 constant PAYMASTER_VALIDATION_SUCCESS_MAGIC = IPaymaster
    .validateAndPayForPaymasterTransaction
    .selector;

interface IPaymaster {
    /// @dev Called by the bootloader to verify that the paymaster agrees to pay for the
    /// fee for the transaction. This transaction should also send the necessary amount of funds onto the bootloader
    /// address.
    /// @param _txHash The hash of the transaction
    /// @param _suggestedSignedHash The hash of the transaction that is signed by an EOA
    /// @param _transaction The transaction itself.
    /// @return magic The value that should be equal to the signature of the validateAndPayForPaymasterTransaction
    /// if the paymaster agrees to pay for the transaction.
    /// @return context The "context" of the transaction: an array of bytes of length at most 1024 bytes, which will be
    /// passed to the `postTransaction` method of the account.
    /// @dev The developer should strive to preserve as many steps as possible both for valid
    /// and invalid transactions as this very method is also used during the gas fee estimation
    /// (without some of the necessary data, e.g. signature).
    function validateAndPayForPaymasterTransaction(
        bytes32 _txHash,
        bytes32 _suggestedSignedHash,
        Transaction calldata _transaction
    ) external payable returns (bytes4 magic, bytes memory context);
}

File 3 of 3 : Transaction.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

/// @notice Structure used to represent a zkSync transaction.
struct Transaction {
    // The type of the transaction.
    uint256 txType;
    // The caller.
    uint256 from;
    // The callee.
    uint256 to;
    // The gasLimit to pass with the transaction.
    // It has the same meaning as Ethereum's gasLimit.
    uint256 gasLimit;
    // The maximum amount of gas the user is willing to pay for a byte of pubdata.
    uint256 gasPerPubdataByteLimit;
    // The maximum fee per gas that the user is willing to pay.
    // It is akin to EIP1559's maxFeePerGas.
    uint256 maxFeePerGas;
    // The maximum priority fee per gas that the user is willing to pay.
    // It is akin to EIP1559's maxPriorityFeePerGas.
    uint256 maxPriorityFeePerGas;
    // The transaction's paymaster. If there is no paymaster, it is equal to 0.
    uint256 paymaster;
    // The nonce of the transaction.
    uint256 nonce;
    // The value to pass with the transaction.
    uint256 value;
    // In the future, we might want to add some
    // new fields to the struct. The `txData` struct
    // is to be passed to account and any changes to its structure
    // would mean a breaking change to these accounts. In order to prevent this,
    // we should keep some fields as "reserved".
    // It is also recommended that their length is fixed, since
    // it would allow easier proof integration (in case we will need
    // some special circuit for preprocessing transactions).
    uint256[4] reserved;
    // The transaction's calldata.
    bytes data;
    // The signature of the transaction.
    bytes signature;
    // The properly formatted hashes of bytecodes that must be published on L1
    // with the inclusion of this transaction. Note, that a bytecode has been published
    // before, the user won't pay fees for its republishing.
    bytes32[] factoryDeps;
    // The input to the paymaster.
    bytes paymasterInput;
    // Reserved dynamic type for the future use-case. Using it should be avoided,
    // But it is still here, just in case we want to enable some additional functionality.
    bytes reservedDynamic;
}

Settings
{
  "evmVersion": "paris",
  "optimizer": {
    "enabled": true,
    "mode": "3"
  },
  "outputSelection": {
    "*": {
      "*": [
        "abi",
        "metadata"
      ],
      "": [
        "ast"
      ]
    }
  },
  "detectMissingLibraries": false,
  "forceEVMLA": false,
  "enableEraVMExtensions": false,
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"bytes32","name":"","type":"bytes32"},{"components":[{"internalType":"uint256","name":"txType","type":"uint256"},{"internalType":"uint256","name":"from","type":"uint256"},{"internalType":"uint256","name":"to","type":"uint256"},{"internalType":"uint256","name":"gasLimit","type":"uint256"},{"internalType":"uint256","name":"gasPerPubdataByteLimit","type":"uint256"},{"internalType":"uint256","name":"maxFeePerGas","type":"uint256"},{"internalType":"uint256","name":"maxPriorityFeePerGas","type":"uint256"},{"internalType":"uint256","name":"paymaster","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256[4]","name":"reserved","type":"uint256[4]"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes32[]","name":"factoryDeps","type":"bytes32[]"},{"internalType":"bytes","name":"paymasterInput","type":"bytes"},{"internalType":"bytes","name":"reservedDynamic","type":"bytes"}],"internalType":"struct Transaction","name":"_transaction","type":"tuple"}],"name":"validateAndPayForPaymasterTransaction","outputs":[{"internalType":"bytes4","name":"magic","type":"bytes4"},{"internalType":"bytes","name":"context","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

9c4d535b00000000000000000000000000000000000000000000000000000000000000000100007b9d021a96f54633abbcb40b0635c27d0b40e2c0296eb8f82cebf74b9700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x0002000000000002000200000000000200000060031002700000005b0330019700010000003103550000008004000039000000400040043f00000001002001900000002f0000c13d000000040030008c0000003c0000413d000000000201043b000000e0022002700000005e0020009c000000400000613d0000005f0020009c0000005b0000613d000000600020009c000000630000c13d000000440030008c000000630000413d0000000002000416000000000002004b000000630000c13d0000000402100370000000000202043b000000610020009c000000630000213d0000002401100370000000000401043b000000000100041a00000061011001970000000003000411000000000013004b000000650000c13d00000061012001980000007b0000c13d0000006201000041000000800010043f0000002001000039000000840010043f0000000f01000039000000a40010043f0000006c01000041000000c40010043f00000064010000410000016a000104300000000001000416000000000001004b000000630000c13d000000000100041a0000005c011001970000000002000411000000000121019f000000000010041b0000002001000039000001000010044300000120000004430000005d01000041000001690001042e000000000003004b000000630000c13d0000000001000019000001690001042e000000640030008c000000630000413d0000004402100370000000000202043b000000680020009c000000630000213d00000000032300490000006e0030009c000000630000213d000002640030008c000000630000413d0000000003000411000080010030008c0000006f0000c13d000000a003000039000000400030043f0000006403200039000000000331034f000000a402200039000000000121034f000000800000043f000000000101043b000000000203043b000000000002004b000000950000c13d00000000010004140000009c0000013d0000000001000416000000000001004b000000630000c13d000000000100041a0000006101100197000000800010043f0000006d01000041000001690001042e00000000010000190000016a000104300000006201000041000000800010043f0000002001000039000000840010043f0000000d01000039000000a40010043f0000006301000041000000c40010043f00000064010000410000016a000104300000006201000041000000800010043f0000002001000039000000840010043f0000002a01000039000000a40010043f0000006f01000041000000c40010043f0000007001000041000000e40010043f00000071010000410000016a00010430000100000001001d000200000004001d000000650100004100000000001004430000000001000410000000040010044300000000010004140000005b0010009c0000005b01008041000000c00110021000000066011001c70000800a02000039016801630000040f0000000100200190000000fe0000613d000000000101043b0000000203000029000000000013004b000001050000a13d000000400100043d00000044021000390000006b03000041000000000032043500000024021000390000001403000039000000f30000013d00000000032100a900000000022300d9000000000021004b000000ff0000c13d0000000001000414000000000003004b0000010c0000c13d0000005b0010009c0000005b01008041000000c00110021000008001020000390168015e0000040f000100000001035500000060031002700000005b0030019d0000005b03300198000000cb0000613d0000001f0430003900000074044001970000003f044000390000007504400197000000400500043d0000000004450019000000000054004b00000000060000390000000106004039000000680040009c000001570000213d0000000100600190000001570000c13d000000400040043f0000001f0430018f000000000635043600000076053001980000000003560019000000be0000613d000000000701034f000000007807043c0000000006860436000000000036004b000000ba0000c13d000000000004004b000000cb0000613d000000000151034f0000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000000400100043d0000000100200190000000ee0000613d000000200210003900000040030000390000000000320435000000780200004100000000002104350000004003100039000000800200043d00000000002304350000006003100039000000000002004b000000e10000613d00000000040000190000000005340019000000a006400039000000000606043300000000006504350000002004400039000000000024004b000000da0000413d0000001f0420003900000079044001970000000002320019000000000002043500000060024000390000005b0020009c0000005b0200804100000060022002100000005b0010009c0000005b010080410000004001100210000000000112019f000001690001042e000000440210003900000077030000410000000000320435000000240210003900000016030000390000000000320435000000620200004100000000002104350000000402100039000000200300003900000000003204350000005b0010009c0000005b0100804100000040011002100000006a011001c70000016a00010430000000000001042f0000007201000041000000000010043f0000001101000039000000040010043f00000073010000410000016a0001043000000000010004140000000104000029000000040040008c000001140000c13d00000001020000390000000001000031000001230000013d0000005b0010009c0000005b01008041000000c00110021000000067011001c7000080090200003900008001040000390000000005000019000000a00000013d0000005b0010009c0000005b01008041000000c001100210000000000003004b0000011b0000c13d00000000020400190000011e0000013d00000067011001c7000080090200003900000000050000190168015e0000040f000100000001035500000060011002700000005b0010019d0000005b01100197000000000001004b0000012e0000c13d00000001002001900000003e0000c13d000000400100043d00000044021000390000006903000041000000000032043500000024021000390000000f03000039000000f30000013d000000680010009c000001570000213d0000001f0410003900000079044001970000003f044000390000007905400197000000400400043d0000000005540019000000000045004b00000000060000390000000106004039000000680050009c000001570000213d0000000100600190000001570000c13d000000400050043f000000000614043600000079031001980000001f0410018f00000000013600190000000105000367000001490000613d000000000705034f000000007807043c0000000006860436000000000016004b000001450000c13d000000000004004b000001250000613d000000000335034f0000000304400210000000000501043300000000054501cf000000000545022f000000000303043b0000010004400089000000000343022f00000000034301cf000000000353019f0000000000310435000001250000013d0000007201000041000000000010043f0000004101000039000000040010043f00000073010000410000016a00010430000000000001042f00000161002104210000000102000039000000000001042d0000000002000019000000000001042d00000166002104230000000102000039000000000001042d0000000002000019000000000001042d0000016800000432000001690001042e0000016a00010430000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000038a24bc000000000000000000000000000000000000000000000000000000008da5cb5b00000000000000000000000000000000000000000000000000000000f3fef3a3000000000000000000000000ffffffffffffffffffffffffffffffffffffffff08c379a0000000000000000000000000000000000000000000000000000000004e6f7420746865206f776e65720000000000000000000000000000000000000000000000000000000000000000000000000000640000008000000000000000009cc7f708afc65944829bd487b90b72536b1951864fbfc14e125fc972a6507f3902000002000000000000000000000000000000240000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff5769746864726177206661696c656400000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000496e73756666696369656e742062616c616e6365000000000000000000000000496e76616c69642061646472657373000000000000000000000000000000000000000000000000000000000000000000000000200000008000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4f6e6c792074686520426f6f746c6f616465722063616e2063616c6c20746869732066756e6374696f6e0000000000000000000000000000000000000000000000000000000000000000000000000000000000840000008000000000000000004e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000003ffffffe000000000000000000000000000000000000000000000000000000000ffffffe0426f6f746c6f616465722063616c6c206661696c656400000000000000000000038a24bc00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0daede8e48707502778cc47018e6e1cd38fc5276930d5512d88fab4ad0f3e8171

Block Transaction 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
[ 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.