Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x3e2A565d29bc8f3eeAedB4C01751B8D04197f23f
Balance 0 ETH
Nonce 1
Code Size 2848 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

2848 bytes
0x608060405234801561001057600080fd5b506004361061009e5760003560e01c806385a23b1a1161006657806385a23b1a146101ba57806390c3f38f14610267578063a7321ba41461030d578063bb62860d146103bf578063cf1b5d67146103c75761009e565b806313af4035146100a357806333b44033146100cb5780633f516018146100fa57806368d839d0146101205780638191745f1461013d575b600080fd5b6100c9600480360360208110156100b957600080fd5b50356001600160a01b03166103ea565b005b6100e8600480360360208110156100e157600080fd5b5035610480565b60408051918252519081900360200190f35b6100c96004803603602081101561011057600080fd5b50356001600160a01b0316610492565b6100c96004803603602081101561013657600080fd5b5035610526565b6101456105dd565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017f578181015183820152602001610167565b50505050905090810190601f1680156101ac5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6100c9600480360360408110156101d057600080fd5b813591908101906040810160208201356401000000008111156101f257600080fd5b82018360208201111561020457600080fd5b8035906020019184600183028401116401000000008311171561022657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061066b945050505050565b6100c96004803603602081101561027d57600080fd5b81019060208101813564010000000081111561029857600080fd5b8201836020820111156102aa57600080fd5b803590602001918460018302840111640100000000831117156102cc57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610791945050505050565b6100c96004803603606081101561032357600080fd5b81359160208101359181019060608101604082013564010000000081111561034a57600080fd5b82018360208201111561035c57600080fd5b8035906020019184600183028401116401000000008311171561037e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506107f7945050505050565b6100e8610958565b6100c9600480360360408110156103dd57600080fd5b5080359060200135610961565b6000546001600160a01b0316338114610438576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0384161790556040517fb1f85680994f05174de05cb70536b4ec6be34da71beb280b0a6e53e90ecda20490600090a15050565b60009081526002602052604090205490565b6000546001600160a01b03163381146104e0576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0384161781556040517f409886e126858260aa1bc467ead233398a4c65a9c5bdd9deddb490202676bc199190a15050565b6001546001600160a01b0316338114610574576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015290519081900360640190fd5b6000828152600260205260409020548061059d5750600082815260026020526040902042908190555b604080518481526020810183905281517f35047f277245606b30d35783122d7180fcbba2824be75c2d232962ba8f1489cb929181900390910190a1505050565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106635780601f1061063857610100808354040283529160200191610663565b820191906000526020600020905b81548152906001019060200180831161064657829003601f168201915b505050505081565b6001546001600160a01b03163381146106b9576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015290519081900360640190fd5b600083815260026020526040902054806106e25750600083815260026020526040902042908190555b7fb5121e42d1cb56458ec5fce038800b06aa794a6f07555c355cf1be3687acbbee8482856040518084815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561074f578181015183820152602001610737565b50505050905090810190601f16801561077c5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a150505050565b6001546001600160a01b03163381146107df576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015290519081900360640190fd5b81516107f2906003906020850190610a4f565b505050565b6001546001600160a01b0316338114610845576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015290519081900360640190fd5b6000848152600260205260409020548061086e5750600084815260026020526040902042908190555b600084815260026020526040902054806108975750600084815260026020526040902042908190555b7fdbb324bc2bb6a4348ecfcf8f242a9f43b37f1436bd9b333339e956249e7d34a486868484886040518086815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156109125781810151838201526020016108fa565b50505050905090810190601f16801561093f5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1505050505050565b64632008260181565b6001546001600160a01b03163381146109af576040805162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b604482015290519081900360640190fd5b600083815260026020526040902054806109d85750600083815260026020526040902042908190555b60008381526002602052604090205480610a015750600083815260026020526040902042908190555b60408051868152602081018690528082018490526060810183905290517f3362d29134931f388d2281f6c3c3b98db3b3d3b052388640d8b5f817952d013d9181900360800190a15050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610a9057805160ff1916838001178555610abd565b82800160010185558215610abd579182015b82811115610abd578251825591602001919060010190610aa2565b50610ac9929150610acd565b5090565b610ae791905b80821115610ac95760008155600101610ad3565b9056fea2646970667358221220a43529f84c494b9d8f136e7366a4289f6286a1921768ed5fe0e769e36f77a4dd64736f6c634300060b0033

Verified Source Code Partial Match

Compiler: v0.6.11+commit.5ef660b1 EVM: istanbul Optimization: Yes (200 runs)
ProofCertoChainContract.sol 144 lines
pragma solidity ^0.6.11;

//certo c063v200826 noima (c) all rights reserved 2020

/// @title  A CertoProof Of  existence smartcontract
/// @author Mauro G. Cordioli ezlab
/// @notice Check the details at https://certo.legal/smartcontract/v63
contract ProofCertoChainContract {
    int256 public constant Version = 0x6320082601;
    address payable creator;
    address payable owner;
    mapping(bytes32 => uint256) private CertoLedgerTimestamp;
    string public Description; //Contract Purpose

    modifier onlyBy(address _account) {
        require(msg.sender == _account, "not allowed");
        _;
    }

    function setCreator(address payable _creator) public onlyBy(creator) {
        creator = _creator;
        emit EventSetCreator();
    }

    function setOwner(address payable _owner) public onlyBy(creator) {
        owner = _owner;
        emit EventSetOwner();
    }

    function setDescription(string memory _Description) public onlyBy(owner) {
        Description = _Description;
    }

    constructor(string memory _Description) public {
        creator = msg.sender;
        owner = msg.sender;

        Description = _Description;

        emit EventReady();
    }

    /// @notice Notarize the hash emit block timestamp of the  block
    /// @param hashproof The proof sha256 hash to timestamp
    function NotarizeProofTimeStamp(bytes32 hashproof) public onlyBy(owner) {
        uint256 ts = CertoLedgerTimestamp[hashproof];
        if (ts == 0) {
            ts = block.timestamp;
            CertoLedgerTimestamp[hashproof] = ts;
        }

        emit EventProof(hashproof, ts);
    }


    /// @notice Notarize both hashes  emit  block timestamp  with logged note
    /// @param hashproof The proof  sha256 hash to timestamp
    /// @param hashmeta  The metadata sha256 hash to timestamp
    /// @param note  The note to be logged on the blokchain
    function NotarizeProofMetaNoteTimeStamp(
        bytes32 hashproof,
        bytes32 hashmeta,
        string memory note
    ) public onlyBy(owner) {
        uint256 tsproof = CertoLedgerTimestamp[hashproof];
        if (tsproof == 0) {
            tsproof = block.timestamp;
            CertoLedgerTimestamp[hashproof] = tsproof;
        }

        uint256 tsmeta = CertoLedgerTimestamp[hashmeta];
        if (tsmeta == 0) {
            tsmeta=block.timestamp;
            CertoLedgerTimestamp[hashmeta] = tsmeta;
        }

        emit EventProofMetaWithNote(hashproof, hashmeta, tsproof, tsmeta, note);
    }

    /// @notice Notarize both hashes and emit  block timestamps   
    /// @param hashproof The proof sha256 hash to timestamp
    /// @param hashmeta The metadata sha256 hash to timestamp
    function NotarizeProofMetaTimeStamp(bytes32 hashproof, bytes32 hashmeta)
        public
        onlyBy(owner)
    {
        uint256 tsproof = CertoLedgerTimestamp[hashproof];
        if (tsproof == 0) {
            tsproof = block.timestamp;
            CertoLedgerTimestamp[hashproof] = tsproof;
        }

        uint256 tsmeta = CertoLedgerTimestamp[hashmeta];
        if (tsmeta == 0) {
            tsmeta = block.timestamp;
            CertoLedgerTimestamp[hashmeta] = tsmeta;
        }

        emit EventProofMeta(hashproof, hashmeta, tsproof, tsmeta);
    }

    /// @notice Notarize the hash emit   block timestamp  with  logged note
    /// @param hashproof The sha256 hash to timestamp
    /// @param note  The note to be logged on the blokchain
    function NotarizeProofTimeStampWithNote(
        bytes32 hashproof,
        string memory note
    ) public onlyBy(owner) {
        uint256 ts = CertoLedgerTimestamp[hashproof];
        if (ts == 0) {
            ts = block.timestamp;
            CertoLedgerTimestamp[hashproof] = ts;
        }
        emit EventProofWithNote(hashproof, ts, note);
    }

    /// @notice check the hash  to verify the proof  emit  the block timestamp if ok  or zero if not.
    /// @param hashproof The sha256 hash be checked
    /// @return block timestamp if ok zero if not
    function CheckProofTimeStampByHashReturnsNonZeroUnixEpochIFOk(
        bytes32 hashproof
    ) public view returns (uint256) {
        return CertoLedgerTimestamp[hashproof];
    }

    event EventProofMetaWithNote(
        bytes32 hashproof,
        bytes32 hashmeta,
        uint256 tsproof,
        uint256 tsmeta,
        string note
    ); // trace a note in the logs
    event EventProofMeta(
        bytes32 hashproof,
        bytes32 hashmeta,
        uint256 tsproof,
        uint256 tsmeta
    );
    event EventProofWithNote(bytes32 hashproof, uint256 ts, string note); // trace a note in the logs
    event EventProof(bytes32 hashproof, uint256 ts);
    event EventSetOwner(); //invoked when creator changes owner
    event EventSetCreator(); //invoked when creator changes creator
    event EventReady(); //invoked when we have done the method action
}

Read Contract

CheckProofTimeStampByHashReturnsNonZeroUnixEpochIFOk 0x33b44033 → uint256
Description 0x8191745f → string
Version 0xbb62860d → int256

Write Contract 7 functions

These functions modify contract state and require a wallet transaction to execute.

NotarizeProofMetaNoteTimeStamp 0xa7321ba4
bytes32 hashproof
bytes32 hashmeta
string note
NotarizeProofMetaTimeStamp 0xcf1b5d67
bytes32 hashproof
bytes32 hashmeta
NotarizeProofTimeStamp 0x68d839d0
bytes32 hashproof
NotarizeProofTimeStampWithNote 0x85a23b1a
bytes32 hashproof
string note
setCreator 0x3f516018
address _creator
setDescription 0x90c3f38f
string _Description
setOwner 0x13af4035
address _owner

Recent Transactions

No transactions found for this address