Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 197 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer* | 9870740 | 1730 days ago | IN | 0 ETH | 0.000253 | ||||
Transfer* | 9839985 | 1735 days ago | IN | 0 ETH | 0.00003795 | ||||
Transfer* | 9839973 | 1735 days ago | IN | 0 ETH | 0.00003478 | ||||
Transfer | 9476155 | 1791 days ago | IN | 0.00000026 ETH | 0.000168 | ||||
Transfer* | 9390576 | 1804 days ago | IN | 0 ETH | 0.0000759 | ||||
Transfer | 9339601 | 1812 days ago | IN | 0 ETH | 0.00018508 | ||||
Transfer* | 9335271 | 1813 days ago | IN | 0 ETH | 0.0000253 | ||||
Transfer* | 9083660 | 1856 days ago | IN | 0 ETH | 0.0001265 | ||||
Transfer* | 9083432 | 1856 days ago | IN | 0 ETH | 0.0001265 | ||||
Transfer* | 9082854 | 1856 days ago | IN | 0 ETH | 0.000253 | ||||
Transfer* | 9038430 | 1864 days ago | IN | 0 ETH | 0.00043567 | ||||
Transfer* | 8951586 | 1879 days ago | IN | 0 ETH | 0.00036306 | ||||
Transfer | 8694685 | 1920 days ago | IN | 0 ETH | 0.000042 | ||||
Transfer* | 8689712 | 1921 days ago | IN | 0 ETH | 0.0000242 | ||||
Transfer* | 8689650 | 1921 days ago | IN | 0 ETH | 0.0000242 | ||||
Transfer* | 8624117 | 1931 days ago | IN | 0 ETH | 0.00029044 | ||||
Transfer* | 8530627 | 1946 days ago | IN | 0 ETH | 0.00026624 | ||||
Transfer* | 8462203 | 1957 days ago | IN | 0 ETH | 0.0000242 | ||||
Transfer | 8344094 | 1975 days ago | IN | 0.00000228 ETH | 0.000189 | ||||
Transfer | 8344040 | 1975 days ago | IN | 0.00000228 ETH | 0.00021 | ||||
Transfer* | 8292793 | 1983 days ago | IN | 0 ETH | 0.00050828 | ||||
Transfer* | 8281095 | 1985 days ago | IN | 0 ETH | 0.0000484 | ||||
Transfer* | 8193906 | 1998 days ago | IN | 0.00000263 ETH | 0.00009651 | ||||
Transfer | 8193782 | 1998 days ago | IN | 0.00000263 ETH | 0.00010621 | ||||
Transfer* | 8192809 | 1998 days ago | IN | 0 ETH | 0.0000242 |
Loading...
Loading
Contract Name:
SignatureChallenge
Compiler Version
v0.4.25+commit.59dbf8f1
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-01-27 */ /** * SignatureChallenge.sol * The links below will provide more information about the MtPelerin's Bridge protocol: * https://www.mtpelerin.com * https://github.com/MtPelerin/MtPelerin-protocol * The unflattened code is available through this github tag: * https://github.com/MtPelerin/MtPelerin-protocol/tree/etherscan-verify-batch-3 * @notice Copyright © 2016 - 2019 Mt Pelerin Group SA - All Rights Reserved * @notice All matters regarding the intellectual property of this code * @notice or software are subject to Swiss Law without reference to its * @notice conflicts of law rules. * @notice License for each contract is available in the respective file * @notice or in the LICENSE.md file. * @notice https://github.com/MtPelerin/ * @notice Code by OpenZeppelin is copyrighted and licensed on their repository: * @notice https://github.com/OpenZeppelin/openzeppelin-solidity */ pragma solidity ^0.4.24; // File: contracts/zeppelin/ownership/Ownable.sol /** * @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 OwnershipRenounced(address indexed previousOwner); 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 relinquish control of the contract. */ function renounceOwnership() public onlyOwner { emit OwnershipRenounced(owner); owner = address(0); } /** * @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 { _transferOwnership(_newOwner); } /** * @dev Transfers control of the contract to a newOwner. * @param _newOwner The address to transfer ownership to. */ function _transferOwnership(address _newOwner) internal { require(_newOwner != address(0)); emit OwnershipTransferred(owner, _newOwner); owner = _newOwner; } } // File: contracts/SignatureChallenge.sol /** * @title SignatureChallenge * @dev SignatureChallenge accept anyone to send a transaction with a challenge in it. * Any Oracle which creates a challenge, may use it to assess that someone does really * own a given address. * * @notice Copyright © 2016 - 2019 Mt Pelerin Group SA - All Rights Reserved * @notice This content cannot be used, copied or reproduced in part or in whole * @notice without the express and written permission of Mt Pelerin Group SA. * @notice Written by *Mt Pelerin Group SA*, <[email protected]> * @notice All matters regarding the intellectual property of this code or software * @notice are subjects to Swiss Law without reference to its conflicts of law rules. * * Error messages * SC01: No ETH must be provided for the challenge * SC02: Target must not be null * SC03: Execution call must be successful * SC04: Challenges are not active * SC05: Challenge must not be longer than challengeBytes * * @author Cyril Lapinte - <[email protected]> */ contract SignatureChallenge is Ownable { bool public active = true; uint8 public challengeBytes = 2; function () external payable { require(msg.value == 0, "SC01"); acceptCode(msg.data); } /** * @dev Update Challenge */ function updateChallenge( bool _active, uint8 _challengeBytes, bytes _testCode) public onlyOwner { if(!signChallengeWhenValid()) { active = _active; challengeBytes = _challengeBytes; emit ChallengeUpdated(_active, _challengeBytes); if (active) { acceptCode(_testCode); } } } /** * @dev execute */ function execute(address _target, bytes _data) public payable { if (!signChallengeWhenValid()) { executeOwnerRestricted(_target, _data); } } /** * @dev Makes sure to accept the code even it matches a valid function signature. */ function signChallengeWhenValid() private returns (bool) { // Prevent any loophole against the default function // SignatureChallenge may be set inactive to bypass this feature if (active && msg.data.length == challengeBytes) { require(msg.value == 0, "SC01"); acceptCode(msg.data); return true; } return false; } /** * @dev execute restricted to owner */ function executeOwnerRestricted(address _target, bytes _data) private onlyOwner { require(_target != address(0), "SC02"); // solium-disable-next-line security/no-call-value require(_target.call.value(msg.value)(_data), "SC03"); } /** * @dev accept code */ function acceptCode(bytes _code) private { require(active, "SC04"); require(_code.length == challengeBytes, "SC05"); emit ChallengeSigned(msg.sender, _code); } event ChallengeUpdated(bool active, uint8 length); event ChallengeSigned(address indexed signer, bytes code); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"active","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_target","type":"address"},{"name":"_data","type":"bytes"}],"name":"execute","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_active","type":"bool"},{"name":"_challengeBytes","type":"uint8"},{"name":"_testCode","type":"bytes"}],"name":"updateChallenge","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"challengeBytes","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"active","type":"bool"},{"indexed":false,"name":"length","type":"uint8"}],"name":"ChallengeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"signer","type":"address"},{"indexed":false,"name":"code","type":"bytes"}],"name":"ChallengeSigned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
608060405260008054337401000000000000000000000000000000000000000060a060020a60ff02199092169190911760a860020a60ff021916750200000000000000000000000000000000000000000017600160a060020a0319161781556108ac90819061006e90396000f3006080604052600436106100825763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166302fb0c5e81146101165780631cff79cd1461013f578063715018a6146101995780637944662a146101ae5780638da5cb5b14610213578063e1fadc4b14610244578063f2fde38b1461026f575b34156100da576040805160e560020a62461bcd028152602060048083019190915260248201527f5343303100000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6101146000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750610290945050505050565b005b34801561012257600080fd5b5061012b61040a565b604080519115158252519081900360200190f35b60408051602060046024803582810135601f8101859004850286018501909652858552610114958335600160a060020a031695369560449491939091019190819084018382808284375094975061041a9650505050505050565b3480156101a557600080fd5b50610114610436565b3480156101ba57600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526101149482351515946024803560ff16953695946064949201919081908401838280828437509497506104a29650505050505050565b34801561021f57600080fd5b50610228610589565b60408051600160a060020a039092168252519081900360200190f35b34801561025057600080fd5b50610259610598565b6040805160ff9092168252519081900360200190f35b34801561027b57600080fd5b50610114600160a060020a03600435166105ba565b60005460a060020a900460ff1615156102f5576040805160e560020a62461bcd028152602060048083019190915260248201527f5343303400000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000548151750100000000000000000000000000000000000000000090910460ff161461036e576040805160e560020a62461bcd028152602060048083019190915260248201527f5343303500000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b604080516020808252835181830152835133937f428f379c059659aeed80fe8f1aaa0e12d1bc519c8b1233a4ab6853a4696b49409386939092839283019185019080838360005b838110156103cd5781810151838201526020016103b5565b50505050905090810190601f1680156103fa5780820380516001836020036101000a031916815260200191505b509250505060405180910390a250565b60005460a060020a900460ff1681565b6104226105dd565b15156104325761043282826106ba565b5050565b600054600160a060020a0316331461044d57600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031633146104b957600080fd5b6104c16105dd565b1515610584576000805460ff84167501000000000000000000000000000000000000000000810275ff0000000000000000000000000000000000000000001987151560a060020a810274ff00000000000000000000000000000000000000001990951694909417161790925560408051918252602082019290925281517f4dde0099e8b905911a150bc10734deab87cd89fc13729cb13a486b48e4bdf147929181900390910190a160005460a060020a900460ff16156105845761058481610290565b505050565b600054600160a060020a031681565b6000547501000000000000000000000000000000000000000000900460ff1681565b600054600160a060020a031633146105d157600080fd5b6105da81610803565b50565b6000805460a060020a900460ff16801561061457506000547501000000000000000000000000000000000000000000900460ff1636145b156106b3573415610671576040805160e560020a62461bcd028152602060048083019190915260248201527f5343303100000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6106ab6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750610290945050505050565b5060016106b7565b5060005b90565b600054600160a060020a031633146106d157600080fd5b600160a060020a0382161515610733576040805160e560020a62461bcd028152602060048083019190915260248201527f5343303200000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b81600160a060020a0316348260405180828051906020019080838360005b83811015610769578181015183820152602001610751565b50505050905090810190601f1680156107965780820380516001836020036101000a031916815260200191505b5091505060006040518083038185875af1925050501515610432576040805160e560020a62461bcd028152602060048083019190915260248201527f5343303300000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a038116151561081857600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a723058208b3fcc3f9cfe74a220cf6d8b0a4a39d1c6dda796ab4cefae741e7a4db177f0f10029
Deployed Bytecode
0x6080604052600436106100825763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166302fb0c5e81146101165780631cff79cd1461013f578063715018a6146101995780637944662a146101ae5780638da5cb5b14610213578063e1fadc4b14610244578063f2fde38b1461026f575b34156100da576040805160e560020a62461bcd028152602060048083019190915260248201527f5343303100000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6101146000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750610290945050505050565b005b34801561012257600080fd5b5061012b61040a565b604080519115158252519081900360200190f35b60408051602060046024803582810135601f8101859004850286018501909652858552610114958335600160a060020a031695369560449491939091019190819084018382808284375094975061041a9650505050505050565b3480156101a557600080fd5b50610114610436565b3480156101ba57600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526101149482351515946024803560ff16953695946064949201919081908401838280828437509497506104a29650505050505050565b34801561021f57600080fd5b50610228610589565b60408051600160a060020a039092168252519081900360200190f35b34801561025057600080fd5b50610259610598565b6040805160ff9092168252519081900360200190f35b34801561027b57600080fd5b50610114600160a060020a03600435166105ba565b60005460a060020a900460ff1615156102f5576040805160e560020a62461bcd028152602060048083019190915260248201527f5343303400000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000548151750100000000000000000000000000000000000000000090910460ff161461036e576040805160e560020a62461bcd028152602060048083019190915260248201527f5343303500000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b604080516020808252835181830152835133937f428f379c059659aeed80fe8f1aaa0e12d1bc519c8b1233a4ab6853a4696b49409386939092839283019185019080838360005b838110156103cd5781810151838201526020016103b5565b50505050905090810190601f1680156103fa5780820380516001836020036101000a031916815260200191505b509250505060405180910390a250565b60005460a060020a900460ff1681565b6104226105dd565b15156104325761043282826106ba565b5050565b600054600160a060020a0316331461044d57600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600054600160a060020a031633146104b957600080fd5b6104c16105dd565b1515610584576000805460ff84167501000000000000000000000000000000000000000000810275ff0000000000000000000000000000000000000000001987151560a060020a810274ff00000000000000000000000000000000000000001990951694909417161790925560408051918252602082019290925281517f4dde0099e8b905911a150bc10734deab87cd89fc13729cb13a486b48e4bdf147929181900390910190a160005460a060020a900460ff16156105845761058481610290565b505050565b600054600160a060020a031681565b6000547501000000000000000000000000000000000000000000900460ff1681565b600054600160a060020a031633146105d157600080fd5b6105da81610803565b50565b6000805460a060020a900460ff16801561061457506000547501000000000000000000000000000000000000000000900460ff1636145b156106b3573415610671576040805160e560020a62461bcd028152602060048083019190915260248201527f5343303100000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6106ab6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843750610290945050505050565b5060016106b7565b5060005b90565b600054600160a060020a031633146106d157600080fd5b600160a060020a0382161515610733576040805160e560020a62461bcd028152602060048083019190915260248201527f5343303200000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b81600160a060020a0316348260405180828051906020019080838360005b83811015610769578181015183820152602001610751565b50505050905090810190601f1680156107965780820380516001836020036101000a031916815260200191505b5091505060006040518083038185875af1925050501515610432576040805160e560020a62461bcd028152602060048083019190915260248201527f5343303300000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a038116151561081857600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a723058208b3fcc3f9cfe74a220cf6d8b0a4a39d1c6dda796ab4cefae741e7a4db177f0f10029
Swarm Source
bzzr://8b3fcc3f9cfe74a220cf6d8b0a4a39d1c6dda796ab4cefae741e7a4db177f0f1
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.