Uma carteira sem dono. Cada integrante guarda a própria chave no próprio aparelho, e o dinheiro se move quando um número suficiente delas assinou — quaisquer duas de três, quaisquer cinco de nove, o que o grupo definiu quando fez a carteira.
Nada do que vem abaixo é invenção nossa. Cada cadeia já tem um jeito de várias pessoas guardarem um mesmo endereço, e é esse jeito que se usa aqui: P2WSH no Bitcoin, Safe nas cadeias EVM, o sistema de permission da própria conta no Tron, Squads V4 no Solana. Os endereços das páginas seguintes são os deployments com que este aplicativo conversa.
COMO FUNCIONA
Quatro passos, e só o último acontece numa cadeia
Um pagamento é uma conversa antes de ser uma transação. Aqui isso não é metáfora: acontece na conversa, em mensagens, e a cadeia só o vê depois que o grupo concordou.
1
O grupo fixa a regra
Quem assina, e quantas assinaturas são precisas. Isso é escrito na carteira no momento em que ela é feita, e fica na cadeia, não neste aplicativo.
A regra não é editada depois por aqui: outra regra é outra carteira, com endereço próprio para abastecer e para o qual mudar. Algumas cadeias permitiriam a mudança e este aplicativo não a faz — e a tela diz isso antes de pedir o segundo toque.
2
Alguém propõe um pagamento
Ele chega na conversa como mensagem, de quem o fez, dizendo o que paga e para quem. Enquanto não é assinado, é um pedido e nada mais.
A proposta é levada pelo mesmo grupo criptografado que a conversa usa, então o servidor a carrega sem lê-la.
3
Cada signatário assina no próprio aparelho
Você lê, toca uma vez, e está assinado com uma chave que nunca saiu do telefone onde foi feita. Todo mundo vê a contagem andar.
Nenhum aparelho guarda a chave de uma segunda pessoa, então não existe aparelho cuja perda entregue a carteira a alguém.
4
No limiar, vai para a cadeia
As assinaturas são montadas e transmitidas. Dali em diante quem faz a regra valer é a cadeia, não este aplicativo — que é justamente o motivo de pôr a regra lá.
Se este aplicativo sumisse amanhã, a carteira continuaria sendo uma carteira e a regra continuaria valendo.
CINCO CADEIAS
Uma interface unificada
Cinco cadeias e, por baixo, quatro mecanismos diferentes: Bitcoin, Ethereum, BNB Smart Chain, Tron e Solana sustentam um endereço compartilhado cada uma à sua maneira. Nada disso chega à tela: propor um pagamento, assiná-lo e enviá-lo é igual nas cinco.
Bitcoin
P2WSH multisig · BIP 67 · PSBT
Um script de testemunha que se lê como “m destas n chaves”, e um endereço que é o hash dele. As chaves são ordenadas lexicograficamente, então todo mundo que monta o script a partir do mesmo conjunto de chaves chega ao mesmo endereço, e não a n! endereços diferentes.
O pagamento viaja como um PSBT: um arquivo que passa pelos signatários recolhendo assinaturas, e é finalizado quando já tem o bastante.
Script
OP_m <key>… OP_n OP_CHECKMULTISIG
Signatários
até 15, com o limiar em qualquer ponto entre eles
Dados da cadeia
um servidor Electrum
Ethereum
Safe · canonical deployment
O contrato onde já está a maior parte do dinheiro que os grupos guardam no Ethereum. Um proxy é feito pela fábrica canônica e aponta para o singleton canônico; os donos e o limiar são definidos na mesma chamada que o cria.
Nada é bifurcado e nada é reimplantado. A versão é lida do contrato em vez de ser presumida, porque um Safe feito por outra pessoa é um Safe que isto consegue abrir.
Singleton
0x41675C099F32341bf84BFc5382aF534df5C7461a
Fábrica
0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67
Agrupamento
MultiSend — vários movimentos, uma aprovação
BNB Smart Chain
Safe · the same addresses
Os mesmos contratos nos mesmos endereços. Os deployments do Safe são determinísticos entre as cadeias EVM, então não há aqui nada específico da cadeia para aprender, nem nada específico da cadeia no código.
É também por isso que uma conta no Ethereum é a mesma conta na BNB Smart Chain: um tipo de moeda, uma chave, duas cadeias.
Contratos
idênticos aos do Ethereum, acima
Tipo de moeda
60 — compartilhado com o Ethereum
Tron
Account permissions · no contract
O Tron traz a regra embutida nas contas. Um permission carrega uma lista de chaves, um peso para cada uma e um limiar, e é escrito na própria conta — não há contrato para implantar nem contrato em que confiar.
Os pesos fazem com que a regra possa ser algo além de contar cabeças: uma chave que vale dois votos, três chaves que valem um cada.
Escrito por
AccountPermissionUpdate
Regra
chaves com peso, um limiar
Observação
a atualização substitui a lista em vez de emendá-la
Solana
Squads Protocol V4
O programa de multiassinatura que a maioria das tesourarias do Solana usa. A proposta é uma conta na cadeia: os membros aprovam contra ela, e ela é executada quando as aprovações chegam ao limiar.
O id do programa decide de onde cada conta da carteira é derivada, então ele é fixado ao deployment publicado, e um id diferente é recusado em vez de aceito na confiança.
Programa
SQDS4ep65T869zMMBKyuUq6aD6EgTu8psMjkvj52pCf
Proposta
na cadeia, aprovada contra ela
POR QUE OS PADRÕES
Uma carteira que só abre aqui é uma carteira de outra pessoa
Existe um jeito mais fácil de construir isto: um contrato nosso em cada cadeia, um formato nosso, um aplicativo que o entende. Seria menos código e seria pior, porque aí o dinheiro do grupo dependeria de este aplicativo continuar existindo.
O que usar os padrões dá
Cada um destes pontos é consequência dessa escolha, não um recurso que foi acrescentado.
Auditados por mais gente do que nós. Safe e Squads guardam bilhões entre os dois e foram olhados à altura disso. P2WSH e os permissions do Tron são regras de consenso.
Legíveis por outras ferramentas. O endereço é um Safe comum, um multisig Squads comum, um endereço P2WSH comum, um permission Tron comum — exploradores de blocos e as interfaces dos próprios protocolos os leem sem saber que este aplicativo existe.
Nada de que migrar. Não há formato proprietário em que ficar preso, então não há um momento lá na frente em que sair custe alguma coisa.
A regra nos sobrevive. Quem faz o limiar valer é a cadeia. Este aplicativo é onde o grupo conversa sobre o pagamento, não o que o permite.
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 VOCÊ TRAZ UMA FRASE
Vinte e quatro palavras que você já usou em outro lugar
Uma frase de recuperação não é uma convenção, são várias, e elas discordam exatamente na mesma coisa: qual elemento do caminho se move quando você pede “conta 2”. Cada uma delas está certa, e uma frase lida sob a errada mostra saldo zero para um dinheiro que está a exatamente uma linha de aritmética. Por isso a convenção aqui não é adivinhada — é um ajuste, um por cadeia, e ele oferece uma lista de aplicativos em vez de uma lista de especificações. Dinheiro que parece sumido é dinheiro num caminho para onde este aplicativo não estava olhando.
Bitcoin
Native SegWitpadrão
m/84'/0'/{account}'/0/0
Electrum
BlueWallet
Sparrow
Exodus
Índice de endereço
m/84'/0'/0'/0/{account}
Trust Wallet
Muun
Phoenix
Ethereum & BNB Smart Chain
Índice de endereçopadrão
m/44'/60'/0'/0/{account}
MetaMask
Rabby
Trust Wallet
Rainbow
Phantom
Conta endurecida
m/44'/60'/{account}'/0/0
Ledger Live
Trezor Suite
Exodus
Quatro elementos
m/44'/60'/0'/{account}
MyEtherWallet (legacy)
Ledger (legacy)
Tron
Índice de endereçopadrão
m/44'/195'/0'/0/{account}
TronLink
Trust Wallet
Conta endurecida
m/44'/195'/{account}'/0/0
Ledger Live
Trezor Suite
Solana
Quatro elementospadrão
m/44'/501'/{account}'/0'
Phantom
Solflare
Backpack
Só a conta
m/44'/501'/{account}'
Ledger Live
Solflare (hardware)
Legado
m/501'/{account}'/0/0
Sollet (legacy)
Os layouts legado e aninhado do Bitcoin faltam de propósito. O construtor de endereços deriva native SegWit e nada mais, então um m/44'/0'/… aqui daria um bc1… onde qualquer outra carteira mostra um 1… ou um 3… — uma string que parece certa, pertence à sua frase, e não é o endereço que qualquer outra pessoa lê naquele caminho. Uma escolha que em silêncio significa outra coisa do que diz é pior do que escolha nenhuma.
SE VOCÊ TRAZ UMA CARTEIRA
Se você vem de outro lugar
Dois caminhos para entrar, e estão em estágios diferentes
Dito com todas as letras, porque uma página que descreve o planejado com a mesma voz do que está pronto é uma página com a qual você não decide nada.
Sua frase de recuperação — já dá. Vinte e quatro palavras, e a pergunta sobre em qual carteira você as usou. Cada endereço que a tabela acima descreve é derivado no seu aparelho a partir da frase e não é guardado em lugar nenhum; uma conta EVM, uma conta Tron e uma conta Solana são o mesmo endereço em todas as redes da respectiva cadeia.
Um multisig que já existe — ainda não. Ler já está feito: a biblioteca por trás disto abre um Safe pelo endereço e informa seus donos, limiar e versão; lê os membros e o limiar de um multisig Squads, os signatários e pesos de um permission do Tron, e decodifica um script de testemunha do Bitcoin de volta para endereço, limiar e chaves. O que não está feito é a tela que leva você por isso e prende aquilo a uma conversa. Enquanto não estiver, esta página não vai fingir que está.
Nesse meio-tempo nada impede você: um Safe ou um multisig Squads que você já tenha continua funcionando na interface em que você o fez, porque ele nunca foi outra coisa senão um Safe ou um multisig Squads.
Nada neste site é aconselhamento financeiro: os exemplos são exemplos, e o dinheiro — e o risco — são seus. Avisos.