账户
0x1b...893b
0x1B...893B

0x1B...893B

$500
此合同的源代码已经过验证!
合同元数据
编译器
0.5.16+commit.9c3226ce
语言
Solidity
合同源代码
文件 1 的 1:PiggericksShop.sol
pragma solidity ^0.5.8;


// Adding only the ERC-20 function we need
interface DaiToken {
    function transfer(address dst, uint wad) external returns (bool);
    function approve(address user, uint wad) external returns (bool);
    function transferFrom(address src, address dst, uint wad) external returns(bool);
    function balanceOf(address guy) external view returns (uint);
}


contract PiggericksShop {

    // Define variables
    DaiToken private daitoken;
    address private owner; // owner of the contract
    address payable private aragon;
    bool private isActive;

    // Define events
    // from, amt, unit, code, pkg
    event PurchaseMade(address from, uint amt, bytes32 unit, bytes32 code, bytes32 pkg);
    event LogTransfer(address sender, address to, uint amount);

    // sets msg.sender as owner
    constructor(bool state, address payable a, address o) public {
        owner = o;
        aragon = a;
        isActive = state;
        daitoken = DaiToken(0x6B175474E89094C44Da98b954EedeAC495271d0F);
    }

    // checks if msg.sender is owner of the contract
    modifier isAdmin {
        require(msg.sender == owner, "Only the contract owner can perform this operation");
        _;
    }

    // checks if this contract is open for transactions
    modifier isOpen {
        require(isActive, "This contract is closed");
        _;
    }

    function toggleContract(bool state) external isAdmin returns (bool) {
        isActive = state;
        return isActive;
    }

    function updateAragon(address payable a) external isAdmin returns (address) {
        aragon = a;
        return aragon;
    }

    function updateOwner(address o) external isAdmin returns (address) {
        owner = o;
        return owner;
    }

    function moveFund(uint percent) external isAdmin returns (bool) {
        if (daitoken.balanceOf(address(this)) > 0) {
            daitoken.transferFrom(address(this), aragon, ((percent*daitoken.balanceOf(address(this)))/100));
        }
        if (address(this).balance > 0) {
            aragon.transfer(((percent*address(this).balance))/100);
        }
        emit LogTransfer(address(this), aragon, percent);
        return true;
    }

    /*
    @param p = package name
    @param c = promo code
    @param a = amount to transfer
    @emit PurchaseMade
    @return boolean
    */
    function receiveDai(bytes32 p, bytes32 c, uint a) external payable isOpen returns (bool) {
        daitoken.transferFrom(msg.sender, address(this), a);
        emit PurchaseMade(msg.sender, a, "DAI", c, p);
        return true;
    }

    /*
    @param p = package name
    @param c = promo code
    @emit PurchaseMade
    @return boolean
    */
    function receive(bytes32 p, bytes32 c) external payable isOpen returns (bool) {
        emit PurchaseMade(msg.sender, msg.value, "ETH", c, p);
        return true;
    }

    function refund(uint amt, address payable a) external isAdmin returns (bool) {
        require(0 < amt && amt < address(this).balance, "Incorrect amount");
        a.transfer(amt); // contract transfers ether to given address
    }

    function viewOwner() external view returns (address) {
        return owner;
    }

    function viewAragon() external view returns (address) {
        return aragon;
    }

    function viewIsOpen() external view returns (bool) {
        return isActive;
    }

}
设置
{
  "compilationTarget": {
    "PiggericksShop.sol": "PiggericksShop"
  },
  "evmVersion": "istanbul",
  "libraries": {},
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "remappings": []
}
ABI
[{"inputs":[{"internalType":"bool","name":"state","type":"bool"},{"internalType":"address payable","name":"a","type":"address"},{"internalType":"address","name":"o","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LogTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amt","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"unit","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"code","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"pkg","type":"bytes32"}],"name":"PurchaseMade","type":"event"},{"constant":false,"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"moveFund","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"p","type":"bytes32"},{"internalType":"bytes32","name":"c","type":"bytes32"}],"name":"receive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"p","type":"bytes32"},{"internalType":"bytes32","name":"c","type":"bytes32"},{"internalType":"uint256","name":"a","type":"uint256"}],"name":"receiveDai","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amt","type":"uint256"},{"internalType":"address payable","name":"a","type":"address"}],"name":"refund","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"toggleContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"a","type":"address"}],"name":"updateAragon","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"o","type":"address"}],"name":"updateOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"viewAragon","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"viewIsOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"viewOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}]