Contract 0x3ac1c6ff50007ee705f36e40F7Dc6f393b1bc5e7

Contract Overview

Balance:
0 Ether

Token:
Txn Hash
Method
Block
From
To
Value
0x7e0fe80f9a88621a10fca73282e96f57fdd23386acb25bc476abcfa260306348Mint130558772022-09-27 15:19:482 days 2 mins ago0x6bea7d5f80ab338e11f1a98a69d81ec669f88a28 IN  0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether0.00003657 1.07
0x5ff6820c554d9474dfa06b36c49decc123bc99f55926dd1a40a56c25fe17c09bApprove130116942022-09-19 16:00:369 days 23 hrs ago0xf3fa94cd79cf118eb44b0de10c123e7e3d301504 IN  0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether0.00006988 1.5
0x79a4f6899cf4491d9dfb83a56773ba54c6c3e8cc88cdd9d434cfc1abb473f217Increase Allowan...129914672022-09-15 15:40:4813 days 23 hrs ago0x7dcb0aab5d860949b94f1803a3292aed98f4cf3f IN  0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether0.00006982 1.5
0x8309371824ee58c93cb10175bc86a004dac1908e40349d1e4f719a11ab50fc2dMint129902132022-09-15 9:46:3614 days 5 hrs ago0x6bea7d5f80ab338e11f1a98a69d81ec669f88a28 IN  0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether0.00003657 1.07
0xf7c5af51ca27131b95a45c53273854d83649b1bc48cbfd6f268e6bc419aec6d7Mint129860632022-09-14 14:20:2415 days 1 hr ago0x6bea7d5f80ab338e11f1a98a69d81ec669f88a28 IN  0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether0.00003657 1.07
0x7b6657d500e4a3e54761e813884cc38a0b00c22ba3f9e0c95571efcc598ee88cMint129783672022-09-13 7:22:1216 days 8 hrs ago0x6bea7d5f80ab338e11f1a98a69d81ec669f88a28 IN  0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether0.00003657 1.07
0x4faba1d4067fd0b749a86c4dabe16978703bfbfcb72e150e2febf3887de7449cMint129738642022-09-12 13:15:2417 days 2 hrs ago0x6bea7d5f80ab338e11f1a98a69d81ec669f88a28 IN  0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether0.00003657 1.07
0x7c209f08027f6c0adcc06108d45273f7fe470480ad03bc7112fd52af70f90b1eMint129734592022-09-12 11:38:1217 days 3 hrs ago0x6bea7d5f80ab338e11f1a98a69d81ec669f88a28 IN  0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether0.00003657 1.07
0x1f1a9d10ea0926cbb7b0ff9f944e609b4652a9b28bead034fb511fe91842843aMint129731352022-09-12 10:20:2417 days 5 hrs ago0x6bea7d5f80ab338e11f1a98a69d81ec669f88a28 IN  0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether0.00003657 1.07
0x33a4ce045e79d54f1d532ed5328d4506a6120bd98d550dd1849679b46c18de4fApprove129577762022-09-09 20:39:2419 days 18 hrs ago0xd423f14f08b464f156442579c30c0132636fd1f6 IN  0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether0.00006988 1.5
0xf9586444e0abb937336ad65ba9ac9e3aa279a5b42f0a22cdaaf926f8edd9552eMint129577702022-09-09 20:37:3619 days 18 hrs ago0xd423f14f08b464f156442579c30c0132636fd1f6 IN  0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether0.00003419 1
0x300fc0e570bd4efbd1ccdc0e28056e15b9f1021107a2b0fffbbe7d0b3bb20017Mint129577652022-09-09 20:36:2419 days 18 hrs ago0xd423f14f08b464f156442579c30c0132636fd1f6 IN  0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether0.00003417 1
0x128ac8be57886c22326d29569fe850de58e39fa2af6bd91d433c3942d7285409Mint129577612022-09-09 20:35:2419 days 18 hrs ago0xd423f14f08b464f156442579c30c0132636fd1f6 IN  0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether0.00003414 1
0x88265bf6fe4a7e73b0f7bc3ca744ac48420bfd83c6ae96ed68b7b877e08c8d93Mint129577552022-09-09 20:34:1219 days 18 hrs ago0xd423f14f08b464f156442579c30c0132636fd1f6 IN  0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether0.00005122 1
0xfa4c2a615171bf2b01d18778c1e302879d4359320fd31d70f67257db8e200f7bMint129562612022-09-09 14:28:4820 days 53 mins ago0x6bea7d5f80ab338e11f1a98a69d81ec669f88a28 IN  0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether0.00003657 1.07000001
0xbc01fc71274cab0f114ef6af578b5ad4f6fe011cbf6f0fd5ad8941662c8a078dMint129561062022-09-09 13:50:0020 days 1 hr ago0x6bea7d5f80ab338e11f1a98a69d81ec669f88a28 IN  0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether0.00003657 1.07
0x72ada7fdca0c62738852b3ec89c8a25db12e960f9f2d5988df3ddbd24ad07eaeMint129558622022-09-09 12:50:1220 days 2 hrs ago0x6bea7d5f80ab338e11f1a98a69d81ec669f88a28 IN  0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether0.00003656 1.07
0x55633af93301c5bfc91c9249a8f7851dcf3788d584a8bae31add18f909f80b54Mint129558112022-09-09 12:36:1220 days 2 hrs ago0x6bea7d5f80ab338e11f1a98a69d81ec669f88a28 IN  0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether0.00003656 1.07
0x28e5a9c2686a711917cb19915ffce79a3100fa728d278ddd1138b888796d5727Mint129558092022-09-09 12:35:2420 days 2 hrs ago0x6bea7d5f80ab338e11f1a98a69d81ec669f88a28 IN  0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether0.00003656 1.07
0x7380e85a0f110b64d5e977c3a02f9f89a78d221133856e9d0cd23bb8ca867e26Mint129558082022-09-09 12:34:2420 days 2 hrs ago0x6bea7d5f80ab338e11f1a98a69d81ec669f88a28 IN  0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether0.00003656 1.07
0xf4bbd32f82ec514999c0fa556f3014302d128522987cd28afdcd56e91fcdf8aeMint129557582022-09-09 12:20:3620 days 3 hrs ago0x6bea7d5f80ab338e11f1a98a69d81ec669f88a28 IN  0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether0.00003656 1.07
0xaf325255aaf8c1a66ce4048a84b281cdc7cf5de806055ec0e408fa38aa4e44fbMint129557282022-09-09 12:12:4820 days 3 hrs ago0x6bea7d5f80ab338e11f1a98a69d81ec669f88a28 IN  0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether0.00003656 1.07
0xbcb1e78bb97742d270f0ca4e5e9682fa4c62ea13c1d79a42c9e12d4f45d1f8ac0x36e59c31129557232022-09-09 12:11:4820 days 3 hrs ago0x6bea7d5f80ab338e11f1a98a69d81ec669f88a28 IN  0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether0.00002337 1.07
0x099adb1c0a8d746e0ad1a5911db2cde8b7ff8449cb91334bfb7513da2a31d74f0x36e59c31129557202022-09-09 12:10:4820 days 3 hrs ago0x6bea7d5f80ab338e11f1a98a69d81ec669f88a28 IN  0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether0.00002337 1.07
0xf54e75439a8eecb023a9259b54de5ea919e066233246d76ec6e0b24c00d1e3f20x36e59c31129557092022-09-09 12:08:0020 days 3 hrs ago0x6bea7d5f80ab338e11f1a98a69d81ec669f88a28 IN  0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether0.000023371.07000001
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x8c9868b727cc2daa578e0dc628f106eb21bc40fcdd61e5643bcfacab32d254f4130116992022-09-19 16:01:489 days 23 hrs ago 0x31ccc8c80cd16f9e34b12cda7795235b3b00b1ef 0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether
0x8c9868b727cc2daa578e0dc628f106eb21bc40fcdd61e5643bcfacab32d254f4130116992022-09-19 16:01:489 days 23 hrs ago 0xcead1662d943dbaabe9aa36a2610465009f8fc4f 0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether
0x4d4a1c4fa96e0512b826c3d3697c15a4b6875065f55101abefd1c4be6dc74eca130060132022-09-18 12:52:3611 days 2 hrs ago 0xb815924d3295f34e199737e46fc6df9d5eb5bfd3 0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether
0x4d4a1c4fa96e0512b826c3d3697c15a4b6875065f55101abefd1c4be6dc74eca130060132022-09-18 12:52:3611 days 2 hrs ago 0xb815924d3295f34e199737e46fc6df9d5eb5bfd3 0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether
0x05595f7cb1fc21b77130fe8c01affcaa734107b1cb0d2b08f554962f6643243c129921182022-09-15 18:43:2413 days 20 hrs ago 0xb815924d3295f34e199737e46fc6df9d5eb5bfd3 0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether
0x05595f7cb1fc21b77130fe8c01affcaa734107b1cb0d2b08f554962f6643243c129921182022-09-15 18:43:2413 days 20 hrs ago 0xb815924d3295f34e199737e46fc6df9d5eb5bfd3 0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether
0xef330d94d1ae6379e4c4bf89dc57d20510f39bb4ba5bc36e5d3f67b04b3e05e2129921152022-09-15 18:42:0013 days 20 hrs ago 0xb815924d3295f34e199737e46fc6df9d5eb5bfd3 0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether
0xef330d94d1ae6379e4c4bf89dc57d20510f39bb4ba5bc36e5d3f67b04b3e05e2129921152022-09-15 18:42:0013 days 20 hrs ago 0xb815924d3295f34e199737e46fc6df9d5eb5bfd3 0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether
0xe8c18333e264fa45eac1f465d4a9f134665e5f0030bf57b5fc6c106a1aadca0f129915552022-09-15 16:05:0013 days 23 hrs ago 0xb815924d3295f34e199737e46fc6df9d5eb5bfd3 0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether
0xe8c18333e264fa45eac1f465d4a9f134665e5f0030bf57b5fc6c106a1aadca0f129915552022-09-15 16:05:0013 days 23 hrs ago 0xb815924d3295f34e199737e46fc6df9d5eb5bfd3 0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether
0xf5ae6ad7cf5ea921b0885a972a9cee0b4626d1c960bd09c326f55c070a9f8e85129577782022-09-09 20:40:0019 days 18 hrs ago 0x85086f4613f22f4cadf7172a26d11fe20c17e8ad 0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether
0xf5ae6ad7cf5ea921b0885a972a9cee0b4626d1c960bd09c326f55c070a9f8e85129577782022-09-09 20:40:0019 days 18 hrs ago 0xcd97d98d5bf28df8f00a22440d48619f3c013d7e 0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether
0x21e466a4129bef8e0cdbeeb1ac527695ee20519b794e653735d26806e26a02df129512782022-09-08 17:29:3620 days 21 hrs ago 0x34b2496e36be9c7f890e7e3c7af292545c56da86 0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether
0x21e466a4129bef8e0cdbeeb1ac527695ee20519b794e653735d26806e26a02df129512782022-09-08 17:29:3620 days 21 hrs ago 0x34b2496e36be9c7f890e7e3c7af292545c56da86 0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether
0x0289d0457468f9bc3f4cf8f66813df6e74057ae55f7a38b52398c70ee32a23b6129512762022-09-08 17:28:3620 days 21 hrs ago 0x34b2496e36be9c7f890e7e3c7af292545c56da86 0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether
0x0289d0457468f9bc3f4cf8f66813df6e74057ae55f7a38b52398c70ee32a23b6129512762022-09-08 17:28:3620 days 21 hrs ago 0x34b2496e36be9c7f890e7e3c7af292545c56da86 0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether
0x2b0af59a7fb64d02b056178f351278dfe096375974852308e2237bacf88e3e30129512512022-09-08 17:21:3620 days 22 hrs ago 0x5d8e0fe2a97f8ae525b5bac727e3ff840578c63b 0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether
0x2b0af59a7fb64d02b056178f351278dfe096375974852308e2237bacf88e3e30129512512022-09-08 17:21:3620 days 22 hrs ago 0x5d8e0fe2a97f8ae525b5bac727e3ff840578c63b 0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether
0x5070048b08642e82f369223e569fce81773b0e27265e52e7cb2c12b22036974f129511572022-09-08 16:55:4820 days 22 hrs ago 0x5d8e0fe2a97f8ae525b5bac727e3ff840578c63b 0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether
0x5070048b08642e82f369223e569fce81773b0e27265e52e7cb2c12b22036974f129511572022-09-08 16:55:4820 days 22 hrs ago 0x5d8e0fe2a97f8ae525b5bac727e3ff840578c63b 0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether
0x2eb4c983a64a31a9c361034f9e00928cb9853a447f92510f627c62a3022fdb31129451282022-09-07 15:33:3621 days 23 hrs ago 0xdef1c0ded9bec7f1a1670819833240f027b25eff 0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether
0x0643345e69e3809ebe3ec500524a800307e6af40adb9afa3887d5f57b83fe730129451262022-09-07 15:33:1221 days 23 hrs ago 0xdef1c0ded9bec7f1a1670819833240f027b25eff 0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether
0xba3d681b1db367ce767e689b8b55a424ed3166ad876e5d913c420908eb8b4dae129442442022-09-07 11:56:4822 days 3 hrs ago 0xdef1c0ded9bec7f1a1670819833240f027b25eff 0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether
0x1e18a0282cff6da62298e5a70385d16e1153403570df1e1a8295db902c018f9a129442392022-09-07 11:55:4822 days 3 hrs ago 0xdef1c0ded9bec7f1a1670819833240f027b25eff 0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether
0x4e03eb3bd2576c498e7fbf18c3d2379687fed562229d28febd8bbd1e8ed8cf0b129442392022-09-07 11:55:4822 days 3 hrs ago 0xdef1c0ded9bec7f1a1670819833240f027b25eff 0x3ac1c6ff50007ee705f36e40f7dc6f393b1bc5e70 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GodModeErc20

Compiler Version
v0.8.3+commit.8d00100c

Optimization Enabled:
Yes with 800 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 4 of 4: GodModeErc20.sol
// SPDX-License-Identifier: WTFPL
pragma solidity >=0.8.0;

import "./Erc20.sol";

/// @title GodModeErc20
/// @author Paul Razvan Berg
/// @notice Implementation that allows anyone to mint or burn tokens belonging to any address.
/// @dev Strictly for test purposes.
contract GodModeErc20 is Erc20 {
    /// EVENTS ///

    event Burn(address indexed holder, uint256 burnAmount);

    event Mint(address indexed beneficiary, uint256 mintAmount);

    constructor(
        string memory name_,
        string memory symbol_,
        uint8 decimals_
    ) Erc20(name_, symbol_, decimals_) {} // solhint-disable-line no-empty-blocks

    /// NON-CONSTANT FUNCTIONS ///

    /// @notice Destroys `burnAmount` tokens from `holder`, reducing the token supply.
    /// @param holder The account whose tokens to burn.
    /// @param burnAmount The amount of fyTokens to destroy.
    function burn(address holder, uint256 burnAmount) external {
        burnInternal(holder, burnAmount);
    }

    /// @notice Prints new tokens into existence and assigns them to `beneficiary`, increasing the
    /// total supply.
    /// @param beneficiary The account for which to mint the tokens.
    /// @param mintAmount The amount of fyTokens to print into existence.
    function mint(address beneficiary, uint256 mintAmount) external {
        mintInternal(beneficiary, mintAmount);
    }
}

File 1 of 4: Erc20.sol
// SPDX-License-Identifier: WTFPL
pragma solidity >=0.8.0;

import "./Erc20Interface.sol";

/// @title Erc20
/// @author Paul Razvan Berg
/// @notice Implementation of the {Erc20Interface} interface.
///
/// We have followed general OpenZeppelin guidelines: functions revert instead of returning
/// `false` on failure. This behavior is nonetheless conventional and does not conflict with
/// the with the expectations of Erc20 applications.
///
/// Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows
/// applications to reconstruct the allowance for all accounts just by listening to said
/// events. Other implementations of the Erc may not emit these events, as it isn't
/// required by the specification.
///
/// Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been
/// added to mitigate the well-known issues around setting allowances.
///
///@dev Forked from OpenZeppelin
///https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.2.0/contracts/token/Erc20/Erc20.sol
contract Erc20 is Erc20Interface {
    /// @notice All three of these values are immutable: they can only be set once during construction.
    /// @param name_ Erc20 name of this token.
    /// @param symbol_ Erc20 symbol of this token.
    /// @param decimals_ Erc20 decimal precision of this token.
    constructor(
        string memory name_,
        string memory symbol_,
        uint8 decimals_
    ) {
        name = name_;
        symbol = symbol_;
        decimals = decimals_;
    }

    /// CONSTANT FUNCTIONS ///

    /// @notice Returns the remaining number of tokens that `spender` will be allowed to spend
    /// on behalf of `owner` through {transferFrom}. This is zero by default.
    ///
    /// This value changes when {approve} or {transferFrom} are called.
    function allowance(address owner, address spender) external view virtual override returns (uint256) {
        return allowances[owner][spender];
    }

    /// @notice Returns the amount of tokens owned by `account`.
    function balanceOf(address account) public view virtual override returns (uint256) {
        return balances[account];
    }

    /// NON-CONSTANT FUNCTIONS ///

    /// @notice Sets `amount` as the allowance of `spender` over the caller's tokens.
    ///
    /// @dev Emits an {Approval} event.
    ///
    /// IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may
    /// use both the old and the new allowance by unfortunate transaction ordering. One possible solution
    /// to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired
    /// value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
    ///
    /// Requirements:
    ///
    /// - `spender` cannot be the zero address.
    ///
    /// @return a boolean value indicating whether the operation succeeded.
    function approve(address spender, uint256 amount) external virtual override returns (bool) {
        approveInternal(msg.sender, spender, amount);
        return true;
    }

    /// @notice Atomically decreases the allowance granted to `spender` by the caller.
    ///
    /// @dev Emits an {Approval} event indicating the updated allowance.
    ///
    /// This is an alternative to {approve} that can be used as a mitigation for problems described
    /// in {Erc20Interface-approve}.
    ///
    /// Requirements:
    ///
    /// - `spender` cannot be the zero address.
    /// - `spender` must have allowance for the caller of at least
    /// `subtractedValue`.
    function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) {
        uint256 newAllowance = allowances[msg.sender][spender] - subtractedValue;
        approveInternal(msg.sender, spender, newAllowance);
        return true;
    }

    /// @notice Atomically increases the allowance granted to `spender` by the caller.
    ///
    /// @dev Emits an {Approval} event indicating the updated allowance.
    ///
    /// This is an alternative to {approve} that can be used as a mitigation for the problems
    /// described above.
    ///
    /// Requirements:
    ///
    /// - `spender` cannot be the zero address.
    function increaseAllowance(address spender, uint256 addedValue) external virtual returns (bool) {
        uint256 newAllowance = allowances[msg.sender][spender] + addedValue;
        approveInternal(msg.sender, spender, newAllowance);
        return true;
    }

    /// @notice Moves `amount` tokens from the caller's account to `recipient`.
    ///
    /// @dev Emits a {Transfer} event.
    ///
    /// Requirements:
    ///
    /// - `recipient` cannot be the zero address.
    /// - The caller must have a balance of at least `amount`.
    ///
    /// @return a boolean value indicating whether the operation succeeded.
    function transfer(address recipient, uint256 amount) external virtual override returns (bool) {
        transferInternal(msg.sender, recipient, amount);
        return true;
    }

    /// @notice Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount`
    /// `is then deducted from the caller's allowance.
    ///
    /// @dev Emits a {Transfer} event and an {Approval} event indicating the updated allowance. This is
    /// not required by the Erc. See the note at the beginning of {Erc20}.
    ///
    /// Requirements:
    ///
    /// - `sender` and `recipient` cannot be the zero address.
    /// - `sender` must have a balance of at least `amount`.
    /// - The caller must have approed `sender` to spent at least `amount` tokens.
    ///
    /// @return a boolean value indicating whether the operation succeeded.
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external virtual override returns (bool) {
        transferInternal(sender, recipient, amount);

        uint256 currentAllowance = allowances[sender][msg.sender];
        require(currentAllowance >= amount, "ERR_ERC20_TRANSFER_FROM_INSUFFICIENT_ALLOWANCE");
        approveInternal(sender, msg.sender, currentAllowance);
        return true;
    }

    /// INTERNAL FUNCTIONS ///

    /// @notice Sets `amount` as the allowance of `spender` over the `owner`s tokens.
    ///
    /// @dev Emits an {Approval} event.
    ///
    /// This is internal function is equivalent to `approve`, and can be used to e.g. set automatic
    /// allowances for certain subsystems, etc.
    ///
    /// Requirements:
    ///
    /// - `owner` cannot be the zero address.
    /// - `spender` cannot be the zero address.
    function approveInternal(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERR_ERC20_APPROVE_FROM_ZERO_ADDRESS");
        require(spender != address(0), "ERR_ERC20_APPROVE_TO_ZERO_ADDRESS");

        allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /// @notice Destroys `burnAmount` tokens from `holder`, reducing the token supply.
    ///
    /// @dev Emits a {Transfer} event.
    ///
    /// Requirements:
    ///
    /// - `holder` must have at least `amount` tokens.
    function burnInternal(address holder, uint256 burnAmount) internal {
        require(holder != address(0), "ERR_ERC20_BURN_ZERO_ADDRESS");

        uint256 accountBalance = balances[holder];
        require(accountBalance >= burnAmount, "ERR_ERC20_BURN_BALANCE_UNDERFLOW");

        // Burn the tokens.
        balances[holder] = accountBalance - burnAmount;

        // Reduce the total supply.
        totalSupply -= burnAmount;

        emit Transfer(holder, address(0), burnAmount);
    }

    /// @notice Prints new tokens into existence and assigns them to `beneficiary`, increasing the
    /// total supply.
    ///
    /// @dev Emits a {Transfer} event.
    ///
    /// Requirements:
    ///
    /// - The beneficiary's balance and the total supply cannot overflow.
    function mintInternal(address beneficiary, uint256 mintAmount) internal {
        require(beneficiary != address(0), "ERR_ERC20_MINT_ZERO_ADDRESS");

        /// Mint the new tokens.
        balances[beneficiary] += mintAmount;

        /// Increase the total supply.
        totalSupply += mintAmount;

        emit Transfer(address(0), beneficiary, mintAmount);
    }

    /// @notice Moves `amount` tokens from `sender` to `recipient`.
    ///
    /// @dev This is internal function is equivalent to {transfer}, and can be used to e.g. implement
    /// automatic token fees, slashing mechanisms, etc.
    ///
    /// Emits a {Transfer} event.
    ///
    /// Requirements:
    ///
    /// - `sender` cannot be the zero address.
    /// - `recipient` cannot be the zero address.
    /// - `sender` must have a balance of at least `amount`.
    function transferInternal(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERR_ERC20_TRANSFER_FROM_ZERO_ADDRESS");
        require(recipient != address(0), "ERR_ERC20_TRANSFER_TO_ZERO_ADDRESS");

        uint256 senderBalance = balances[sender];
        require(senderBalance >= amount, "ERR_ERC20_TRANSFER_INSUFFICIENT_BALANCE");
        balances[sender] = senderBalance - amount;
        balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }
}

File 2 of 4: Erc20Interface.sol
// SPDX-License-Identifier: WTFPL
pragma solidity >=0.8.0;

import "./Erc20Storage.sol";

/// @title Erc20Interface
/// @author Paul Razvan Berg
/// @notice Contract interface adhering to the Erc20 standard.
/// @dev Forked from OpenZeppelin
/// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.4.0/contracts/token/ERC20/IERC20.sol
abstract contract Erc20Interface is Erc20Storage {
    /// CONSTANT FUNCTIONS ///

    function allowance(address owner, address spender) external view virtual returns (uint256);

    function balanceOf(address account) external view virtual returns (uint256);

    /// NON-CONSTANT FUNCTIONS ///

    function approve(address spender, uint256 amount) external virtual returns (bool);

    function transfer(address recipient, uint256 amount) external virtual returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external virtual returns (bool);

    /// EVENTS ///

    event Approval(address indexed owner, address indexed spender, uint256 amount);

    event Transfer(address indexed from, address indexed to, uint256 amount);
}

File 3 of 4: Erc20Storage.sol
// SPDX-License-Identifier: WTFPL
pragma solidity >=0.8.0;

/// @title Erc20Storage
/// @author Paul Razvan Berg
/// @notice The storage interface of an Erc20 contract.
abstract contract Erc20Storage {
    /// @notice Returns the number of decimals used to get its user representation.
    uint8 public decimals;

    /// @notice Returns the name of the token.
    string public name;

    /// @notice Returns the symbol of the token, usually a shorter version of the name.
    string public symbol;

    /// @notice Returns the amount of tokens in existence.
    uint256 public totalSupply;

    mapping(address => mapping(address => uint256)) internal allowances;

    mapping(address => uint256) internal balances;
}

Contract ABI

[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"uint256","name":"burnAmount","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"uint256","name":"burnAmount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"beneficiary","type":"address"},{"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5060405162000e1838038062000e188339810160408190526200003491620001df565b82828282600190805190602001906200004f92919062000086565b5081516200006590600290602085019062000086565b506000805460ff191660ff9290921691909117905550620002b39350505050565b828054620000949062000260565b90600052602060002090601f016020900481019282620000b8576000855562000103565b82601f10620000d357805160ff191683800117855562000103565b8280016001018555821562000103579182015b8281111562000103578251825591602001919060010190620000e6565b506200011192915062000115565b5090565b5b8082111562000111576000815560010162000116565b600082601f8301126200013d578081fd5b81516001600160401b03808211156200015a576200015a6200029d565b604051601f8301601f19908116603f011681019082821181831017156200018557620001856200029d565b81604052838152602092508683858801011115620001a1578485fd5b8491505b83821015620001c45785820183015181830184015290820190620001a5565b83821115620001d557848385830101525b9695505050505050565b600080600060608486031215620001f4578283fd5b83516001600160401b03808211156200020b578485fd5b62000219878388016200012c565b945060208601519150808211156200022f578384fd5b506200023e868287016200012c565b925050604084015160ff8116811462000255578182fd5b809150509250925092565b600181811c908216806200027557607f821691505b602082108114156200029757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b610b5580620002c36000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806340c10f191161008c5780639dc29fac116100665780639dc29fac146101b1578063a457c2d7146101c4578063a9059cbb146101d7578063dd62ed3e146101ea576100df565b806340c10f191461018157806370a082311461019657806395d89b41146101a9576100df565b806323b872dd116100bd57806323b872dd1461013c578063313ce5671461014f578063395093511461016e576100df565b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610223565b6040516100f99190610a4c565b60405180910390f35b610115610110366004610a23565b6102b1565b60405190151581526020016100f9565b61012e60035481565b6040519081526020016100f9565b61011561014a3660046109e8565b6102c7565b60005461015c9060ff1681565b60405160ff90911681526020016100f9565b61011561017c366004610a23565b610389565b61019461018f366004610a23565b6103d1565b005b61012e6101a4366004610995565b6103df565b6100ec6103fe565b6101946101bf366004610a23565b61040b565b6101156101d2366004610a23565b610415565b6101156101e5366004610a23565b610446565b61012e6101f83660046109b6565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b6001805461023090610ace565b80601f016020809104026020016040519081016040528092919081815260200182805461025c90610ace565b80156102a95780601f1061027e576101008083540402835291602001916102a9565b820191906000526020600020905b81548152906001019060200180831161028c57829003601f168201915b505050505081565b60006102be338484610453565b50600192915050565b60006102d4848484610577565b6001600160a01b0384166000908152600460209081526040808320338452909152902054828110156103735760405162461bcd60e51b815260206004820152602e60248201527f4552525f45524332305f5452414e534645525f46524f4d5f494e53554646494360448201527f49454e545f414c4c4f57414e434500000000000000000000000000000000000060648201526084015b60405180910390fd5b61037e853383610453565b506001949350505050565b3360009081526004602090815260408083206001600160a01b038616845290915281205481906103ba908490610a9f565b90506103c7338583610453565b5060019392505050565b6103db8282610763565b5050565b6001600160a01b0381166000908152600560205260409020545b919050565b6002805461023090610ace565b6103db8282610844565b3360009081526004602090815260408083206001600160a01b038616845290915281205481906103ba908490610ab7565b60006102be338484610577565b6001600160a01b0383166104b55760405162461bcd60e51b815260206004820152602360248201527f4552525f45524332305f415050524f56455f46524f4d5f5a45524f5f4144445260448201526245535360e81b606482015260840161036a565b6001600160a01b0382166105155760405162461bcd60e51b815260206004820152602160248201527f4552525f45524332305f415050524f56455f544f5f5a45524f5f4144445245536044820152605360f81b606482015260840161036a565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166105d95760405162461bcd60e51b8152602060048201526024808201527f4552525f45524332305f5452414e534645525f46524f4d5f5a45524f5f4144446044820152635245535360e01b606482015260840161036a565b6001600160a01b03821661063a5760405162461bcd60e51b815260206004820152602260248201527f4552525f45524332305f5452414e534645525f544f5f5a45524f5f4144445245604482015261535360f01b606482015260840161036a565b6001600160a01b038316600090815260056020526040902054818110156106c95760405162461bcd60e51b815260206004820152602760248201527f4552525f45524332305f5452414e534645525f494e53554646494349454e545f60448201527f42414c414e434500000000000000000000000000000000000000000000000000606482015260840161036a565b6106d38282610ab7565b6001600160a01b038086166000908152600560205260408082209390935590851681529081208054849290610709908490610a9f565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161075591815260200190565b60405180910390a350505050565b6001600160a01b0382166107b95760405162461bcd60e51b815260206004820152601b60248201527f4552525f45524332305f4d494e545f5a45524f5f414444524553530000000000604482015260640161036a565b6001600160a01b038216600090815260056020526040812080548392906107e1908490610a9f565b9250508190555080600360008282546107fa9190610a9f565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b03821661089a5760405162461bcd60e51b815260206004820152601b60248201527f4552525f45524332305f4255524e5f5a45524f5f414444524553530000000000604482015260640161036a565b6001600160a01b038216600090815260056020526040902054818110156109035760405162461bcd60e51b815260206004820181905260248201527f4552525f45524332305f4255524e5f42414c414e43455f554e444552464c4f57604482015260640161036a565b61090d8282610ab7565b6001600160a01b0384166000908152600560205260408120919091556003805484929061093b908490610ab7565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161056a565b80356001600160a01b03811681146103f957600080fd5b6000602082840312156109a6578081fd5b6109af8261097e565b9392505050565b600080604083850312156109c8578081fd5b6109d18361097e565b91506109df6020840161097e565b90509250929050565b6000806000606084860312156109fc578081fd5b610a058461097e565b9250610a136020850161097e565b9150604084013590509250925092565b60008060408385031215610a35578182fd5b610a3e8361097e565b946020939093013593505050565b6000602080835283518082850152825b81811015610a7857858101830151858201604001528201610a5c565b81811115610a895783604083870101525b50601f01601f1916929092016040019392505050565b60008219821115610ab257610ab2610b09565b500190565b600082821015610ac957610ac9610b09565b500390565b600181811c90821680610ae257607f821691505b60208210811415610b0357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220bf627a40b469e76bf42f394d7ef016bb5a523d046c3eda9be57787d4c6dddb2e64736f6c63430008030033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000e44616920537461626c65636f696e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034441490000000000000000000000000000000000000000000000000000000000

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

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000e44616920537461626c65636f696e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034441490000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name_ (string): Dai Stablecoin
Arg [1] : symbol_ (string): DAI
Arg [2] : decimals_ (uint8): 18

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 000000000000000000000000000000000000000000000000000000000000000e
Arg [4] : 44616920537461626c65636f696e000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [6] : 4441490000000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

268:1106:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;365:18:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2943:173:0;;;;;;:::i;:::-;;:::i;:::-;;;1468:14:4;;1461:22;1443:41;;1431:2;1416:18;2943:173:0;1398:92:4;564:26:2;;;;;;;;;5759:25:4;;;5747:2;5732:18;564:26:2;5714:76:4;5765:451:0;;;;;;:::i;:::-;;:::i;290:21:2:-;;;;;;;;;;;;5967:4:4;5955:17;;;5937:36;;5925:2;5910:18;290:21:2;5892:87:4;4273:261:0;;;;;;:::i;:::-;;:::i;1254:118:3:-;;;;;;:::i;:::-;;:::i;:::-;;2056:124:0;;;;;;:::i;:::-;;:::i;478:20:2:-;;;:::i;876:108:3:-;;;;;;:::i;:::-;;:::i;3615:271:0:-;;;;;;:::i;:::-;;:::i;4902:179::-;;;;;;:::i;:::-;;:::i;1835:150::-;;;;;;:::i;:::-;-1:-1:-1;;;;;1952:17:0;;;1926:7;1952:17;;;:10;:17;;;;;;;;:26;;;;;;;;;;;;;1835:150;365:18:2;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2943:173:0:-;3028:4;3044:44;3060:10;3072:7;3081:6;3044:15;:44::i;:::-;-1:-1:-1;3105:4:0;2943:173;;;;:::o;5765:451::-;5903:4;5919:43;5936:6;5944:9;5955:6;5919:16;:43::i;:::-;-1:-1:-1;;;;;6000:18:0;;5973:24;6000:18;;;:10;:18;;;;;;;;6019:10;6000:30;;;;;;;;6048:26;;;;6040:85;;;;-1:-1:-1;;;6040:85:0;;3520:2:4;6040:85:0;;;3502:21:4;3559:2;3539:18;;;3532:30;3598:34;3578:18;;;3571:62;3669:16;3649:18;;;3642:44;3703:19;;6040:85:0;;;;;;;;;6135:53;6151:6;6159:10;6171:16;6135:15;:53::i;:::-;-1:-1:-1;6205:4:0;;5765:451;-1:-1:-1;;;;5765:451:0:o;4273:261::-;4413:10;4363:4;4402:22;;;:10;:22;;;;;;;;-1:-1:-1;;;;;4402:31:0;;;;;;;;;;4363:4;;4402:44;;4436:10;;4402:44;:::i;:::-;4379:67;;4456:50;4472:10;4484:7;4493:12;4456:15;:50::i;:::-;-1:-1:-1;4523:4:0;;4273:261;-1:-1:-1;;;4273:261:0:o;1254:118:3:-;1328:37;1341:11;1354:10;1328:12;:37::i;:::-;1254:118;;:::o;2056:124:0:-;-1:-1:-1;;;;;2156:17:0;;2130:7;2156:17;;;:8;:17;;;;;;2056:124;;;;:::o;478:20:2:-;;;;;;;:::i;876:108:3:-;945:32;958:6;966:10;945:12;:32::i;3615:271:0:-;3760:10;3710:4;3749:22;;;:10;:22;;;;;;;;-1:-1:-1;;;;;3749:31:0;;;;;;;;;;3710:4;;3749:49;;3783:15;;3749:49;:::i;4902:179::-;4990:4;5006:47;5023:10;5035:9;5046:6;5006:16;:47::i;6676:374::-;-1:-1:-1;;;;;6814:19:0;;6806:67;;;;-1:-1:-1;;;6806:67:0;;5411:2:4;6806:67:0;;;5393:21:4;5450:2;5430:18;;;5423:30;5489:34;5469:18;;;5462:62;-1:-1:-1;;;5540:18:4;;;5533:33;5583:19;;6806:67:0;5383:225:4;6806:67:0;-1:-1:-1;;;;;6891:21:0;;6883:67;;;;-1:-1:-1;;;6883:67:0;;2713:2:4;6883:67:0;;;2695:21:4;2752:2;2732:18;;;2725:30;2791:34;2771:18;;;2764:62;-1:-1:-1;;;2842:18:4;;;2835:31;2883:19;;6883:67:0;2685:223:4;6883:67:0;-1:-1:-1;;;;;6961:17:0;;;;;;;:10;:17;;;;;;;;:26;;;;;;;;;;;;;:35;;;7011:32;;5759:25:4;;;7011:32:0;;5732:18:4;7011:32:0;;;;;;;;6676:374;;;:::o;8908:567::-;-1:-1:-1;;;;;9050:20:0;;9042:69;;;;-1:-1:-1;;;9042:69:0;;3115:2:4;9042:69:0;;;3097:21:4;3154:2;3134:18;;;3127:30;3193:34;3173:18;;;3166:62;-1:-1:-1;;;3244:18:4;;;3237:34;3288:19;;9042:69:0;3087:226:4;9042:69:0;-1:-1:-1;;;;;9129:23:0;;9121:70;;;;-1:-1:-1;;;9121:70:0;;5008:2:4;9121:70:0;;;4990:21:4;5047:2;5027:18;;;5020:30;5086:34;5066:18;;;5059:62;-1:-1:-1;;;5137:18:4;;;5130:32;5179:19;;9121:70:0;4980:224:4;9121:70:0;-1:-1:-1;;;;;9226:16:0;;9202:21;9226:16;;;:8;:16;;;;;;9260:23;;;;9252:75;;;;-1:-1:-1;;;9252:75:0;;2305:2:4;9252:75:0;;;2287:21:4;2344:2;2324:18;;;2317:30;2383:34;2363:18;;;2356:62;2454:9;2434:18;;;2427:37;2481:19;;9252:75:0;2277:229:4;9252:75:0;9356:22;9372:6;9356:13;:22;:::i;:::-;-1:-1:-1;;;;;9337:16:0;;;;;;;:8;:16;;;;;;:41;;;;9388:19;;;;;;;;:29;;9411:6;;9337:16;9388:29;;9411:6;;9388:29;:::i;:::-;;;;;;;;9450:9;-1:-1:-1;;;;;9433:35:0;9442:6;-1:-1:-1;;;;;9433:35:0;;9461:6;9433:35;;;;5759:25:4;;5747:2;5732:18;;5714:76;9433:35:0;;;;;;;;8908:567;;;;:::o;8061:369::-;-1:-1:-1;;;;;8151:25:0;;8143:65;;;;-1:-1:-1;;;8143:65:0;;3935:2:4;8143:65:0;;;3917:21:4;3974:2;3954:18;;;3947:30;4013:29;3993:18;;;3986:57;4060:18;;8143:65:0;3907:177:4;8143:65:0;-1:-1:-1;;;;;8252:21:0;;;;;;:8;:21;;;;;:35;;8277:10;;8252:21;:35;;8277:10;;8252:35;:::i;:::-;;;;;;;;8352:10;8337:11;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;8378:45:0;;5759:25:4;;;-1:-1:-1;;;;;8378:45:0;;;8395:1;;8378:45;;5747:2:4;5732:18;8378:45:0;;;;;;;8061:369;;:::o;7283:492::-;-1:-1:-1;;;;;7368:20:0;;7360:60;;;;-1:-1:-1;;;7360:60:0;;4652:2:4;7360:60:0;;;4634:21:4;4691:2;4671:18;;;4664:30;4730:29;4710:18;;;4703:57;4777:18;;7360:60:0;4624:177:4;7360:60:0;-1:-1:-1;;;;;7456:16:0;;7431:22;7456:16;;;:8;:16;;;;;;7490:28;;;;7482:73;;;;-1:-1:-1;;;7482:73:0;;4291:2:4;7482:73:0;;;4273:21:4;;;4310:18;;;4303:30;4369:34;4349:18;;;4342:62;4421:18;;7482:73:0;4263:182:4;7482:73:0;7613:27;7630:10;7613:14;:27;:::i;:::-;-1:-1:-1;;;;;7594:16:0;;;;;;:8;:16;;;;;:46;;;;7687:11;:25;;7702:10;;7594:16;7687:25;;7702:10;;7687:25;:::i;:::-;;;;-1:-1:-1;;7728:40:0;;5759:25:4;;;7753:1:0;;-1:-1:-1;;;;;7728:40:0;;;;;5747:2:4;5732:18;7728:40:0;5714:76:4;14:196;82:20;;-1:-1:-1;;;;;131:54:4;;121:65;;111:2;;200:1;197;190:12;215:196;;327:2;315:9;306:7;302:23;298:32;295:2;;;348:6;340;333:22;295:2;376:29;395:9;376:29;:::i;:::-;366:39;285:126;-1:-1:-1;;;285:126:4:o;416:270::-;;;545:2;533:9;524:7;520:23;516:32;513:2;;;566:6;558;551:22;513:2;594:29;613:9;594:29;:::i;:::-;584:39;;642:38;676:2;665:9;661:18;642:38;:::i;:::-;632:48;;503:183;;;;;:::o;691:338::-;;;;837:2;825:9;816:7;812:23;808:32;805:2;;;858:6;850;843:22;805:2;886:29;905:9;886:29;:::i;:::-;876:39;;934:38;968:2;957:9;953:18;934:38;:::i;:::-;924:48;;1019:2;1008:9;1004:18;991:32;981:42;;795:234;;;;;:::o;1034:264::-;;;1163:2;1151:9;1142:7;1138:23;1134:32;1131:2;;;1184:6;1176;1169:22;1131:2;1212:29;1231:9;1212:29;:::i;:::-;1202:39;1288:2;1273:18;;;;1260:32;;-1:-1:-1;;;1121:177:4:o;1495:603::-;;1636:2;1665;1654:9;1647:21;1697:6;1691:13;1740:6;1735:2;1724:9;1720:18;1713:34;1765:4;1778:140;1792:6;1789:1;1786:13;1778:140;;;1887:14;;;1883:23;;1877:30;1853:17;;;1872:2;1849:26;1842:66;1807:10;;1778:140;;;1936:6;1933:1;1930:13;1927:2;;;2006:4;2001:2;1992:6;1981:9;1977:22;1973:31;1966:45;1927:2;-1:-1:-1;2082:2:4;2061:15;-1:-1:-1;;2057:29:4;2042:45;;;;2089:2;2038:54;;1616:482;-1:-1:-1;;;1616:482:4:o;5984:128::-;;6055:1;6051:6;6048:1;6045:13;6042:2;;;6061:18;;:::i;:::-;-1:-1:-1;6097:9:4;;6032:80::o;6117:125::-;;6185:1;6182;6179:8;6176:2;;;6190:18;;:::i;:::-;-1:-1:-1;6227:9:4;;6166:76::o;6247:380::-;6326:1;6322:12;;;;6369;;;6390:2;;6444:4;6436:6;6432:17;6422:27;;6390:2;6497;6489:6;6486:14;6466:18;6463:38;6460:2;;;6543:10;6538:3;6534:20;6531:1;6524:31;6578:4;6575:1;6568:15;6606:4;6603:1;6596:15;6460:2;;6302:325;;;:::o;6632:127::-;6693:10;6688:3;6684:20;6681:1;6674:31;6724:4;6721:1;6714:15;6748:4;6745:1;6738:15

Swarm Source

ipfs://bf627a40b469e76bf42f394d7ef016bb5a523d046c3eda9be57787d4c6dddb2e
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
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.