---
title: VERI supply is fixed at 100,000,000
description: The VERI contract sets totalSupply to 100,000,000 tokens (10^26 base units at 18 decimals) once, when it is deployed, and has no mint, burn or pause function, so the supply cannot change.
url: https://veri.how/veri/supply
area: veri
kind: reference
updated: 2026-10-15T00:00:00Z
author: Patryk Dwórznik
license: CC BY 4.0
contracts:
  - id: eip155:1:0x8f3470a7388c05ee4e7af3d01d8c722b0ff52374
    name: Veritaseum
    verified:
      date: 2026-10-13
sources:
  - title: VERI verified source, Etherscan
    url: https://etherscan.io/address/0x8f3470a7388c05ee4e7af3d01d8c722b0ff52374#code
  - title: VERI Read Contract view, Etherscan
    url: https://etherscan.io/address/0x8f3470a7388c05ee4e7af3d01d8c722b0ff52374#readContract
  - title: VERI contract creation transaction, Etherscan
    url: https://etherscan.io/tx/0xfda7aad54c81d9bc8e7a67e68821a24009c2bcd5e9b9a47b71f40d5a45f3a6fc
---

# VERI supply is fixed at 100,000,000

The VERI contract sets totalSupply to 100,000,000 tokens (10^26 base units at 18 decimals) once, when it is deployed, and has no mint, burn or pause function, so the supply cannot change.

## Facts

| Fact | Value |
| --- | --- |
| Address | [0x8f3470A7388c05eE4e7AF3d01D8C722b0FF52374](https://etherscan.io/token/0x8f3470a7388c05ee4e7af3d01d8c722b0ff52374) |
| Chain | [Ethereum (eip155:1)](https://etherscan.io) |
| Standard | [ERC-20](https://eips.ethereum.org/EIPS/eip-20) |
| Symbol | [VERI](https://etherscan.io/token/0x8f3470a7388c05ee4e7af3d01d8c722b0ff52374) |
| Decimals | [18](https://etherscan.io/address/0x8f3470a7388c05ee4e7af3d01d8c722b0ff52374#code) |
| Deployed | [Block 3,586,472 · 23 Apr 2017](https://etherscan.io/tx/0xfda7aad54c81d9bc8e7a67e68821a24009c2bcd5e9b9a47b71f40d5a45f3a6fc) |
| Owner | [0x82c48875C17EE5812f909a9d75C0F64f7A8719FE](https://etherscan.io/address/0x82c48875c17ee5812f909a9d75c0f64f7a8719fe) |
| Source | [Verified on Etherscan](https://etherscan.io/address/0x8f3470a7388c05ee4e7af3d01d8c722b0ff52374#code) |
| Transactions | [All transactions](https://etherscan.io/address/0x8f3470a7388c05ee4e7af3d01d8c722b0ff52374) |
| ABI | [veri.json](https://veri.how/abi/veri.json) |
| Last verified | 13 Oct 2026 |

Total supply, maximum supply and the sum of every balance that can ever exist are the same number for VERI: 100,000,000 tokens. Some token listings show the maximum supply as unknown or unlimited. The contract says otherwise, and the sections below show where.

## Where the number is set

The [verified source](https://etherscan.io/address/0x8f3470a7388c05ee4e7af3d01d8c722b0ff52374#code) declares the supply as a state variable and hands all of it to the deployer in the constructor:

```solidity
uint public totalSupply = 100000000 ether;  // total supply of 100 Million Tokens

function VeritaseumToken() {
    balances[msg.sender] = totalSupply;
}
```

`100000000 ether` is Solidity for 100,000,000 × 10^18, which is 100000000000000000000000000 base units, or `0x52b7d2dcc80cd2e4000000` in hex. The token has 18 decimals, so that is exactly 100,000,000 VERI. The constructor ran once, in the [creation transaction](https://etherscan.io/tx/0xfda7aad54c81d9bc8e7a67e68821a24009c2bcd5e9b9a47b71f40d5a45f3a6fc) of 23 Apr 2017, and no later code path writes `totalSupply`.

## No mint, burn or pause

The contract's state-changing functions are `transfer`, `transferFrom`, `approve` and `transferOwnership`, and that is the complete list (see the [function table](https://veri.how/veri/contract.md#functions-and-events)). None of them touches `totalSupply`. There is no function that creates tokens, none that destroys them, and none that stops transfers. Because the contract is [not upgradeable](https://veri.how/veri/contract.md#not-upgradeable), no such function can be added.

## What still counts in the supply

`totalSupply` never goes down, even when tokens become unreachable:

- **Tokens sent to the zero address.** `transfer` and `transferFrom` have no zero-address check, so VERI can be sent to `0x0`. It stays in `balances[0x0]` and in `totalSupply`. The zero address holds a non-zero VERI balance today; the second command below reads it.
- **Balances overwritten by `transferOwnership`.** That function copies the owner's balance onto the new owner instead of adding to it, so any VERI the new owner already held is destroyed without `totalSupply` changing. It has been called once, from a fresh address, so nothing was lost in practice. The details are in [How VERI differs from a modern ERC-20](https://veri.how/veri/erc20-quirks.md#transferownership-moves-the-owners-whole-balance).

So the sum of all balances can be smaller than `totalSupply`, but `totalSupply` itself is a constant.

## Two declarations, one getter

`totalSupply` is declared twice in the source: once in the abstract `ERC20` contract, which nothing ever writes, and once in `VeritaseumToken`, where it is initialised. The second shadows the first. The getter in the ABI returns the `VeritaseumToken` value, 10^26, which is what Etherscan's [Read Contract](https://etherscan.io/address/0x8f3470a7388c05ee4e7af3d01d8c722b0ff52374#readContract) view and the command below return.

## Check it yourself

Each command is an [`eth_call`](https://ethereum.org/developers/docs/apis/json-rpc/#eth-call) to a public Ethereum JSON-RPC endpoint.

```sh
# totalSupply(): 0x…52b7d2dcc80cd2e4000000 = 100000000000000000000000000 = 100,000,000 × 10^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":"0x18160ddd"},"latest"]}'

# balanceOf(0x0): VERI sent to the zero address, still part of totalSupply
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":"0x70a082310000000000000000000000000000000000000000000000000000000000000000"},"latest"]}'
```

To turn the hex result into tokens, remove the `0x`, convert to decimal and divide by 10^18:

```sh
python3 -c 'print(int("0x52b7d2dcc80cd2e4000000", 16) // 10**18)'   # 100000000
```

`https://eth.drpc.org` answers the same calls if the first endpoint is busy.

With [Foundry](https://www.getfoundry.sh/introduction/installation) installed, its `cast` command runs the same calls and decodes the answers:

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

# 100000000000000000000000000 [1e26]
cast call 0x8f3470a7388c05ee4e7af3d01d8c722b0ff52374 'totalSupply()(uint256)'

# The same, in whole VERI: 100000000.000000000000000000
cast call 0x8f3470a7388c05ee4e7af3d01d8c722b0ff52374 'totalSupply()' | xargs cast from-wei

# The zero address's balance, in base units
cast call 0x8f3470a7388c05ee4e7af3d01d8c722b0ff52374 'balanceOf(address)(uint256)' $(cast address-zero)
```

## Sources

1. [VERI verified source, Etherscan](https://etherscan.io/address/0x8f3470a7388c05ee4e7af3d01d8c722b0ff52374#code)
2. [VERI Read Contract view, Etherscan](https://etherscan.io/address/0x8f3470a7388c05ee4e7af3d01d8c722b0ff52374#readContract)
3. [VERI contract creation transaction, Etherscan](https://etherscan.io/tx/0xfda7aad54c81d9bc8e7a67e68821a24009c2bcd5e9b9a47b71f40d5a45f3a6fc)

## Related

- [VERI token contract 0x8f3470A7388c05eE4e7AF3d01D8C722b0FF52374](https://veri.how/veri/contract.md): 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.
- [How VERI differs from a modern ERC-20](https://veri.how/veri/erc20-quirks.md): VERI is 2017 code whose initial allocation and ownership transfer emit no Transfer event, whose decimals() returns uint256, whose failed transfers throw instead of returning false, which has no zero-address checks, and whose transferOwnership moves the owner's whole balance to the new owner, as its one call on 24 Apr 2017 did with all 100,000,000 VERI.
- [Check a VERI balance](https://veri.how/veri/check-balance.md): Call balanceOf(address) on the VERI contract through a public Ethereum JSON-RPC endpoint with curl and divide the result by 10^18; read the balance rather than summing Transfer logs, which miss two balance changes.
