Il lancio a due posizioni
Dall'emendamento del 2026-09-12 non c'è più una bonding curve. L'intera supply finisce in
liquidità Uniswap v4 bloccata, fin dalla transazione di creazione stessa. Nel codice dal
2026-09-28: LiquidityLock.launchMarket fa tutto questo all'interno della transazione di
creazione del mercato, e i test fissano il prezzo di apertura letto dalla
Lens, 3.401.582.525 wei per token.
Perché la curva è sparita
La vecchia curva era un prodotto costante su riserve virtuali:
x = VIRTUAL_ETH + netReserve (3.75 ETH + ciò che è entrato)
y = TOKEN_RESERVE - tokensSold (1.1 B − ciò che è uscito)
È esattamente ciò che è una posizione di liquidità concentrata: le riserve virtuali di v3/v4 sono quell'offset. La corrispondenza non è un'approssimazione, è la stessa equazione scritta in modo diverso.
Cosa si ottiene eliminandola: nessuna migrazione — il momento più rischioso del protocollo — nessuna commissione di graduation da estrarre, un solo percorso delle commissioni invece di due, e mercati instradabili dagli aggregatori fin dal primo blocco.
Le due bande
tick 195000
apertura"] -->|banda 1 · 700M token · 7.535 ETH| B["FDV 34.091 ETH
tick 171960
10x"] B -->|banda 2 · 300M token · senza limite| C["tick −887220
tetto di prezzo"]
| Banda 1 | Banda 2 | |
|---|---|---|
| Token | 700.000.000 | 300.000.000 |
| Tick | [171960, 195000] |
[−887220, 171960] |
| Profondità | 7,535 ETH per attraversarla | 14,5 ETH a 2× · 45,7 ETH a 20× · 144,6 ETH a 200× |
tickSpacing 60, e nessuna commissione LP.
Queste sono le impostazioni di lancio di default. Dal 2026-10-05 la supply, i token della
banda 1 (la banda 2 prende il resto), il tick di lancio, i tick inferiori delle due bande, il
tick spacing e la commissione LP formano un'unica impostazione dell'owner di StockFun,
setLaunchConfig sulla factory, che vale per i mercati creati in seguito. Rifiuta una forma
che nessun pool potrebbe contenere: una banda vuota, tick fuori dallo spacing o fuori
ordine, un tick spacing o una commissione LP fuori intervallo, bande la cui liquidità un
solo tick non può sostenere. Ogni pool mantiene la forma, la commissione LP e il tick
spacing con cui è stato creato: il lock ne registra i tick, e la Lens fornisce la
commissione LP e il tick spacing di ogni mercato.
Il punto delicato: il prezzo di apertura
Al lancio entrambe le posizioni contengono solo token. È ciò che permette al protocollo di non anticipare alcun ETH: ogni ETH che il pool conterrà mai arriva dagli acquirenti.
Perché una posizione sia token-only, il prezzo corrente deve essere uguale o superiore al massimo del suo range. Da qui:
sqrtStartX96 = TickMath.getSqrtPriceAtTick(BAND1_UPPER); // not sqrt(raw FDV)
Il tick esatto della FDV di lancio è 194.977,95, e il tick utilizzabile più vicino al di
sopra è 195.000. Derivare sqrtStart dalla FDV grezza metterebbe il prezzo dentro la
banda 1, e il controllo NotSingleSided di LiquidityLock rifiuterebbe il deposito.
La quantizzazione lascia una FDV effettiva di 3,4016 ETH invece di 3,409, uno scostamento del −0,22 %.
Come si presenta in pratica
Acquisti successivi da 2 ETH a partire dal lancio, con le impostazioni di default:
| Speso | FDV | Supply detenuta |
|---|---|---|
| 2 ETH | ~$27.600 | 36,1 % |
| 4 ETH | ~$50.400 | 53,3 % |
| 10 ETH | ~$164.000 | 74,8 % |
| 50 ETH | ~$2,78 M | 93,9 % |
Il primo ticket prende il 36,1 % della supply — contro il 36,99 % della vecchia curva. Il lancio si comporta come prima, a meno di un punto, ed era questo il criterio con cui sono stati scelti i parametri.
Il tetto strutturale di una banda
L'ETH che una banda può assorbire, se vi si trovasse il 100 % della supply, è esattamente la media geometrica delle sue due FDV:
$$ E{\max} = \sqrt{\text{FDV}{\text{inizio}} \times \text{FDV}_{\text{fine}}}
$$
È questo a vincolare i parametri: non puoi scegliere liberamente il prezzo di lancio, il massimo della banda e la profondità — il numero di token chiude il sistema.
La modalità di chiusura
Come i token, il lock non è upgradabile: il suo codice è ciò che mantiene la liquidità nei pool. Dal 2026-10-02 ha un'uscita, la modalità di chiusura, per il caso in cui il progetto chiuda.
- L'annuncio. L'owner di StockFun chiama
end(), e il lock registra, pubblicamente, la data che cade 30 giorni più tardi. Da quel momento nessun nuovo mercato può essere lanciato, né può essere creata la posizione$STOCKFUN, così nessun mercato riceve meno del preavviso completo. Il trading e l'incasso delle commissioni continuano - Il preavviso. Per 30 giorni il trading continua su ogni pool. L'owner può annullare
in qualsiasi momento con
cancelEnd(), e i lanci riprendono - Il recupero. Trascorsi i 30 giorni, l'owner può rimuovere tutte le posizioni di un
pool — entrambe le bande di un mercato, la singola posizione
$STOCKFUN— e inviarne l'ETH e i token, donazioni non incassate comprese, verso qualsiasi indirizzo (recoverLiquidity). Un pool recuperato non incassa più nulla e non conta più come bloccato; un annullamento successivo lo lascia vuoto
I 30 giorni sono il preavviso degli holder. Sono una costante del lock, END_DELAY, non
un'impostazione: l'unico periodo di attesa fisso del protocollo.
Al di fuori della modalità di chiusura, nulla raggiunge le posizioni. Dal 2026-10-05 il
lock conserva la quota di un incasso di commissioni che il suo destinatario ha rifiutato,
per quel destinatario, finché qualcuno non la paga (payOwed); e l'owner di StockFun può
portare fuori ciò che è stato inviato al lock per errore (rescue, rescueClaims,
rescueNft): qualsiasi token, l'ETH oltre le quote che conserva, i claim v4, un NFT. Il
lock non ha alcuna chiamata generica: attraverso il PoolManager, si potrebbe arrivare al
recupero della modalità di chiusura senza i suoi 30 giorni.