ETH Price: $2,275.02 (+0.11%)

Contract

0x3731E0108147df72eF7cC13CCe45F24625A28924
 

Overview

ETH Balance

0.059 ETH

Eth Value

$134.23 (@ $2,275.02/ETH)

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Contribute134859092021-10-25 9:54:501049 days ago1635155690IN
0x3731E010...625A28924
0.001 ETH0.0031486548.85724656
Contribute134859062021-10-25 9:54:241049 days ago1635155664IN
0x3731E010...625A28924
0.001 ETH0.0031374848.68388489
Contribute134858602021-10-25 9:43:401049 days ago1635155020IN
0x3731E010...625A28924
0.001 ETH0.0033694152.28279576
Contribute134858242021-10-25 9:34:511049 days ago1635154491IN
0x3731E010...625A28924
0.001 ETH0.0038307159.44066816
Contribute134857892021-10-25 9:25:391049 days ago1635153939IN
0x3731E010...625A28924
0.001 ETH0.0034294353.21401792
Contribute134857592021-10-25 9:19:321049 days ago1635153572IN
0x3731E010...625A28924
0.001 ETH0.0030314147.0380321
Contribute134857192021-10-25 9:12:081049 days ago1635153128IN
0x3731E010...625A28924
0.001 ETH0.0037352157.95881575
Contribute134857172021-10-25 9:11:441049 days ago1635153104IN
0x3731E010...625A28924
0.001 ETH0.0040311962.55149286
Contribute134856482021-10-25 8:56:201049 days ago1635152180IN
0x3731E010...625A28924
0.001 ETH0.0039936761.98088844
Contribute134856262021-10-25 8:51:521049 days ago1635151912IN
0x3731E010...625A28924
0.001 ETH0.0041952865.09766453
Contribute134856032021-10-25 8:46:251049 days ago1635151585IN
0x3731E010...625A28924
0.001 ETH0.0035298754.77256725
Contribute134854942021-10-25 8:22:241049 days ago1635150144IN
0x3731E010...625A28924
0.001 ETH0.0041168263.88017022
Contribute134853902021-10-25 7:59:271049 days ago1635148767IN
0x3731E010...625A28924
0.001 ETH0.0030187346.85008062
Contribute134853102021-10-25 7:42:241049 days ago1635147744IN
0x3731E010...625A28924
0.001 ETH0.0034118752.94157562
Contribute134803122021-10-24 12:53:241050 days ago1635080004IN
0x3731E010...625A28924
0.001 ETH0.003355352.06379738
Contribute134802632021-10-24 12:41:111050 days ago1635079271IN
0x3731E010...625A28924
0.001 ETH0.0031333548.61987776
Contribute134795462021-10-24 10:05:551050 days ago1635069955IN
0x3731E010...625A28924
0.001 ETH0.0026257840.74394006
Contribute134794802021-10-24 9:52:281050 days ago1635069148IN
0x3731E010...625A28924
0.001 ETH0.0037679158.46622526
Contribute134793842021-10-24 9:28:411050 days ago1635067721IN
0x3731E010...625A28924
0.001 ETH0.0027846443.20898211
Contribute134778642021-10-24 3:46:111050 days ago1635047171IN
0x3731E010...625A28924
0.001 ETH0.0039359261.08455174
Contribute134777872021-10-24 3:26:231050 days ago1635045983IN
0x3731E010...625A28924
0.001 ETH0.0032411750.29294235
Contribute134777142021-10-24 3:09:371050 days ago1635044977IN
0x3731E010...625A28924
0.001 ETH0.0039784961.73378053
Contribute134775302021-10-24 2:26:481050 days ago1635042408IN
0x3731E010...625A28924
0.001 ETH0.0031436148.77906709
Contribute134774502021-10-24 2:08:391050 days ago1635041319IN
0x3731E010...625A28924
0.001 ETH0.0037777858.61941402
Contribute134713642021-10-23 3:06:401051 days ago1634958400IN
0x3731E010...625A28924
0.001 ETH0.0039812561.77657158
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
134483922021-10-19 13:13:401055 days ago1634649220  Contract Creation0 ETH
Loading...
Loading

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

Contract Name:
CrowdfundProxy

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
Yes with 2000 runs

Other Settings:
default evmVersion
File 1 of 4 : CrowdfundProxy.sol
// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity 0.8.6;

import {CrowdfundStorage} from "./CrowdfundStorage.sol";
import {ERC20Storage} from "../../../external/ERC20Storage.sol";
import {IERC20Events} from "../../../external/interface/IERC20.sol";

interface ICrowdfundFactory {
    function mediaAddress() external returns (address);

    function logic() external returns (address);

    // ERC20 data.
    function parameters()
        external
        returns (
            address payable fundingRecipient,
            uint256 fundingCap,
            uint256 operatorPercent,
            uint256 feePercentage
        );
}

/**
 * @title CrowdfundProxy
 * @author MirrorXYZ
 */
contract CrowdfundProxy is CrowdfundStorage, ERC20Storage, IERC20Events {
    event Upgraded(address indexed implementation);

    /**
     * @dev Storage slot with the address of the current implementation.
     * This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is
     * validated in the constructor.
     */
    bytes32 internal constant _IMPLEMENTATION_SLOT =
        0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

    constructor(
        address treasuryConfig_,
        address payable operator_,
        string memory name_,
        string memory symbol_
    ) ERC20Storage(name_, symbol_) {
        address logic = ICrowdfundFactory(msg.sender).logic();

        assembly {
            sstore(_IMPLEMENTATION_SLOT, logic)
        }

        emit Upgraded(logic);

        // Crowdfund-specific data.
        (
            fundingRecipient,
            fundingCap,
            operatorPercent,
            feePercentage
        ) = ICrowdfundFactory(msg.sender).parameters();

        operator = operator_;
        treasuryConfig = treasuryConfig_;
        // Initialize mutable storage.
        status = Status.FUNDING;
    }

    /// @notice Get current logic
    function logic() external view returns (address logic_) {
        assembly {
            logic_ := sload(_IMPLEMENTATION_SLOT)
        }
    }

    fallback() external payable {
        assembly {
            let ptr := mload(0x40)
            calldatacopy(ptr, 0, calldatasize())
            let result := delegatecall(
                gas(),
                sload(_IMPLEMENTATION_SLOT),
                ptr,
                calldatasize(),
                0,
                0
            )
            let size := returndatasize()
            returndatacopy(ptr, 0, size)

            switch result
            case 0 {
                revert(ptr, size)
            }
            default {
                return(ptr, size)
            }
        }
    }

    receive() external payable {}
}

File 2 of 4 : CrowdfundStorage.sol
// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity 0.8.6;

/**
 * @title CrowdfundStorage
 * @author MirrorXYZ
 */
contract CrowdfundStorage {
    /**
     * @notice The two states that this contract can exist in.
     * "FUNDING" allows contributors to add funds.
     */
    enum Status {
        FUNDING,
        TRADING
    }

    // ============ Constants ============

    /// @notice The factor by which ETH contributions will multiply into crowdfund tokens.
    uint16 internal constant TOKEN_SCALE = 1000;

    // ============ Reentrancy ============

    /// @notice Reentrancy constants.
    uint256 internal constant REENTRANCY_NOT_ENTERED = 1;
    uint256 internal constant REENTRANCY_ENTERED = 2;

    /// @notice Current reentrancy status -- used by the modifier.
    uint256 internal reentrancy_status;

    /// @notice The operator has a special role to change contract status.
    address payable public operator;

    /// @notice Receives the funds when calling withdraw. Operator can configure.
    address payable public fundingRecipient;

    /// @notice Treasury configuration.
    address public treasuryConfig;

    /// @notice We add a hard cap to prevent raising more funds than deemed reasonable.
    uint256 public fundingCap;

    /// @notice Fee percentage that the crowdfund pays to the treasury.
    uint256 public feePercentage;

    /// @notice The operator takes some equity in the tokens, represented by this percent.
    uint256 public operatorPercent;

    // ============ Mutable Storage ============

    /// @notice Represents the current state of the campaign.
    Status public status;
}

File 3 of 4 : ERC20Storage.sol
// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity 0.8.6;

/**
 * @title ERC20Storage
 * @author MirrorXYZ
 */
contract ERC20Storage {
    /// @notice EIP-20 token name for this token
    string public name;

    /// @notice EIP-20 token symbol for this token
    string public symbol;

    /// @notice EIP-20 total number of tokens in circulation
    uint256 public totalSupply;

    /// @notice Initialize total supply to zero.
    constructor(string memory name_, string memory symbol_) {
        name = name_;
        symbol = symbol_;
        totalSupply = 0;
    }
}

File 4 of 4 : IERC20.sol
// SPDX-License-Identifier: GPL-3.0-or-later
pragma solidity 0.8.6;

interface IERC20 {
    /// @notice EIP-20 token name for this token
    function name() external returns (string calldata);

    /// @notice EIP-20 token symbol for this token
    function symbol() external returns (string calldata);

    /// @notice EIP-20 token decimals for this token
    function decimals() external returns (uint8);

    /// @notice EIP-20 total number of tokens in circulation
    function totalSupply() external returns (uint256);

    /// @notice EIP-20 official record of token balances for each account
    function balanceOf(address account) external returns (uint256);

    /// @notice EIP-20 allowance amounts on behalf of others
    function allowance(address owner, address spender)
        external
        returns (uint256);

    /// @notice EIP-20 approves _spender_ to transfer up to _value_ multiple times
    function approve(address spender, uint256 value) external returns (bool);

    /// @notice EIP-20 transfer _value_ to _to_ from _msg.sender_
    function transfer(address to, uint256 value) external returns (bool);

    /// @notice EIP-20 transfer _value_ to _to_ from _from_
    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);
}

interface IERC20Events {
    /// @notice EIP-20 Mint event
    event Mint(address indexed to, uint256 amount);

    /// @notice EIP-20 approval event
    event Approval(
        address indexed from,
        address indexed spender,
        uint256 value
    );

    /// @notice EIP-20 transfer event
    event Transfer(address indexed from, address indexed to, uint256 value);
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 2000
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"treasuryConfig_","type":"address"},{"internalType":"address payable","name":"operator_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","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":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"feePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fundingCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fundingRecipient","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"logic","outputs":[{"internalType":"address","name":"logic_","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operatorPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"status","outputs":[{"internalType":"enum CrowdfundStorage.Status","name":"","type":"uint8"}],"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":[],"name":"treasuryConfig","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

Deployed Bytecode

0x6080604052600436106100c05760003560e01c80637b4044a011610074578063cfd7b0df1161004e578063cfd7b0df14610243578063d7dfa0dd14610270578063e3b2594f146102a4576100c7565b80637b4044a01461020257806395d89b4114610218578063a001ecdd1461022d576100c7565b80631bb534ba116100a55780631bb534ba1461015c578063200d2ed2146101ae578063570ca735146101d5576100c7565b806306fdde031461010d57806318160ddd14610138576100c7565b366100c757005b604051366000823760008036837f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af43d806000843e818015610109578184f35b8184fd5b34801561011957600080fd5b506101226102ba565b60405161012f9190610396565b60405180910390f35b34801561014457600080fd5b5061014e600a5481565b60405190815260200161012f565b34801561016857600080fd5b506002546101899073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161012f565b3480156101ba57600080fd5b506007546101c89060ff1681565b60405161012f9190610355565b3480156101e157600080fd5b506001546101899073ffffffffffffffffffffffffffffffffffffffff1681565b34801561020e57600080fd5b5061014e60065481565b34801561022457600080fd5b50610122610348565b34801561023957600080fd5b5061014e60055481565b34801561024f57600080fd5b506003546101899073ffffffffffffffffffffffffffffffffffffffff1681565b34801561027c57600080fd5b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54610189565b3480156102b057600080fd5b5061014e60045481565b600880546102c790610409565b80601f01602080910402602001604051908101604052809291908181526020018280546102f390610409565b80156103405780601f1061031557610100808354040283529160200191610340565b820191906000526020600020905b81548152906001019060200180831161032357829003601f168201915b505050505081565b600980546102c790610409565b6020810160028310610390577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b600060208083528351808285015260005b818110156103c3578581018301518582016040015282016103a7565b818111156103d5576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600181811c9082168061041d57607f821691505b60208210811415610457577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b5091905056fea2646970667358221220f6ac1fd7363a36b71a4bc262e40ec0fb4ebd0a0da64a0227886f49edfcc9523864736f6c63430008060033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.