Contract 0x0dAabcE0a1261B582e0d949EbCA9DFf4c22C88ef

Contract Overview

Balance:
0 Ether
Txn Hash
Method
Block
From
To
Value
0xc7a965425fac7a197154d5cd3903b965fc91f41eac9b594574aedc687b1a80c1Claim Ownership56668232019-05-25 6:00:581174 days 11 hrs ago0x18af2fa2ba3fbf6cf9ca951ca5c80acfc089077f IN  0x0daabce0a1261b582e0d949ebca9dff4c22c88ef0 Ether0.‍000083553
0x9493445bdfad2f202b5724932f10dee5cf6982ca85aa8f17f8c035be8bbd389eClaim Ownership41198122018-09-26 18:39:181414 days 22 hrs ago0xd0b10449753930dd130e9275c03cfe4de1cfc7f6 IN  0x0daabce0a1261b582e0d949ebca9dff4c22c88ef0 Ether0.‍000060581
0x03fffb36296661bce822e58b64a86761e016d4fd7391e7cc46b861ed29e7d919Claim Ownership41197672018-09-26 18:27:271414 days 22 hrs ago0xd0b10449753930dd130e9275c03cfe4de1cfc7f6 IN  0x0daabce0a1261b582e0d949ebca9dff4c22c88ef0 Ether0.‍00005371
0x24120e0d100a11300c905991b99213233445cd871b5d280df435e45824a3ed48Invalidate Signa...35532132018-07-02 6:18:161501 days 11 hrs ago0x58c4d1078b6c90f2549c56ac2ac8d464fd78bed3 IN  0x0daabce0a1261b582e0d949ebca9dff4c22c88ef0 Ether0.‍000047821
0x7375afb2759f3a746798b88d2c36e41e5ee880ee552df885babd0a2936b202fa0x6080604035532112018-07-02 6:17:511501 days 11 hrs ago0x58c4d1078b6c90f2549c56ac2ac8d464fd78bed3 IN  Create: Impossible0 Ether0.‍000531361
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Impossible

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-07-02
*/

pragma solidity ^0.4.24;

contract Impossible {
    address public owner = msg.sender;
    
    mapping(bytes => bool) invalidatedSignatures;
    
    event EmergencyOwnershipTransfer(address oldOwner, address newOwner);
    
    function concat(uint8 v, bytes32 r, bytes32 s) public pure returns (bytes) {
        bytes memory result = new bytes(96);
        assembly {
            mstore(add(result, 0x20), v)
            mstore(add(result, 0x40), r)
            mstore(add(result, 0x60), s)
        }
        return result;
    }
    
    function validSignature(uint8 v, bytes32 r, bytes32 s) public constant returns (bool) {
        return !invalidatedSignatures[concat(v, r, s)];
    }
    
    function invalidateSignature(uint8 v, bytes32 r, bytes32 s) public {
        invalidatedSignatures[concat(v, r, s)] = true;
    }
    
    function claimOwnership(uint8 v, bytes32 r, bytes32 s) public returns (bool) {
        require(validSignature(v, r, s));
        invalidateSignature(v, r, s);
        
        if (ecrecover(keccak256("emergency ownership transfer"), v, r, s) == owner) {
            address oldOwner = owner;
            owner = msg.sender;
            
            emit EmergencyOwnershipTransfer(oldOwner, msg.sender);
            return true;
        }
        
        return false;
    }
}

Contract ABI

[{"constant":true,"inputs":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"validSignature","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"claimOwnership","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"invalidateSignature","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"concat","outputs":[{"name":"","type":"bytes"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldOwner","type":"address"},{"indexed":false,"name":"newOwner","type":"address"}],"name":"EmergencyOwnershipTransfer","type":"event"}]

6080604052336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561005057600080fd5b506106aa806100606000396000f30060806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063363f77461461007257806369061355146100d65780637d6f174e1461013a578063862fd38c146101865780638da5cb5b1461024b575b600080fd5b34801561007e57600080fd5b506100bc600480360381019080803560ff169060200190929190803560001916906020019092919080356000191690602001909291905050506102a2565b604051808215151515815260200191505060405180910390f35b3480156100e257600080fd5b50610120600480360381019080803560ff16906020019092919080356000191690602001909291908035600019169060200190929190505050610331565b604051808215151515815260200191505060405180910390f35b34801561014657600080fd5b50610184600480360381019080803560ff16906020019092919080356000191690602001909291908035600019169060200190929190505050610570565b005b34801561019257600080fd5b506101d0600480360381019080803560ff16906020019092919080356000191690602001909291908035600019169060200190929190505050610602565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102105780820151818401526020810190506101f5565b50505050905090810190601f16801561023d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025757600080fd5b50610260610659565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600060016102b1858585610602565b6040518082805190602001908083835b6020831015156102e657805182526020820191506020810190506020830392506102c1565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009054906101000a900460ff161590509392505050565b60008061033f8585856102a2565b151561034a57600080fd5b610355858585610570565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600160405180807f656d657267656e6379206f776e657273686970207472616e7366657200000000815250601c0190506040518091039020878787604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610439573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff161415610563576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507ff211cc9fb499a63daacfdd5c8ddfc601b3e0654e9b187406fdb2412495fc07078133604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a160019150610568565b600091505b509392505050565b60018061057e858585610602565b6040518082805190602001908083835b6020831015156105b3578051825260208201915060208101905060208303925061058e565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060006101000a81548160ff021916908315150217905550505050565b60608060606040519080825280601f01601f1916602001820160405280156106395781602001602082028038833980820191505090505b509050846020820152836040820152826060820152809150509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16815600a165627a7a723058203b5e6e6584a7a4e7acfa9bc51d61373c1802db7370c0fa89a92d080663c3b6050029

Swarm Source

bzzr://3b5e6e6584a7a4e7acfa9bc51d61373c1802db7370c0fa89a92d080663c3b605
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading

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.