More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,277 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Spend | 9771859 | 1622 days ago | IN | 0 ETH | 0.00061206 | ||||
Spend | 9705454 | 1633 days ago | IN | 0 ETH | 0.00058584 | ||||
Spend | 9698856 | 1634 days ago | IN | 0 ETH | 0.00024487 | ||||
Spend | 9697522 | 1634 days ago | IN | 0 ETH | 0.00016453 | ||||
Spend | 9634330 | 1644 days ago | IN | 0 ETH | 0.00070293 | ||||
Spend | 9633607 | 1644 days ago | IN | 0 ETH | 0.00025543 | ||||
Spend | 9633607 | 1644 days ago | IN | 0 ETH | 0.00028354 | ||||
Spend | 9633539 | 1644 days ago | IN | 0 ETH | 0.00024484 | ||||
Spend | 9607551 | 1648 days ago | IN | 0 ETH | 0.00011716 | ||||
Spend | 9595697 | 1650 days ago | IN | 0 ETH | 0.0001435 | ||||
Spend | 9595697 | 1650 days ago | IN | 0 ETH | 0.00024487 | ||||
Spend | 9541843 | 1658 days ago | IN | 0 ETH | 0.00009444 | ||||
Spend | 9541843 | 1658 days ago | IN | 0 ETH | 0.00012242 | ||||
Spend | 9541814 | 1658 days ago | IN | 0 ETH | 0.00009444 | ||||
Spend | 9541814 | 1658 days ago | IN | 0 ETH | 0.00012242 | ||||
Spend | 9518193 | 1662 days ago | IN | 0 ETH | 0.00035146 | ||||
Spend | 9518049 | 1662 days ago | IN | 0 ETH | 0.00024602 | ||||
Spend | 9518039 | 1662 days ago | IN | 0 ETH | 0.00024602 | ||||
Spend | 9517793 | 1662 days ago | IN | 0 ETH | 0.00058578 | ||||
Spend | 9517215 | 1662 days ago | IN | 0 ETH | 0.00028334 | ||||
Spend | 9517215 | 1662 days ago | IN | 0 ETH | 0.00036727 | ||||
Spend | 9516057 | 1662 days ago | IN | 0 ETH | 0.000703 | ||||
Spend | 9510622 | 1663 days ago | IN | 0 ETH | 0.00015915 | ||||
Spend | 9510558 | 1663 days ago | IN | 0 ETH | 0.00021088 | ||||
Spend | 9510470 | 1663 days ago | IN | 0 ETH | 0.00022036 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
8132263 | 1885 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x4BA36FE5...A2A59593E The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
SpendableWallet
Compiler Version
v0.4.25+commit.59dbf8f1
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-12-03 */ pragma solidity ^0.4.24; /// @title Version contract Version { string public semanticVersion; /// @notice Constructor saves a public version of the deployed Contract. /// @param _version Semantic version of the contract. constructor(string _version) internal { semanticVersion = _version; } } /// @title Factory contract Factory is Version { event FactoryAddedContract(address indexed _contract); modifier contractHasntDeployed(address _contract) { require(contracts[_contract] == false); _; } mapping(address => bool) public contracts; constructor(string _version) internal Version(_version) {} function hasBeenDeployed(address _contract) public constant returns (bool) { return contracts[_contract]; } function addContract(address _contract) internal contractHasntDeployed(_contract) returns (bool) { contracts[_contract] = true; emit FactoryAddedContract(_contract); return true; } } /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address public owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor() public { owner = msg.sender; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(msg.sender == owner); _; } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) public onlyOwner { require(newOwner != address(0)); emit OwnershipTransferred(owner, newOwner); owner = newOwner; } } /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ interface ERC20 { function transfer(address to, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); function approve(address spender, uint256 value) external returns (bool); function totalSupply() external view returns (uint256); function balanceOf(address who) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } contract SpendableWallet is Ownable { ERC20 public token; event ClaimedTokens( address indexed _token, address indexed _controller, uint256 _amount ); constructor(address _token, address _owner) public { token = ERC20(_token); owner = _owner; } function spend(address _to, uint256 _amount) public onlyOwner { require( token.transfer(_to, _amount), "Token transfer could not be executed." ); } /// @notice This method can be used by the controller to extract mistakenly /// sent tokens to this contract. /// @param _token The address of the token contract that you want to recover /// set to 0 in case you want to extract ether. function claimTokens(address _token) public onlyOwner { if (_token == 0x0) { owner.transfer(address(this).balance); return; } ERC20 erc20token = ERC20(_token); uint256 balance = erc20token.balanceOf(address(this)); require( erc20token.transfer(owner, balance), "Token transfer could not be executed." ); emit ClaimedTokens(_token, owner, balance); } } contract SpendableWalletFactory is Factory { // index of created contracts address[] public spendableWallets; constructor() public Factory("1.0.3") {} // deploy a new contract function newPaymentAddress(address _token, address _owner) public returns(address newContract) { SpendableWallet spendableWallet = new SpendableWallet(_token, _owner); spendableWallets.push(spendableWallet); addContract(spendableWallet); return spendableWallet; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"spend","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"claimTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_token","type":"address"},{"name":"_owner","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_token","type":"address"},{"indexed":true,"name":"_controller","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"ClaimedTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Deployed Bytecode
0x60806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680638da5cb5b14610072578063af7d6ca3146100c9578063df8de3e714610116578063f2fde38b14610159578063fc0c546a1461019c575b600080fd5b34801561007e57600080fd5b506100876101f3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100d557600080fd5b50610114600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610218565b005b34801561012257600080fd5b50610157600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610411565b005b34801561016557600080fd5b5061019a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610812565b005b3480156101a857600080fd5b506101b1610967565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561027357600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561033857600080fd5b505af115801561034c573d6000803e3d6000fd5b505050506040513d602081101561036257600080fd5b8101908080519060200190929190505050151561040d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f546f6b656e207472616e7366657220636f756c64206e6f74206265206578656381526020017f757465642e00000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5050565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561046f57600080fd5b60008373ffffffffffffffffffffffffffffffffffffffff161415610512576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015801561050c573d6000803e3d6000fd5b5061080d565b8291508173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156105b057600080fd5b505af11580156105c4573d6000803e3d6000fd5b505050506040513d60208110156105da57600080fd5b810190808051906020019092919050505090508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156106b157600080fd5b505af11580156106c5573d6000803e3d6000fd5b505050506040513d60208110156106db57600080fd5b81019080805190602001909291905050501515610786576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f546f6b656e207472616e7366657220636f756c64206e6f74206265206578656381526020017f757465642e00000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167ff931edb47c50b4b4104c187b5814a9aef5f709e17e2ecf9617e860cacade929c836040518082815260200191505060405180910390a35b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561086d57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156108a957600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16815600a165627a7a723058203c30641a62b4c884e947f54af6618388be804b9dda8295be3af17842122e3f4e0029
Swarm Source
bzzr://3c30641a62b4c884e947f54af6618388be804b9dda8295be3af17842122e3f4e
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.