COMPAX

DIE GRUPPEN-GELDBÖRSE

Geld einer Gruppe
ohne Kassenwart

Eine Geldbörse ohne Besitzer. Jedes Mitglied behält den eigenen Schlüssel auf dem eigenen Gerät, und das Geld bewegt sich, wenn genug von ihnen signiert haben — zwei beliebige von drei, fünf beliebige von neun, was die Gruppe eben festgelegt hat, als sie die Geldbörse angelegt hat.

Nichts von dem, was folgt, ist eine Erfindung von uns. Jede Chain hat bereits einen Weg, auf dem mehrere Menschen eine Adresse halten, und genau der wird hier benutzt: P2WSH auf Bitcoin, Safe auf den EVM-Chains, das permission-System des Kontos selbst auf Tron, Squads V4 auf Solana. Die Adressen auf den folgenden Seiten sind die Deployments, mit denen diese Anwendung spricht.

SO FUNKTIONIERT ES

Vier Schritte, und nur
der letzte liegt auf einer Chain

Eine Zahlung ist ein Gespräch, bevor sie eine Transaktion ist. Das ist hier keine Metapher: Sie passiert im Verlauf, als Nachrichten, und die Chain sieht sie erst, wenn die Gruppe sich einig ist.

  1. 1

    Die Gruppe legt die Regel fest

    Wer signiert, und wie viele davon nötig sind. Das wird in dem Moment in die Geldbörse geschrieben, in dem sie entsteht — und zwar auf die Chain, nicht in diese Anwendung.

    Die Regel wird hier hinterher nicht bearbeitet: eine andere Regel ist eine andere Geldbörse, mit einer eigenen Adresse, die befüllt werden will und auf die man umziehen muss. Manche Chains würden die Änderung erlauben, diese Anwendung nimmt sie nicht vor — und der Bildschirm sagt das, bevor er nach dem zweiten Tippen fragt.

  2. 2

    Jemand schlägt eine Zahlung vor

    Sie kommt als Nachricht im Gespräch an, von der Person, die sie gemacht hat, und sagt, was sie zahlt und an wen. Bis sie signiert ist, ist sie eine Anfrage und sonst nichts.

    Der Vorschlag reist durch dieselbe verschlüsselte Gruppe wie der Chat, der Server trägt ihn also, ohne ihn zu lesen.

  3. 3

    Jeder Signierende signiert auf dem eigenen Gerät

    Lesen, einmal tippen — signiert mit einem Schlüssel, der das Telefon, auf dem er entstand, nie verlassen hat. Alle sehen den Zähler wandern.

    Kein Gerät hält je den Schlüssel einer zweiten Person, also gibt es kein Gerät, dessen Verlust irgendjemandem die Geldbörse in die Hand gibt.

  4. 4

    Beim Schwellenwert geht sie auf die Chain

    Die Signaturen werden zusammengesetzt und gesendet. Ab da setzt die Chain die Regel durch, nicht diese Anwendung — genau dafür legt man die Regel dorthin.

    Würde diese Anwendung morgen verschwinden, bliebe die Geldbörse eine Geldbörse und die Regel eine Regel.

FÜNF CHAINS

Eine einheitliche Oberfläche

Fünf Chains, darunter vier verschiedene Mechanismen: Bitcoin, Ethereum, BNB Smart Chain, Tron und Solana halten eine gemeinsame Adresse jeweils auf ihre eigene Art. Davon erreicht nichts den Bildschirm — eine Zahlung vorschlagen, sie unterschreiben und abschicken ist in allen fünf gleich.

Bitcoin

P2WSH multisig · BIP 67 · PSBT

Ein Witness-Script, das sich als „m dieser n Schlüssel“ liest, und eine Adresse, die dessen Hash ist. Die Schlüssel sind lexikografisch sortiert, damit jeder, der das Script aus derselben Menge Schlüssel baut, bei derselben Adresse landet statt bei n! verschiedenen.

Die Zahlung reist als PSBT: eine Datei, die bei den Signierenden herumgeht und Signaturen einsammelt, und finalisiert wird, sobald sie genug hat.

Script
OP_m <key>… OP_n OP_CHECKMULTISIG
Signierende
bis zu 15, Schwelle irgendwo dazwischen
Chain-Daten
ein Electrum-Server

Ethereum

Safe · canonical deployment

Der Vertrag, in dem das meiste Geld, das Gruppen auf Ethereum halten, ohnehin schon liegt. Ein Proxy wird von der kanonischen Factory erzeugt und zeigt auf den kanonischen Singleton; Eigentümer und Schwelle werden im selben Aufruf gesetzt, der ihn erzeugt.

Nichts ist geforkt und nichts neu deployt. Die Version wird vom Vertrag abgelesen statt angenommen, denn ein Safe, den jemand anderes angelegt hat, ist ein Safe, den das hier öffnen kann.

Singleton
0x41675C099F32341bf84BFc5382aF534df5C7461a
Factory
0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67
Bündelung
MultiSend — mehrere Bewegungen, eine Freigabe

BNB Smart Chain

Safe · the same addresses

Dieselben Verträge unter denselben Adressen. Die Deployments von Safe sind über die EVM-Chains hinweg deterministisch, es gibt hier also nichts Chain-Spezifisches zu lernen und auch nichts Chain-Spezifisches im Code.

Es ist auch der Grund, warum ein Konto auf Ethereum dasselbe Konto auf BNB Smart Chain ist: ein Coin-Typ, ein Schlüssel, zwei Chains.

Verträge
identisch mit denen von Ethereum, oben
Coin-Typ
60 — geteilt mit Ethereum

Tron

Account permissions · no contract

Bei Tron steckt die Regel in den Konten selbst. Ein permission trägt eine Liste von Schlüsseln, ein Gewicht für jeden und eine Schwelle, und wird in das Konto selbst geschrieben — es gibt keinen Vertrag zu deployen und keinen Vertrag, dem man trauen muss.

Gewichte bedeuten, dass die Regel mehr sein kann als Köpfezählen: ein Schlüssel, der zwei Stimmen wiegt, drei Schlüssel mit je einer.

Geschrieben von
AccountPermissionUpdate
Regel
gewichtete Schlüssel, eine Schwelle
Anmerkung
das Update ersetzt die Liste, statt sie zu ergänzen

Solana

Squads Protocol V4

Das Multisig-Programm, das die meisten Treasuries auf Solana benutzen. Der Vorschlag ist ein Konto auf der Chain: Mitglieder stimmen ihm zu, und er wird ausgeführt, sobald die Zustimmungen die Schwelle erreichen.

Die Programm-ID entscheidet, woraus jedes Konto der Geldbörse abgeleitet wird, also ist sie auf das veröffentlichte Deployment festgenagelt, und eine andere wird abgelehnt statt geglaubt.

Programm
SQDS4ep65T869zMMBKyuUq6aD6EgTu8psMjkvj52pCf
Vorschlag
auf der Chain, wird dagegen abgestimmt

WARUM DIE STANDARDS

Eine Geldbörse, die sich nur hier öffnet,
gehört jemand anderem

Es gäbe einen leichteren Weg, das zu bauen: ein eigener Vertrag auf jeder Chain, ein eigenes Format, eine Anwendung, die es versteht. Das wäre weniger Code und es wäre schlechter, denn dann hinge das Geld der Gruppe daran, dass es diese Anwendung weiterhin gibt.

Was die Standards einbringen

Jeder dieser Punkte ist eine Folge dieser Entscheidung, kein Feature, das hinzugefügt wurde.

  • Von mehr Leuten geprüft als von uns. Safe und Squads halten zusammen Milliarden und sind entsprechend angeschaut worden. P2WSH und die permissions von Tron sind Konsensregeln.
  • Von anderen Werkzeugen lesbar. Die Adresse ist ein gewöhnliches Safe, ein gewöhnliches Squads-Multisig, eine gewöhnliche P2WSH-Adresse, ein gewöhnliches Tron-permission — Block-Explorer und die eigenen Oberflächen der Protokolle lesen sie, ohne zu wissen, dass es diese Anwendung gibt.
  • Nichts, wovon man migrieren müsste. Es gibt kein proprietäres Format, in dem man festsitzt, also gibt es auch keinen späteren Moment, in dem das Weggehen etwas kostet.
  • Die Regel überlebt uns. Die Schwelle setzt die Chain durch. Diese Anwendung ist der Ort, an dem die Gruppe über die Zahlung spricht, nicht das, was sie erlaubt.

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.

WENN DU EINE PHRASE MITBRINGST

Vierundzwanzig Wörter, die du
schon anderswo benutzt hast

Eine Wiederherstellungsphrase ist nicht eine Konvention, sondern mehrere, und sie sind sich genau in einem uneinig: welches Element des Pfades sich bewegt, wenn du nach „Konto 2“ fragst. Jede davon ist richtig, und eine Phrase, die unter der falschen gelesen wird, zeigt null Guthaben für Geld, das genau eine Zeile Arithmetik entfernt liegt. Deshalb wird die Konvention hier nicht geraten — sie ist eine Einstellung, eine pro Chain, und sie bietet eine Liste von Anwendungen statt einer Liste von Spezifikationen. Geld, das verschwunden aussieht, ist Geld an einem Pfad, auf den diese Anwendung nicht geschaut hat.

Bitcoin

Native SegWit Standard

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

  • Electrum
  • BlueWallet
  • Sparrow
  • Exodus

Adressindex

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

  • Trust Wallet
  • Muun
  • Phoenix

Ethereum &amp; BNB Smart Chain

Adressindex Standard

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

  • MetaMask
  • Rabby
  • Trust Wallet
  • Rainbow
  • Phantom

Gehärtetes Konto

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

  • Ledger Live
  • Trezor Suite
  • Exodus

Vier Elemente

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

  • MyEtherWallet (legacy)
  • Ledger (legacy)

Tron

Adressindex Standard

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

  • TronLink
  • Trust Wallet

Gehärtetes Konto

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

  • Ledger Live
  • Trezor Suite

Solana

Vier Elemente Standard

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

  • Phantom
  • Solflare
  • Backpack

Nur Konto

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

  • Ledger Live
  • Solflare (hardware)

Legacy

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

  • Sollet (legacy)

Bitcoins Legacy- und Nested-Layouts fehlen mit Absicht. Der Adressbauer leitet native SegWit ab und sonst nichts, ein m/44'/0'/… würde hier also ein bc1… ergeben, wo jede andere Geldbörse ein 1… oder ein 3… zeigt — eine Zeichenkette, die richtig aussieht, zu deiner Phrase gehört, und nicht die Adresse ist, die sonst irgendjemand an diesem Pfad abliest. Eine Auswahl, die stillschweigend etwas anderes bedeutet als das, was sie sagt, ist schlechter als gar keine Auswahl.

WENN DU EINE GELDBÖRSE MITBRINGST

Wenn du von woanders kommst

Zwei Wege hinein, und sie sind unterschiedlich weit

Klar gesagt, denn eine Seite, die Geplantes in derselben Stimme beschreibt wie Gebautes, ist eine Seite, mit der du nichts entscheiden kannst.

  • Deine Wiederherstellungsphrase — schon da. Vierundzwanzig Wörter, und die Frage, in welcher Geldbörse du sie benutzt hast. Jede Adresse, die die Tabelle oben beschreibt, wird auf deinem Gerät aus der Phrase abgeleitet und nirgends gespeichert; ein EVM-Konto, ein Tron-Konto und ein Solana-Konto sind dieselbe Adresse auf jedem Netz der jeweiligen Chain.
  • Ein Multisig, das schon existiert — noch nicht. Das Lesen ist fertig: die Bibliothek dahinter öffnet ein Safe über die Adresse und nennt Eigentümer, Schwelle und Version; sie liest Mitglieder und Schwelle eines Squads-Multisigs, Signierende und Gewichte eines Tron-permissions, und dekodiert ein Bitcoin-Witness-Script zurück in Adresse, Schwelle und Schlüssel. Was fehlt, ist der Bildschirm, der dich hindurchführt und es an ein Gespräch hängt. Solange er fehlt, tut diese Seite nicht so, als gäbe es ihn.

In der Zwischenzeit hält dich nichts auf: ein Safe oder ein Squads-Multisig, das du schon hast, funktioniert weiter in der Oberfläche, in der du es angelegt hast — denn es war nie etwas anderes als ein Safe oder ein Squads-Multisig.

Nichts auf dieser Seite ist Finanzberatung: Die Beispiele sind Beispiele, und das Geld — und das Risiko — sind deins. Hinweise.