Developer Guide
Verification

Verification

💡

Verification is currently in a public test phase. Some functionalities may change based on user behavior.

This contract retrieves the human verification status for addresses.

Each successful verification indicates that the following has been checked:

  • Legal identity documents
  • Age of 18 or older
  • Verified only once

On the blockchain, the following information is available:

  • Yes/no status indicating whether the verification has passed
  • A random hash identifying the verification process

The processing is fully handled by a third party specializing in identity verification. Sumsub manages the process, and only the results for addresses are processed on vet.domains to store the decisions on the blockchain. A verification process can be purchased using VET or B3TR at https://vet.domains/verify (opens in a new tab), or alternatively, through a payment contract.

Verified Contract

Contract Address: 0xbd7832FdacCB89FAB522e5B4Afb415A999b8a201 (verified.energy.vet (opens in a new tab))

Interface

interface IVNSVerified {
    // returns if a given address has passed human verification
    function isVerified(address user) external view returns (bool);
 
    // returns a unique id
    // if the user removes their identity and verifies on another address, the id will be different
    function getPersonIdHash(address user) external view returns (bytes32);
 
    // returns if the user has bought a verification process
    function canVerify(address user) external view returns (bool);
 
    // emitted events
    event UserVerified(address indexed user, bytes32 personIdHash);
    event VerificationRevoked(address indexed user);
    event CanVerifyStatusChanged(address indexed user, bool status);
}

ABI

[
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "user",
        "type": "address"
      }
    ],
    "name": "isVerified",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "user",
        "type": "address"
      }
    ],
    "name": "getPersonIdHash",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "user",
        "type": "address"
      }
    ],
    "name": "canVerify",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "status",
        "type": "bool"
      }
    ],
    "name": "CanVerifyStatusChanged",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bytes32",
        "name": "personIdHash",
        "type": "bytes32"
      }
    ],
    "name": "UserVerified",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "user",
        "type": "address"
      }
    ],
    "name": "VerificationRevoked",
    "type": "event"
  }
]

Payment Contract

Contract Address: 0x61656d5E04c2903326aC8C151De546e056DF91FF

Interface

Payments are supported in VET and B3TR tokens.

interface IVNSVerificationPayment {
    // returns the price in US Dollar cent
    function usdPrice() external view returns (uint256);
 
    // returns the price in VET
    function getRequiredPayment() external view returns (uint256);
 
    // returns price for a given token
    // for B3TR use: 0x5ef79995FE8a89e0812330E4378eB2660ceDe699
    function getRequiredPayment(address token) public view returns (uint256);
 
    // A VET payment towards the contract will automatically unlock a new verification process for the msg.sender.
    // Excess amounts are automatically refunded.
    receive() external payable;
 
    // pay for another address
    function payWithVET(address beneficiary) external payable
 
    // pay with a token for another address
    // for B3TR use: 0x5ef79995FE8a89e0812330E4378eB2660ceDe699
    function payWithToken(address token, address beneficiary) external;
}