Vault design

Defining Vaults

State what the vault admits and what it rejects. Example, luxury mechanical watches over 50,000 dollars, specific brands, documented provenance, condition bands A to B, serial verification, intake photos and videos.

Vault parameter reference

The lists below document every input a custodian can set, what is fixed by the protocol, and what can be updated later. Think of this as the configuration API for creating and operating a vault.

A) Creation time parameters (passed to the factory when creating a vault)

name

string

1 to 64 chars

Public vault name shown in app.

none

yes

immutable

custodian

Defines the custodian of the vault.

empty

yes

immutable

asset_category

enum

Recommended from protocol taxonomy

Asset family label, for example Watches, Wine, Cars.

none

yes

immutable

asset_characteristics

json

valid URI

Definitions of sub characteristics inside the vault to define eligibility criteria. Each asset claim token shall have qualifying characteristics

none

yes

one time read

eligibility_uri

string (URI or CID)

valid URI

Human readable eligibility rules and evidence requirements.

none

yes

custodian until frozen

custody_policy_uri

string (URI or CID)

valid URI

Storage, handling, insurance process.

none

yes

custodian until frozen

sales_policy_uri

string (URI or CID)

valid URI

When and how you sell assets, buyer selection, conflict rules.

none

yes

custodian until frozen

insurance_docs_uri

string (URI or CID)

valid URI

Proof of cover or insurer summary.

none

no

custodian until frozen

tick_band_bps

uint16

0 to 10,000

Optional width for concentrated liquidity, in basis points around P0. 0 means full range.

0

no

immutable

audit_required

bool

true, false

Post MVP, require external auditor attestations on intake.

false

no

governance

auditor_allowlist

address[]

auditor addresses

Who may attest if audit_required is true.

empty

no

governance

jurisdiction_flags

string[]

ISO country codes or policy tags

Where the vault services are available, or restricted.

empty

no

custodian

deposit_min_quote

uint256

≥ 0

Minimum admitted asset value in quote terms.

0

no

custodian

fractional_claims_allowed

bool

true, false

Whether partial ownership claims can be admitted.

true

no

custodian

accepted_brands

string[]

free text

Optional allow list to make eligibility explicit.

empty

no

custodian

condition_bands

string

free text like "A,B"

Accepted condition grades.

empty

no

custodian

custodian_allocation_bps

uint16

0 to 10,000

Percentage of newly minted vault tokens on each admitted deposit. Default 10%.

1000

no

custodian

depositing_status

bool

true, false

Emergency gate for new admissions. Trading is unaffected.

false

no

custodian

disclosure_uri

string (URI or CID)

valid URI

Running notes and reports, for example distribution memos.

empty

no

custodian

changelog

URI

valid URI

List of changes performed on the vault with timestamps and signatures.

empty

no

custodian

deposit_minimum

unit16

the minimum in USDC currency (in cents) required to trade/invest in the vault (default $1)

100

no

custodian


Protocol constants

  • One way deposits only: Customers can deposit into the vault. Once deposited, their asset claim token is exchanged to vault tokens. The asset claim tokens cannot be converted back.

  • EVEC distributed on redemption: Custodians will be able to determine the rules of their EVEC. Common characteristics is KYC requirements before exchanging the coupon to other cryptocurrencies/fiat.

Token model: Deposits accept asset claim tokens (ERC-721) and mint vault tokens (ERC-20). Deposits are one way. Exits for depositors happen by selling vault tokens in the pool. Direct voting tied to ERC-721 claims applies only while the holder retains the claim and passes checks. After deposit, the vault holds the ERC-721 on behalf of all holders.

Seeding philosophy: Aim for depth that keeps typical tickets inside 1 percent price impact. As a rule of thumb, for constant product pools target around 100 times expected ticket size on the input side. For concentrated liquidity, ensure the active band holds 50 to 100 times the expected ticket and is wide enough to contain normal volatility.

Events

Event

Purpose

VaultCreated(vault, pool, custodian, quoteAsset, feeTier)

Emitted by factory at deployment.

PoolCreated(vault, pool, feeTier)

Emitted by factory when the pool is initialized.

ParamUpdated(key, oldValue, newValue, actor)

Emitted when a mutable parameter is changed.

EligibilityUpdated(uri, version)

Emitted when eligibility rules are updated.

Deposited(depositor, claimId, quoteValue, price, mintedToDepositor, mintedToCustodian)

Emitted on each admitted asset.

DistributionTriggered(kind, amount, memoURI)

Emitted when EVEC is minted for yield or exits.

Paused(kind) and Unpaused(kind)

Emitted when an emergency control is used.

Last updated