COMPAX

LE PORTEFEUILLE DU GROUPE

L’argent d’un groupe
sans trésorier

Un portefeuille sans propriétaire. Chaque membre garde sa propre clé sur son propre appareil, et l’argent bouge quand assez d’entre eux ont signé — deux sur trois au choix, cinq sur neuf au choix, ce que le groupe a fixé au moment de créer le portefeuille.

Rien de ce qui suit n’est une invention de notre part. Chaque chaîne a déjà une façon pour plusieurs personnes de détenir une seule adresse, et c’est celle-là qui est utilisée ici : P2WSH sur Bitcoin, Safe sur les chaînes EVM, le système de permission du compte lui-même sur Tron, Squads V4 sur Solana. Les adresses des pages qui suivent sont les déploiements auxquels cette application parle.

COMMENT ÇA MARCHE

Quatre étapes, et seule
la dernière est sur une chaîne

Un paiement est une conversation avant d’être une transaction. Ici ce n’est pas une métaphore : cela se passe dans le fil, sous forme de messages, et la chaîne ne le voit qu’une fois que le groupe s’est mis d’accord.

  1. 1

    Le groupe fixe la règle

    Qui signe, et combien de signatures il faut. C’est écrit dans le portefeuille au moment de sa création, et c’est écrit sur la chaîne, pas dans cette application.

    La règle ne se modifie pas ensuite ici : une autre règle, c’est un autre portefeuille, avec sa propre adresse à approvisionner et vers laquelle déménager. Certaines chaînes autoriseraient le changement et cette application ne le fait pas, alors l’écran le dit avant de demander la deuxième tape.

  2. 2

    Quelqu’un propose un paiement

    Il arrive dans la conversation comme un message, de la part de celui qui l’a fait, en disant ce qu’il paie et à qui. Tant qu’il n’est pas signé, c’est une demande et rien d’autre.

    La proposition est portée par le même groupe chiffré que la discussion, donc le serveur la transporte sans la lire.

  3. 3

    Chaque signataire signe sur son propre appareil

    Vous le lisez, vous touchez une fois, et c’est signé avec une clé qui n’a jamais quitté le téléphone où elle a été créée. Tout le monde voit le compte avancer.

    Aucun appareil ne détient jamais la clé d’une deuxième personne, donc il n’existe aucun appareil dont la perte remettrait le portefeuille à quiconque.

  4. 4

    Au seuil, cela part sur la chaîne

    Les signatures sont assemblées et diffusées. À partir de là, c’est la chaîne qui fait respecter la règle, pas cette application — et c’est tout l’intérêt de mettre la règle là-bas.

    Si cette application disparaissait demain, le portefeuille resterait un portefeuille et la règle tiendrait toujours.

CINQ CHAÎNES

Une interface unifiée

Cinq chaînes et, en dessous, quatre mécanismes différents : Bitcoin, Ethereum, BNB Smart Chain, Tron et Solana tiennent une adresse partagée chacune à sa manière. Rien de cela n’arrive à l’écran : proposer un paiement, le signer et l’envoyer est identique sur les cinq.

Bitcoin

P2WSH multisig · BIP 67 · PSBT

Un script témoin qui se lit « m de ces n clés », et une adresse qui en est le hachage. Les clés sont triées lexicographiquement, pour que tous ceux qui construisent le script à partir du même ensemble de clés arrivent à la même adresse, et non à n! adresses différentes.

Le paiement voyage sous forme de PSBT : un fichier qui fait le tour des signataires en récoltant des signatures, et qui est finalisé quand il en a assez.

Script
OP_m <key>… OP_n OP_CHECKMULTISIG
Signataires
jusqu’à 15, seuil n’importe où entre les deux
Données de chaîne
un serveur Electrum

Ethereum

Safe · canonical deployment

Le contrat dans lequel se trouve déjà la plus grande partie de l’argent que les groupes détiennent sur Ethereum. Un proxy est créé par la fabrique canonique et pointe vers le singleton canonique ; les propriétaires et le seuil sont fixés dans l’appel même qui le crée.

Rien n’est forké et rien n’est redéployé. La version est lue sur le contrat plutôt que supposée, parce qu’un Safe créé par quelqu’un d’autre est un Safe que ceci peut ouvrir.

Singleton
0x41675C099F32341bf84BFc5382aF534df5C7461a
Fabrique
0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67
Regroupement
MultiSend — plusieurs mouvements, une seule approbation

BNB Smart Chain

Safe · the same addresses

Les mêmes contrats aux mêmes adresses. Les déploiements de Safe sont déterministes d’une chaîne EVM à l’autre, il n’y a donc rien de spécifique à la chaîne à apprendre ici, ni rien de spécifique à la chaîne dans le code.

C’est aussi pourquoi un compte sur Ethereum est le même compte sur BNB Smart Chain : un type de pièce, une clé, deux chaînes.

Contrats
identiques à ceux d’Ethereum, ci-dessus
Type de pièce
60 — partagé avec Ethereum

Tron

Account permissions · no contract

Chez Tron, la règle est intégrée aux comptes. Un permission porte une liste de clés, un poids pour chacune et un seuil, et il est écrit dans le compte lui-même — il n’y a pas de contrat à déployer ni de contrat à qui faire confiance.

Les poids font que la règle peut être autre chose qu’un comptage de têtes : une clé qui vaut deux voix, trois clés qui en valent une chacune.

Écrit par
AccountPermissionUpdate
Règle
clés pondérées, un seuil
Remarque
la mise à jour remplace la liste au lieu de la modifier

Solana

Squads Protocol V4

Le programme de multisignature qu’utilisent la plupart des trésoreries de Solana. La proposition est un compte sur la chaîne : les membres l’approuvent, et elle s’exécute quand les approbations atteignent le seuil.

L’identifiant du programme décide d’où est dérivé chaque compte du portefeuille, il est donc épinglé au déploiement publié, et un autre est refusé plutôt que cru sur parole.

Programme
SQDS4ep65T869zMMBKyuUq6aD6EgTu8psMjkvj52pCf
Proposition
sur la chaîne, on l’approuve contre elle

POURQUOI LES STANDARDS

Un portefeuille qui ne s’ouvre qu’ici
est un portefeuille qui appartient à un autre

Il y a une façon plus simple de construire ceci : un contrat à nous sur chaque chaîne, un format à nous, une application qui le comprend. Ce serait moins de code et ce serait pire, parce que l’argent du groupe dépendrait alors de la survie de cette application.

Ce qu’apporte l’usage des standards

Chacun de ces points est une conséquence de ce choix, pas une fonctionnalité ajoutée.

  • Audités par plus de monde que nous. Safe et Squads détiennent des milliards à eux deux et ont été examinés en conséquence. P2WSH et les permissions de Tron sont des règles de consensus.
  • Lisibles par d’autres outils. L’adresse est un Safe ordinaire, un multisig Squads ordinaire, une adresse P2WSH ordinaire, un permission Tron ordinaire — les explorateurs de blocs et les interfaces des protocoles eux-mêmes les lisent sans savoir que cette application existe.
  • Rien à migrer depuis. Il n’y a pas de format propriétaire dans lequel rester coincé, donc il n’y a pas de moment plus tard où partir coûte quelque chose.
  • La règle nous survit. Le seuil est appliqué par la chaîne. Cette application est l’endroit où le groupe parle du paiement, pas ce qui l’autorise.

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.

SI VOUS APPORTEZ UNE PHRASE

Vingt-quatre mots que vous
avez déjà utilisés ailleurs

Une phrase de récupération n’est pas une convention, c’en est plusieurs, et elles divergent sur exactement la même chose : quel élément du chemin bouge quand vous demandez « compte 2 ». Chacune est correcte, et une phrase lue sous la mauvaise affiche un solde nul pour de l’argent qui se trouve à exactement une ligne d’arithmétique. La convention n’est donc pas devinée : c’est un réglage, un par chaîne, et il propose une liste d’applications plutôt qu’une liste de spécifications. L’argent qui a l’air disparu est de l’argent sur un chemin que cette application ne regardait pas.

Bitcoin

Native SegWit par défaut

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

  • Electrum
  • BlueWallet
  • Sparrow
  • Exodus

Index d’adresse

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

  • Trust Wallet
  • Muun
  • Phoenix

Ethereum &amp; BNB Smart Chain

Index d’adresse par défaut

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

  • MetaMask
  • Rabby
  • Trust Wallet
  • Rainbow
  • Phantom

Compte durci

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

  • Ledger Live
  • Trezor Suite
  • Exodus

Quatre éléments

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

  • MyEtherWallet (legacy)
  • Ledger (legacy)

Tron

Index d’adresse par défaut

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

  • TronLink
  • Trust Wallet

Compte durci

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

  • Ledger Live
  • Trezor Suite

Solana

Quatre éléments par défaut

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

  • Phantom
  • Solflare
  • Backpack

Compte seul

m/44'/501'/{account}'

  • Ledger Live
  • Solflare (hardware)

Legacy

m/501'/{account}'/0/0

  • Sollet (legacy)

Les dispositions legacy et imbriquée de Bitcoin sont délibérément absentes. Le constructeur d’adresses dérive du native SegWit et rien d’autre, donc un m/44'/0'/… ici produirait un bc1… là où tout autre portefeuille affiche un 1… ou un 3… — une chaîne de caractères qui a l’air juste, qui appartient à votre phrase, et qui n’est pas l’adresse que n’importe qui d’autre lit sur ce chemin. Un choix qui signifie discrètement autre chose que ce qu’il dit est pire que pas de choix du tout.

SI VOUS APPORTEZ UN PORTEFEUILLE

Si vous venez d’ailleurs

Deux façons d’entrer, et elles ne sont pas au même stade

Dit franchement, parce qu’une page qui décrit le prévu de la même voix que le construit est une page avec laquelle vous ne pouvez rien décider.

  • Votre phrase de récupération — déjà là. Vingt-quatre mots, et la question de savoir dans quel portefeuille vous les avez utilisés. Chaque adresse décrite par le tableau ci-dessus est dérivée sur votre appareil à partir de la phrase et n’est stockée nulle part ; un compte EVM, un compte Tron et un compte Solana sont la même adresse sur tous les réseaux de leur chaîne.
  • Un multisig qui existe déjà — pas encore. La lecture est faite : la bibliothèque qui est derrière ouvre un Safe par son adresse et rapporte ses propriétaires, son seuil et sa version ; elle lit les membres et le seuil d’un multisig Squads, les signataires et les poids d’un permission Tron, et décode un script témoin Bitcoin pour retrouver son adresse, son seuil et ses clés. Ce qui n’est pas construit, c’est l’écran qui vous y conduit et qui l’attache à une conversation. Tant qu’il ne l’est pas, cette page ne prétendra pas le contraire.

Rien ne vous arrête entre-temps : un Safe ou un multisig Squads que vous avez déjà continue de fonctionner dans l’interface où vous l’avez créé, parce qu’il n’a jamais été autre chose qu’un Safe ou un multisig Squads.

Rien sur ce site n'est un conseil financier : les exemples sont des exemples, et l'argent — comme le risque — est le vôtre. Avertissements.