
Il wallet multisig Solana in cui l'indirizzo è l'insieme dei membri
Un wallet multisig ha bisogno di due o più chiavi per approvare qualsiasi spesa. Su Bitcoin, l'indirizzo del wallet è semplicemente un hash delle sue stesse regole: l'elenco delle chiavi pubbliche e il numero di "quante firme sono richieste". Puoi calcolare quell'indirizzo su un blocco per appunti, distribuirlo e ricevere fondi molto prima che qualcuno tocchi la blockchain.
Solana, tradizionalmente, non può farlo. Come spiega il primo articolo di questa serie, i multisig dominanti di Solana ti chiedono di eseguire una transazione di creazione con casualità scelta dal creatore prima ancora che l'indirizzo del wallet esista. Il programma multisig Solana di SSP adotta invece l'approccio di Bitcoin. È auto-inizializzante: l'indirizzo del wallet è l'insieme dei membri.
Una nota in apertura: il programma multisig Solana di SSP è open source (RunOnFlux/Solana-Multisig) e attualmente funziona solo su devnet — la rete di test di Solana. Un rilascio su mainnet dipende da un audit di sicurezza esterno.
Due indirizzi: il multisig e il vault
Il design di SSP usa due indirizzi separati per ogni wallet multisig.
L'indirizzo multisig conserva le regole: l'elenco ordinato delle chiavi dei membri, la soglia (la M di "M-su-N") e un contatore di transazioni proposte. Appartiene al programma di SSP.
L'indirizzo del vault conserva il denaro: SOL e token SPL. Appartiene al System Program integrato di Solana e non memorizza dati propri. Il vault è l'indirizzo di deposito: quello che dai a chiunque voglia pagarti.
Entrambi sono un Program Derived Address, o PDA: un indirizzo senza chiave privata, collocato deliberatamente fuori dalla curva crittografica così che nessuna chiave possa mai controllarlo. Solo il programma che lo ha derivato può autorizzare movimenti da esso. Questo dettaglio conta alla fine.
Come l'indirizzo viene calcolato dai membri
È proprio questa la parte che rende il wallet auto-inizializzante. Per derivare l'indirizzo multisig, in parole semplici: prendi l'etichetta letterale multisig, un hash SHA-256 dell'elenco ordinato dei membri e la soglia; poi dai questi, insieme all'ID di programma di SSP, alla funzione di derivazione degli indirizzi di Solana. Tre dettagli meritano attenzione.
I membri vengono prima ordinati e deduplicati. Un wallet 2-su-3 con i membri A, B, C produce esattamente lo stesso indirizzo, che tu li elenchi come C, A, B o B, C, A. L'ordine non conta; conta solo l'insieme.
Si usa l'hash completo di 32 byte, mai una versione accorciata. Troncare l'hash aprirebbe un attacco reale: un attaccante potrebbe cercare un insieme di membri diverso che produca lo stesso valore accorciato, poi registrare i propri membri al tuo indirizzo e prosciugare qualsiasi fondo tu avessi precaricato. L'hash completo di 32 byte rende quella ricerca astronomicamente costosa, perciò non accade mai.
La soglia fa parte dell'indirizzo. Un wallet 2-su-3 e uno 3-su-3 con esattamente gli stessi membri sono wallet diversi a indirizzi diversi. Le regole sono incise nell'identità.
L'indirizzo del vault viene poi derivato dall'indirizzo multisig più un piccolo numero di indice (SSP usa sempre l'indice 0), così anche il vault è interamente determinato dall'insieme dei membri e dalla soglia.
Il risultato pratico: chiunque può calcolare entrambi gli indirizzi offline, prima che venga inviata una sola transazione. Puoi distribuire l'indirizzo del vault e ricevere fondi in un wallet che, sulla catena, non esiste ancora — la proprietà di Bitcoin, portata su Solana.
Registrazione senza permesso: chiunque può attivarlo
L'indirizzo del wallet esiste nell'istante in cui conosci i membri. Ma per spendere da esso, le regole devono prima o poi essere scritte sulla catena — il programma chiama questo passo initialize.
Nella maggior parte dei multisig Solana, solo un creatore privilegiato può compiere il passo equivalente. Nel programma di SSP, l'inizializzazione è senza permesso: chiunque può eseguirla. Nessun account creatore, nessuna firma di membro, nessun permesso speciale. Di solito è il servizio di relay di SSP a pagare la piccola tariffa di affitto e ad attivare il wallet, ma non importa davvero chi lo faccia.
Sembra allarmante finché non vedi il controllo di sicurezza. Quando qualcuno inizializza il wallet, il programma ricalcola l'hash SHA-256 dell'elenco di membri fornito e rifiuta la transazione a meno che quell'hash corrisponda a quello inciso nell'indirizzo. Il framework di account di Solana lega in modo indipendente l'indirizzo allo stesso hash. Insieme, questi due controlli significano che l'indirizzo canonico può contenere solo l'insieme canonico di membri. Nessuno può registrare il tuo indirizzo con un elenco di membri a sua scelta — l'hash non corrisponderebbe e la transazione fallisce.
Perché uno sconosciuto che inizializza il tuo wallet non può danneggiarti
Vediamo cosa potrebbe effettivamente tentare un attaccante.
Inizializza con un insieme di membri diverso. Un insieme diverso produce un hash diverso, che deriva un indirizzo diverso. L'attaccante ha semplicemente creato il proprio wallet non correlato altrove su Solana — nessuna connessione con il tuo vault, nessuna pretesa sui tuoi fondi.
Inizializza con il tuo insieme di membri. L'hash corrisponde, quindi la transazione riesce — ma tutto ciò che ha fatto è pagare la tua tariffa di affitto al posto tuo. Il wallet è ora registrato esattamente con le regole che ti aspettavi, e l'attaccante non è un membro, quindi non può proporre, approvare né eseguire nulla. Il denaro non sta mai all'indirizzo multisig stesso — sta nel vault, che appartiene al sistema e non può essere dirottato. Chiunque inizializzi il wallet, e in qualunque momento, il risultato è lo stesso wallet canonico con le regole corrette.
La soglia si verifica quando spendi, non quando registri
È lo stesso modello che usa il multisig P2WSH di Bitcoin, e vale la pena dirlo chiaramente: la soglia M-su-N viene applicata solo quando i fondi si muovono — mai alla registrazione.
La registrazione si limita ad annotare "questi sono i membri, questa è la soglia". Non chiede firme perché non può fare alcun danno. La vera barriera è il flusso di spesa, dove il programma conta le approvazioni e si rifiuta di agire finché un numero sufficiente di membri non ha dato il consenso. L'indirizzo è l'hash delle regole; chiunque può finanziarlo; solo firme valide possono spendere. Per un ripasso di cosa significa "M-su-N", vedi 2-su-2 vs 2-su-3 vs M-su-N multisig.
L'intero ciclo di vita, dall'inizio alla fine
Mettendo insieme i pezzi, la vita di un wallet multisig Solana di SSP:
- Derivare. Chiunque calcola gli indirizzi multisig e del vault offline a partire dai membri e dalla soglia. Niente blockchain, nessun costo.
- Pre-finanziare. Chiunque invia SOL o token all'indirizzo del vault — funziona anche prima che il wallet sia registrato.
- Inizializzare. Chiunque, di solito il relay di SSP, invia la transazione di registrazione senza permesso. Il programma verifica l'hash dei membri e scrive le regole canoniche sulla catena.
- Proporre. Un membro crea una proposta di transazione, memorizzata in modo compatto su un account di proposta dedicato.
- Approvare. Ogni membro approva la proposta, una volta ciascuno. Le approvazioni si accumulano sulla catena.
- Eseguire. Una volta che le approvazioni raggiungono la soglia, chiunque può attivare l'esecuzione. Il programma contrassegna prima la proposta come eseguita — una protezione deliberata perché non venga mai eseguita due volte — e poi realizza ogni istruzione, con il vault stesso che agisce da firmatario.
Quest'ultimo passo è il punto in cui l'indirizzo del vault senza chiave dà i suoi frutti. Poiché il vault è un PDA senza chiave privata, né un essere umano né un programma può muovere i suoi fondi firmando nel modo consueto. L'unica via d'uscita è che il programma di SSP esegua una proposta approvata che ha raggiunto la soglia — "firma" per il vault presentando la ricetta di derivazione del vault al runtime di Solana, un permesso che ottiene unicamente perché è il proprietario dell'indirizzo.
Nessun creatore, nessun admin, nessuna rotazione di chiavi sul posto
Due ultime proprietà legano il design.
L'insieme dei membri e la soglia sono immutabili. Una volta che un wallet è inizializzato, nessuna istruzione del programma può cambiarne i membri o la soglia — non esiste un percorso di codice per farlo. Per cambiare chi controlla un wallet — ciò che altri sistemi chiamano vagamente "rotazione delle chiavi" — crei un nuovo multisig con il nuovo insieme di membri e vi sposti i fondi. Il vecchio indirizzo conserva per sempre le sue vecchie regole.
Non c'è alcun ruolo di creatore né alcuna chiave di admin, mai. Molti design multisig mantengono un account privilegiato che può scavalcare i membri o cambiare la configurazione. Il programma di SSP non ne ha nessuno — niente da compromettere, nessuna chiave di admin da phishare, nessun creatore da costringere. I membri e la soglia sono tutta la storia.
Questo minimalismo è un compromesso deliberato: SSP ha costruito una primitiva piccola e deterministica anziché una piattaforma di governance ricca di funzioni. Il prossimo articolo, Il multisig Solana di SSP a confronto con Squads, confronta onestamente questo design con Squads V4 — il multisig Solana maturo, sottoposto ad audit e dominante. Per il contesto di prodotto, l'annuncio di lancio del supporto Solana descrive cosa è arrivato in SSP Wallet v1.39.0.
L'idea centrale è abbastanza piccola da tenerla in mente: nel multisig Solana di SSP, l'indirizzo del wallet è un'impronta delle sue stesse regole. Conosci i membri e la soglia, e conosci l'indirizzo. Nient'altro è necessario, e di nient'altro ci si fida.


