Vertrauensmodell
Wer was tun kann. Die ehrliche Antwort, nicht die aus dem Marketing.
Seit dem 2026-10-02 ist fast jeder Contract des Protokolls upgradebar: Der Owner von StockFun kann seinen Code ersetzen, mit sofortiger Wirkung. Seit dem 2026-10-05 sind die Zahlen des Protokolls, von der Tax bis zum Zyklus des Airdrops, außerdem Onchain-Einstellungen des Owners, ebenfalls mit sofortiger Wirkung: Die Zahlen, die dieses Buch nennt, sind ihre Standardwerte, unten aufgeführt zusammen mit dem, was fest bleibt. Jede Regel, die dieses Buch einem Modul zuschreibt, ist die Regel seiner aktuellen Implementierung. Außerhalb der Upgrade-Befugnis liegen die Tokens, der Liquiditäts-Lock und, auf Robinhood Chain, der Deployer der Spiegel-Vaults.
Was niemand tun kann
Diese Punkte beruhen auf Contracts, die nicht upgradebar sind. Sie gelten, was auch immer der Owner upgradet oder einstellt.
- Neue Tokens minten. Die Supply wird einmal gemintet, im Konstruktor, und die Tokens sind nicht upgradebar
- Die Tokens eines Holders ohne seine Freigabe bewegen. Der Setter der Tokens,
setRecorder, bewegt keinen Saldo, und ihre Rescues bewegen seit dem 2026-10-05 nur, was an die eigene Adresse des Tokens gesendet wurde - Die Liquidität eines Pools ohne öffentliche Vorankündigung von 30 Tagen entfernen. Der Lock ist nicht upgradebar, sein einziger Ausgang ist der Endmodus, siehe unten, und seine 30 Tage sind eine Konstante, keine Einstellung. Seine Rescues erreichen seit dem 2026-10-05 weder die Positionen noch die Gebührenanteile, die er für ihre Empfänger behält
- Die LP-Gebühr oder das Tick-Spacing eines laufenden Pools ändern. Jeder Pool behält die Werte, mit denen er erstellt wurde: Sie sind Teil seines Pool-Keys, den der Lock festhält
Was der aktuelle Code ausschließt
Mit den aktuellen Implementierungen kann niemand Folgendes tun, auch der Owner nicht. Jeder Punkt beruht auf einem Modul, das der Owner upgraden kann.
- Einem StockFun-Pool Liquidität hinzufügen. Nur der Liquiditäts-Lock kann das, seit dem 2026-10-01
- Den Handel durch eine Gebühren-Wallet oder einen Vault blockieren. Nur der Treasury-Anteil wird während eines Trades ausgezahlt, und seit dem 2026-10-05 wird einem Vault, der ihn ablehnt, der Betrag stattdessen geschuldet; die anderen werden danach geclaimt
- Die Zusammensetzung eines Baskets nach der Erstellung ändern
- Die Preis-Feeds ändern, die ein bestehender Vault liest. Jeder Feed wird einmal geschrieben, bei der Initialisierung des Oracles, und jeder Vault behält sein Oracle; die Heartbeats der Feeds sind Einstellungen und, seit dem 2026-10-06, die zwei Schutzmechanismen des Oracles auf Robinhood Chain, die einen Preis nur zurückhalten, nie ändern können
- Tokens aus dem
$STOCKFUN-Buyback irgendwohin senden außer in den Burn - Wählen, wer einen Airdrop erhält, oder den Anteil eines anderen claimen. Die Aufteilung ergibt sich aus den aufgezeichneten Beständen, pro rata, und nur der Holder claimt
Was ein Creator tun kann
- Den Creator-Posten jedes Trades auf dem eigenen Markt verdienen, standardmäßig 2 %, und ihn
claimen, seit dem 2026-10-05 auf Wunsch an eine andere Adresse (
claimCreatorFeesTo) - Die Anti-Snipe-Whitelist des eigenen Marktes festlegen, deren Adressen während der ersten Blöcke die normale Tax zahlen: standardmäßig höchstens 20 Adressen, in der Erstellungstransaktion fixiert, öffentlich und danach nicht mehr änderbar
- Den eigenen Token kaufen und verkaufen, wie jeder andere
Er erhält keine Allokation, kontrolliert die Liquidität nicht und kann seinen Markt nicht pausieren. Er hat keine Befugnis über die Treasury: Er erhält Aktien nur wie jeder andere Holder.
Was der Keeper tun kann
Konvertierungen auslösen, zu einem Zeitpunkt seiner Wahl, in Beträgen, die er nennt, auf Routen, die er vorschlägt. Immer innerhalb der Oracle-Grenzen des Vaults und der Reservierung jeder Aktie, und ohne je zu wählen, wer was erhält. Seit dem 2026-10-01 ändert das Überspringen einer Aktie die Gewichtungen des Baskets nicht mehr: Diese Aktie behält ihren Anteil für später. Seit dem 2026-10-05 wendet der Vault den Mindestbetrag, den der Keeper nennt, auf das an, was tatsächlich ankommt. Seit dem 2026-10-06 konvertiert der Keeper das ETH eines Vaults einmal pro Airdrop-Zeitfenster, wie am 2026-09-27 beschlossen: Das ist eine eigene Regel des Keepers, die der Vault nicht durchsetzt; der Vault hält nur fest, wann sein ETH zuletzt konvertiert wurde.
Seit dem 2026-10-05 ist er außerdem der Einzige, der einen Bridge-Batch sendet
(bridgeReady), und, zusammen mit dem Owner von StockFun, der Einzige, der den Spiegel-Vault
eines Marktes auf Robinhood Chain vorab deployt (predeploy). Bis dahin stand beides jedem
offen. Der Remote-Hub erfährt aus einem Batch, wer der Keeper ist, daher deployt der Owner von
StockFun vor dem ersten Batch den Vault des ersten Marktes vorab, und ein Markt, dessen Vault
der Keeper nicht vorab deployen kann, wird aus seinem Batch herausgehalten.
Beim Airdrop, seit dem 2026-10-04: den Zyklus eines Marktes eröffnen (openCycle), die
Aktien eines Vaults an den Airdrop-Contract senden (sendToAirdrop, wobei er von Robinhood
Chain aus die LayerZero-Gebühren zahlt) und beiseitegelegte Aktien zuweisen
(assignUnassigned). Er wählt, wann, nie wie viel, was, wohin oder für wen: Der Betrag ist
der Saldo des Vaults, das Ziel ist der Contract, den das Protokoll benennt, und die
Aufteilung ergibt sich aus den Beständen. Jeder kann einen Zyklus eröffnen oder
beiseitegelegte Aktien zuweisen, mit demselben Ergebnis, wer auch immer aufruft. Eine
Sendung, die nach dem nächsten Schließzeitpunkt ankommt, standardmäßig 13:00 UTC, wird über
das Zeitfenster des nächsten Tages gemessen. Sein täglicher Schritt ist seit dem 2026-10-05
geschrieben: siehe Der Keeper. Seit der siebten Audit-Schleife, am 2026-10-06,
sendet er eine Aktie erst, wenn sie so viel wert ist, wie ihr Senden kostet, was nur
entscheidet, wann diese Aktie geht: Was wartet, bleibt im Vault für ein späteres
Zeitfenster. Seit der neunten, am selben Tag, nennt er außerdem das Gas, das jede Zustellung
auf Ethereum erhält, das der Remote-Hub zwischen der Unter- und der Obergrenze hält, die der
Owner von StockFun setzt, und führt von seinem eigenen Key aus eine auf dem Endpoint von
LayerZero auf Ethereum festhängende Zustellung erneut aus, was jeder tun darf: Keines von
beiden ändert, was zugestellt wird, noch wohin.
Seit dem 2026-10-05 zahlt er außerdem in jedem Zyklus aus, was der Hook und der Lock für
einen Empfänger behalten, der es abgelehnt hat (payTreasury, payOwed), und sammelt die
LP-Gebühren eines Pools ein, der mit einer solchen Gebühr erstellt wurde (collectFees).
Jeder kann diese drei Aufrufe ausführen, die nur an die Empfänger zahlen, die die Contracts
benennen.
Sein Key ist ein Hot Key. Der Keeper wählt nie, wohin ein Asset geht.
Was der Owner von StockFun tun kann
Hier liegt das eigentliche Vertrauen. Der Owner von StockFun ist der Protokoll-Owner: der Owner der Factory auf Ethereum, den der Remote-Hub auf Robinhood Chain spiegelt.
- Jedes Modul außer den Tokens, dem Liquiditäts-Lock und dem Deployer der Spiegel-Vaults upgraden, mit sofortiger Wirkung und ohne vorherige Ankündigung. Die Vaults werden einzeln upgegradet, Markt für Markt, auf beiden Chains
- Die Zahlen des Protokolls ändern, mit sofortiger Wirkung und ohne vorherige Ankündigung: die Tax, ihre Aufteilung und das Anti-Snipe, die Erstellungsgebühr, die Form neuer Märkte, die Konvertierungsschwelle und die Preisgrenzen der Vaults, den Zyklus des Airdrops und die übrigen, die unten aufgeführt sind
- Den Endmodus des Locks starten und, 30 Tage später, die gesamte Liquidität jedes Pools,
die von
$STOCKFUNeingeschlossen, an eine beliebige Adresse zurückholen - Den Bestandsaufzeichner festlegen, dem jeder Token seine Transfers meldet. Schlägt die
Meldung fehl, schlägt der Transfer fehl: die einzige bewusste Ausnahme von der Regel, dass
ein Fehler nie den Rest blockiert (siehe Architektur), mit zwei
sofortigen Hebeln,
setRecorder(0), das die Aufzeichnung des Tokens stoppt, und einem Upgrade des Bestandsaufzeichners an derselben Adresse. Seit dem 2026-10-05 lehnt ein Token einen Bestandsaufzeichner ab, der an einen anderenPoolManagervon Uniswap gebunden ist als den seines Pools. Der Bestandsaufzeichner wird per Upgrade aktualisiert, was seine Historie bewahrt, und bei einem laufenden Token nicht ersetzt: Seit dem 2026-10-05 startet ein Ersatz mit der Supply des Tokens außerhalb desPoolManagervon Uniswap, sodass der Handel weitergeht und der Airdrop kein Zeitfenster misst, das vor ihm begann; aber er liest die Holder, bei denen er keine Bewegung gesehen hat, bis zu ihrer nächsten Bewegung so, als hätten sie nichts gehalten; ein Zeitfenster, das sie überspannen, zahlt ihnen daher weniger aus, und niemandem mehr. Bis zum 2026-10-05 ließ ein neuer Bestandsaufzeichner jeden Verkauf fehlschlagen und brach die Airdrop-Anteile der danach eröffneten Zyklen - Baskets registrieren, bevor sie eingefroren werden
- Die Write-once-Adressen setzen, einmal
- Den Keeper und die Gebühren-Wallets festlegen. Ein Claim zahlt an die Wallet, die zum Zeitpunkt des Claims festgelegt ist, sodass eine Änderung auch das noch nicht geclaimte Guthaben von Team oder Buyback umleitet
- Den offiziellen Swap-Router ändern, der in der Factory hinterlegt ist, also den, über den der Hook die Anti-Snipe-Whitelist erkennt
- Künftige Vaults auf einen anderen Aktien-Router oder ein anderes Oracle-Register verweisen lassen; bestehende Vaults behalten ihre bisherigen
- Jede Aktie eines Baskets ihrem Token auf Robinhood Chain zuordnen; Zuordnungen lassen sich nur hinzufügen
- Die Ausschlussliste des Airdrops für jeden Token festlegen, für die danach schließenden
Zeitfenster (
setExclusions); das OFT jeder Aktie auf Ethereum registrieren (registerStockOft) - Den Airdrop-Contract benennen, an den die Vaults senden (
setAirdropDistributor); ein ersetzter behält jeden Zyklus dort claimbar, wo er ist. Auf Robinhood Chain die Airdrop-Route benennen, den Contract und das Gas jeder Zustellung (setAirdrop), und den Adapter jeder Aktie (setStockAdapter); seit dem 2026-10-06 den Standardwert, die Untergrenze und die Obergrenze des Gases setzen, das jede Zustellung auf Ethereum erhält (setAirdropReceiveGas,setAirdropComposeGas) - Den Bridge-Adapter für künftige Sendungen austauschen, sofort (
changeAdapter), durch einen Adapter, der exakt dieselben Fixierungen behält: denselben Hub, dieselbe Factory, dieselben Cash-Tokens, denselben Remote-Hub und dasselbe Ziel. Das Security-Audit vom 2026-09-29 hat festgestellt, dass der Remote-Hub die Batches des neuen Adapters ablehnen würde (M-2); am 2026-10-05 hat der Owner entschieden, es so zu belassen, daher wird ein Adapter geändert, indem man ihn per Upgrade aktualisiert, an derselben Adresse - Konvertierungen und Bridging pausieren, sofort. Ein pausierter Remote-Hub wendet die Rollenänderungen, die jeder Batch trägt, weiterhin an. Auf dem Airdrop-Contract stoppt die Pause die Sendungen, das Eröffnen und das Zuweisen beiseitegelegter Aktien, nie einen Claim
- Jedes Asset aus einer Treasury, einem Bridge-Hub oder dem Airdrop-Contract an eine
beliebige Adresse bewegen, sofort und ohne vorherige Ankündigung (
emergencyTransfer), auf beiden Chains, jederzeit; auf dem Remote-Hub seit dem 2026-10-05 auch einem einzelnen Markt angelastet, dessen Bücher im selben Aufruf bereinigt werden (emergencyTransferFromPending,emergencyTransferRecord) - Nach einem solchen Transfer aus dem Airdrop-Contract oder dem Remote-Hub den Verlust
zulasten des Zyklus oder des Marktes abschreiben, der ihn erlitten hat (
writeDownCycle,writeDownUnassigned,writeOffPending,writeOffRecord, seit dem 2026-10-05). Eine teilweise Abschreibung zulasten eines Zyklus ist nur möglich, solange niemand die Aktie aus ihm geclaimt hat, wobei dann jeder Holder denselben Anteil verliert; sobald einige Holder ausgezahlt worden sind, nur noch die Abschreibung seines gesamten Rests, den die noch nicht ausgezahlten Holder verlieren, und was den Zyklus danach erreicht, wird wieder pro rata zwischen allen seinen Holdern aufgeteilt. Kein anderer Markt zahlt dafür; bis der Verlust abgeschrieben ist oder die Assets überrestorezurückkommen, das jeder aufrufen kann, warten die Auszahlungen dessen, was fehlt, und die anderen laufen weiter: Ein Claim zahlt die anderen Aktien aus. Beide Contracts zählen, was ihre Bücher deckt, nie ihren Saldo: Assets auf dem Weg zu einem anderen Markt zahlen nie für den Verlust, und ein einfacher Transfer an sie deckt nichts - Herausholen, was ein Modul versehentlich hält (
rescue, seit dem 2026-10-05): ETH oder Tokens, die an ein Modul gesendet wurden, das nichts von irgendwem behält; die verirrten Beträge des Hooks, nie das, was er schuldet; was der Lock über die Gebührenanteile hinaus hält, die er behält, nie seine Positionen; das ETH desBuybackBurnererst, wenn kein Burn es mehr ausgeben könnte; was an die eigene Adresse eines Tokens gesendet wurde. Siehe Notfallmodus - Die LayerZero-Konfiguration der Aktien-Adapter des Airdrops ändern, ohne vorherige Ankündigung und ohne Obergrenze für Abhebungen
Das Upgrade ist die weitreichendste dieser Befugnisse: Es erreicht jede Regel der zweiten Liste oben, auf einen Schlag. Zusammen mit den Einstellungen, dem Endmodus, dem Notfall-Transfer und der Konfiguration der Aktien-Adapter bedeutet es, dass StockFun nicht trustless ist und das auch nicht behauptet. Die Treasury wird vom Protokoll bewacht, mit einem Recovery-Pfad, den der Owner kontrolliert.
Die Einstellungen
Seit dem 2026-10-05 sind die Zahlen des Protokolls Onchain-Einstellungen des Owners von StockFun, auf beiden Chains. Jede wirkt in der Transaktion, die sie setzt, ohne vorherige Ankündigung, emittiert ein Event und lehnt unmögliche Werte ab: einen Satz über 100 %, eine Aufteilung, die größer ist als die Tax, eine Launch-Form, die ein Pool nicht aufnehmen kann. Die Werte unten sind die Standardwerte, also die, die dieses Buch nennt.
| Einstellung | Standardwert | Gesetzt auf |
|---|---|---|
| Die Tax auf jeden Trade, Käufe und Verkäufe | 5 % | Hook, setTaxSettings |
| Ihre Posten auf einem gelaunchten Markt: Treasury, Creator, Team; der Buyback erhält den Rest | 2 %, 2 %, 0,5 %; Buyback 0,5 % | Hook, setTaxSettings |
Ihre Posten auf dem $STOCKFUN-Markt: Treasury, Team; der Buyback erhält den Rest |
2 %, 2,5 %; Buyback 0,5 % | Hook, setTaxSettings |
| Das Anti-Snipe: Tax im Eröffnungsblock, Abnahme pro Block, Dauer in Blöcken | 80 %, 8 Prozentpunkte, 10 Blöcke | Hook, setTaxSettings |
| Die größte Anti-Snipe-Whitelist eines Marktes | 20 Adressen | Hook, setTaxSettings |
| Die Erstellungsgebühr, an die Team-Wallet gezahlt | 0,001 ETH | Factory, setCreationFee |
| Die Längengrenzen eines neuen Marktes: Ticker, Name, Bild-URI, Beschreibung | 2 bis 10, 48, 256, 512 Bytes | Factory, setStringLimits |
| Die Form neuer Märkte: Supply, Band 1, Ticks, Tick-Spacing, LP-Gebühr | 1.000.000.000 Tokens, 700.000.000 in Band 1, Ticks 195.000 / 171.960 / −887.220, Spacing 60, keine LP-Gebühr | Factory, setLaunchConfig |
Was die gesperrten Positionen einsammeln, ETH-Seite: Anteile des Vaults des Marktes und des Teams; der Creator, oder bei $STOCKFUN das Team, erhält den Rest |
50 %, 25 %; Creator 25 % | Factory, setLpFeeShares |
| Der kleinste Betrag, den ein Vault konvertiert, und seine Preisgrenzen gegenüber dem Oracle bei ETH → USDC und beim Kauf einer Aktie | 0,1 ETH, 50 bps, 200 bps | Factory, setConversionParams |
| Die Preisgrenze der Käufe der Spiegel-Vaults | 200 bps | Remote-Hub, setStockMaxSlippageBps |
| Die Heartbeats der Oracles: ETH/USD, jede Aktie | 1 Stunde und 1 Tag in den Deployment-Skripten | Oracle jeder Chain, setEthUsdHeartbeat, setHeartbeat |
| Die Sequencer-Prüfung: der L2-Sequencer-Uptime-Feed von Chainlink und die Karenzzeit nach einem Neustart, während der jeder Preis des Oracles zurückgehalten wird (seit dem 2026-10-06) | Aus: Für Robinhood Chain gibt es keinen solchen Feed, daher läuft das Deployment mit der Prüfung aus; 3.600 Sekunden Karenzzeit, wenn ein Feed gesetzt ist | Oracle jeder Chain, setSequencerUptimeFeed; aus auf Ethereum |
| Die Oracle-Pause jeder Aktie: ihr Preis wird zurückgehalten, solange ihr Token sagt, dass sein Oracle für eine Kapitalmaßnahme pausiert ist (seit dem 2026-10-06) | An für jede Aktie auf Robinhood Chain, aus auf Ethereum | Oracle jeder Chain, setOraclePauseCheck, pro Aktie |
| Die Zeitfenster des Airdrops: Länge, Schließzeitpunkt | 24 Stunden, 13:00 UTC | Airdrop-Contract, setCycleSchedule |
Die Limits des Airdrops: größte Ausschlussliste, Zeitfenster, die ein assignUnassigned prüft |
16, 30 | Airdrop-Contract, setMaxExcluded, setMaxWindowsPerAssign |
| Der LayerZero-Endpoint des Airdrops und seine Quell-Chain | Wie deployt | Airdrop-Contract, setLayerZero |
| Die USDG-Bridge: schlechtester akzeptierter Kurs USDG pro USDC auf Curve, und der Teil des letzten Schritts eines Batches auf Robinhood Chain, den jeder Batch braucht (bis zur zehnten Audit-Schleife eine einzige Zahl für den ganzen Schritt, 1.200.000) | 30 bps, 200.000 Gas | UsdgOftAdapter, setSettings |
| Der Batch der USDG-Bridge: das Gas, das jeder Markt eines Batches diesem Schritt hinzufügt, und die Höchstzahl an Märkten, die ein Batch trägt, die die Nachrichtengröße von LayerZero bestimmt (seit der zehnten Audit-Schleife; das Gas des größten Batches beträgt höchstens 24.000.000, was immer die Einstellungen sind) | 400.000 Gas, 17 Märkte | UsdgOftAdapter, setBatchGas |
| Die kanonische Bridge: Gas ihrer zwei Tickets, deren Submission-Kosten Untergrenzen sind | Wie deployt | ArbitrumCanonicalAdapter, setTicketGas |
| Die kanonische Bridge: Bytes, nach denen die Kosten des Einzahlungstickets berechnet werden | 1.024 | ArbitrumCanonicalAdapter, setDepositCalldataLength |
| Die Einträge, die ein Sweep auf dem Remote-Hub auszahlt | 64 | Remote-Hub, setMaxRecordsPerSweep |
Das lzReceive-Gas jeder Airdrop-Zustellung auf Ethereum, zusätzlich zu dem, was das OFT der Aktie erzwingt: der Standardwert, die Untergrenze und die Obergrenze dessen, was der Keeper verlangt (seit dem 2026-10-06) |
650.000, 200.000, 1.500.000 | Remote-Hub, setAirdropReceiveGas |
| Das Compose-Gas jeder Airdrop-Zustellung auf dem Airdrop-Contract: der Standardwert, die Untergrenze und die Obergrenze (eine einzige Zahl, 600.000, bis zum 2026-10-06) | 1.250.000, 600.000, 4.000.000 | Remote-Hub, setAirdropComposeGas; der Standardwert auch mit setAirdrop |
- Jeder Pool, ab dem nächsten Swap. Eine Änderung der Tax oder des Anti-Snipe gilt ab dem nächsten Swap auf jedem Pool, auch auf einem Pool, der sich noch in seinen Anti-Snipe-Blöcken befindet: Die Degression wird mit den geltenden Einstellungen berechnet, ab dem Launch-Block des Pools. Das Anti-Snipe verlangt nie weniger als die Tax. Die Obergrenze der Whitelist gilt, wenn ein Markt erstellt wird
- Nur neue Märkte, was ihre Form betrifft. Eine neue Supply, neue Bänder, ein neues
Tick-Spacing oder eine neue LP-Gebühr gelten für die danach erstellten Märkte. Jeder Pool
behält die LP-Gebühr und das Tick-Spacing, mit denen er erstellt wurde, und die Lens gibt
sie an, Markt für Markt; der
$STOCKFUN-Pool übernimmt die Werte, die bei seinem Launch gelten - Live, für die Vaults. Jeder Vault liest die Konvertierungsschwelle und seine Preisgrenzen bei jeder Konvertierung, und der Lock liest die Anteile an den eingesammelten Gebühren bei jedem Einsammeln
- Offene Zyklen behalten ihr Zeitfenster. Ein neuer Zeitplan des Airdrops gilt für die noch nicht eröffneten Zeitfenster und schneidet sie neu, einschließlich derer, die beiseitegelegte Aktien noch prüfen müssen
Was fest bleibt:
- Die Vorankündigung des Endmodus von 30 Tagen,
END_DELAY, eine Konstante des Liquiditäts-Locks, der nicht upgradebar ist - Die Unmittelbarkeit des Notfall-Transfers: Er hat keine Wartefrist, und keine Einstellung kann eine hinzufügen
- Einheiten und Kodierungen: der Basispunkt, die Stunde als Einheit der Bestandsaufzeichnung und der Zeitfenster des Airdrops, die Burn-Adresse, die Nachrichtenformate
- Die Verdrahtung: die Preis-Feeds, die Pools, auf denen der Aktien-Router auf Ethereum kauft, das USDG-OFT, die LayerZero-Endpoints der Bridge, der Remote-Hub, der Curve-Pool. Sie sind beim Deployment festgelegt oder einmal geschrieben; eines davon zu ändern bedeutet, auf einen anderen Contract zu verweisen, was ein Upgrade erfordert
Upgrades
Seit dem 2026-10-02 ist jedes Modul ein Proxy, der per UUPS upgegradet wird, außer den Contracts unten. Wie das aufgebaut ist: siehe Architektur.
| Chain | Wer upgradet | Module |
|---|---|---|
| Ethereum | Der Owner der Factory: Jedes Modul fragt die Factory, wer das ist | Die Factory selbst, der Hook, der Bestandsaufzeichner, jeder TreasuryVault, das Oracle, die Aktien-Router, der offizielle Swap-Router, der BuybackBurner, die Lens, der Bridge-Hub und seine Adapter, der Airdrop-Contract |
| Robinhood Chain | Der Notfall-Admin des Remote-Hubs: der Ethereum-Owner, wie ihn der letzte Bridge-Batch übermittelt hat, und, vor dem ersten Batch, der beim Deployment benannte initiale Admin | Der Remote-Hub selbst, jeder Spiegel-Vault, der Aktien-Router, das Oracle |
- Sofort. Ein Upgrade wirkt in der Transaktion, die es ausführt: kein Timelock, keine vorherige Ankündigung, wie bei den Einstellungen und beim Notfall-Transfer
- Geprüft. Nur der Protokoll-Owner kann upgraden. Eine neue Implementierung muss derselben
Upgrade-Autorität unterstehen, und die des Hooks und die des Bestandsaufzeichners müssen
denselben
PoolManagerbehalten - Markt für Markt. Jeder Vault ist ein eigener Proxy. Eine neue Vault-Implementierung, die in der Factory benannt wird, gilt für die danach erstellten Märkte; bestehende Vaults werden einzeln upgegradet
- Storage nur am Ende erweitert, nie umgeordnet. Das Storage-Layout jedes Moduls ist festgehalten, und ein Skript prüft es vor jedem Upgrade, seit dem 2026-10-05 auf jeder Ebene jedes Structs
Diese sind nicht upgradebar:
- Die Tokens, Markt-Tokens und
$STOCKFUN: einfache ERC-20-Tokens, deren Supply einmal gemintet wird, ohne Mint, Burn, Pause oder Blacklist. Ihr einziger Setter,setRecorder, und ihre Rescues gehören dem Protokoll-Owner - Der Liquiditäts-Lock, dessen Code die Liquidität in den Pools hält. Sein einziger Ausgang für die Liquidität ist der Endmodus; seine Rescues erreichen weder die Positionen noch die Anteile, die er behält
- Der Deployer der Spiegel-Vaults, auf Robinhood Chain: Die Adresse jedes Spiegel-Vaults wird aus seiner eigenen abgeleitet
Die zwei Deployer auf Ethereum, die keinen Zustand halten, werden über die Factory ersetzt statt upgegradet.
Der Endmodus
Der einzige Ausgang des Liquiditäts-Locks, hinzugefügt am 2026-10-02 für den Fall, dass das
Projekt eingestellt wird. Der Owner von StockFun ruft end() auf. Ab dann kann kein neuer
Markt mehr gelauncht werden, während auf jedem Pool weiter gehandelt wird. Dreißig Tage später
kann der Owner die gesamte Liquidität jedes Pools an eine beliebige Adresse zurückholen. Der
Owner kann jederzeit abbrechen, solange das Ende aussteht; Pools, deren Liquidität bereits
zurückgeholt wurde, bleiben leer. Die 30 Tage sind die Vorankündigung für die Holder. Details
in Der Launch mit zwei Positionen.
Externe Abhängigkeiten
| Abhängigkeit | Was sie brechen kann |
|---|---|
| Paxos / USDG | Kann pausieren oder einfrieren. Das Cash-Leg der Rail stoppt. Seit dem 2026-10-05 stoppt das Einfrieren eines einzelnen Spiegel-Vaults nur die Zustellungen an diesen Vault: Sein Anteil wartet auf dem Remote-Hub, seinem Markt geschuldet, und die anderen Märkte werden ausgezahlt (R2H-2, geschlossen) |
| LayerZero | Eine verlorene Nachricht lässt Gelder im Transit stranden, bis zum Replay oder zur Recovery. Seit dem 2026-09-28 sichert es auch die gewrappten Aktien des Airdrops ab |
| Robinhood Chain | Eine junge Chain. Ein Ausfall friert die gehaltenen Aktien ein. Seit dem 2026-10-06 kann das Oracle außerdem jeden Preis zurückhalten, solange der Sequencer-Uptime-Feed von Chainlink sagt, dass der Sequencer ausgefallen oder gerade wieder da ist; diese Prüfung ist aus, bis Chainlink einen solchen Feed für Robinhood Chain veröffentlicht, was es nicht getan hat |
| Chainlink-Feeds | Ein veralteter Feed blockiert die Konvertierung, die ihn braucht; seit dem 2026-10-05 bei einer Aktie nur das Leg dieser Aktie. Seit dem 2026-10-06 gilt das auch für eine Kapitalmaßnahme: Solange der Token einer Aktie sagt, dass sein Oracle pausiert ist, hält der Feed seinen letzten Wert, und das Oracle hält den Preis dieser Aktie zurück, sodass ihr Leg wartet, ihr Cash für sie behalten, und die anderen kaufen. Das ist das beabsichtigte Verhalten |
| Sekundäre Liquidität | Sind die Pools zu dünn, kauft der Keeper in kleineren Tranchen, und die Preisgrenze, standardmäßig 200 bps, verweigert, was sich dann noch nicht ausführen lässt |
Keine dieser Abhängigkeiten ist verborgen, und keine kann ein Asset aus einem Vault an eine Adresse bewegen.
Akzeptierte Risiken
- Ein Upgrade, die Änderung einer Einstellung und ein Notfall-Transfer wirken sofort: Die Holder erhalten davon keine Vorankündigung, anders als beim Endmodus, der 30 Tage im Voraus angekündigt wird
- Jeder Transfer eines Tokens hängt vom Bestandsaufzeichner ab: Eine Meldung, die
fehlschlägt, lässt den Transfer fehlschlagen. Das ist die einzige bewusste Ausnahme von der
Regel, dass ein Fehler nie den Rest blockiert: Eine Meldung, die fehlschlagen dürfte, ließe
einen Holder die Aufzeichnung überspringen und seinen Airdrop-Anteil vergrößern. Ihre Hebel
wirken sofort:
setRecorder(0)auf dem Token oder ein Upgrade des Bestandsaufzeichners an derselben Adresse - Ein Anteil, dessen Empfänger ihn ablehnt, wartet auf diesen Empfänger, auf dem Hook, dem Lock, dem Remote-Hub oder dem Airdrop-Contract, statt den Rest anzuhalten; und ein Notfall-Transfer, der keinem Markt angelastet ist, lässt die Auszahlungen dieses Assets warten, bis er bereinigt ist
- Keine Treasury akkumuliert: Alles wird verteilt, und ein Airdrop kann null sein, wenn niemand tradet
- Der Airdrop wird in gewrappten Aktien auf Ethereum ausgezahlt: Sie sind nur so viel wert wie die auf Robinhood Chain gesperrten Aktien und die LayerZero-Konfiguration, und ein Einfrieren der Stock Tokens durch ihren Emittenten würde die gesperrten Aktien blockieren
- Ein Markt schöpft sein erstes Liquiditätsband möglicherweise nie aus
- Ein Roundtrip kostet 9,75 % vor jeder Preisbewegung, bei der standardmäßigen Tax von 5 %
- Die Cross-Chain-Rail war zum Zeitpunkt, als dieses Buch geschrieben wurde, nicht unter realen Bedingungen erprobt worden