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

graph LR A["FDV 3.409 ETH

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.

  1. 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
  2. Il preavviso. Per 30 giorni il trading continua su ogni pool. L'owner può annullare in qualsiasi momento con cancelEnd(), e i lanci riprendono
  3. 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.