
Até agora, toda proposta de melhoria do Bitcoin (BIP) que precisava de primitivas criptográficas tinha que reinventar a roda. Cada um veio com sua própria implementação Python personalizada da curva elíptica Secp256k1 e algoritmos relacionados, cada um sutilmente diferente um do outro. Essas inconsistências introduziram passivos silenciosos e tornaram a revisão dos BIPs desnecessariamente complicados. Esse problema foi destacado recentemente no Bitcoin Optech Newsletter #348, e é algo pelo menos um punhado de desenvolvedores na comunidade de desenvolvimento de Bitcoin há muito se sentiu: deve haver um padrão unificado e reutilizável para o código de referência bip criptográfica Secp256k1.
Na semana passada, Jonas Nick e Tim Ruffing, da Blockstream Research e Sebastian Falbesoner, fizeram um grande progresso em direção a isso. Como parte de sua proposta de Chilldkg existente, a equipe divulgou o Secp256K1Lab. Um novo, intencionalmente inseguro Biblioteca Python para prototipagem, experimentação e especificações BIP. Não é para uso da produção (porque não é de tempo constante e, portanto, vulnerável a ataques de canal lateral), mas preenche uma lacuna crítica: oferece uma referência limpa e consistente para a funcionalidade Secp256k1, incluindo assinaturas de Schnorr de nível BIP-340, ECDH e aritético de campo/grupo de baixo nível. O objetivo é simples: torne mais fácil e seguro escrever BIPs futuros, evitando implementações redundantes e únicas. Para os autores BIP, isso significa: menos código personalizado, menos problemas de especificação e um caminho mais claro do protótipo para a proposta.
> Por que não usar a biblioteca Secp256k1 real?
O Bitcoin Core já inclui uma biblioteca C rápida e em tempo constante para a criptografia Secp256k1. Então, por que os autores BIP não usam isso?
Quando um autor BIP envia uma proposta, espera -se que eles incluam uma implementação de referência para explicar como a ideia funciona. Essas implementações não precisam ser escritas no Python, mas C geralmente é muito baixo para prototipagem. O Python é mais fácil de ler, mais fácil de modificar e torna mais claro o que o autor está tentando expressar. Essas qualidades o tornam especialmente adequado para escrever especificações.
Ao introduzir uma nova idéia criptográfica, ajuda a ter algo claro, conciso e seguro para experimentar. Em princípio, ferramentas como o HACSPEC são uma boa opção para especificações formais, pois o código HACSpec também é válido. Mas, na prática, o HACSPEC pode ser difícil de trabalhar e ler, especialmente para leitores BIP que não estão familiarizados com a ferrugem.
A legibilidade do Python continua a tornar o idioma que muitos autores retornam quando precisam explicar como algo funciona.
Por que os autores BIP continuam re-rolando o Secp256k1 de novo e de novo
Isso começou de volta com PIB 340 Schnorrataturesquando os autores do BIP escreveram o código de referência original no Python, seria fácil seguir a matemática. Eles definiram exatamente como fazer assinatura e verificação no estilo Schnorr usando os parâmetros da curva do Secp256k1. Eles tiveram que construir tudo a partir do zero: aritmética de campo, operações de grupo, geração determinística de Nonce e as regras de codificação. O código Python era claro e educacional. Mas foi adaptado especificamente a esse único BIP e não foi projetado para ser reutilizado por futuros.
De forma similar, BIP 324 Transporte P2P criptografadoCriptografia adicionada a como os nós do Bitcoin devem conversar entre si e usar um protocolo chamado ruído que se baseia em trocas de chave, segredos compartilhados e criptografia simétrica. Embora se baseie na mesma curva Secp256k1 usada no BIP 340, ela não reutilizou nenhum do código de implementação real. Toda a lógica criptográfica, como ECDH, serialização e padrões de aperto de mão, foi reimplementada do zero em Python. Embora a matemática subjacente seja a mesma, cada BIP acaba escrevendo sua própria versão da lógica. Isso leva a um esforço duplicado e apresenta o potencial de inconsistências sutis.
O que segp256k1lab realmente é
Secp256k1lab é uma biblioteca Python criada para um propósito: facilitando a redação e o teste de especificações criptográficas para o Bitcoin. O Python já é o idioma mais popular e amplamente usado para implementações de referência e vetores de teste em BIPs, portanto, ter uma biblioteca compartilhada e reutilizável faz sentido. Não foi projetado para uso da produção. É construído para prototipagem, não desempenho. Oferece uma interface limpa e unificada para a funcionalidade principal SEC256K1, com código legível e configuração mínima. Chega de rolar o seu próprio toda vez que você deseja testar uma ideia ou demonstrar como algo deve funcionar.
Caso de uso do mundo real: Chilldkg
Secp256k1lab foi desenvolvido como parte do trabalho em Chilldkguma nova proposta BIP para geração de chave distribuída. Em vez de escrever mais uma implementação personalizada do Secp256k1 apenas para esta especificação, os autores usaram o Secp256k1Lab para lidar com todos os blocos de construção criptográfica de uma maneira que pudesse ser alavancada por outros. Ao reutilizar uma base de código compartilhada e legível, sua esperança é que os futuros BIPs criptográficos não precisem começar do zero. Com o Secp256K1Lab, finalmente há uma base na qual novas propostas podem construir e melhorar juntos.
Para onde poderia ir
Ainda há uma pergunta em aberto: O Secp256K1Lab morre no repositório BIPS? Já está se mostrando útil como uma referência compartilhada para propostas criptográficas, mas há uma discussão em andamento sobre onde realmente pertence no processo mais amplo de desenvolvimento de Bitcoin. Seja como uma biblioteca independente ou se torna mais integrada ao fluxo de trabalho BIP, uma coisa é clara – preenche uma lacuna que existe há anos. Se você é um autor bip, revisor de especificações ou apenas curioso para melhorar as ferramentas criptográficas em torno do Bitcoin, adoraríamos sua contribuição. Você pode participar da discussão na lista de discussão Bitcoin-Dev ou contribuir diretamente para o repo do Secp256K1Lab Github.
Este é um post convidado de Kiara Bickers. As opiniões expressas são inteiramente suas e não refletem necessariamente as da BTC Inc ou da revista Bitcoin.
Fonte: bitcoinmagazine.com