You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Keep VIDEO_SCRIPT.md as-is on this branch; the index-seed program change
stands on its own. The updated script is delivered separately.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RajngzX57RGaQx5sKPbysZ
Copy file name to clipboardExpand all lines: finance/vault-strategy/VIDEO_SCRIPT.md
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -29,7 +29,7 @@ Custody is the whole game, so let us name the boxes before we move money.
29
29
30
30
First, the word vault, because it gets overloaded. By the common standard a vault holds a single asset: you put one kind of token in, you get shares out. A managed mix of several assets is not one vault; it lives in several vaults, one per asset, and is usually called a basket or a fund. Symmetry calls its multi-asset products baskets. We will keep it simple: a vault is one single-asset token account, and the strategy is the whole construct that owns them. So vault strategy reads literally, a strategy built from vaults.
31
31
32
-
The center of everything is the `Strategy` account, whose address is a PDA derived from the seeds `"strategy"` plus an index: zero for the first strategy, one for the next, and so on. A PDA is an address with no private key: it is found deliberately off the signing curve, so no key can sign for it and only the program can, by supplying the seeds. The strategy PDA is the authority over the USDC vault, every asset vault, and the share mint. Each vault is an associated token account owned by the strategy PDA and holds exactly one asset. The share mint's address is also a PDA, seeds `"share_mint"` plus the strategy address, so it is deterministic, one share mint per strategy, with the strategy PDA as its mint authority.
32
+
The center of everything is the `Strategy` account, whose address is a PDA derived from the seeds `"strategy"` plus Maria's public key. A PDA is an address with no private key: it is found deliberately off the signing curve, so no key can sign for it and only the program can, by supplying the seeds. The strategy PDA is the authority over the USDC vault, every asset vault, and the share mint. Each vault is an associated token account owned by the strategy PDA and holds exactly one asset. The share mint's address is also a PDA, seeds `"share_mint"` plus the strategy address, so it is deterministic, one share mint per strategy, with the strategy PDA as its mint authority.
33
33
34
34
The asset set is not fixed. Each asset the strategy holds gets its own small account, an `AssetConfig`, whose address is a PDA seeded by the strategy and an index: zero, one, two, and so on. That indexing matters later: the assets are exactly the range zero up to the count, so any handler that values the whole strategy can re-derive every one and refuse to run if a single asset account is missing.
35
35
@@ -39,7 +39,7 @@ ON SCREEN:
39
39
40
40
```
41
41
Registry [off curve - PDA, seeds: "registry" + authority] owner = curator, not a manager
42
-
Strategy [off curve - PDA, seeds: "strategy" + index] manager stored as a field, not a seed
AssetConfig #i [off curve - PDA, seeds: "asset" + strategy + index] one per asset
@@ -72,15 +72,15 @@ Fee generated: none
72
72
73
73
NARRATION:
74
74
75
-
Maria is our portfolio manager, and she wants to run the basket and earn the fee. She calls `initialize_strategy`, picking index zero, which fixes her strategy's address at the seeds `"strategy"` plus zero, and binding it to Victor's registry. Her own key is still recorded on the strategy as the manager, the account that holds her management powers; it is just no longer part of the address. She sets two numbers and no assets yet: a fee of one hundred basis points, which is one percent a year, and a maximum slippage of one hundred basis points, which we will use when she trades. Both are capped in code, the fee at ten percent and the slippage tolerance at ten percent, and both are fixed here at creation with no setter to change them later.
75
+
Maria is our portfolio manager, and she wants to run the basket and earn the fee. She calls `initialize_strategy`, binding her strategyto Victor's registry. She sets two numbers and no assets yet: a fee of one hundred basis points, which is one percent a year, and a maximum slippage of one hundred basis points, which we will use when she trades. Both are capped in code, the fee at ten percent and the slippage tolerance at ten percent, and both are fixed here at creation with no setter to change them later.
76
76
77
77
The fee cap exists because the fee is paid by minting new shares to the manager; an uncapped fee would let a manager dilute depositors to nothing by configuration alone.
0 commit comments