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