ETH Price: $2,263.71 (-5.04%)

Contract

0x015ACf97291dc873a81985deBACD9E215AC50C5c
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Close Funding144144982022-03-19 3:43:09903 days ago1647661389IN
0x015ACf97...15AC50C5c
0 ETH0.0048060329.07183062
Contribute143758972022-03-13 3:09:28909 days ago1647140968IN
0x015ACf97...15AC50C5c
0.025 ETH0.0016938226.28278991
Contribute143250162022-03-05 5:30:07917 days ago1646458207IN
0x015ACf97...15AC50C5c
0.01 ETH0.0019799930.72909539
Contribute143167232022-03-03 22:30:17918 days ago1646346617IN
0x015ACf97...15AC50C5c
0.05 ETH0.0023771736.89315663
Contribute142991012022-03-01 5:05:49921 days ago1646111149IN
0x015ACf97...15AC50C5c
0.1 ETH0.0034117252.93927679
Contribute142255652022-02-17 19:37:00932 days ago1645126620IN
0x015ACf97...15AC50C5c
0.25 ETH0.0065838102.16004977
Contribute142255352022-02-17 19:27:40932 days ago1645126060IN
0x015ACf97...15AC50C5c
0.25 ETH0.004212865.36953639
Contribute142179772022-02-16 15:35:08933 days ago1645025708IN
0x015ACf97...15AC50C5c
0.1 ETH0.003752358.22407685
Contribute142159192022-02-16 7:51:50933 days ago1644997910IN
0x015ACf97...15AC50C5c
0.15 ETH0.0042926366.60831438
Contribute142147412022-02-16 3:18:12934 days ago1644981492IN
0x015ACf97...15AC50C5c
0.00111 ETH0.0018436938.9409594
Contribute142136402022-02-15 23:15:06934 days ago1644966906IN
0x015ACf97...15AC50C5c
0.25 ETH0.00802043124.47519256
Contribute142123492022-02-15 18:31:54934 days ago1644949914IN
0x015ACf97...15AC50C5c
0.25 ETH0.0053509783.045755
Contribute142121062022-02-15 17:37:49934 days ago1644946669IN
0x015ACf97...15AC50C5c
0.15 ETH0.0036462756.57869473
Contribute142108162022-02-15 12:53:49934 days ago1644929629IN
0x015ACf97...15AC50C5c
0.03 ETH0.0038953460.45476329
Contribute142103882022-02-15 11:18:23934 days ago1644923903IN
0x015ACf97...15AC50C5c
0.11 ETH0.0024154837.48082024
Contribute142100822022-02-15 10:11:49934 days ago1644919909IN
0x015ACf97...15AC50C5c
0.25 ETH0.0030309347.03061848
Contribute142100492022-02-15 10:04:34934 days ago1644919474IN
0x015ACf97...15AC50C5c
0.01 ETH0.0024120350.95774738
Contribute142100122022-02-15 9:56:48934 days ago1644919008IN
0x015ACf97...15AC50C5c
0.1 ETH0.0024617938.19939663
Contribute140297532022-01-18 13:27:16962 days ago1642512436IN
0x015ACf97...15AC50C5c
0.01 ETH0.00853415132.44801186
Contribute139407562022-01-04 19:09:04976 days ago1641323344IN
0x015ACf97...15AC50C5c
0.03 ETH0.01192029185
Contribute139098932021-12-31 0:29:32981 days ago1640910572IN
0x015ACf97...15AC50C5c
0.12 ETH0.00775836120.38558361
Contribute138043692021-12-14 16:26:25997 days ago1639499185IN
0x015ACf97...15AC50C5c
0.1 ETH0.0047905974.33500498
Contribute137766592021-12-10 9:47:141001 days ago1639129634IN
0x015ACf97...15AC50C5c
0.01 ETH0.0033711852.31997787
Contribute136918822021-11-26 20:29:591015 days ago1637958599IN
0x015ACf97...15AC50C5c
0.01 ETH0.005329682.71413915
Contribute136837962021-11-25 13:40:081016 days ago1637847608IN
0x015ACf97...15AC50C5c
0.04 ETH0.0056294987.36836896
View all transactions

Latest 3 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
144144982022-03-19 3:43:09903 days ago1647661389
0x015ACf97...15AC50C5c
4.35403298 ETH
144144982022-03-19 3:43:09903 days ago1647661389
0x015ACf97...15AC50C5c
0.11164187 ETH
135350662021-11-02 2:51:021040 days ago1635821462  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.