The Smart Contract
Santiago Rodríguez
29 Oct 2018

28th Nov 2018: Updated references to reflect the Main Net release addresses.

The Ethertify smart contract is currently deployed on the Ethereum Main network. While our website provides all the required functionality and facilitates the interaction with the smart contract, you can use other tools in order to access it. In the end, it is a public smart contract and we don't have special permissions over it.

One of this tools is Etherscan, a fantastic ethereum block explorer full of functionality. We will focus in the following:

  • Inspect past interactions with the smart contract
  • Read the stored data
  • Smart contract code verification

Plese check our documentation to know more about certificates and entities in Ethertify.

Inspect past interactions

By entering the address of the contract 0x1c5fb8a27bd7bc63cfefc408a753f87dc86cd201, etherscan will indicate that there is a smart contract deployed at that address and it will list all the transactions (interactions) with the contract.

Each transaction is contained in a specific block which was included in the blockchain at a specific date and time. Since each transaction is signed by a private key, we can always verify when the transaction took place and from which address (associated to the private key signing the transaction).

The Ethertify smart contract is designed to log all its interactions in a set of descriptive logs containing the main data. You can inspect the event logs triggered by each transaction by clicking on the transaction hash (TxHash) and then in the Events Logs tab.

Reading contract data

Inspecting the transactions of the contract allows us to check when certain data was written to the contract. However the best way to read specific information is using the read contract functionality of etherscan.

The most important methods are "getCertificateInfo" and "getSigningEntityInfo" which will read the data related to certificates and signing entities.

Get Certificate Info

This method will retrieve the certificate details from its unique identifier. The details of each certificate are:

  • owner: The address of the certificate creator. This field can be empty if the certificate is owned by an entity or if the certificate is ownerless.
  • entityId: Identifier of the entity owning the certificate. Only the validated signers of an entity can issue certificates on behalf of the entity.
  • certHash: The SHA-256 hash of the certificate details. These details are represented by a JSON file containing user defined fields and the SHA-256 hash of the attached data (dataHash value of the certificate). It can be empty.
  • ipfsCertHash: The IPFS multi-hash of the certificate JSON file. This field is used for public certificates. It can be empty.
  • dataHash: The SHA-256 hash of the certificate attached data. It can be empty.
  • ipfsDataHash: The IPFS multi-hash of the certificate attached data. It is used on certificates with public attached data stored on IPFS. It can be empty.
  • numEntitySignatures: The total number of signatures requested to signing entities. The internal status of each one will indicate if it was signed by the corresponding entity and its expiration date.
  • numPeerSignatures: The total number of signatures requested to normal addresses. The internal status of each one will indicate if it was signed by the corresponding address and its expiration date.
  • newOwnerTransferRequest: If there is a transfer request, this contains the address of the new owner until he accepts the certificate or the transfer is cancelled.
  • newEntityTransferRequest: If there is a transfer request, this field contains the identifier of the entity until a signer of that entity accepts the request or the current owner cancels the transfer.

Get Signing Entity Info

This method will retrieve the signin entity details from its unique identifier. The details of each signing entity are:

  • owner: The entity’s owner address. It is considered the administrator of the entity and the only one that can add/remove signers, revalidate the entity, update entity details,etc.
  • dataHash: The IPFS multi-hash of the entity details. This is a JSON file stored in IPFS containing all the entity details: name, description, URL, email, logo, etc.
  • status: The status of the entity, being ‘1’ invalid, ‘2’ validated and ‘8’ closed. Ethertify will not allow interactions with invalid entities.
  • urlHash: The SHA-256 sum of the entity’s site URL. It is used during the validation process.
  • expiration: The POSIX expiration time of the entity. Ethertify will not allow any interaction with expired entities.
  • renewalPeriod: The time in seconds of the renewal period. This is the amount of seconds added to the the current expiration date each time the expiration is extended. It cannot be greater than 31 days.
  • numSigners: Total number of signers in the entity. The internal status of each one will show the details of each signer and it status.

Code verification

If you need to check the internal behavior of the contract you can always check its source code (and from its libraries) can be inspected in etherscan by clicking in the code tab.