Gregory Maxwell, também chamado Greg Maxwell ou gmaxwell, é desenvolvedor do Bitcoin e cofundador da Blockstream. Contribuiu para CoinJoin, Confidential Transactions e Taproot, e é coautor de Bech32. Esses nomes descrevem técnicas diferentes, não um pacote de funções disponível em toda carteira Bitcoin.
O trabalho de Maxwell liga o desenvolvimento do Bitcoin à privacidade e à segurança. Ele cofundou a Blockstream, onde foi CTO, o diretor de tecnologia. Em 19 de janeiro de 2018, a empresa anunciou que ele havia deixado o cargo para se concentrar no Bitcoin. Essa é a data do anúncio, não a comprovação do dia exato da saída. Também não estabelece sua ocupação atual. Aqui, os problemas concretos que estudou importam mais que o título do cargo. [1]
Imagine várias pessoas reunindo pagamentos em uma transação. Cada uma contribui com suas entradas, moedas recebidas anteriormente que agora serão gastas, e assina para autorizar seu uso. Um observador não pode concluir com certeza que todas pertencem à mesma pessoa só porque aparecem juntas. Usando o nome gmaxwell, Maxwell explicou CoinJoin em 22 de agosto de 2013. Reconheceu expressamente usos anteriores limitados; a técnica não exigia mudanças nas regras do protocolo Bitcoin. [2]
Como os participantes combinam o que assinar? Um coordenador pode montar um CoinJoin simples, mas cada pessoa verifica primeiro sua saída: para onde seus recursos vão e em qual valor. Só depois assina suas entradas. Isso não dá ao coordenador liberdade para gastar as moedas. Mesmo assim, numa implementação simples ele pode conhecer as relações entre entradas e saídas. Um participante que se recuse a assinar também pode interromper a rodada. Proteção contra roubo, disponibilidade e privacidade são propriedades diferentes. [2]
Transações Bitcoin comuns expõem os valores. Confidential Transactions resolvem outro problema além de reunir pagamentos: escondem valores em compromissos criptográficos. Esses dados fixam um valor sem revelá-lo e permitem verificar somas. A explicação de Maxwell no Elements parte de uma proposta de Adam Back de 2013. Seu uso no Elements não significa a implantação dessa função na rede base do Bitcoin. Ocultar valores também não esconde por si só todo o grafo de transações, a rede de ligações entre pagamentos. [3]
Na aritmética, 10 = 11 + (-1). Como modelo de transferência sem taxas, isso mostra um problema: o total fecha, mas uma saída positiva supera o valor inicial, compensada por uma saída negativa sem sentido. Em Confidential Transactions, o transbordamento modular pode produzir efeito semelhante quando o cálculo dá a volta no limite do sistema numérico. Por isso é necessária uma prova de intervalo: ela verifica que o valor oculto está dentro dos limites permitidos sem revelar o valor exato. A privacidade não pode abrir caminho para criar dinheiro extra. [3]
Por que publicar condições alternativas quando todos concordaram e elas não foram necessárias? A proposta Taproot de Maxwell, de 23 de janeiro de 2018, mostrou como uma assinatura conjunta poderia esconder a existência de outras condições de gasto. Com a cooperação das partes, um acordo complexo pode parecer um pagamento comum autorizado por uma chave. A data da mensagem não é a data de ativação na rede. Entre a ideia e a adoção ficam a discussão, regras precisas e sua aceitação. [4]
A especificação final BIP 341, documento técnico público que define as regras de Taproot, apresenta Pieter Wuille, Jonas Nick e Anthony Towns como autores. O caminho por chave pode usar uma assinatura sem revelar a presença de um script alternativo. Script é um programa que expressa condições de gasto; se esse caminho for usado, o programa escolhido e a prova de sua inclusão são revelados. Isso não diminui a ideia original de Maxwell, mas tampouco permite atribuir a ele autoria exclusiva das regras finais. [5]
Enviar dinheiro também depende de um endereço escrito corretamente. Pieter Wuille e Greg Maxwell são os autores de BIP 173, que descreve Bech32 para endereços SegWit nativos. Sua soma de verificação contém caracteres que ajudam a detectar erros na codificação. Ela não verifica a identidade do destinatário nem quem possui a chave privada. Um endereço válido, mas substituído, pode passar pela conferência. Bech32 trata, portanto, de um problema diferente de CoinJoin ou dos valores ocultos; seus benefícios não são intercambiáveis. [6]
Para ter uma visão mais completa, leia este verbete junto com Pieter Wuille, Matt Corallo, Satoshi Nakamoto. Também há referências a este verbete em Pieter Wuille, Matt Corallo.