Un portafoglio senza proprietario. Ogni membro tiene la propria chiave sul proprio dispositivo, e i soldi si muovono quando ne hanno firmato abbastanza — due qualsiasi su tre, cinque qualsiasi su nove, quello che il gruppo ha stabilito quando ha creato il portafoglio.
Niente di quello che segue è un’invenzione nostra. Ogni catena ha già un modo perché più persone tengano un solo indirizzo, ed è quel modo che viene usato qui: P2WSH su Bitcoin, Safe sulle catene EVM, il sistema di permission del conto stesso su Tron, Squads V4 su Solana. Gli indirizzi delle pagine che seguono sono i deployment con cui parla questa applicazione.
COME FUNZIONA
Quattro passi, e solo l’ultimo sta su una catena
Un pagamento è una conversazione prima di essere una transazione. Qui non è una metafora: succede nel filo, sotto forma di messaggi, e la catena lo vede soltanto quando il gruppo si è già trovato d’accordo.
1
Il gruppo fissa la regola
Chi firma, e quante firme servono. Viene scritto nel portafoglio nel momento in cui lo si crea, e viene scritto sulla catena, non in questa applicazione.
La regola qui non si modifica dopo: un’altra regola è un altro portafoglio, con un indirizzo suo da rifornire e su cui traslocare. Alcune catene il cambiamento lo permetterebbero e questa applicazione non lo fa, così la schermata lo dice prima di chiedere il secondo tocco.
2
Qualcuno propone un pagamento
Arriva nella conversazione come un messaggio, da chi l’ha fatto, e dice cosa paga e a chi. Finché non è firmato è una richiesta e nient’altro.
La proposta viaggia nello stesso gruppo cifrato della chat, quindi il server la porta senza leggerla.
3
Ogni firmatario firma sul proprio dispositivo
Lo leggi, tocchi una volta, ed è firmato con una chiave che non ha mai lasciato il telefono su cui è nata. Il conteggio si muove sotto gli occhi di tutti.
Nessun dispositivo tiene mai la chiave di una seconda persona, quindi non esiste un dispositivo la cui perdita consegni il portafoglio a qualcuno.
4
Alla soglia va sulla catena
Le firme vengono assemblate e trasmesse. Da lì in poi a far rispettare la regola è la catena, non questa applicazione — ed è esattamente per questo che la regola sta lì.
Se questa applicazione sparisse domani, il portafoglio resterebbe un portafoglio e la regola resterebbe in piedi.
CINQUE CATENE
Un’interfaccia unificata
Cinque catene e, sotto, quattro meccanismi diversi: Bitcoin, Ethereum, BNB Smart Chain, Tron e Solana tengono un indirizzo condiviso ognuna a modo suo. Niente di tutto questo arriva allo schermo: proporre un pagamento, firmarlo e inviarlo è identico su tutte e cinque.
Bitcoin
P2WSH multisig · BIP 67 · PSBT
Uno script testimone che si legge «m di queste n chiavi», e un indirizzo che ne è l’hash. Le chiavi sono ordinate lessicograficamente, così chiunque costruisca lo script dallo stesso insieme di chiavi arriva allo stesso indirizzo e non a n! indirizzi diversi.
Il pagamento viaggia come PSBT: un file che gira fra i firmatari raccogliendo firme, e viene finalizzato quando ne ha abbastanza.
Script
OP_m <key>… OP_n OP_CHECKMULTISIG
Firmatari
fino a 15, con la soglia in qualsiasi punto nel mezzo
Dati della catena
un server Electrum
Ethereum
Safe · canonical deployment
Il contratto in cui sta già la maggior parte dei soldi che i gruppi tengono su Ethereum. Un proxy viene creato dalla factory canonica e punta al singleton canonico; proprietari e soglia vengono impostati nella stessa chiamata che lo crea.
Niente è forkato e niente è ridistribuito. La versione viene letta dal contratto invece che data per scontata, perché un Safe creato da qualcun altro è un Safe che questo può aprire.
Singleton
0x41675C099F32341bf84BFc5382aF534df5C7461a
Factory
0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67
Raggruppamento
MultiSend — più movimenti, una sola approvazione
BNB Smart Chain
Safe · the same addresses
Gli stessi contratti agli stessi indirizzi. I deployment di Safe sono deterministici fra le catene EVM, quindi qui non c’è niente di specifico della catena da imparare, e niente di specifico della catena nemmeno nel codice.
È anche il motivo per cui un conto su Ethereum è lo stesso conto su BNB Smart Chain: un tipo di moneta, una chiave, due catene.
Contratti
identici a quelli di Ethereum, sopra
Tipo di moneta
60 — condiviso con Ethereum
Tron
Account permissions · no contract
Tron ha la regola incorporata nei conti. Un permission porta un elenco di chiavi, un peso per ciascuna e una soglia, e viene scritto nel conto stesso — non c’è nessun contratto da distribuire e nessun contratto di cui fidarsi.
I pesi fanno sì che la regola possa essere qualcosa di diverso dal contare teste: una chiave che vale due voti, tre chiavi che ne valgono uno ciascuna.
Scritto da
AccountPermissionUpdate
Regola
chiavi pesate, una soglia
Nota
l’aggiornamento sostituisce l’elenco invece di modificarlo
Solana
Squads Protocol V4
Il programma di multifirma che usa la maggior parte delle tesorerie di Solana. La proposta è un conto sulla catena: i membri la approvano, e viene eseguita quando le approvazioni raggiungono la soglia.
L’id del programma decide da dove viene derivato ogni conto del portafoglio, quindi è inchiodato al deployment pubblicato, e uno diverso viene rifiutato invece che creduto sulla parola.
Programma
SQDS4ep65T869zMMBKyuUq6aD6EgTu8psMjkvj52pCf
Proposta
sulla catena, la si approva contro di essa
PERCHÉ QUELLI STANDARD
Un portafoglio che si apre solo qui è un portafoglio di qualcun altro
C’è un modo più facile di costruire tutto questo: un contratto nostro su ogni catena, un formato nostro, un’applicazione che lo capisce. Sarebbe meno codice e sarebbe peggio, perché a quel punto i soldi del gruppo dipenderebbero dal fatto che questa applicazione continui a esistere.
Cosa porta usare quelli standard
Ognuno di questi punti è una conseguenza di quella scelta, non una funzione che è stata aggiunta.
Verificati da più gente di noi. Safe e Squads tengono miliardi fra tutti e due e sono stati guardati di conseguenza. P2WSH e i permissions di Tron sono regole di consenso.
Leggibili da altri strumenti. L’indirizzo è un normale Safe, un normale multisig Squads, un normale indirizzo P2WSH, un normale permission di Tron — gli esploratori di blocchi e le interfacce dei protocolli stessi li leggono senza sapere che questa applicazione esiste.
Niente da cui migrare. Non c’è un formato proprietario in cui restare incastrati, quindi non c’è un momento più avanti in cui andarsene costi qualcosa.
La regola ci sopravvive. La soglia la fa rispettare la catena. Questa applicazione è il posto dove il gruppo parla del pagamento, non quello che lo permette.
AUDITS
Read by people who are not us
This is the argument for using each chain’s own multisig rather than writing one: the reports below exist, they were paid for by somebody else, and they are about exactly the contracts a wallet made here is made of. Every address and every program id on this page was checked against the projects’ own published deployment records while this section was written.
Safe
Ethereum · BNB Smart Chain
2 reports
The four contracts this application talks to are the canonical v1.4.1 deployments — singleton, proxy factory, fallback handler and MultiSend — each one matching the address in Safe’s own deployment registry.
Four reports, three firms and a formal verification. The program id this application pins is the one the program declares for itself in its own source.
There is nothing here for an auditor to be hired for, and that is the point: a multisig on Bitcoin is not a deployed program but a script the network’s own rules evaluate. What is worth reading instead is the specification.
The same again: the rule is a property of the account, enforced by the nodes rather than by code somebody deployed. There is no contract to audit because there is no contract.
Nothing to link, and that is the honest answer
An audit is a reading of a codebase at a commit, not a guarantee about the money in it — and none of these reports is about this application. They are about the contracts underneath it, which is exactly why they are worth more than a report we commissioned about ourselves would be.
SE PORTI UNA FRASE
Ventiquattro parole che hai già usato altrove
Una frase di recupero non è una convenzione, sono parecchie, e sono in disaccordo esattamente sulla stessa cosa: quale elemento del percorso si muove quando chiedi «conto 2». Ognuna di esse è corretta, e una frase letta con quella sbagliata mostra saldo zero per dei soldi che stanno a esattamente una riga di aritmetica di distanza. Perciò qui la convenzione non si indovina: è un’impostazione, una per catena, e offre un elenco di applicazioni invece di un elenco di specifiche. I soldi che sembrano spariti sono soldi su un percorso che questa applicazione non stava guardando.
Bitcoin
Native SegWitpredefinito
m/84'/0'/{account}'/0/0
Electrum
BlueWallet
Sparrow
Exodus
Indice dell’indirizzo
m/84'/0'/0'/0/{account}
Trust Wallet
Muun
Phoenix
Ethereum & BNB Smart Chain
Indice dell’indirizzopredefinito
m/44'/60'/0'/0/{account}
MetaMask
Rabby
Trust Wallet
Rainbow
Phantom
Conto hardened
m/44'/60'/{account}'/0/0
Ledger Live
Trezor Suite
Exodus
Quattro elementi
m/44'/60'/0'/{account}
MyEtherWallet (legacy)
Ledger (legacy)
Tron
Indice dell’indirizzopredefinito
m/44'/195'/0'/0/{account}
TronLink
Trust Wallet
Conto hardened
m/44'/195'/{account}'/0/0
Ledger Live
Trezor Suite
Solana
Quattro elementipredefinito
m/44'/501'/{account}'/0'
Phantom
Solflare
Backpack
Solo conto
m/44'/501'/{account}'
Ledger Live
Solflare (hardware)
Legacy
m/501'/{account}'/0/0
Sollet (legacy)
Gli schemi legacy e nested di Bitcoin mancano di proposito. Il costruttore di indirizzi deriva native SegWit e nient’altro, così un m/44'/0'/… qui darebbe un bc1… dove ogni altro portafoglio mostra un 1… o un 3… — una stringa che sembra giusta, appartiene alla tua frase, e non è l’indirizzo che chiunque altro legge su quel percorso. Una scelta che di soppiatto significa qualcosa di diverso da quello che dice è peggio di nessuna scelta.
SE PORTI UN PORTAFOGLIO
Se arrivi da un’altra parte
Due strade per entrare, e sono a stadi diversi
Detto chiaramente, perché una pagina che descrive quello che è previsto con la stessa voce di quello che è fatto è una pagina con cui non puoi decidere niente.
La tua frase di recupero — c’è già. Ventiquattro parole, e la domanda su in quale portafoglio le hai usate. Ogni indirizzo che la tabella qui sopra descrive viene derivato sul tuo dispositivo a partire dalla frase e non viene salvato da nessuna parte; un conto EVM, un conto Tron e un conto Solana sono lo stesso indirizzo su ogni rete della catena a cui appartengono.
Un multisig che esiste già — non ancora. Leggerlo è fatto: la libreria che sta sotto apre un Safe dall’indirizzo e ne riporta proprietari, soglia e versione; legge membri e soglia di un multisig Squads, firmatari e pesi di un permission di Tron, e decodifica uno script testimone di Bitcoin risalendo al suo indirizzo, alla soglia e alle chiavi. Quello che non è fatto è la schermata che ti ci accompagna e lo attacca a una conversazione. Finché non lo è, questa pagina non farà finta del contrario.
Nel frattempo niente ti ferma: un Safe o un multisig Squads che hai già continuano a funzionare nell’interfaccia in cui li hai creati, perché non sono mai stati altro che un Safe o un multisig Squads.
Niente su questo sito è consulenza finanziaria: gli esempi sono esempi, e i soldi — e il rischio — sono tuoi. Avvertenze.