账户
0x7c...3713
0x7c...3713

0x7c...3713

$500
此合同的源代码已经过验证!
合同元数据
编译器
0.5.11+commit.c082d0b4
语言
Solidity
合同源代码
文件 1 的 1:HotWallet.sol
pragma solidity 0.5.11;

contract IToken {
    function balanceOf(address) public view returns (uint256);
    function transfer(address to, uint value) public;
}

contract Manageable {
    mapping(address => bool) public admins;
    constructor() public {
        admins[msg.sender] = true;
    }

    modifier onlyAdmins() {
        require(admins[msg.sender]);
        _;
    }

    function modifyAdmins(address[] memory newAdmins, address[] memory removedAdmins) public onlyAdmins {
        for(uint256 index; index < newAdmins.length; index++) {
            admins[newAdmins[index]] = true;
        }
        for(uint256 index; index < removedAdmins.length; index++) {
            admins[removedAdmins[index]] = false;
        }
    }
}

contract HotWallet is Manageable {
    mapping(uint256 => bool) public isPaid;
    event Transfer(uint256 transactionRequestId, address coinAddress, uint256 value, address payable to);
    
    function transfer(uint256 transactionRequestId, address coinAddress, uint256 value, address payable to) public onlyAdmins {
        require(!isPaid[transactionRequestId]);
        isPaid[transactionRequestId] = true;
        emit Transfer(transactionRequestId, coinAddress, value, to);
        if (coinAddress == address(0)) {
            return to.transfer(value);
        }
        IToken(coinAddress).transfer(to, value);
    }
    
    function getBalances(address coinAddress) public view returns (uint256 balance)  {
        if (coinAddress == address(0)) {
            return address(this).balance;
        }
        return IToken(coinAddress).balanceOf(address(this));
    }

    function () external payable {}
}
设置
{
  "compilationTarget": {
    "browser/HotWallet.sol": "HotWallet"
  },
  "evmVersion": "petersburg",
  "libraries": {},
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "remappings": []
}
ABI
[{"constant":false,"inputs":[{"internalType":"address[]","name":"newAdmins","type":"address[]"},{"internalType":"address[]","name":"removedAdmins","type":"address[]"}],"name":"modifyAdmins","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"admins","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"transactionRequestId","type":"uint256"},{"internalType":"address","name":"coinAddress","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"address payable","name":"to","type":"address"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"coinAddress","type":"address"}],"name":"getBalances","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"isPaid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"transactionRequestId","type":"uint256"},{"indexed":false,"internalType":"address","name":"coinAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"address payable","name":"to","type":"address"}],"name":"Transfer","type":"event"}]