Skip to content

Vaults and signals

Registering a term records that it exists. It says nothing about whether anyone considers it important or true. That information comes from vaults.

Vaults

Every registered atom, triple, and counter-triple has a vault in the MultiVault contract. Anyone can deposit TRUST, the network's native currency, into a vault and receive shares in return. Redeeming shares returns TRUST, minus fees.

A deposit is a signal: a public, costly statement that the depositor stands behind the term.

  • A deposit on an atom signals that the thing it identifies matters.
  • A deposit on a triple signals agreement with its claim.
  • A deposit on a counter-triple signals disagreement.

Redeeming shares withdraws the signal. Because a signal costs something to make, it carries more weight than a free rating.

You cannot hold shares in a triple and in its counter-triple on the same bonding curve. To change sides, redeem your shares on one side first.

Bonding curves

A bonding curve sets the price of a vault's shares. A term has a separate vault on each curve, and each curve has a numeric curve ID. The BondingCurveRegistry contract lists the available curves. On mainnet, they are:

Curve IDCurveHow the share price moves
1Linear Curve (default)Rises only as fees accumulate in the vault
2Offset Progressive CurveRises as more shares are issued

The vault on the default curve is created together with the term. A vault on any other curve is created by its first deposit.

On a curve whose price rises with supply, earlier depositors receive more shares for the same amount than later ones. To preview the outcome of a deposit, use @0xintuition/curves, which needs no network call, or call the contract's previewDeposit and previewRedeem functions.

Fees

Deposits and redemptions can incur the following fees. The rates are contract configuration, so read them from the chain with getVaultFees, getAtomConfig, and getTripleConfig rather than hard-coding them.

FeeCharged onGoes to
Protocol feeDeposits and redemptionsThe protocol
Entry feeDepositsThe term's vault on the default curve
Exit feeRedemptionsThe term's vault on the default curve
Atom wallet deposit feeDeposits on an atomThe atom's wallet
Atom deposit fractionDeposits on a triple or counter-tripleThe vaults of the triple's three terms, in equal parts

Each atom has an atom wallet, a smart contract account linked to the atom. The fees it collects are paid to the wallet's owner when claimed.

Entry and exit fees apply only while the term's vault on the default curve holds at least a threshold number of shares (feeThreshold in the contract's general configuration), so the first deposits into a new vault do not pay them. The atom deposit fraction applies only when the default-curve vaults of all three of the triple's terms meet the same threshold.

Two consequences follow. Holding shares in a vault that others later deposit into increases the value of those shares. And activity on a triple rewards the holders of the terms it is built from.

The cost of creating a term

Creating a term requires a minimum payment. It covers a fixed creation fee and a small number of initial shares, which the contract issues to a burn address so that a new vault is never empty. The minimum for a triple covers initial shares for both the triple and its counter-triple. Any amount above the minimum is deposited into the new vault on your behalf, minus fees.

Read the current amounts from the contract rather than hard-coding them. In this example, address is the MultiVault address and publicClient is a viem public client, set up as in Read the chain:

import {
  multiVaultGetAtomCost,
  multiVaultGetTripleCost,
} from '@0xintuition/protocol';

const atomCost = await multiVaultGetAtomCost({ address, publicClient });
const tripleCost = await multiVaultGetTripleCost({ address, publicClient });

Collecting fees in your application

An application that routes deposits through its own contract can add a fee of its own. See Fee proxy.

Signals in Intuition Core

When a node indexes the chain, its projections maintain read models for vaults, positions, share prices, and signals. Core records every deposit and redemption as a signal for the account, term, and curve involved. See the Data model.