Protocol
Contract & status reference
Detailed status definitions, signing rules and published API capabilities.
Buying one stock and holding an index are different products
They differ in what you hold, who custodies it, and how you get out. The interface never blurs the two.
| Difference | Buy it directlytoken in your wallet | Hold an indexvault shares |
|---|---|---|
| What you hold | The bStock token itself, at its own contract address. | ERC-20 shares of a vault that holds the basket. |
| Custody | Your wallet. Nothing of ours touches it after the swap. | A non-custodial contract. No platform wallet holds user assets. |
| How you exit | Sell it back through the same route, whenever a route exists. | Redeem in kind, pro rata: you receive the underlying tokens, not cash. |
| Issuer restrictions | Apply to you directly. A freeze stops your transfer. | Apply per leg. One restricted leg reverts the whole redemption. |
| Price you act on | An executable quote with a deadline and a minimum output. | A fixed-block preview. It is not a promise of execution. |
| Rebalancing | Yours to do. We hold no position and send no instruction. | Only through a reviewed recipe, under governance, within fixed limits. |
| Choose it when | You want one name, and you want the token in hand. | You want a theme in one position, with the weights checked by contract. |
What stays the same in both
The asset is identified by chain id and address, never by symbol. The same evidence chain admitted it. The issuer can freeze or restrict either path, and neither promises you can exit.
What is open today
Execution depends on the path: index shares require a registered vault’s current chain-specific capability; direct buying requires an executable route and measured depth. Configured addresses, test evidence and production permission are separate.
Verification status
Source and code provenance. It says nothing about whether an asset may be used.
| Testnet technical status · DISCOVERED | Imported as a candidate from an archived source. Nothing is confirmed yet. |
| Testnet technical status · SOURCE_REVIEW | The issuer document is under review. |
| Testnet technical status · ONCHAIN_VERIFIED | Onchain capability evidence was recorded at a fixed block. |
| Testnet technical status · VERIFIED | Source and onchain evidence were both reviewed and approved independently. |
| Testnet technical status · REVOKED | A previous approval was withdrawn. Treat this asset as unverified. |
Operation permission
Whether an asset may be used, and in which direction. It is decided independently from verification.
| Display only | May be displayed only. No new exposure and no fund use. |
| Active | Operation is permitted under the registry's current rules. |
| Exit only | No new exposure. Existing exposure may be exited. |
| Paused | Affected exits are disallowed as well. Expect operations to fail. |
| Revoked | Terminal. No new exposure; exit only if the token itself still permits transfer. |
Why the two are separate
An asset can be fully source-verified and still be display-only, and a previously active asset can be paused without its evidence changing. Collapsing the two states into one badge would hide the difference between "we checked the issuer document" and "you may build a fund with this".
Capability status
The API answers 503 CAPABILITY_UNAVAILABLE for a capability that is not implemented. This interface shows that as unavailable. It never substitutes an empty list, a zero balance or a successful transaction.
| Capability | State |
|---|---|
| Asset registry directory | Implemented |
| Asset verification provenance | Implemented |
| Archived official sources | Implemented |
| Fixed-block token capability | Implemented |
| Reference price publication | ImplementedNeeds a licensed price feed; 503 until then |
| Public address check | Implemented |
| Wallet sign-in | Implemented |
| Session and roles | Implemented |
| Business write challenge | Implemented |
| Published strategy discovery | Implemented |
| Strategy drafts | Implemented |
| Strategy publication | Implemented |
| Read-only share link | Implemented |
| Deterministic fact check | ImplementedNeeds a licensed price feed; 503 until then |
| Historical backtest | ImplementedNeeds a licensed price feed; 503 until then |
| Personal watchlist | Implemented |
| Runtime chain and deployment capability | Implemented |
| Canonical testnet in-kind preview | ImplementedNeeds a deployed contract address |
| Registered fund directory | Implemented |
| Fixed-block fund holdings | ImplementedNeeds a canonical fixed-block snapshot; 503 until then |
| Reference NAV | ImplementedNeeds a licensed price feed; 503 until then |
| Sparse NAV history | ImplementedNeeds a licensed price feed; 503 until then |
| Fund activity | ImplementedNeeds a canonical fixed-block snapshot; 503 until then |
| Wallet positions | ImplementedNeeds a canonical fixed-block snapshot; 503 until then |
| Wallet activity | ImplementedNeeds a canonical fixed-block snapshot; 503 until then |
| Transaction intents | Implemented |
| Asset review queue | Implemented |
| Asset source review | Implemented |
| Asset activation | Implemented |
| Restricted fund applications | Implemented |
| Fund governance record | Implemented |
| Legacy basket quote | Not in contractNot declared in the contract; answers 503 |
| Basket buy quote | ImplementedNeeds an approved route provider; 503 by default, and a success is simulation only |
| Basket sell quote | ImplementedNeeds an approved route provider; 503 by default, and a success is simulation only |
| Vault deposit quote | ImplementedNeeds an approved route provider; 503 by default, and a success is simulation only |
| Vault redeem quote | ImplementedNeeds an approved route provider; 503 by default, and a success is simulation only |
How a business write is authorized
A login session proves who you are; it does not authorize a change. Every write serializes its body once, hashes those exact bytes with SHA-256, asks the server for a one-time challenge bound to that method, path and hash, has the wallet sign the server's exact message, and then sends those same bytes with the nonce and signature. Changing one byte, the path or the method invalidates the signature.
A nonce that already succeeded cannot be reused, and the interface never silently creates the same record again. If a response is lost, the outcome is looked up by nonce before anything is retried.
What wallet sign-in means
Sign-in proves you control an address, using a message the server generated. It authorizes API calls for eight hours. It never authorizes a token transfer, an allowance or a fund operation, and it grants no reviewer or governor role.
How amounts are handled
Raw token quantities are integers, carried as BigInt or exact decimal strings. The interface performs no floating-point arithmetic on an amount, and it applies no multiplier until the contract publishes that multiplier's scale.
Risk and limits
- Mainnet production remains disabled. Testnet deployments and synthetic test assets do not satisfy production launch gates.
- No price source, reference NAV or executable quote is published. A preview is never a quote promise.
- Registry records imported from the seed are candidates. A candidate is not verified and is not tradable.
- Tokenized stock issuers can restrict transfers. No interface here can guarantee that a restricted token can be exited.