SpikoVault
Documentation for eth_defi.tokenised_fund.spiko.vault.SpikoVault Python class.
- class SpikoVault
Bases:
eth_defi.vault.base.VaultBaseRead-only Ethereum adapter for Spiko USTBL.
The adapter calculates NAV from ERC-20 supply and the official issuer Oracle. It cannot perform investor dealing: transfers and servicing are controlled by Spiko’s permission manager and redemption workflow.
Create a verified USTBL adapter.
- Parameters
web3 – Ethereum Web3 connection.
spec – Ethereum chain and USTBL token identifier.
token_cache – Optional ERC-20 metadata cache.
features – Classification flags supplied by the shared factory.
default_block_identifier – Accepted for factory compatibility.
require_denomination_token – Accepted for
VaultBasecompatibility.
- Raises
ValueError – If the requested product is not Ethereum USTBL.
Attributes summary
Return the USTBL token address.
Return the USTBL deployment chain id.
Get the token which denominates the vault valuation
Deposit manager assocaited with this vault
Return Spiko's public fund description.
Flow manager associated with this vault
Get info dictionary related to this vault deployment.
Return the protocol-operated curator identity.
Return the on-chain share token name.
Read the NAV oracle decimal scale.
Return Spiko's verified Chainlink-compatible NAV oracle.
ERC-20 that presents vault shares.
Return a concise public listing description.
Return the on-chain share token symbol.
Return the shared scanner vault identifier.
Methods summary
__init__(web3, spec[, token_cache, ...])Create a verified USTBL adapter.
convert_raw_share_price(raw_price)Convert oracle units to USD NAV per USTBL token.
fetch_available_liquidity([block_identifier])Get the amount of denomination token available for immediate withdrawal.
Return no on-chain denomination-token metadata.
Return no surrogate ERC-20 denomination token.
Explain unavailable generic subscriptions.
Get when deposits will next be open.
Export verified on-chain USTBL integration metadata.
fetch_nav([block_identifier])Read USTBL total NAV.
fetch_portfolio(universe[, block_identifier])Return no directly observable underlying portfolio.
Explain unavailable generic redemptions.
Get when withdrawals/redemptions will next be open.
Expose valuation and restricted-flow diagnostics.
fetch_share_price([block_identifier])Read the official USTBL NAV/share.
Fetch USTBL ERC-20 details.
fetch_share_token_address([block_identifier])Return USTBL's share token address.
fetch_total_assets([block_identifier])Calculate estimated fund NAV from supply and issuer NAV/share.
fetch_total_supply([block_identifier])Read the outstanding USTBL supply.
fetch_utilisation_percent([block_identifier])Get the percentage of assets currently lent out.
get_deposit_fee(block_identifier)Deposit fee is set to zero by default as vaults usually do not have deposit fees.
Reject public generic transaction support.
Return static public transaction-adapter support, if any.
What is the estimated lock-up period for this vault.
Return published USTBL fee metadata.
Get how this vault accounts its fees.
Get various vault state flags from the smart contract.
Reject unsupported generic flow accounting.
get_historical_reader(stateful)Construct the supply and NAV historical reader.
get_link([referral])Return Spiko's USTBL product page.
get_management_fee(block_identifier)Return USTBL's published annual management fee.
Get a human readable message if we know somethign special is going on with this vault.
get_performance_fee(block_identifier)Return no separately published USTBL performance fee.
Return the name of the vault protocol.
get_risk()Get risk profile of this vault.
get_spec()get_withdraw_fee(block_identifier)Withdraw fee is set to zero by default as vaults usually do not have withdraw fees.
Report unsupported generic flow-event accounting.
Does this vault have fees outside the shared fee model.
Report unavailable on-chain portfolio distribution.
- __init__(web3, spec, token_cache=None, features=None, default_block_identifier=None, require_denomination_token=False)
Create a verified USTBL adapter.
- Parameters
web3 (web3.main.Web3) – Ethereum Web3 connection.
spec (eth_defi.vault.base.VaultSpec) – Ethereum chain and USTBL token identifier.
token_cache (Optional[dict]) – Optional ERC-20 metadata cache.
features (Optional[set[eth_defi.erc_4626.core.ERC4626Feature]]) – Classification flags supplied by the shared factory.
default_block_identifier (Optional[Union[Literal['latest', 'earliest', 'pending', 'safe', 'finalized'], eth_typing.evm.BlockNumber, eth_typing.evm.Hash32, eth_typing.encoding.HexStr, int]]) – Accepted for factory compatibility.
require_denomination_token (bool) – Accepted for
VaultBasecompatibility.
- Raises
ValueError – If the requested product is not Ethereum USTBL.
- property chain_id: int
Return the USTBL deployment chain id.
- Returns
Ethereum mainnet chain id.
- property address: eth_typing.evm.HexAddress
Return the USTBL token address.
- Returns
Checksummed Ethereum address.
- property vault_address: eth_typing.evm.HexAddress
Return the shared scanner vault identifier.
- Returns
USTBL token address.
- property price_oracle_contract: web3.contract.contract.Contract
Return Spiko’s verified Chainlink-compatible NAV oracle.
- Returns
Oracle contract instance.
- property oracle_decimals: int
Read the NAV oracle decimal scale.
- Returns
Number of oracle decimal places.
- property name: str
Return the on-chain share token name.
- Returns
ERC-20 token name.
- property symbol: str
Return the on-chain share token symbol.
- Returns
ERC-20 token symbol.
- property description: str
Return Spiko’s public fund description.
- Returns
Concise fund strategy description.
- property short_description: str
Return a concise public listing description.
- Returns
USTBL eligibility-aware product summary.
- property manager_name: str
Return the protocol-operated curator identity.
- Returns
Spiko.
- fetch_share_token_address(block_identifier='latest')
Return USTBL’s share token address.
- fetch_share_token()
Fetch USTBL ERC-20 details.
- Returns
USTBL token metadata and conversion methods.
- Return type
- fetch_denomination_token_address()
Return no surrogate ERC-20 denomination token.
Spiko servicing supports eligibility-checked fiat and stablecoin settlement choices, but USTBL does not expose an ERC-4626
assettoken. A surrogate would wrongly advertise a public dealing route.- Returns
Always
None.- Return type
- fetch_denomination_token()
Return no on-chain denomination-token metadata.
- Returns
Always
Nonebecause no single public ERC-20 asset exists.- Return type
- convert_raw_share_price(raw_price)
Convert oracle units to USD NAV per USTBL token.
- Parameters
raw_price (int) – Raw Chainlink-compatible oracle answer.
- Returns
Human-readable USD NAV/share.
- Return type
- fetch_share_price(block_identifier='latest')
Read the official USTBL NAV/share.
- Parameters
block_identifier (Union[Literal['latest', 'earliest', 'pending', 'safe', 'finalized'], eth_typing.evm.BlockNumber, eth_typing.evm.Hash32, eth_typing.encoding.HexStr, int]) – Ethereum block tag or historical block number.
- Returns
USD NAV per USTBL.
- Raises
ValueError – If the oracle returns no valid NAV observation.
- Return type
- fetch_total_supply(block_identifier='latest')
Read the outstanding USTBL supply.
- fetch_total_assets(block_identifier='latest')
Calculate estimated fund NAV from supply and issuer NAV/share.
- fetch_nav(block_identifier='latest')
Read USTBL total NAV.
- fetch_info()
Export verified on-chain USTBL integration metadata.
- Returns
Token, oracle and price-source identifiers.
- Return type
- fetch_scan_record_extra_data()
Expose valuation and restricted-flow diagnostics.
- fetch_portfolio(universe, block_identifier=None)
Return no directly observable underlying portfolio.
- Parameters
universe (eth_defi.vault.base.TradingUniverse) – Ignored because USTBL assets are off-chain.
block_identifier (Optional[Union[Literal['latest', 'earliest', 'pending', 'safe', 'finalized'], eth_typing.evm.BlockNumber, eth_typing.evm.Hash32, eth_typing.encoding.HexStr, int]]) – Ignored because holdings are not on-chain.
- Returns
Empty spot portfolio.
- Return type
- has_block_range_event_support()
Report unsupported generic flow-event accounting.
- Returns
Falsebecause servicing is issuer-operated.- Return type
- has_deposit_distribution_to_all_positions()
Report unavailable on-chain portfolio distribution.
- Returns
False.- Return type
- get_flow_manager()
Reject unsupported generic flow accounting.
- Raises
NotImplementedError – Always, as Spiko servicing is bespoke.
- Return type
- get_deposit_manager()
Reject public generic transaction support.
- Raises
NotImplementedError – Always, due to eligibility and daily servicing.
- Return type
- fetch_deposit_closed_reason()
Explain unavailable generic subscriptions.
- Returns
Eligibility and issuer-servicing explanation.
- Return type
- fetch_redemption_closed_reason()
Explain unavailable generic redemptions.
- Returns
Eligibility and issuer-servicing explanation.
- Return type
- get_historical_reader(stateful)
Construct the supply and NAV historical reader.
- Parameters
stateful (bool) – Whether to retain shared reader state.
- Returns
USTBL historical reader.
- Return type
- get_management_fee(block_identifier)
Return USTBL’s published annual management fee.
- get_performance_fee(block_identifier)
Return no separately published USTBL performance fee.
- get_fee_data()
Return published USTBL fee metadata.
- Returns
Management fee with no inferred dealing fees.
- Return type
- get_link(referral=None)
Return Spiko’s USTBL product page.
- property denomination_token: Optional[eth_defi.token.TokenDetails]
Get the token which denominates the vault valuation
Used in deposits and redemptions
Used in NAV calculation
Used in profit benchmarks
Usually USDC
- Returns
Token wrapper instance.
Maybe None for broken vaults like https://arbiscan.io/address/0x9d0fbc852deccb7dcdd6cb224fa7561efda74411#code
Note
Noneresults are not cached — the next access will retry the on-chain call. This avoids permanently caching a transient RPC failure.
- property deposit_manager: eth_defi.vault.deposit_redeem.VaultDepositManager
Deposit manager assocaited with this vault
- fetch_available_liquidity(block_identifier='latest')
Get the amount of denomination token available for immediate withdrawal.
Only applicable to lending protocol vaults (IPOR, Euler, Morpho, Gearbox, etc.). Non-lending protocols should leave this method unimplemented.
Note: maxRedeem(address(0)) does NOT work as a proxy for available liquidity because it requires a specific address that has already deposited shares. For address(0), balanceOf is always 0, so maxRedeem returns 0 regardless of actual liquidity.
- Parameters
block_identifier (Union[Literal['latest', 'earliest', 'pending', 'safe', 'finalized'], eth_typing.evm.BlockNumber, eth_typing.evm.Hash32, eth_typing.encoding.HexStr, int]) – Block to query. Defaults to “latest”.
- Raises
NotImplementedError – For non-lending protocol vaults.
- Returns
Amount in denomination token units (human-readable Decimal).
- Return type
- fetch_deposit_next_open()
Get when deposits will next be open.
For epoch-based vaults (Ostium, D2), return calculated window open time
For non-epoch vaults (Plutus, IPOR, Morpho), return None
Override in protocol-specific subclasses
- Returns
Naive UTC datetime when deposits will next be available, or None if:
Deposits are currently open
Timing is unpredictable (manually controlled)
Protocol does not support timing information
- Return type
- fetch_redemption_next_open()
Get when withdrawals/redemptions will next be open.
For epoch-based vaults (Ostium, D2), return calculated window open time
For non-epoch vaults (Plutus, IPOR, Morpho), return None
Override in protocol-specific subclasses
- Returns
Naive UTC datetime when withdrawals will next be available, or None if:
Withdrawals are currently open
Timing is unpredictable (manually controlled)
Protocol does not support timing information
- Return type
- fetch_utilisation_percent(block_identifier='latest')
Get the percentage of assets currently lent out.
Only applicable to lending protocol vaults (IPOR, Euler, Morpho, Gearbox, etc.). Non-lending protocols should leave this method unimplemented.
- Parameters
block_identifier (Union[Literal['latest', 'earliest', 'pending', 'safe', 'finalized'], eth_typing.evm.BlockNumber, eth_typing.evm.Hash32, eth_typing.encoding.HexStr, int]) – Block to query. Defaults to “latest”.
- Raises
NotImplementedError – For non-lending protocol vaults.
- Returns
Utilisation as float between 0.0 and 1.0 (0% to 100%).
- Return type
- property flow_manager: eth_defi.vault.base.VaultFlowManager
Flow manager associated with this vault
- get_deposit_fee(block_identifier)
Deposit fee is set to zero by default as vaults usually do not have deposit fees.
Internal: Use
get_fee_data().
- get_deposit_manager_capability()
Return static public transaction-adapter support, if any.
This method deliberately does not attempt to construct a manager or query live pause, cap, epoch, balance, allow-list, or liquidity state. Adapters opt in only after their complete deposit and redemption lifecycles have focused coverage.
Noneis therefore the safe default for unknown and protocol-specific vaults.- Returns
Adapter-specific capability object, or
Nonewhen unsupported.- Return type
Optional[eth_defi.vault.deposit_redeem.VaultDepositManagerCapability]
- get_estimated_lock_up()
What is the estimated lock-up period for this vault.
- Returns
None if not know
- Return type
- get_fee_mode()
Get how this vault accounts its fees.
- Return type
- get_flags()
Get various vault state flags from the smart contract.
Override to add status flags
Also add flags from our manual flag list in
eth_defi.vault.flag
- Returns
Flag set.
Do not modify in place.
- Return type
- get_notes()
Get a human readable message if we know somethign special is going on with this vault.
- get_protocol_name()
Return the name of the vault protocol.
- Return type
- get_risk()
Get risk profile of this vault.
- Return type
- get_withdraw_fee(block_identifier)
Withdraw fee is set to zero by default as vaults usually do not have withdraw fees.
Internal: Use
get_fee_data().
- has_custom_fees()
Does this vault have fees outside the shared fee model.
Custom fees cause risk in vault comparison because the shared management/performance/deposit/withdraw fee fields cannot describe the full fee structure.
Do not return
Truemerely because a vault implements custom accessors for ordinary management, performance, deposit, or withdraw fees. ReturnTrueonly when some vault fee cannot be reflected in those standard fields as a fee-like value.- Returns
Trueif the vault has fees outside the shared fee model.- Return type
- property info: eth_defi.vault.base.VaultInfo
Get info dictionary related to this vault deployment.
Get cached data on the various vault parameters
- Returns
Vault protocol specific information dictionary
- property share_token: eth_defi.token.TokenDetails
ERC-20 that presents vault shares.
User gets shares on deposit and burns them on redemption