Por que endereços multisig na Solana são difíceis

·7 min de leitura·Por SSP Editorial Team
Capa da marca SSP para um artigo sobre endereços multisig da Solana, com ícones de QR code, chave, banco de dados e chip

Um endereço de carteira parece algo simples: uma sequência que você copia, cola e para a qual envia dinheiro. No Bitcoin, é quase isso de simples. Na Solana, colocar uma carteira compartilhada — um multisig — por trás de um endereço é surpreendentemente difícil. Este artigo explica por quê e prepara a pergunta que o restante desta série responde.

O que um endereço multisig precisa prometer

Uma carteira multisig é controlada por várias chaves, em que um número fixo delas precisa concordar antes que o dinheiro se mova. Um multisig "2 de 3", por exemplo, tem três chaves e precisa que duas quaisquer aprovem um pagamento. O objetivo é eliminar os pontos únicos de falha: você perde uma chave, ou uma chave é roubada, e seus fundos continuam seguros.

Para que isso seja útil, o endereço precisa manter duas promessas. Primeiro, ele precisa ser conhecido com antecedência — você quer entregar a alguém um endereço de depósito antes de terminar de configurar qualquer coisa. Segundo, ele precisa ser honesto: quem enviar dinheiro para esse endereço deve poder confiar que só o grupo de chaves combinado, sob a regra combinada, poderá gastar dele. Guarde essas duas promessas. Elas são o fio condutor de tudo o que vem a seguir.

No Bitcoin, o endereço é a regra

O Bitcoin faz isso parecer fácil. Um multisig de Bitcoin é descrito por um pequeno script: a lista de chaves públicas mais a regra "M de N". Para obter o endereço, você pega esse script e o coloca em hash. O endereço (um endereço P2WSH) literalmente é o hash das regras de gasto.

Isso tem uma consequência discretamente poderosa. Qualquer pessoa pode calcular o endereço offline, em um notebook sem internet, antes de transmitir uma única transação. Não há etapa de "criar a carteira" — a carteira não precisa existir na rede para receber dinheiro. O script é revelado só mais tarde, quando os fundos são gastos, e a rede verifica se o script revelado bate com o endereço e se há assinaturas válidas suficientes. Endereço conhecido com antecedência: sim. Honesto: sim — porque o endereço deriva da própria regra, um conjunto diferente de chaves produz um endereço diferente.

Na Solana, um endereço é uma conta que precisa ser criada

A Solana funciona de forma diferente. Na Solana, tudo é uma conta — um espaço de armazenamento on-chain com um dono. Seus fundos vivem em contas, os programas vivem em contas, e a configuração de um multisig também vive em uma conta. É crucial que as contas não surjam de graça. Uma conta precisa ser criada e paga explicitamente: alguém a financia com uma pequena quantia de SOL chamada "aluguel" para que a rede armazene seus dados.

Um multisig na Solana, portanto, não é apenas um endereço — é uma conta controlada por um programa que guarda a lista de membros e o limite. E essa conta precisa ser criada por uma transação antes que o multisig possa fazer qualquer coisa. Essa é a raiz da dificuldade: uma carteira compartilhada na Solana tem uma etapa de configuração que o Bitcoin simplesmente não tem.

PDAs: endereços sem chave privada

A Solana tem, sim, uma ferramenta elegante para isso, chamada Endereço Derivado de Programa, ou PDA. Um endereço normal da Solana tem uma chave privada correspondente — quem tem a chave controla o endereço. Um PDA é construído deliberadamente para ficar fora da curva: é um endereço de aparência válida para o qual nenhuma chave privada existe e nenhuma chave privada pode existir. Ninguém pode assinar por ele pessoalmente.

Em vez disso, um PDA é derivado de forma determinística. Você pega alguns valores de entrada — chamados de "sementes" — mais o ID de um programa, passa tudo por uma função de mão única e sai o endereço. As mesmas sementes e o mesmo programa sempre produzem o mesmo PDA, então qualquer um pode reproduzi-lo. E como não há chave privada, só o programa dono pode autorizar ações para esse endereço, o que ele faz por meio de um mecanismo chamado invocação entre programas com invoke_signed: o programa apresenta as sementes ao runtime da Solana, e o runtime concede a ele autoridade de assinatura para o PDA. Nenhuma assinatura criptográfica é produzida — o direito de agir vem de conhecer as sementes, não de ter uma chave.

Um PDA é exatamente a casa certa para um multisig: um endereço controlado pela lógica do programa em vez de por uma única pessoa. Até aqui, tudo bem. A parte difícil é o que se escolhe como sementes.

O problema de financiar antes de criar

É aqui que os multisigs dominantes da Solana esbarram em dificuldade. Ao contrário do modelo determinístico do Bitcoin, os multisigs mais usados da Solana — o Squads V4 é o exemplo líder, maduro e muito auditado — derivam o endereço do multisig de um valor aleatório recém-gerado, escolhido no momento da criação, e não do conjunto de membros. No Squads V4 esse valor se chama create_key, uma chave efêmera produzida quando um criador executa a transação de criação.

Derivar o endereço de um create_key aleatório é uma escolha de design deliberada e razoável — contorna um caso de borda incômodo em que dois grupos diferentes querem exatamente a mesma composição de membros. Mas tem duas consequências que vale entender com clareza:

  • Você não pode conhecer o endereço com antecedência. A semente não existe até que alguém execute a transação de criação, então o endereço também não. Não há como imprimir um endereço de depósito e financiá-lo antes da configuração — o problema de financiar antes de criar. A primeira promessa se quebra.
  • O criador é um ponto único de confiança na configuração. Uma conta específica precisa executar essa transação de criação e escolher esse valor aleatório. Pela breve janela da configuração, você confia que essa parte faça isso corretamente.

Nada disso torna o Squads V4 inseguro — é o multisig mais testado em batalha da Solana e custodia somas muito grandes. É simplesmente um formato diferente de confiança em relação ao do Bitcoin. O endereço já não é "o hash da regra"; é "seja lá o que a transação de criação tenha produzido".

A Ethereum encontrou um caminho do meio

A Ethereum enfrentou um problema parecido e respondeu com um recurso chamado CREATE2. Ele permite calcular o endereço de um contrato inteligente antes de o contrato ser implantado, a partir de entradas fixas. Carteiras como a Safe usam isso para lhe dar um chamado endereço contrafactual: um endereço real e financiável que você pode compartilhar e no qual receber dinheiro, enquanto o contrato real é implantado de forma preguiçosa — só quando os fundos precisam se mover pela primeira vez. O padrão mais recente de abstração de contas, ERC-4337, formaliza a mesma ideia. A Ethereum recupera assim a promessa de "conhecido com antecedência" mesmo que, como a Solana, precise que um objeto on-chain exista no fim.

A pergunta que esta série responde

Coloque os três modelos lado a lado. Bitcoin: o endereço é o hash da regra — conhecível offline, honesto por construção, sem etapa de criação. Ethereum: um endereço contrafactual — conhecível com antecedência, com a implantação adiada. Os multisigs gerais da Solana: o endereço vem de aleatoriedade do momento da criação — não conhecível com antecedência, com um criador em quem confiar na configuração.

Então aqui está a pergunta. A Solana precisa de contas, e contas precisam ser criadas — isso não vai mudar. Mas um multisig da Solana precisa abrir mão da propriedade do Bitcoin? O endereço poderia, em vez disso, ser derivado puramente do conjunto de membros e do limite — a própria regra — de modo que seja conhecível offline, financiável antes da configuração e honesto porque um grupo diferente de chaves produz um endereço diferente?

Essa é exatamente a propriedade que a equipe da SSP incorporou ao seu próprio programa de multisig da Solana. O próximo artigo mostra como: um endereço que é o conjunto de membros, um cofre que você pode financiar antes de qualquer coisa estar registrada on-chain e uma etapa de registro que não precisa de criador nenhum. O design foi lançado junto com o suporte à Solana no SSP Wallet — veja o anúncio de lançamento — e, em linha com como a SSP trata segurança, o programa está atualmente só na devnet e aguardando uma auditoria externa antes da mainnet. Se você ainda é novo no multisig em si, comece por o que é um multisig e por que ele importa; caso contrário, siga em frente.

Compartilhar este artigo

Artigos relacionados