COMPAX

IL PORTAFOGLIO DEL GRUPPO

I soldi di un gruppo
senza tesoriere

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. 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. 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. 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. 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.

Tron

Account permissions · consensus, not a contract

none

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 SegWit predefinito

m/84'/0'/{account}'/0/0

  • Electrum
  • BlueWallet
  • Sparrow
  • Exodus

Indice dell’indirizzo

m/84'/0'/0'/0/{account}

  • Trust Wallet
  • Muun
  • Phoenix

Ethereum &amp; BNB Smart Chain

Indice dell’indirizzo predefinito

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’indirizzo predefinito

m/44'/195'/0'/0/{account}

  • TronLink
  • Trust Wallet

Conto hardened

m/44'/195'/{account}'/0/0

  • Ledger Live
  • Trezor Suite

Solana

Quattro elementi predefinito

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.