ETH Price: $2,506.43 (-9.76%)

Contract

0x3D464801153F499cfF57f121C34E1526a60eC814
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Donate125923882021-06-08 6:54:501357 days ago1623135290IN
0x3D464801...6a60eC814
0.025 ETH0.001035311.00000134
Pass To Charity125028352021-05-25 10:01:021371 days ago1621936862IN
0x3D464801...6a60eC814
0 ETH0.0015629733
Donate121775352021-04-05 4:27:361421 days ago1617596856IN
0x3D464801...6a60eC814
0.03 ETH0.0068199781.0108
Donate118673712021-02-16 10:49:081469 days ago1613472548IN
0x3D464801...6a60eC814
0.035 ETH0.01111255132
Donate117173672021-01-24 8:58:201492 days ago1611478700IN
0x3D464801...6a60eC814
0.03 ETH0.0043776752
Pass To Charity116135252021-01-08 10:26:401508 days ago1610101600IN
0x3D464801...6a60eC814
0 ETH0.0027770568
Donate114966902020-12-21 12:11:401526 days ago1608552700IN
0x3D464801...6a60eC814
0.05 ETH0.0033674440
Donate113656772020-12-01 8:58:111546 days ago1606813091IN
0x3D464801...6a60eC814
0.05 ETH0.0039630447
Donate112447512020-11-12 19:39:591565 days ago1605209999IN
0x3D464801...6a60eC814
0.1 ETH0.0010952813
Donate112433252020-11-12 14:32:161565 days ago1605191536IN
0x3D464801...6a60eC814
0.08 ETH0.0028563225
Add Whitelisted112431362020-11-12 13:49:581565 days ago1605188998IN
0x3D464801...6a60eC814
0 ETH0.0011480225

Latest 17 internal transactions

Advanced mode:
Parent Transaction Hash Block
From
To
125923882021-06-08 6:54:501357 days ago1623135290
0x3D464801...6a60eC814
0.0025 ETH
125923882021-06-08 6:54:501357 days ago1623135290
0x3D464801...6a60eC814
0.0225 ETH
121775352021-04-05 4:27:361421 days ago1617596856
0x3D464801...6a60eC814
0.003 ETH
121775352021-04-05 4:27:361421 days ago1617596856
0x3D464801...6a60eC814
0.027 ETH
118673712021-02-16 10:49:081469 days ago1613472548
0x3D464801...6a60eC814
0.0035 ETH
118673712021-02-16 10:49:081469 days ago1613472548
0x3D464801...6a60eC814
0.0315 ETH
117173672021-01-24 8:58:201492 days ago1611478700
0x3D464801...6a60eC814
0.003 ETH
117173672021-01-24 8:58:201492 days ago1611478700
0x3D464801...6a60eC814
0.027 ETH
114966902020-12-21 12:11:401526 days ago1608552700
0x3D464801...6a60eC814
0.005 ETH
114966902020-12-21 12:11:401526 days ago1608552700
0x3D464801...6a60eC814
0.045 ETH
113656772020-12-01 8:58:111546 days ago1606813091
0x3D464801...6a60eC814
0.005 ETH
113656772020-12-01 8:58:111546 days ago1606813091
0x3D464801...6a60eC814
0.045 ETH
112447512020-11-12 19:39:591565 days ago1605209999
0x3D464801...6a60eC814
0.01 ETH
112447512020-11-12 19:39:591565 days ago1605209999
0x3D464801...6a60eC814
0.09 ETH
112433252020-11-12 14:32:161565 days ago1605191536
0x3D464801...6a60eC814
0.008 ETH
112433252020-11-12 14:32:161565 days ago1605191536
0x3D464801...6a60eC814
0.072 ETH
112431322020-11-12 13:49:221565 days ago1605188962
0x3D464801...6a60eC814
 Contract Creation0 ETH
Loading...
Loading

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

Contract Name:
DonationCommunity

Compiler Version
v0.5.8+commit.23d335f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Apache-2.0 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-11-12
*/

// File: openzeppelin-solidity/contracts/GSN/Context.sol

pragma solidity ^0.5.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
contract Context {
    // Empty internal constructor, to prevent people from mistakenly deploying
    // an instance of this contract, which should be used via inheritance.
    constructor () internal { }
    // solhint-disable-previous-line no-empty-blocks

    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

// File: openzeppelin-solidity/contracts/access/Roles.sol

pragma solidity ^0.5.0;

/**
 * @title Roles
 * @dev Library for managing addresses assigned to a Role.
 */
library Roles {
    struct Role {
        mapping (address => bool) bearer;
    }

    /**
     * @dev Give an account access to this role.
     */
    function add(Role storage role, address account) internal {
        require(!has(role, account), "Roles: account already has role");
        role.bearer[account] = true;
    }

    /**
     * @dev Remove an account's access to this role.
     */
    function remove(Role storage role, address account) internal {
        require(has(role, account), "Roles: account does not have role");
        role.bearer[account] = false;
    }

    /**
     * @dev Check if an account has this role.
     * @return bool
     */
    function has(Role storage role, address account) internal view returns (bool) {
        require(account != address(0), "Roles: account is the zero address");
        return role.bearer[account];
    }
}

// File: openzeppelin-solidity/contracts/access/roles/WhitelistAdminRole.sol

pragma solidity ^0.5.0;



/**
 * @title WhitelistAdminRole
 * @dev WhitelistAdmins are responsible for assigning and removing Whitelisted accounts.
 */
contract WhitelistAdminRole is Context {
    using Roles for Roles.Role;

    event WhitelistAdminAdded(address indexed account);
    event WhitelistAdminRemoved(address indexed account);

    Roles.Role private _whitelistAdmins;

    constructor () internal {
        _addWhitelistAdmin(_msgSender());
    }

    modifier onlyWhitelistAdmin() {
        require(isWhitelistAdmin(_msgSender()), "WhitelistAdminRole: caller does not have the WhitelistAdmin role");
        _;
    }

    function isWhitelistAdmin(address account) public view returns (bool) {
        return _whitelistAdmins.has(account);
    }

    function addWhitelistAdmin(address account) public onlyWhitelistAdmin {
        _addWhitelistAdmin(account);
    }

    function renounceWhitelistAdmin() public {
        _removeWhitelistAdmin(_msgSender());
    }

    function _addWhitelistAdmin(address account) internal {
        _whitelistAdmins.add(account);
        emit WhitelistAdminAdded(account);
    }

    function _removeWhitelistAdmin(address account) internal {
        _whitelistAdmins.remove(account);
        emit WhitelistAdminRemoved(account);
    }
}

// File: openzeppelin-solidity/contracts/access/roles/WhitelistedRole.sol

pragma solidity ^0.5.0;




/**
 * @title WhitelistedRole
 * @dev Whitelisted accounts have been approved by a WhitelistAdmin to perform certain actions (e.g. participate in a
 * crowdsale). This role is special in that the only accounts that can add it are WhitelistAdmins (who can also remove
 * it), and not Whitelisteds themselves.
 */
contract WhitelistedRole is Context, WhitelistAdminRole {
    using Roles for Roles.Role;

    event WhitelistedAdded(address indexed account);
    event WhitelistedRemoved(address indexed account);

    Roles.Role private _whitelisteds;

    modifier onlyWhitelisted() {
        require(isWhitelisted(_msgSender()), "WhitelistedRole: caller does not have the Whitelisted role");
        _;
    }

    function isWhitelisted(address account) public view returns (bool) {
        return _whitelisteds.has(account);
    }

    function addWhitelisted(address account) public onlyWhitelistAdmin {
        _addWhitelisted(account);
    }

    function removeWhitelisted(address account) public onlyWhitelistAdmin {
        _removeWhitelisted(account);
    }

    function renounceWhitelisted() public {
        _removeWhitelisted(_msgSender());
    }

    function _addWhitelisted(address account) internal {
        _whitelisteds.add(account);
        emit WhitelistedAdded(account);
    }

    function _removeWhitelisted(address account) internal {
        _whitelisteds.remove(account);
        emit WhitelistedRemoved(account);
    }
}

// File: openzeppelin-solidity/contracts/math/SafeMath.sol

pragma solidity ^0.5.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     *
     * _Available since v2.4.0._
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     *
     * _Available since v2.4.0._
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     *
     * _Available since v2.4.0._
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

// File: openzeppelin-solidity/contracts/ownership/Secondary.sol

pragma solidity ^0.5.0;

/**
 * @dev A Secondary contract can only be used by its primary account (the one that created it).
 */
contract Secondary is Context {
    address private _primary;

    /**
     * @dev Emitted when the primary contract changes.
     */
    event PrimaryTransferred(
        address recipient
    );

    /**
     * @dev Sets the primary account to the one that is creating the Secondary contract.
     */
    constructor () internal {
        address msgSender = _msgSender();
        _primary = msgSender;
        emit PrimaryTransferred(msgSender);
    }

    /**
     * @dev Reverts if called from any account other than the primary.
     */
    modifier onlyPrimary() {
        require(_msgSender() == _primary, "Secondary: caller is not the primary account");
        _;
    }

    /**
     * @return the address of the primary.
     */
    function primary() public view returns (address) {
        return _primary;
    }

    /**
     * @dev Transfers contract to a new primary.
     * @param recipient The address of new primary.
     */
    function transferPrimary(address recipient) public onlyPrimary {
        require(recipient != address(0), "Secondary: new primary is the zero address");
        _primary = recipient;
        emit PrimaryTransferred(recipient);
    }
}

// File: contracts/ERC20.sol

pragma solidity ^0.5.2;

interface ERC20 {
    function totalSupply() external view returns (uint supply);

    function balanceOf(address _owner) external view returns (uint balance);

    function transfer(address _to, uint _value) external returns (bool success);

    function transferFrom(address _from, address _to, uint _value) external returns (bool success);

    function approve(address _spender, uint _value) external returns (bool success);

    function allowance(address _owner, address _spender) external view returns (uint remaining);

    function decimals() external view returns (uint digits);

    event Approval(address indexed _owner, address indexed _spender, uint _value);
}

// File: contracts/BondingVaultInterface.sol

pragma solidity ^0.5.2;

interface BondingVaultInterface {

    function fundWithReward(address payable _donor) external payable;

    function getEthKidsToken() external view returns (address);

    function calculateReward(uint256 _ethAmount) external view returns (uint256 _tokenAmount);

    function calculateReturn(uint256 _tokenAmount) external view returns (uint256 _returnEth);

    function sweepVault(address payable _operator) external;

    function addWhitelisted(address account) external;

    function removeWhitelisted(address account) external;

}

// File: contracts/YieldVaultInterface.sol

pragma solidity ^0.5.8;

interface YieldVaultInterface {

    function withdraw(address _token, address _atoken, uint _amount) external;

    function addWhitelisted(address account) external;

    function removeWhitelisted(address account) external;

}

// File: contracts/RegistryInterface.sol

pragma solidity ^0.5.2;



interface RegistryInterface {

    function getCurrencyConverter() external view returns (address);

    function getBondingVault() external view returns (BondingVaultInterface);

    function yieldVault() external view returns (YieldVaultInterface);

    function getCharityVaults() external view returns (address[] memory);

    function communityCount() external view returns (uint256);

}

// File: contracts/RegistryAware.sol

pragma solidity ^0.5.2;


interface RegistryAware {

    function setRegistry(address _registry) external;

    function getRegistry() external view returns (RegistryInterface);
}

// File: contracts/community/CharityVault.sol

pragma solidity ^0.5.2;






/**
 * @title CharityVault
 * @dev Vault which holds the assets until the community leader(s) decide to transfer
 * them to the actual charity destination.
 * Deposit and withdrawal calls come only from the actual community contract
 */
contract CharityVault is RegistryAware, Secondary {
    using SafeMath for uint256;

    RegistryInterface public registry;
    uint256 public sumStats;

    event LogDonationReceived(
        uint256 amount,
        address indexed account
    );
    event LogDonationWithdrawn(
        uint256 amount,
        address indexed account
    );

    /**
    * @dev 'deposit' must be used instead
    **/
    function() external {
        //no 'payable' here
    }

    /**
     * @dev Receives some ETH and stores it.
     * @param _payee the donor's address.
     */
    function deposit(address _payee) public payable {
        sumStats = sumStats.add(msg.value);
        emit LogDonationReceived(msg.value, _payee);
    }

    /**
     * @dev Withdraw some of accumulated balance for a _payee.
     */
    function withdraw(address payable _payee, uint256 _payment) public onlyPrimary {
        require(_payment > 0 && address(this).balance >= _payment, "Insufficient funds in the charity vault");
        _payee.transfer(_payment);
        emit LogDonationWithdrawn(_payment, _payee);
    }

    function setRegistry(address _registry) public onlyPrimary {
        registry = (RegistryInterface)(_registry);
    }

    function getRegistry() public view returns (RegistryInterface) {
        return registry;
    }

}

// File: contracts/community/IDonationCommunity.sol

pragma solidity ^0.5.2;

interface IDonationCommunity {

    function donateDelegated(address payable _donator) external payable;

    function name() external view returns (string memory);

    function charityVault() external view returns (address);
}

// File: contracts/community/DonationCommunity.sol

pragma solidity ^0.5.2;







/**
 * @title DonationCommunity
 * @dev Manages donations and owns a charity vault
 * Aware of the EthKidsRegistry and passes a part of donations to the whole community
 * The 'admin' is the community leader
 * The 'whitelisted' account is the EthKidsRegistry and must be specified
 * prior to adding to the EthKidsRegistry
 */
contract DonationCommunity is IDonationCommunity, RegistryAware, WhitelistedRole {
    using SafeMath for uint256;

    uint256 public constant CHARITY_DISTRIBUTION = 90; //%, the rest funds bonding curve

    string private _name;
    CharityVault public charityVault;

    RegistryInterface public registry;

    event LogDonationReceived
    (
        address from,
        uint256 amount
    );
    event LogPassToCharity
    (
        address by,
        address intermediary,
        uint256 amount,
        string ipfsHash
    );

    /**
    * @dev not allowed, can't store ETH
    **/
    function() external {
        //no 'payable' here
    }

    /**
    * @dev Constructor
    * @param name for reference
    */
    constructor (string memory name) public {
        _name = name;
        charityVault = new CharityVault();
    }

    function setRegistry(address _registry) public onlyWhitelisted {
        registry = (RegistryInterface)(_registry);
        charityVault.setRegistry(_registry);
    }

    function getRegistry() public view returns (RegistryInterface) {
        return registry;
    }

    function allocate(uint256 donation) internal pure returns (uint256 _charityAllocation, uint256 _bondingAllocation) {
        uint256 _multiplier = 100;
        _charityAllocation = (donation).mul(CHARITY_DISTRIBUTION).div(_multiplier);
        _bondingAllocation = donation.sub(_charityAllocation);
        return (_charityAllocation, _bondingAllocation);
    }

    function myReward(uint256 _ethAmount) public view returns (uint256 tokenAmount) {
        (uint256 _charityAllocation, uint256  _bondingAllocation) = allocate(_ethAmount);
        return getRegistry().getBondingVault().calculateReward(_bondingAllocation);
    }

    function myReturn(uint256 _tokenAmount) public view returns (uint256 returnEth) {
        return getRegistry().getBondingVault().calculateReturn(_tokenAmount);
    }

    function donate() public payable {
        donateDelegated(msg.sender);
    }

    /**
    * @dev Donate funds on behalf of someone else.
    * Primary use is to pass the actual donor when the caller is a proxy, like KyberConverter
    * @param _donor address that will be recorded as a donor and will receive the community tokens
    **/
    function donateDelegated(address payable _donor) public payable {
        require(msg.value > 0, "Must include some ETH to donate");

        (uint256 _charityAllocation, uint256  _bondingAllocation) = allocate(msg.value);
        charityVault.deposit.value(_charityAllocation)(_donor);

        getRegistry().getBondingVault().fundWithReward.value(_bondingAllocation)(_donor);

        emit LogDonationReceived(_donor, msg.value);
    }

    /**
    * @dev Donate funds on behalf of someone else without being rewarded.
    * @param _donor address that will be recorded as a donor
    **/
    function donateDelegatedNoReward(address payable _donor) public payable {
        require(msg.value > 0, "Must include some ETH to donate");

        (uint256 _charityAllocation, uint256  _bondingAllocation) = allocate(msg.value);
        charityVault.deposit.value(_charityAllocation)(_donor);

        address payable bondingVaultPayable = address(uint160(address(getRegistry().getBondingVault())));
        bondingVaultPayable.transfer(_bondingAllocation);

        emit LogDonationReceived(_donor, msg.value);
    }

    function passToCharity(uint256 _amount, address payable _intermediary, string memory _ipfsHash) public onlyWhitelistAdmin {
        require(_intermediary != address(0));
        charityVault.withdraw(_intermediary, _amount);

        emit LogPassToCharity(msg.sender, _intermediary, _amount, _ipfsHash);
    }

    function passToCharityWithInterest(uint256 _amount, address payable _intermediary, string memory _ipfsHash, address _aaveToken, address _aaveAToken) public onlyWhitelistAdmin {
        passToCharity(_amount, _intermediary, _ipfsHash);
        //distribute accumulated interest amongst the communities
        registry.yieldVault().withdraw(_aaveToken, _aaveAToken, 0);
    }

    function name() public view returns (string memory) {
        return _name;
    }


}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"charityVault","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_donor","type":"address"}],"name":"donateDelegated","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addWhitelisted","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"removeWhitelisted","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_donor","type":"address"}],"name":"donateDelegatedNoReward","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isWhitelisted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"},{"name":"_intermediary","type":"address"},{"name":"_ipfsHash","type":"string"}],"name":"passToCharity","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceWhitelistAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getRegistry","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addWhitelistAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"registry","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_registry","type":"address"}],"name":"setRegistry","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isWhitelistAdmin","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_ethAmount","type":"uint256"}],"name":"myReward","outputs":[{"name":"tokenAmount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CHARITY_DISTRIBUTION","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceWhitelisted","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenAmount","type":"uint256"}],"name":"myReturn","outputs":[{"name":"returnEth","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"donate","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"},{"name":"_intermediary","type":"address"},{"name":"_ipfsHash","type":"string"},{"name":"_aaveToken","type":"address"},{"name":"_aaveAToken","type":"address"}],"name":"passToCharityWithInterest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"name","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":false,"stateMutability":"nonpayable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LogDonationReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"by","type":"address"},{"indexed":false,"name":"intermediary","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"ipfsHash","type":"string"}],"name":"LogPassToCharity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"WhitelistedAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"WhitelistedRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"WhitelistAdminAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"WhitelistAdminRemoved","type":"event"}]

Deployed Bytecode

0x60806040526004361061011f5760003560e01c80637362d9c8116100a0578063cba8b92811610064578063cba8b928146104c0578063d6cd9473146104d5578063d990c9b3146104ea578063ed88c68e14610514578063ff3850b71461051c5761011f565b80637362d9c8146103d65780637b10399914610409578063a91ee0dc1461041e578063bb5f747b14610451578063c1658a95146104845761011f565b80632a970d2a116100e75780632a970d2a146102775780633af32abf1461029d57806343dcfeaa146102e45780634c5a628c146103ac5780635ab1bd53146103c15761011f565b806302b09ac51461012e57806306fdde031461015f5780630dda1fde146101e957806310154bad14610211578063291d954914610244575b34801561012b57600080fd5b50005b34801561013a57600080fd5b506101436105fa565b604080516001600160a01b039092168252519081900360200190f35b34801561016b57600080fd5b50610174610609565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101ae578181015183820152602001610196565b50505050905090810190601f1680156101db5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61020f600480360360208110156101ff57600080fd5b50356001600160a01b031661069c565b005b34801561021d57600080fd5b5061020f6004803603602081101561023457600080fd5b50356001600160a01b031661088e565b34801561025057600080fd5b5061020f6004803603602081101561026757600080fd5b50356001600160a01b03166108e8565b61020f6004803603602081101561028d57600080fd5b50356001600160a01b031661093a565b3480156102a957600080fd5b506102d0600480360360208110156102c057600080fd5b50356001600160a01b0316610afe565b604080519115158252519081900360200190f35b3480156102f057600080fd5b5061020f6004803603606081101561030757600080fd5b8135916001600160a01b036020820135169181019060608101604082013564010000000081111561033757600080fd5b82018360208201111561034957600080fd5b8035906020019184600183028401116401000000008311171561036b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610b17945050505050565b3480156103b857600080fd5b5061020f610cbd565b3480156103cd57600080fd5b50610143610ccf565b3480156103e257600080fd5b5061020f600480360360208110156103f957600080fd5b50356001600160a01b0316610cde565b34801561041557600080fd5b50610143610d30565b34801561042a57600080fd5b5061020f6004803603602081101561044157600080fd5b50356001600160a01b0316610d3f565b34801561045d57600080fd5b506102d06004803603602081101561047457600080fd5b50356001600160a01b0316610e0c565b34801561049057600080fd5b506104ae600480360360208110156104a757600080fd5b5035610e1e565b60408051918252519081900360200190f35b3480156104cc57600080fd5b506104ae610f1c565b3480156104e157600080fd5b5061020f610f21565b3480156104f657600080fd5b506104ae6004803603602081101561050d57600080fd5b5035610f31565b61020f61101d565b34801561052857600080fd5b5061020f600480360360a081101561053f57600080fd5b8135916001600160a01b036020820135169181019060608101604082013564010000000081111561056f57600080fd5b82018360208201111561058157600080fd5b803590602001918460018302840111640100000000831117156105a357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550506001600160a01b0383358116945060209093013590921691506110269050565b6003546001600160a01b031681565b60028054604080516020601f60001961010060018716150201909416859004938401819004810282018101909252828152606093909290918301828280156106925780601f1061066757610100808354040283529160200191610692565b820191906000526020600020905b81548152906001019060200180831161067557829003601f168201915b5050505050905090565b600034116106f45760408051600160e51b62461bcd02815260206004820152601f60248201527f4d75737420696e636c75646520736f6d652045544820746f20646f6e61746500604482015290519081900360640190fd5b60008061070034611165565b60035460408051600160e01b63f340fa010281526001600160a01b0388811660048301529151949650929450169163f340fa01918591602480830192600092919082900301818588803b15801561075657600080fd5b505af115801561076a573d6000803e3d6000fd5b5050505050610777610ccf565b6001600160a01b031663799463e76040518163ffffffff1660e01b815260040160206040518083038186803b1580156107af57600080fd5b505afa1580156107c3573d6000803e3d6000fd5b505050506040513d60208110156107d957600080fd5b505160408051600160e11b637bb0f5a10281526001600160a01b0386811660048301529151919092169163f761eb4291849160248082019260009290919082900301818588803b15801561082c57600080fd5b505af1158015610840573d6000803e3d6000fd5b5050604080516001600160a01b038816815234602082015281517fde5c26dd3fd805828d78c07f1efc4c8972ca8efa32679f943954cbba78eccef095509081900390910192509050a1505050565b61089e6108996111a5565b610e0c565b6108dc57604051600160e51b62461bcd02815260040180806020018281038252604081526020018061166f6040913960400191505060405180910390fd5b6108e5816111a9565b50565b6108f36108996111a5565b61093157604051600160e51b62461bcd02815260040180806020018281038252604081526020018061166f6040913960400191505060405180910390fd5b6108e5816111f1565b600034116109925760408051600160e51b62461bcd02815260206004820152601f60248201527f4d75737420696e636c75646520736f6d652045544820746f20646f6e61746500604482015290519081900360640190fd5b60008061099e34611165565b60035460408051600160e01b63f340fa010281526001600160a01b0388811660048301529151949650929450169163f340fa01918591602480830192600092919082900301818588803b1580156109f457600080fd5b505af1158015610a08573d6000803e3d6000fd5b50505050506000610a17610ccf565b6001600160a01b031663799463e76040518163ffffffff1660e01b815260040160206040518083038186803b158015610a4f57600080fd5b505afa158015610a63573d6000803e3d6000fd5b505050506040513d6020811015610a7957600080fd5b50516040519091506001600160a01b0382169083156108fc029084906000818181858888f19350505050158015610ab4573d6000803e3d6000fd5b50604080516001600160a01b038616815234602082015281517fde5c26dd3fd805828d78c07f1efc4c8972ca8efa32679f943954cbba78eccef0929181900390910190a150505050565b6000610b1160018363ffffffff61123916565b92915050565b610b226108996111a5565b610b6057604051600160e51b62461bcd02815260040180806020018281038252604081526020018061166f6040913960400191505060405180910390fd5b6001600160a01b038216610b7357600080fd5b60035460408051600160e01b63f3fef3a30281526001600160a01b038581166004830152602482018790529151919092169163f3fef3a391604480830192600092919082900301818387803b158015610bcb57600080fd5b505af1158015610bdf573d6000803e3d6000fd5b505050507f89d6cf333f7822aae7e846ae3e07d77f0f8ac2733673b94e987c5ccb7d1afe923383858460405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610c7b578181015183820152602001610c63565b50505050905090810190601f168015610ca85780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050565b610ccd610cc86111a5565b6112a3565b565b6004546001600160a01b031690565b610ce96108996111a5565b610d2757604051600160e51b62461bcd02815260040180806020018281038252604081526020018061166f6040913960400191505060405180910390fd5b6108e5816112eb565b6004546001600160a01b031681565b610d4f610d4a6111a5565b610afe565b610d8d57604051600160e51b62461bcd02815260040180806020018281038252603a8152602001806116af603a913960400191505060405180910390fd5b600480546001600160a01b0319166001600160a01b03838116918217835560035460408051600160e21b632a47b83702815294850193909352915191169163a91ee0dc91602480830192600092919082900301818387803b158015610df157600080fd5b505af1158015610e05573d6000803e3d6000fd5b5050505050565b6000610b11818363ffffffff61123916565b6000806000610e2c84611165565b91509150610e38610ccf565b6001600160a01b031663799463e76040518163ffffffff1660e01b815260040160206040518083038186803b158015610e7057600080fd5b505afa158015610e84573d6000803e3d6000fd5b505050506040513d6020811015610e9a57600080fd5b505160408051600160e01b63d2d7231f0281526004810184905290516001600160a01b039092169163d2d7231f91602480820192602092909190829003018186803b158015610ee857600080fd5b505afa158015610efc573d6000803e3d6000fd5b505050506040513d6020811015610f1257600080fd5b5051949350505050565b605a81565b610ccd610f2c6111a5565b6111f1565b6000610f3b610ccf565b6001600160a01b031663799463e76040518163ffffffff1660e01b815260040160206040518083038186803b158015610f7357600080fd5b505afa158015610f87573d6000803e3d6000fd5b505050506040513d6020811015610f9d57600080fd5b505160408051600160e11b6324af22590281526004810185905290516001600160a01b039092169163495e44b291602480820192602092909190829003018186803b158015610feb57600080fd5b505afa158015610fff573d6000803e3d6000fd5b505050506040513d602081101561101557600080fd5b505192915050565b610ccd3361069c565b6110316108996111a5565b61106f57604051600160e51b62461bcd02815260040180806020018281038252604081526020018061166f6040913960400191505060405180910390fd5b61107a858585610b17565b6004805460408051600160e11b6353fc52f102815290516001600160a01b039092169263a7f8a5e2928282019260209290829003018186803b1580156110bf57600080fd5b505afa1580156110d3573d6000803e3d6000fd5b505050506040513d60208110156110e957600080fd5b505160408051600160e11b636ce576890281526001600160a01b0385811660048301528481166024830152600060448301819052925193169263d9caed129260648084019391929182900301818387803b15801561114657600080fd5b505af115801561115a573d6000803e3d6000fd5b505050505050505050565b600080606461118b8161117f86605a63ffffffff61133316565b9063ffffffff61139616565b925061119d848463ffffffff6113d816565b915050915091565b3390565b6111ba60018263ffffffff61141a16565b6040516001600160a01b038216907fee1504a83b6d4a361f4c1dc78ab59bfa30d6a3b6612c403e86bb01ef2984295f90600090a250565b61120260018263ffffffff61149e16565b6040516001600160a01b038216907f270d9b30cf5b0793bbfd54c9d5b94aeb49462b8148399000265144a8722da6b690600090a250565b60006001600160a01b03821661128357604051600160e51b62461bcd02815260040180806020018281038252602281526020018061164d6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6112b460008263ffffffff61149e16565b6040516001600160a01b038216907f0a8eb35e5ca14b3d6f28e4abf2f128dbab231a58b56e89beb5d636115001e16590600090a250565b6112fc60008263ffffffff61141a16565b6040516001600160a01b038216907f22380c05984257a1cb900161c713dd71d39e74820f1aea43bd3f1bdd2096129990600090a250565b60008261134257506000610b11565b8282028284828161134f57fe5b041461138f57604051600160e51b62461bcd02815260040180806020018281038252602181526020018061162c6021913960400191505060405180910390fd5b9392505050565b600061138f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611508565b600061138f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115ad565b6114248282611239565b156114795760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6114a88282611239565b6114e657604051600160e51b62461bcd02815260040180806020018281038252602181526020018061160b6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6000818361159757604051600160e51b62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561155c578181015183820152602001611544565b50505050905090810190601f1680156115895780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816115a357fe5b0495945050505050565b6000818484111561160257604051600160e51b62461bcd02815260206004820181815283516024840152835190928392604490910191908501908083836000831561155c578181015183820152602001611544565b50505090039056fe526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77526f6c65733a206163636f756e7420697320746865207a65726f206164647265737357686974656c69737441646d696e526f6c653a2063616c6c657220646f6573206e6f742068617665207468652057686974656c69737441646d696e20726f6c6557686974656c6973746564526f6c653a2063616c6c657220646f6573206e6f742068617665207468652057686974656c697374656420726f6c65a165627a7a72305820e9e68c8ad175872541e0bcba0b8c1797141db79cb2869ba29d115f8e8d19df020029

Deployed Bytecode Sourcemap

17125:4285:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17125:4285:0;;17367:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17367:32:0;;;:::i;:::-;;;;-1:-1:-1;;;;;17367:32:0;;;;;;;;;;;;;;21320:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21320:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;21320:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19466:446;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19466:446:0;-1:-1:-1;;;;;19466:446:0;;:::i;:::-;;4673:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4673:110:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4673:110:0;-1:-1:-1;;;;;4673:110:0;;:::i;4791:116::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4791:116:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4791:116:0;-1:-1:-1;;;;;4791:116:0;;:::i;20075:529::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20075:529:0;-1:-1:-1;;;;;20075:529:0;;:::i;4546:119::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4546:119:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4546:119:0;-1:-1:-1;;;;;4546:119:0;;:::i;:::-;;;;;;;;;;;;;;;;;;20612:314;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20612:314:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20612:314:0;;;-1:-1:-1;;;;;20612:314:0;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;20612:314:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;20612:314:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;20612:314:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;20612:314:0;;-1:-1:-1;20612:314:0;;-1:-1:-1;;;;;20612:314:0:i;3285:95::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3285:95:0;;;:::i;18188:97::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18188:97:0;;;:::i;3161:116::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3161:116:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3161:116:0;-1:-1:-1;;;;;3161:116:0;;:::i;17408:33::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17408:33:0;;;:::i;18011:169::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18011:169:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18011:169:0;-1:-1:-1;;;;;18011:169:0;;:::i;3028:125::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3028:125:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3028:125:0;-1:-1:-1;;;;;3028:125:0;;:::i;18667:264::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18667:264:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18667:264:0;;:::i;:::-;;;;;;;;;;;;;;;;17248:49;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17248:49:0;;;:::i;4915:89::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4915:89:0;;;:::i;18939:167::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18939:167:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18939:167:0;;:::i;19114:79::-;;;:::i;20934:378::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20934:378:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;20934:378:0;;;-1:-1:-1;;;;;20934:378:0;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;20934:378:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;20934:378:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;20934:378:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;20934:378:0;;-1:-1:-1;;;;;;;20934:378:0;;;;;-1:-1:-1;20934:378:0;;;;;;;;;-1:-1:-1;20934:378:0;;-1:-1:-1;20934:378:0:i;17367:32::-;;;-1:-1:-1;;;;;17367:32:0;;:::o;21320:83::-;21390:5;21383:12;;;;;;;-1:-1:-1;;21383:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21357:13;;21383:12;;21390:5;;21383:12;;21390:5;21383:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21320:83;:::o;19466:446::-;19561:1;19549:9;:13;19541:57;;;;;-1:-1:-1;;;;;19541:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19612:26;19640:27;19671:19;19680:9;19671:8;:19::i;:::-;19701:12;;:54;;;-1:-1:-1;;;;;19701:54:0;;-1:-1:-1;;;;;19701:54:0;;;;;;;;;19611:79;;-1:-1:-1;19611:79:0;;-1:-1:-1;19701:12:0;;:20;;19611:79;;19701:54;;;;;:12;;:54;;;;;;;19611:79;19701:12;:54;;;5:2:-1;;;;30:1;27;20:12;5:2;19701:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19701:54:0;;;;;19768:13;:11;:13::i;:::-;-1:-1:-1;;;;;19768:29:0;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19768:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19768:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19768:31:0;:80;;;-1:-1:-1;;;;;19768:80:0;;-1:-1:-1;;;;;19768:80:0;;;;;;;;;:46;;;;;;;19821:18;;19768:80;;;;;-1:-1:-1;;19768:80:0;;;;;;;;19821:18;19768:46;:80;;;5:2:-1;;;;30:1;27;20:12;5:2;19768:80:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;19866:38:0;;;-1:-1:-1;;;;;19866:38:0;;;;19894:9;19866:38;;;;;;;;-1:-1:-1;19866:38:0;;;;;;;;-1:-1:-1;19866:38:0;-1:-1:-1;19866:38:0;19466:446;;;:::o;4673:110::-;2901:30;2918:12;:10;:12::i;:::-;2901:16;:30::i;:::-;2893:107;;;;-1:-1:-1;;;;;2893:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4751:24;4767:7;4751:15;:24::i;:::-;4673:110;:::o;4791:116::-;2901:30;2918:12;:10;:12::i;2901:30::-;2893:107;;;;-1:-1:-1;;;;;2893:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4872:27;4891:7;4872:18;:27::i;20075:529::-;20178:1;20166:9;:13;20158:57;;;;;-1:-1:-1;;;;;20158:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20229:26;20257:27;20288:19;20297:9;20288:8;:19::i;:::-;20318:12;;:54;;;-1:-1:-1;;;;;20318:54:0;;-1:-1:-1;;;;;20318:54:0;;;;;;;;;20228:79;;-1:-1:-1;20228:79:0;;-1:-1:-1;20318:12:0;;:20;;20228:79;;20318:54;;;;;:12;;:54;;;;;;;20228:79;20318:12;:54;;;5:2:-1;;;;30:1;27;20:12;5:2;20318:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20318:54:0;;;;;20385:35;20447:13;:11;:13::i;:::-;-1:-1:-1;;;;;20447:29:0;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20447:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20447:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20447:31:0;20492:48;;20447:31;;-1:-1:-1;;;;;;20492:28:0;;;:48;;;;;20521:18;;20492:48;;;;20521:18;20492:28;:48;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;20558:38:0;;;-1:-1:-1;;;;;20558:38:0;;;;20586:9;20558:38;;;;;;;;;;;;;;;;;20075:529;;;;:::o;4546:119::-;4607:4;4631:26;:13;4649:7;4631:26;:17;:26;:::i;:::-;4624:33;4546:119;-1:-1:-1;;4546:119:0:o;20612:314::-;2901:30;2918:12;:10;:12::i;2901:30::-;2893:107;;;;-1:-1:-1;;;;;2893:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20753:27:0;;20745:36;;;;;;20792:12;;:45;;;-1:-1:-1;;;;;20792:45:0;;-1:-1:-1;;;;;20792:45:0;;;;;;;;;;;;;;;:12;;;;;:21;;:45;;;;;:12;;:45;;;;;;;:12;;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;20792:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20792:45:0;;;;20855:63;20872:10;20884:13;20899:7;20908:9;20855:63;;;;-1:-1:-1;;;;;20855:63:0;-1:-1:-1;;;;;20855:63:0;;;;;;-1:-1:-1;;;;;20855:63:0;-1:-1:-1;;;;;20855:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;20855:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20612:314;;;:::o;3285:95::-;3337:35;3359:12;:10;:12::i;:::-;3337:21;:35::i;:::-;3285:95::o;18188:97::-;18269:8;;-1:-1:-1;;;;;18269:8:0;18188:97;:::o;3161:116::-;2901:30;2918:12;:10;:12::i;2901:30::-;2893:107;;;;-1:-1:-1;;;;;2893:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3242:27;3261:7;3242:18;:27::i;17408:33::-;;;-1:-1:-1;;;;;17408:33:0;;:::o;18011:169::-;4428:27;4442:12;:10;:12::i;:::-;4428:13;:27::i;:::-;4420:98;;;;-1:-1:-1;;;;;4420:98:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18085:8;:41;;-1:-1:-1;;;;;;18085:41:0;-1:-1:-1;;;;;18085:41:0;;;;;;;;18137:12;;:35;;;-1:-1:-1;;;;;18137:35:0;;;;;;;;;;;:12;;;:24;;:35;;;;;-1:-1:-1;;18137:35:0;;;;;;;-1:-1:-1;18137:12:0;:35;;;5:2:-1;;;;30:1;27;20:12;5:2;18137:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18137:35:0;;;;18011:169;:::o;3028:125::-;3092:4;3116:29;3092:4;3137:7;3116:29;:20;:29;:::i;18667:264::-;18726:19;18759:26;18787:27;18818:20;18827:10;18818:8;:20::i;:::-;18758:80;;;;18856:13;:11;:13::i;:::-;-1:-1:-1;;;;;18856:29:0;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18856:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18856:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18856:31:0;:67;;;-1:-1:-1;;;;;18856:67:0;;;;;;;;;;-1:-1:-1;;;;;18856:47:0;;;;;;:67;;;;;:31;;:67;;;;;;;;:47;:67;;;5:2:-1;;;;30:1;27;20:12;5:2;18856:67:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18856:67:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18856:67:0;;18667:264;-1:-1:-1;;;;18667:264:0:o;17248:49::-;17295:2;17248:49;:::o;4915:89::-;4964:32;4983:12;:10;:12::i;:::-;4964:18;:32::i;18939:167::-;19000:17;19037:13;:11;:13::i;:::-;-1:-1:-1;;;;;19037:29:0;;:31;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19037:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19037:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19037:31:0;:61;;;-1:-1:-1;;;;;19037:61:0;;;;;;;;;;-1:-1:-1;;;;;19037:47:0;;;;;;:61;;;;;:31;;:61;;;;;;;;:47;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;19037:61:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19037:61:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19037:61:0;;18939:167;-1:-1:-1;;18939:167:0:o;19114:79::-;19158:27;19174:10;19158:15;:27::i;20934:378::-;2901:30;2918:12;:10;:12::i;2901:30::-;2893:107;;;;-1:-1:-1;;;;;2893:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21120:48;21134:7;21143:13;21158:9;21120:13;:48::i;:::-;21246:8;;;:21;;;-1:-1:-1;;;;;21246:21:0;;;;-1:-1:-1;;;;;21246:8:0;;;;:19;;:21;;;;;;;;;;;;:8;:21;;;5:2:-1;;;;30:1;27;20:12;5:2;21246:21:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21246:21:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21246:21:0;:58;;;-1:-1:-1;;;;;21246:58:0;;-1:-1:-1;;;;;21246:58:0;;;;;;;;;;;;;;21302:1;21246:58;;;;;;;;:30;;;;;:58;;;;;21302:1;;21246:58;;;;;;21302:1;21246:30;:58;;;5:2:-1;;;;30:1;27;20:12;5:2;21246:58:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21246:58:0;;;;20934:378;;;;;:::o;18293:366::-;18352:26;;18441:3;18476:53;18441:3;18476:36;18477:8;17295:2;18476:36;:14;:36;:::i;:::-;:40;:53;:40;:53;:::i;:::-;18455:74;-1:-1:-1;18561:32:0;:8;18455:74;18561:32;:12;:32;:::i;:::-;18540:53;-1:-1:-1;;18293:366:0;;;:::o;866:98::-;946:10;866:98;:::o;5012:137::-;5074:26;:13;5092:7;5074:26;:17;:26;:::i;:::-;5116:25;;-1:-1:-1;;;;;5116:25:0;;;;;;;;5012:137;:::o;5157:145::-;5222:29;:13;5243:7;5222:29;:20;:29;:::i;:::-;5267:27;;-1:-1:-1;;;;;5267:27:0;;;;;;;;5157:145;:::o;2075:203::-;2147:4;-1:-1:-1;;;;;2172:21:0;;2164:68;;;;-1:-1:-1;;;;;2164:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2250:20:0;:11;:20;;;;;;;;;;;;;;;2075:203::o;3542:154::-;3610:32;:16;3634:7;3610:32;:23;:32;:::i;:::-;3658:30;;-1:-1:-1;;;;;3658:30:0;;;;;;;;3542:154;:::o;3388:146::-;3453:29;:16;3474:7;3453:29;:20;:29;:::i;:::-;3498:28;;-1:-1:-1;;;;;3498:28:0;;;;;;;;3388:146;:::o;7602:471::-;7660:7;7905:6;7901:47;;-1:-1:-1;7935:1:0;7928:8;;7901:47;7972:5;;;7976:1;7972;:5;:1;7996:5;;;;;:10;7988:56;;;;-1:-1:-1;;;;;7988:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8064:1;7602:471;-1:-1:-1;;;7602:471:0:o;8541:132::-;8599:7;8626:39;8630:1;8633;8626:39;;;;;;;;;;;;;;;;;:3;:39::i;6686:136::-;6744:7;6771:43;6775:1;6778;6771:43;;;;;;;;;;;;;;;;;:3;:43::i;1539:178::-;1617:18;1621:4;1627:7;1617:3;:18::i;:::-;1616:19;1608:63;;;;;-1:-1:-1;;;;;1608:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1682:20:0;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;1682:27:0;1705:4;1682:27;;;1539:178::o;1797:183::-;1877:18;1881:4;1887:7;1877:3;:18::i;:::-;1869:64;;;;-1:-1:-1;;;;;1869:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1944:20:0;1967:5;1944:20;;;;;;;;;;;:28;;-1:-1:-1;;1944:28:0;;;1797:183::o;9203:345::-;9289:7;9391:12;9384:5;9376:28;;;;-1:-1:-1;;;;;9376:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;9376:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9415:9;9431:1;9427;:5;;;;;;;9203:345;-1:-1:-1;;;;;9203:345:0:o;7159:192::-;7245:7;7281:12;7273:6;;;;7265:29;;;;-1:-1:-1;;;;;7265:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;7265:29:0;-1:-1:-1;;;7317:5:0;;;7159:192::o

Swarm Source

bzzr://d211a8cbaab2127e4dcc4e4e6400c2746851f2d5df2a7c4dd8918f8ee5cb2f1b

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.