Where is the VERI token contract?

VERI token contract 0x8f3470A7388c05eE4e7AF3d01D8C722b0FF52374

VERI is an ERC-20 token at 0x8f3470A7388c05eE4e7AF3d01D8C722b0FF52374 on Ethereum mainnet, deployed on 23 Apr 2017 with a fixed supply of 100,000,000 and no proxy, so the code that runs today is the code deployed then.

Standard#
ERC-20
Symbol#
VERI
Decimals#
18
Transactions#
All transactions
Last verified#
13 Oct 2026

The on-chain name of the token is Veritaseum and its symbol is VERI. The Fact sheet above comes from the contract’s verified source and its deployment transaction; the sections below say where each value comes from and how to read it yourself.

Deployment#

The contract was created in block 3,586,472 on 23 Apr 2017 at 12:45:03 UTC by transaction 0xfda7aad5…3a6fc. The sender, 0x44CAb6F6DC7045FD4AcD1d0f3d09Fc7a83004bd3, is an externally owned account. The constructor takes no arguments: it gives the whole supply to the sender and emits no event (the transaction has no logs).

Verified source#

The source is one Solidity file of about 150 lines, pragma solidity ^0.4.8, compiled with v0.4.8+commit.60cc1668 and the optimizer on at 200 runs. Etherscan reports an exact match and Blockscout shows it as verified. It declares five contracts and no libraries:

Contract What it holds
Ownable address public owner, the onlyOwner modifier and transferOwnership
SafeMath safeAdd, safeSub, safeMul, safeDiv, max64, min64, max256, min256 and a custom assert that calls throw
ERC20 the abstract interface: totalSupply, the five functions and the Transfer and Approval events
StandardToken the balances and allowed mappings and the five ERC-20 functions
VeritaseumToken name, symbol, decimals, totalSupply, the constructor and an overriding transferOwnership

The constants, as written in VeritaseumToken:

string public name = "Veritaseum";
string public symbol = "VERI";
uint public decimals = 18;
uint public totalSupply = 100000000 ether;

decimals is declared as uint, so decimals() returns a uint256 rather than the uint8 later tokens use. The value is 18 either way. See How VERI differs from a modern ERC-20 for the other places where this 2017 code departs from today’s conventions.

Not upgradeable#

There is no proxy in front of the contract and no delegatecall in it (Blockscout lists no proxy type or implementation). The bytecode deployed on 23 Apr 2017 is the bytecode that runs today, and nothing in it can be changed.

Functions and events#

The ABI, served at /abi/veri.json, has these entries and nothing else:

Function Selector Who can call it
name(), symbol(), decimals(), totalSupply() 0x06fdde03, 0x95d89b41, 0x313ce567, 0x18160ddd anyone, read-only
balanceOf(address), allowance(address,address) 0x70a08231, 0xdd62ed3e anyone, read-only
owner() 0x8da5cb5b anyone, read-only
transfer(address,uint256), transferFrom(address,address,uint256), approve(address,uint256) 0xa9059cbb, 0x23b872dd, 0x095ea7b3 any holder or spender
transferOwnership(address) 0xf2fde38b the owner only

The events are Transfer(address,address,uint256) and Approval(address,address,uint256). There is no mint, burn, pause, freeze or blacklist function, and no event for a change of owner. The owner’s one privilege, transferOwnership, is described in How VERI differs from a modern ERC-20.

Owner#

owner() returns 0x82c48875C17EE5812f909a9d75C0F64f7A8719FE, an externally owned account, and has since block 3,589,599 on 24 Apr 2017, when the deployer called transferOwnership (transaction).

Check it yourself#

Each command is an eth_call to a public Ethereum JSON-RPC endpoint; swap in https://eth.drpc.org if the first one is busy. The result is a 32-byte word (for strings, an ABI-encoded string). The JSON-RPC API reference describes the request format and the other methods.

# name(): the result ends in "Veritaseum" in hex (5665726974617365756d)
curl -s https://ethereum-rpc.publicnode.com -X POST -H 'content-type: application/json' \
  --data '{"jsonrpc":"2.0","id":1,"method":"eth_call","params":[{"to":"0x8f3470a7388c05ee4e7af3d01d8c722b0ff52374","data":"0x06fdde03"},"latest"]}'

# symbol(): the result ends in "VERI" in hex (56455249)
curl -s https://ethereum-rpc.publicnode.com -X POST -H 'content-type: application/json' \
  --data '{"jsonrpc":"2.0","id":1,"method":"eth_call","params":[{"to":"0x8f3470a7388c05ee4e7af3d01d8c722b0ff52374","data":"0x95d89b41"},"latest"]}'

# decimals(): 0x…12, which is 18
curl -s https://ethereum-rpc.publicnode.com -X POST -H 'content-type: application/json' \
  --data '{"jsonrpc":"2.0","id":1,"method":"eth_call","params":[{"to":"0x8f3470a7388c05ee4e7af3d01d8c722b0ff52374","data":"0x313ce567"},"latest"]}'

# owner(): 0x…82c48875c17ee5812f909a9d75c0f64f7a8719fe
curl -s https://ethereum-rpc.publicnode.com -X POST -H 'content-type: application/json' \
  --data '{"jsonrpc":"2.0","id":1,"method":"eth_call","params":[{"to":"0x8f3470a7388c05ee4e7af3d01d8c722b0ff52374","data":"0x8da5cb5b"},"latest"]}'

With Foundry installed, its cast command runs the same calls and decodes the answers:

export ETH_RPC_URL=https://ethereum-rpc.publicnode.com

# "Veritaseum", "VERI", 18, 0x82c48875C17EE5812f909a9d75C0F64f7A8719FE
cast call 0x8f3470a7388c05ee4e7af3d01d8c722b0ff52374 'name()(string)'
cast call 0x8f3470a7388c05ee4e7af3d01d8c722b0ff52374 'symbol()(string)'
cast call 0x8f3470a7388c05ee4e7af3d01d8c722b0ff52374 'decimals()(uint256)'
cast call 0x8f3470a7388c05ee4e7af3d01d8c722b0ff52374 'owner()(address)'

To confirm the source matches the bytecode, open the verified code on Etherscan and compare it with eth_getCode on either endpoint, or cast code 0x8f3470a7388c05ee4e7af3d01d8c722b0ff52374. The data files page lists the ABI and the other files the site serves.

Sources#

  1. VERI verified source, Etherscan
  2. VERI contract creation transaction, Etherscan
  3. VERI contract, Blockscout