Contract 0x846942953c3b2A898F10DF1e32763A823bf6b27f

 

TxHash Block Age From To Value [TxFee]
0x4c239d3e3fd3cc5e103e8f7c92a7e345d3efe374d9929324daca96b19f0f0051708273033 days 21 hrs ago0xdadfa63d05d01f536930f1150238283fe917d28c IN  0x846942953c3b2a898f10df1e32763a823bf6b27f0 Ether0.00380939
0xe73c33748d59b159dd4559b8a58bbc17ccef0ff71b569d852d2fbca7df1645f6708271233 days 21 hrs ago0xd269168f6095dd119989d813f37dcfdbc119e820 IN  0x846942953c3b2a898f10df1e32763a823bf6b27f0.02 Ether0.003160872
0xf6b4ceec4c7e44399671c0bc142b7c4e7d069c50d1eb925ee868b8ac3c97fe07694261558 days 9 hrs ago0xdadfa63d05d01f536930f1150238283fe917d28c IN  0x846942953c3b2a898f10df1e32763a823bf6b27f0 Ether0.00380619
0x9fc84598dc0fe583b556fee7533131b90214891083a360df9a45f82612ed43ab694122758 days 15 hrs ago0xd147b0a36733dc15980a4b17cc04e2d0c214a34b IN  0x846942953c3b2a898f10df1e32763a823bf6b27f0.02 Ether0.028983303
0x3af0fbf337c8362e31f62c10e6040b2c04462ed8c3b05aa001bf810fa0814d7c691130063 days 17 hrs ago0xdadfa63d05d01f536930f1150238283fe917d28c IN  0x846942953c3b2a898f10df1e32763a823bf6b27f0 Ether0.003295
0x3e4f821089741792cb2f610f55c9e9e585ed1c74982bb77b6e81a77f3c1afc57691127563 days 17 hrs ago0xdadfa63d05d01f536930f1150238283fe917d28c IN  0x846942953c3b2a898f10df1e32763a823bf6b27f0 Ether0.0031078
0x376b4573e9c42b49b136d2c077f9a1a3482dc48511705be79434457f62fed80a673920192 days 4 hrs ago0xdadfa63d05d01f536930f1150238283fe917d28c IN  0x846942953c3b2a898f10df1e32763a823bf6b27f0 Ether0.00381963
0x41e1581edeb787f6a2d0292c3015207a1aa837357ffec124764bc6fe742c44f2673918892 days 4 hrs ago0x4f7f0fb13e6360240b74f6e250976ff6b41371e0 IN  0x846942953c3b2a898f10df1e32763a823bf6b27f0.02 Ether0.006098164
0xfd48860280203cf1349bb83880e8d375e3b62392e70feb0f72abb5bfb18175ee673323493 days 3 hrs ago0xdadfa63d05d01f536930f1150238283fe917d28c IN  0x846942953c3b2a898f10df1e32763a823bf6b27f0 Ether0.00380811
0xff63c0c1d26bc1a79e0514609eb5bea7f3f8dbe87d818c1b956576fc30ce93fc673322693 days 3 hrs ago0x34965cf413b23717c3b7cc86ab7775da6bdd767c IN  0x846942953c3b2a898f10df1e32763a823bf6b27f0.02 Ether0.020811042
0x2b8b933198e6df622e20fb4f5bbb35b24b5b7c3b4278fc5e497a289337aa18f06658621105 days 8 hrs ago0xc5a36740f2912e6eafc7e5a8eed9edf40aef4f86 IN  0x846942953c3b2a898f10df1e32763a823bf6b27f0.02 Ether0.0008
0x259bace70e69978273e12966f797283f60f5810259bfe4023f50e7c3f349db9f6571606119 days 15 hrs ago0xdadfa63d05d01f536930f1150238283fe917d28c IN  0x846942953c3b2a898f10df1e32763a823bf6b27f0 Ether0.00380939
0x6fcc7156a297984002ac3cb4de75d5881dd6e528d5cbeb6736bf6d97b4711aa36571596119 days 15 hrs ago0x3b21c5c6474ec9c37c2ff712616709c6a7f6736d IN  0x846942953c3b2a898f10df1e32763a823bf6b27f0.02 Ether0.019715724
0x22453926ec2ebdb80738b531d783305c24138ba62dcf53f1a576d1f26c9006836454450138 days 16 hrs ago0xdadfa63d05d01f536930f1150238283fe917d28c IN  0x846942953c3b2a898f10df1e32763a823bf6b27f0 Ether0.00006582
0x6a3a3d0210e30986b3ab1cab5d2018c9adf521708ab82c0771ca1cc5139dd2db6447660139 days 18 hrs ago0xdadfa63d05d01f536930f1150238283fe917d28c IN  0x846942953c3b2a898f10df1e32763a823bf6b27f0 Ether0.00032742
0xc33c90fbe3f57056d92f9c7718677b487a0ce309a2c98e671b1167163143fcaf6447658139 days 18 hrs ago0xdadfa63d05d01f536930f1150238283fe917d28c IN  0x846942953c3b2a898f10df1e32763a823bf6b27f0 Ether0.00380555
0xa065d3d0234ef6360eda97fd12162ed8f6f86783b99331ad5a8ce65e86fa772b6447655139 days 18 hrs ago0x3370b966dc1b93c52a124192690f837c3f66a0c1 IN  0x846942953c3b2a898f10df1e32763a823bf6b27f0.02 Ether0.02001764
0x5df53b5ebf432e7584a9749f709ac7a45c4ce477b49b32e386a140f56455a1ed6447598139 days 19 hrs ago0x3370b966dc1b93c52a124192690f837c3f66a0c1 IN  0x846942953c3b2a898f10df1e32763a823bf6b27f0.02 Ether0.00143
0x4554efb5e64188249113f6c3d9d886016fce4aa6c95d6f39298d93e680930bc66407674146 days 8 hrs ago0xdadfa63d05d01f536930f1150238283fe917d28c IN  0x846942953c3b2a898f10df1e32763a823bf6b27f0 Ether0.00380747
0x5d44d42b951954f96cb16b64de67456cb5afffdeb0b6a4e0f4865a75858f9a6e6404259146 days 21 hrs ago0x71272660e848bcf9e7e1d39d4b1dd6f67b18f2c0 IN  0x846942953c3b2a898f10df1e32763a823bf6b27f0.02 Ether0.020811042
0x14247a419ae01fc97466d525345f200d24ef5ca4dcae6662c853c213a0d17efa6400921147 days 10 hrs ago0xdadfa63d05d01f536930f1150238283fe917d28c IN  0x846942953c3b2a898f10df1e32763a823bf6b27f0 Ether0.00380875
0x5ab14dea8ebfe195315aa7f2e19bdd297c678a2757bb16d4ae4170a68e40cf336400917147 days 10 hrs ago0xd851d045d8aee53ef24890afba3d701163acbc8b IN  0x846942953c3b2a898f10df1e32763a823bf6b27f0.02 Ether0.020811042
0x69fd8060a5b754af0dd3af5eb13c954e42c21300e2965db40581d37c69a9b0c56398808147 days 19 hrs ago0x5f5028d68b210de560264b6a2cc1b08c42288845 IN  0x846942953c3b2a898f10df1e32763a823bf6b27f0.02 Ether0.000815815
0x9be2c29ec661176cdf68aefb4f478d4094048df3db5468d3557e9c8bad15faeb6398806147 days 19 hrs ago0x5f5028d68b210de560264b6a2cc1b08c42288845 IN  0x846942953c3b2a898f10df1e32763a823bf6b27f0.02 Ether0.007667226
0x9774a4eef49870a0ae6f9c79235cc58a3bb1764025da3725aad5692ac2e89fe06374679151 days 18 hrs ago0xdadfa63d05d01f536930f1150238283fe917d28c IN  0x846942953c3b2a898f10df1e32763a823bf6b27f0 Ether0.00381003
[ Download CSV Export 

Latest 2 Internal Transactions Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0x3af0fbf337c8362e31f62c10e6040b2c04462ed8c3b05aa001bf810fa0814d7c691130063 days 17 hrs ago0x846942953c3b2a898f10df1e32763a823bf6b27f0xe5374b3840f0782608f86e270ae389b8ee2024c40.06 Ether
0x22453926ec2ebdb80738b531d783305c24138ba62dcf53f1a576d1f26c9006836454450138 days 16 hrs ago0x846942953c3b2a898f10df1e32763a823bf6b27f0xdadfa63d05d01f536930f1150238283fe917d28c0.2 Ether
[ Download CSV Export 
Warning: The compiled contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) Solidity Compiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: CryptonomicaVerification
Compiler Version: v0.4.19+commit.c4cbbb05
Optimization Enabled: Yes
Runs (Optimizer):  200


Contract Source Code
pragma solidity ^0.4.19;

/*
developed by cryptonomica.net, 2018
last version: 2018-02-18
github: https://github.com/Cryptonomica/
*/

contract CryptonomicaVerification {

    /* ---------------------- Verification Data */

    // Ethereum address is connected to OpenPGP public key data from Cryptonomica.net
    // Ethereum address can be connected to one OpenPGP key only, and one time only
    // If OpenPGP key expires, user have to use another Ethereum address for new OpenPGP public key
    // But user can verify multiple Ethereum accounts with the same OpenPGP key

    // ---- mappings to store verification data, to make it accessible for other smart contracts
    // we store sting data as bytes32 (http://solidity.readthedocs.io/en/develop/types.html#fixed-size-byte-arrays)
    // !!! -> up to 32 ASCII letters,
    // see: https://ethereum.stackexchange.com/questions/6729/how-many-letters-can-bytes32-keep

    // OpenPGP Message Format https://tools.ietf.org/html/rfc4880#section-12.2 : "A V4 fingerprint is the 160-bit SHA-1 hash ..."
    // thus fingerprint is 20 bytes, in hexadecimal 40 symbols string representation
    // fingerprints are stored as upper case strings like:
    // 57A5FEE5A34D563B4B85ADF3CE369FD9E77173E5
    // or as bytes20: "0x57A5FEE5A34D563B4B85ADF3CE369FD9E77173E5" from web3.js or Bytes20 from web3j
    // see: https://crypto.stackexchange.com/questions/32087/how-to-generate-fingerprint-for-pgp-public-key
    mapping(address => bytes20) public fingerprint; // ..............................................................0

    // we use unverifiedFingerprintAsString to store fingerprint provided by user
    mapping(address => string) public unverifiedFingerprint; // (!) Gas requirement: infinite

    mapping(address => uint) public keyCertificateValidUntil; // unix time ..........................................1
    mapping(address => bytes32) public firstName; // ................................................................2
    mapping(address => bytes32) public lastName; // .................................................................3
    mapping(address => uint) public birthDate; // unix time .........................................................4
    // Nationality - from user passport or id document:
    // 2-letter country codes defined in ISO 3166
    // like returned by Locale.getISOCountries() in Java (upper case)
    // see: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
    mapping(address => bytes32) public nationality; //      .........................................................5
    mapping(address => uint256) public verificationAddedOn; // unix time ............................................6
    mapping(address => uint256) public revokedOn; // unix time, returns uint256: 0 if verification is not revoked ...7
    // this will be longer than 32 char, and have to be properly formatted (with "\n")
    mapping(address => string) public signedString; //.(!) Gas requirement: infinite.................................8

    // unix time online converter: https://www.epochconverter.com
    // for coders: http://www.convert-unix-time.com
    mapping(address => uint256) public signedStringUploadedOnUnixTime;

    // this allows to search for account connected to fingerprint
    // as a key we use fingerprint as bytes32, like 0x57A5FEE5A34D563B4B85ADF3CE369FD9E77173E5
    mapping(bytes20 => address) public addressAttached; //

    // (!) Gas requirement: infinite
    string public stringToSignExample = "I hereby confirm that the address <address lowercase> is my Ethereum address";

    /* the same data as above stored as a struct:
    struct will be returned as 'List' in web3j (only one function call needed) */
    mapping(address => Verification) public verification; // (!) Gas requirement: infinite
    struct Verification {
        // all string have to be <= 32 chars
        string fingerprint; // ................................................0
        uint keyCertificateValidUntil; // .....................................1
        string firstName; // ..................................................2
        string lastName;// ....................................................3
        uint birthDate; //  ...................................................4
        string nationality; //  ...............................................5
        uint verificationAddedOn;// ...........................................6
        uint revokedOn; // ....................................................7
        string signedString; //................................................8
        // uint256 signedStringUploadedOnUnixTime; //... Stack too deep
    }

    /*  -------------------- Administrative Data */
    address public owner; // smart contract owner (super admin)
    mapping(address => bool) public isManager; // list of managers

    uint public priceForVerificationInWei; // see converter on https://etherconverter.online/

    address public withdrawalAddress; // address to send Ether from this contract
    bool public withdrawalAddressFixed = false; // this can be smart contract with manages ETH from this SC

    /* --------------------- Constructor */
    function CryptonomicaVerification() public {// Constructor must be public or internal
        owner = msg.sender;
        isManager[msg.sender] = true;
        withdrawalAddress = msg.sender;
    }

    /* -------------------- Utility functions : ---------------------- */

    // (?) CryptonomicaVerification.stringToBytes32(string memory) : Is constant but potentially should not be.
    // probably because of 'using low-level calls' or 'using inline assembly that contains certain opcodes'
    // but 'The compiler does not enforce yet that a pure method is not reading from the state.'
    // > in fact works as constant
    function stringToBytes32(string memory source) public pure returns (bytes32 result) {// (!) Gas requirement: infinite
        // require(bytes(source).length <= 32); // causes error, but string have to be max 32 chars

        // https://ethereum.stackexchange.com/questions/9603/understanding-mload-assembly-function
        // http://solidity.readthedocs.io/en/latest/assembly.html
        // this converts every char to its byte representation
        // see hex codes on http://www.asciitable.com/ (7 > 37, a > 61, z > 7a)
        // "az7" > 0x617a370000000000000000000000000000000000000000000000000000000000
        assembly {
            result := mload(add(source, 32))
        }
    }

    // see also:
    // https://ethereum.stackexchange.com/questions/2519/how-to-convert-a-bytes32-to-string
    // https://ethereum.stackexchange.com/questions/1081/how-to-concatenate-a-bytes32-array-to-a-string
    // 0x617a370000000000000000000000000000000000000000000000000000000000 > "az7"
    function bytes32ToString(bytes32 _bytes32) public pure returns (string){// (!) Gas requirement: infinite
        // string memory str = string(_bytes32);
        // TypeError: Explicit type conversion not allowed from "bytes32" to "string storage pointer"
        // thus we should convert bytes32 to bytes (to dynamically-sized byte array)
        bytes memory bytesArray = new bytes(32);
        for (uint256 i; i < 32; i++) {
            bytesArray[i] = _bytes32[i];
        }
        return string(bytesArray);
    }

    /* -------------------- Verification functions : ---------------------- */

    // from user acc
    // (!) Gas requirement: infinite
    function uploadSignedString(string _fingerprint, bytes20 _fingerprintBytes20, string _signedString) public payable {

        // check length of the uploaded string,
        // it expected to be a 64 chars string signed with OpenPGP standard signature
        // bytes: Dynamically-sized byte array,
        // see: http://solidity.readthedocs.io/en/develop/types.html#dynamically-sized-byte-array
        // if (bytes(_signedString).length > 1000) {//
        //    revert();
        //    // (payable)
        // }
        // --- not needed: if string is to big -> out of gas

        // check payment :
        if (msg.value < priceForVerificationInWei) {
            revert();
            // (payable)
        }

        // if signed string already uploaded, should revert
        if (signedStringUploadedOnUnixTime[msg.sender] != 0) {
            revert();
            // (payable)
        }

        // fingerprint should be uppercase 40 symbols
        if (bytes(_fingerprint).length != 40) {
            revert();
            // (payable)
        }

        // fingerprint can be connected to one eth address only
        if (addressAttached[_fingerprintBytes20] != 0) {
            revert();
            // (payable)
        }

        // at this stage we can not be sure that key with this fingerprint really owned by user
        // thus we store it as 'unverified'
        unverifiedFingerprint[msg.sender] = _fingerprint;

        signedString[msg.sender] = verification[msg.sender].signedString = _signedString;

        // uint256 - Unix Time
        signedStringUploadedOnUnixTime[msg.sender] = block.timestamp;

        SignedStringUploaded(msg.sender, _fingerprint, _signedString);

    }

    event SignedStringUploaded(address indexed fromAccount, string fingerprint, string uploadedString);

    // from 'manager' account only
    // (!) Gas requirement: infinite
    function addVerificationData(
        address _acc, //
        string _fingerprint, // "57A5FEE5A34D563B4B85ADF3CE369FD9E77173E5"
        bytes20 _fingerprintBytes20, // "0x57A5FEE5A34D563B4B85ADF3CE369FD9E77173E5"
        uint _keyCertificateValidUntil, //
        string _firstName, //
        string _lastName, //
        uint _birthDate, //
        string _nationality) public {

        // (!!!) only manager can add verification data
        require(isManager[msg.sender]);

        // check input
        // fingerprint should be uppercase 40 symbols
        // require(bytes(_fingerprint).length == 40);
        // require(bytes(_firstName).length <= 32);
        // require(bytes(_lastName).length <= 32);
        // _nationality should be like "IL" or "US"
        // require(bytes(_nationality).length == 2);
        // >>> if we control manager account we can make checks before sending data to smart contract (cheaper)

        // check if signed string uploaded
        require(signedStringUploadedOnUnixTime[_acc] != 0);
        // to make possible adding verification only one time:
        require(verificationAddedOn[_acc] == 0);

        verification[_acc].fingerprint = _fingerprint;
        fingerprint[_acc] = _fingerprintBytes20;

        addressAttached[_fingerprintBytes20] = _acc;

        verification[_acc].keyCertificateValidUntil = keyCertificateValidUntil[_acc] = _keyCertificateValidUntil;
        verification[_acc].firstName = _firstName;
        firstName[_acc] = stringToBytes32(_firstName);
        verification[_acc].lastName = _lastName;
        lastName[_acc] = stringToBytes32(_lastName);
        verification[_acc].birthDate = birthDate[_acc] = _birthDate;
        verification[_acc].nationality = _nationality;
        nationality[_acc] = stringToBytes32(_nationality);
        verification[_acc].verificationAddedOn = verificationAddedOn[_acc] = block.timestamp;

        VerificationAdded(
            verification[_acc].fingerprint,
            _acc,
        // keyCertificateValidUntil[_acc],
        // verification[_acc].firstName,
        // verification[_acc].lastName,
        // birthDate[_acc],
        // verification[_acc].nationality,
            msg.sender
        );
        // return true;
    }

    event VerificationAdded (
        string forFingerprint,
        address indexed verifiedAccount, // (1) indexed
    // uint keyCertificateValidUntilUnixTime,
    // string userFirstName,
    // string userLastName,
    // uint userBirthDate,
    // string userNationality,
        address verificationAddedByAccount
    );

    // from user or 'manager' account
    function revokeVerification(address _acc) public {// (!) Gas requirement: infinite
        require(msg.sender == _acc || isManager[msg.sender]);

        verification[_acc].revokedOn = revokedOn[_acc] = block.timestamp;

        // event
        VerificationRevoked(
            _acc,
            verification[_acc].fingerprint,
            block.timestamp,
            msg.sender
        );
    }

    event VerificationRevoked (
        address indexed revocedforAccount, // (1) indexed
        string withFingerprint,
        uint revokedOnUnixTime,
        address indexed revokedBy // (2) indexed
    );

    /* -------------------- Administrative functions : ---------------------- */

    // to avoid mistakes: owner (super admin) should be changed in two steps
    // change is valid when accepted from new owner address
    address private newOwner;
    // only owner
    function changeOwnerStart(address _newOwner) public {
        require(msg.sender == owner);
        newOwner = _newOwner;
        ChangeOwnerStarted(msg.sender, _newOwner);
    } //
    event ChangeOwnerStarted (address indexed startedBy, address indexed newOwner);
    // only by new owner
    function changeOwnerAccept() public {
        require(msg.sender == newOwner);
        // event here:
        OwnerChanged(owner, newOwner);
        owner = newOwner;
    } //
    event OwnerChanged(address indexed from, address indexed to);

    // only owner
    function addManager(address _acc) public {
        require(msg.sender == owner);
        isManager[_acc] = true;
        ManagerAdded(_acc, msg.sender);
    } //
    event ManagerAdded (address indexed added, address indexed addedBy);
    // only owner
    function removeManager(address manager) public {
        require(msg.sender == owner);
        isManager[manager] = false;
        ManagerRemoved(manager, msg.sender);
    } //
    event ManagerRemoved(address indexed removed, address indexed removedBy);

    // only by manager
    function setPriceForVerification(uint priceInWei) public {
        // see converter on https://etherconverter.online
        require(isManager[msg.sender]);
        uint oldPrice = priceForVerificationInWei;
        priceForVerificationInWei = priceInWei;
        PriceChanged(oldPrice, priceForVerificationInWei, msg.sender);
    } //
    event PriceChanged(uint from, uint to, address indexed changedBy);

    // !!! can be called by any user or contract
    // check for re-entrancy vulnerability http://solidity.readthedocs.io/en/develop/security-considerations.html#re-entrancy
    // >>> since we are making a withdrawal to our own contract only there is no possible attack using re-entrancy vulnerability,
    function withdrawAllToWithdrawalAddress() public returns (bool) {// (!) Gas requirement: infinite
        // http://solidity.readthedocs.io/en/develop/security-considerations.html#sending-and-receiving-ether
        // about <address>.send(uint256 amount) and <address>.transfer(uint256 amount)
        // see: http://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=transfer#address-related
        // https://ethereum.stackexchange.com/questions/19341/address-send-vs-address-transfer-best-practice-usage
        uint sum = this.balance;
        if (!withdrawalAddress.send(this.balance)) {// makes withdrawal and returns true or false
            Withdrawal(withdrawalAddress, sum, msg.sender, false);
            return false;
        }
        Withdrawal(withdrawalAddress, sum, msg.sender, true);
        return true;
    } //
    event Withdrawal(address indexed to, uint sumInWei, address indexed by, bool success);

    // only owner
    function setWithdrawalAddress(address _withdrawalAddress) public {
        require(msg.sender == owner);
        require(!withdrawalAddressFixed);
        WithdrawalAddressChanged(withdrawalAddress, _withdrawalAddress, msg.sender);
        withdrawalAddress = _withdrawalAddress;
    } //
    event WithdrawalAddressChanged(address indexed from, address indexed to, address indexed changedBy);

    // only owner
    function fixWithdrawalAddress(address _withdrawalAddress) public returns (bool) {
        require(msg.sender == owner);
        require(withdrawalAddress == _withdrawalAddress);

        // prevents event if already fixed
        require(!withdrawalAddressFixed);

        withdrawalAddressFixed = true;
        WithdrawalAddressFixed(withdrawalAddress, msg.sender);
        return true;
    } //
    // this event can be fired one time only
    event WithdrawalAddressFixed(address withdrawalAddressFixedAs, address fixedBy);

}

Contract ABI
[{"constant":false,"inputs":[{"name":"_withdrawalAddress","type":"address"}],"name":"fixWithdrawalAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"priceForVerificationInWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"unverifiedFingerprint","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_withdrawalAddress","type":"address"}],"name":"setWithdrawalAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"signedString","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_acc","type":"address"}],"name":"addManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"verificationAddedOn","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"signedStringUploadedOnUnixTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"birthDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"changeOwnerStart","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"keyCertificateValidUntil","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"fingerprint","outputs":[{"name":"","type":"bytes20"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"lastName","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_acc","type":"address"},{"name":"_fingerprint","type":"string"},{"name":"_fingerprintBytes20","type":"bytes20"},{"name":"_keyCertificateValidUntil","type":"uint256"},{"name":"_firstName","type":"string"},{"name":"_lastName","type":"string"},{"name":"_birthDate","type":"uint256"},{"name":"_nationality","type":"string"}],"name":"addVerificationData","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"withdrawalAddressFixed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"revokedOn","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_bytes32","type":"bytes32"}],"name":"bytes32ToString","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"verification","outputs":[{"name":"fingerprint","type":"string"},{"name":"keyCertificateValidUntil","type":"uint256"},{"name":"firstName","type":"string"},{"name":"lastName","type":"string"},{"name":"birthDate","type":"uint256"},{"name":"nationality","type":"string"},{"name":"verificationAddedOn","type":"uint256"},{"name":"revokedOn","type":"uint256"},{"name":"signedString","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"changeOwnerAccept","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"firstName","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"manager","type":"address"}],"name":"removeManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawAllToWithdrawalAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stringToSignExample","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"source","type":"string"}],"name":"stringToBytes32","outputs":[{"name":"result","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_fingerprint","type":"string"},{"name":"_fingerprintBytes20","type":"bytes20"},{"name":"_signedString","type":"string"}],"name":"uploadSignedString","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes20"}],"name":"addressAttached","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_acc","type":"address"}],"name":"revokeVerification","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"nationality","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"withdrawalAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isManager","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"priceInWei","type":"uint256"}],"name":"setPriceForVerification","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"fromAccount","type":"address"},{"indexed":false,"name":"fingerprint","type":"string"},{"indexed":false,"name":"uploadedString","type":"string"}],"name":"SignedStringUploaded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"forFingerprint","type":"string"},{"indexed":true,"name":"verifiedAccount","type":"address"},{"indexed":false,"name":"verificationAddedByAccount","type":"address"}],"name":"VerificationAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"revocedforAccount","type":"address"},{"indexed":false,"name":"withFingerprint","type":"string"},{"indexed":false,"name":"revokedOnUnixTime","type":"uint256"},{"indexed":true,"name":"revokedBy","type":"address"}],"name":"VerificationRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"startedBy","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"ChangeOwnerStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"added","type":"address"},{"indexed":true,"name":"addedBy","type":"address"}],"name":"ManagerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"removed","type":"address"},{"indexed":true,"name":"removedBy","type":"address"}],"name":"ManagerRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"uint256"},{"indexed":false,"name":"to","type":"uint256"},{"indexed":true,"name":"changedBy","type":"address"}],"name":"PriceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"sumInWei","type":"uint256"},{"indexed":true,"name":"by","type":"address"},{"indexed":false,"name":"success","type":"bool"}],"name":"Withdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":true,"name":"changedBy","type":"address"}],"name":"WithdrawalAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"withdrawalAddressFixedAs","type":"address"},{"indexed":false,"name":"fixedBy","type":"address"}],"name":"WithdrawalAddressFixed","type":"event"}]

Contract Creation Code
6060604052608060405190810160405280604c81526020017f492068657265627920636f6e6669726d2074686174207468652061646472657381526020017f73203c61646472657373206c6f776572636173653e206973206d79204574686581526020017f7265756d20616464726573730000000000000000000000000000000000000000815250600c9080516200009c92916020019062000103565b506011805460a060020a60ff02191690553415620000b957600080fd5b600e8054600160a060020a033316600160a060020a031991821681179092556000828152600f60205260409020805460ff19166001179055601180549091169091179055620001a8565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200014657805160ff191683800117855562000176565b8280016001018555821562000176579182015b828111156200017657825182559160200191906001019062000159565b506200018492915062000188565b5090565b620001a591905b808211156200018457600081556001016200018f565b90565b611a4080620001b86000396000f3006060604052600436106101955763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166302c29349811461019a57806309905bdb146101cd5780630dc2968c146101f257806321b8092e1461028857806322652e05146102a95780632d06177a146102c857806339b51e7c146102e757806345d6f02e1461030657806347889c4214610325578063546e1959146103445780635b3d0bc11461036357806361b027b01461038257806365455fdc146103c3578063735dca66146103e257806376e57d4b14610528578063836afead1461053b5780638da5cb5b1461055a5780639201de551461058957806392b4e1321461059f5780639538833c1461085a5780639a159bf61461086d578063ac18de431461088c578063b17a98b6146108ab578063c6688445146108be578063cfb51928146108d1578063d008a10b14610922578063d6e87b44146109be578063e998d2fa146109e3578063ec94526914610a02578063f2bcd02214610a21578063f3ae241514610a34578063fb20dc8014610a53575b600080fd5b34156101a557600080fd5b6101b9600160a060020a0360043516610a69565b604051901515815260200160405180910390f35b34156101d857600080fd5b6101e0610b35565b60405190815260200160405180910390f35b34156101fd57600080fd5b610211600160a060020a0360043516610b3b565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561024d578082015183820152602001610235565b50505050905090810190601f16801561027a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561029357600080fd5b6102a7600160a060020a0360043516610beb565b005b34156102b457600080fd5b610211600160a060020a0360043516610c8c565b34156102d357600080fd5b6102a7600160a060020a0360043516610d09565b34156102f257600080fd5b6101e0600160a060020a0360043516610d7d565b341561031157600080fd5b6101e0600160a060020a0360043516610d8f565b341561033057600080fd5b6101e0600160a060020a0360043516610da1565b341561034f57600080fd5b6102a7600160a060020a0360043516610db3565b341561036e57600080fd5b6101e0600160a060020a0360043516610e2c565b341561038d57600080fd5b6103a1600160a060020a0360043516610e3e565b6040516bffffffffffffffffffffffff19909116815260200160405180910390f35b34156103ce57600080fd5b6101e0600160a060020a0360043516610e5f565b34156103ed57600080fd5b6102a760048035600160a060020a03169060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094966bffffffffffffffffffffffff19873516966020808201359750919550606081019450604090810135860180830194503592508291601f83018190048102019051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284378201915050505050509190803590602001909190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650610e7195505050505050565b341561053357600080fd5b6101b9611144565b341561054657600080fd5b6101e0600160a060020a0360043516611154565b341561056557600080fd5b61056d611166565b604051600160a060020a03909116815260200160405180910390f35b341561059457600080fd5b610211600435611175565b34156105aa57600080fd5b6105be600160a060020a0360043516611231565b60405180806020018a81526020018060200180602001898152602001806020018881526020018781526020018060200186810386528f81815460018160011615610100020316600290048152602001915080546001816001161561010002031660029004801561066f5780601f106106445761010080835404028352916020019161066f565b820191906000526020600020905b81548152906001019060200180831161065257829003601f168201915b505086810385528d54600260001961010060018416150201909116048082526020909101908e9080156106e35780601f106106b8576101008083540402835291602001916106e3565b820191906000526020600020905b8154815290600101906020018083116106c657829003601f168201915b505086810384528c54600260001961010060018416150201909116048082526020909101908d9080156107575780601f1061072c57610100808354040283529160200191610757565b820191906000526020600020905b81548152906001019060200180831161073a57829003601f168201915b505086810383528a54600260001961010060018416150201909116048082526020909101908b9080156107cb5780601f106107a0576101008083540402835291602001916107cb565b820191906000526020600020905b8154815290600101906020018083116107ae57829003601f168201915b505086810382528754600260001961010060018416150201909116048082526020909101908890801561083f5780601f106108145761010080835404028352916020019161083f565b820191906000526020600020905b81548152906001019060200180831161082257829003601f168201915b50509e50505050505050505050505050505060405180910390f35b341561086557600080fd5b6102a761126c565b341561087857600080fd5b6101e0600160a060020a03600435166112f7565b341561089757600080fd5b6102a7600160a060020a0360043516611309565b34156108b657600080fd5b6101b961137a565b34156108c957600080fd5b610211611461565b34156108dc57600080fd5b6101e060046024813581810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496506114cc95505050505050565b6102a760046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094966bffffffffffffffffffffffff19873516969095506040808201955060209182013587018083019550359350839250601f83018290048202909101905190810160405281815292919060208401838380828437509496506114d995505050505050565b34156109c957600080fd5b61056d6bffffffffffffffffffffffff19600435166116ff565b34156109ee57600080fd5b6102a7600160a060020a036004351661171a565b3415610a0d57600080fd5b6101e0600160a060020a0360043516611848565b3415610a2c57600080fd5b61056d61185a565b3415610a3f57600080fd5b6101b9600160a060020a0360043516611869565b3415610a5e57600080fd5b6102a760043561187e565b600e5460009033600160a060020a03908116911614610a8757600080fd5b601154600160a060020a03838116911614610aa157600080fd5b60115460a060020a900460ff1615610ab857600080fd5b6011805474ff0000000000000000000000000000000000000000191660a060020a17908190557fff51cf04e7fbddffc521b8673e9282b10a91c659c12eea9ef99182bd9a95ff7190600160a060020a031633604051600160a060020a039283168152911660208201526040908101905180910390a1506001919050565b60105481565b60016020528060005260406000206000915090508054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610be35780601f10610bb857610100808354040283529160200191610be3565b820191906000526020600020905b815481529060010190602001808311610bc657829003601f168201915b505050505081565b600e5433600160a060020a03908116911614610c0657600080fd5b60115460a060020a900460ff1615610c1d57600080fd5b601154600160a060020a033381169183821691167f15fc95cfd5d20b9661cf80c2719d8e3180bee6d89379a03b7b14ca6ac6adea9860405160405180910390a46011805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60096020528060005260406000206000915090508054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610be35780601f10610bb857610100808354040283529160200191610be3565b600e5433600160a060020a03908116911614610d2457600080fd5b600160a060020a038082166000818152600f602052604090819020805460ff1916600117905533909216917f05a4006f300442cf8b7fdb885f5ee958812020bffb5c5a8e655fde64e5f987ed905160405180910390a350565b60076020526000908152604090205481565b600a6020526000908152604090205481565b60056020526000908152604090205481565b600e5433600160a060020a03908116911614610dce57600080fd5b6012805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169182179092559033167f856621e76473127fb731503843c14f7b85c6c36fc405c3ea121471425f54fd7960405160405180910390a350565b60026020526000908152604090205481565b6000602081905290815260409020546c010000000000000000000000000281565b60046020526000908152604090205481565b600160a060020a0333166000908152600f602052604090205460ff161515610e9857600080fd5b600160a060020a0388166000908152600a60205260409020541515610ebc57600080fd5b600160a060020a03881660009081526007602052604090205415610edf57600080fd5b600160a060020a0388166000908152600d60205260409020878051610f089291602001906118f6565b50600160a060020a03881660008181526020818152604080832080546c010000000000000000000000008c0473ffffffffffffffffffffffffffffffffffffffff19918216179091556bffffffffffffffffffffffff198b168452600b83528184208054909116851790559282526002808252838320899055600d9091529190206001810187905501848051610fa29291602001906118f6565b50610fac846114cc565b600160a060020a038916600090815260036020818152604080842094909455600d905291902001838051610fe49291602001906118f6565b50610fee836114cc565b600160a060020a0389166000908152600460208181526040808420949094556005808252848420879055600d90915292909120908101849055018180516110399291602001906118f6565b50611043816114cc565b600160a060020a038916600081815260066020818152604080842095909555600781528483204290819055600d909152918490209081019190915590917f2014ad745d5cc240a4565583f1c0cf348b91f892966a154d418c591911ea04bf9190339051600160a060020a03821660208201526040808252835460026000196101006001841615020190911604908201819052819060608201908590801561112b5780601f106111005761010080835404028352916020019161112b565b820191906000526020600020905b81548152906001019060200180831161110e57829003601f168201915b5050935050505060405180910390a25050505050505050565b60115460a060020a900460ff1681565b60086020526000908152604090205481565b600e54600160a060020a031681565b61117d611970565b611185611970565b600060206040518059106111965750595b818152601f19601f8301168101602001604052905091505b602081101561122a578381602081106111c357fe5b1a7f0100000000000000000000000000000000000000000000000000000000000000028282815181106111f257fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506001016111ae565b5092915050565b600d60205260009081526040902060018101546004820154600683015460078401546002850192600386019290916005870191906008880189565b60125433600160a060020a0390811691161461128757600080fd5b601254600e54600160a060020a0391821691167fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c60405160405180910390a3601254600e805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055565b60036020526000908152604090205481565b600e5433600160a060020a0390811691161461132457600080fd5b600160a060020a038082166000818152600f602052604090819020805460ff1916905533909216917f3e902a6ee93dd5b2d48bd1009c7701a481be512b1ef73dbed2f95ea44c59ea88905160405180910390a350565b601154600090600160a060020a03308116803192909116903180156108fc0290604051600060405180830381858888f19350505050151561140b57601154600160a060020a0333811691167f78746de4b42c369479b14075849ee3378535cb810d96e74712e26a7924f7b021836000604051918252151560208201526040908101905180910390a36000915061145d565b601154600160a060020a0333811691167f78746de4b42c369479b14075849ee3378535cb810d96e74712e26a7924f7b021836001604051918252151560208201526040908101905180910390a3600191505b5090565b600c8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610be35780601f10610bb857610100808354040283529160200191610be3565b6000602082015192915050565b6010543410156114e857600080fd5b600160a060020a0333166000908152600a60205260409020541561150b57600080fd5b825160281461151957600080fd5b6bffffffffffffffffffffffff1982166000908152600b6020526040902054600160a060020a03161561154b57600080fd5b600160a060020a03331660009081526001602052604090208380516115749291602001906118f6565b50600160a060020a0333166000908152600d602052604090206008018180516115a19291602001906118f6565b600160a060020a033316600090815260096020526040902081546115d8929060026000196101006001841615020190911604611982565b50600160a060020a0333166000818152600a6020526040908190204290557f3c21c5143ac760b44e24852cca9d3858a3487646fe0fa6c591aa3199cc65531a908590849051808060200180602001838103835285818151815260200191508051906020019080838360005b8381101561165b578082015183820152602001611643565b50505050905090810190601f1680156116885780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156116be5780820151838201526020016116a6565b50505050905090810190601f1680156116eb5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a2505050565b600b60205260009081526040902054600160a060020a031681565b80600160a060020a031633600160a060020a031614806117525750600160a060020a0333166000908152600f602052604090205460ff165b151561175d57600080fd5b600160a060020a0380821660008181526008602090815260408083204290819055600d909252918290206007810182905533909416937fc6f2b8565550ea0e6941e2f0f6b7e65e5eb1fdccb33e0c7815af0f3ce5669cff929091905160208101829052604080825283546002600019610100600184161502019091160490820181905281906060820190859080156118365780601f1061180b57610100808354040283529160200191611836565b820191906000526020600020905b81548152906001019060200180831161181957829003601f168201915b5050935050505060405180910390a350565b60066020526000908152604090205481565b601154600160a060020a031681565b600f6020526000908152604090205460ff1681565b600160a060020a0333166000908152600f602052604081205460ff1615156118a557600080fd5b506010805490829055600160a060020a0333167f665d155f71ad96c4a04629d54ef9fb27ef57911253588f2ee93474cd02fa3f53828460405191825260208201526040908101905180910390a25050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061193757805160ff1916838001178555611964565b82800160010185558215611964579182015b82811115611964578251825591602001919060010190611949565b5061145d9291506119f7565b60206040519081016040526000815290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106119bb5780548555611964565b8280016001018555821561196457600052602060002091601f016020900482015b828111156119645782548255916001019190600101906119dc565b611a1191905b8082111561145d57600081556001016119fd565b905600a165627a7a723058205d883535e3010c345f71e8432366745740f31a379d0340e8801b497f4fee1aa90029


   Swarm Source:
bzzr://5d883535e3010c345f71e8432366745740f31a379d0340e8801b497f4fee1aa9
Block Age transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.