Embora saibamos que assinar transações com muitos UTXOs pode causar falhas no dispositivo, esta declaração geral ainda deixa algumas questões: existe um número definido de UTXOs que fariam com que uma carteira de hardware falhasse durante a assinatura? Certos UTXOs podem causar mais dificuldades do que outros?
Ao pesquisar as respostas a essas perguntas, descobri que o tempo e o esforço que uma carteira de hardware requer para assinar uma transação não depende apenas do número de UTXOs enviados e de quantos endereços de recebimento existirão. Também depende de detalhes semelhantes em torno das transações anteriores de onde veio cada UTXO, um fenômeno que chamo de “assinatura em massa”. Não tenho conhecimento de nenhuma outra publicação que faça referência a esse conceito.
Em outras palavras, UTXOs com maior massa de assinatura – explicados com mais detalhes abaixo – podem ser mais difíceis de assinar do que outros. Mesmo que dois UTXOs possam usar a mesma quantidade de dados no blockchain, pode ser necessário um processamento substancialmente maior para assinar usando uma carteira de hardware.
Esse fato vai além dos tipos de endereço e quóruns multisig; um UTXO em um endereço multisig 2 de 3 pode exigir substancialmente mais esforço para assinar do que outro UTXO no mesmo endereço (ou um endereço equivalente, e mesmo que os valores de bitcoin e os endereços de destino sejam exatamente os mesmos).
Para entender por que dois UTXOs de aparência semelhante podem ter massas de assinatura dramaticamente diferentes, você precisa entender o método indireto que as carteiras de hardware usam para verificar os valores de entrada sem uma conexão com a Internet e como a complexidade da transação pode diferir entre os vários métodos de recebimento de bitcoin em sua carteira.
Para qualquer transação de bitcoin, é importante verificar os valores dos insumos; caso contrário, grandes quantias de seu bitcoin poderão ser pagas acidentalmente aos mineradores. Por que? Porque as taxas cobradas pelos mineradores não são declaradas explicitamente na transação, mas calculadas implicitamente subtraindo o valor dos resultados do valor dos insumos. Portanto, se houver uma grande diferença entre os dois números, a taxa cobrada também será grande.
Por exemplo, se você tivesse UTXOs totalizando 0,8 BTC e os usasse para enviar 0,3 BTC para algum lugar, se você não enviasse os ~0,5 BTC restantes de volta para si mesmo como troco, o minerador do bloco agora pode reivindicar os 0,5 BTC como um troco. parte de seus honorários ganhos.
Não se preocupe! Todas as ferramentas Bitcoin modernas e respeitadas incluem mecanismos automáticos de segurança, portanto, cometer esse erro seria bastante difícil (se não impossível). O processo pode ser tão simples quanto pesquisar na blockchain para verificar a quantidade de entradas e depois comparar seu total com a soma das saídas escolhidas para determinar se a taxa é razoável.
Mas é claro que as carteiras de hardware são projetadas para funcionar independentemente da Internet, o que é especialmente evidente para dispositivos isolados. Sem a internet ou uma conexão de nó, o blockchain não pode ser observado. Portanto, a maioria das carteiras de hardware deve usar um método alternativo e indireto para verificar os valores de entrada. Essencialmente, o dispositivo não só precisa importar as informações que descrevem a transação que irá assinar, mas também importar o histórico de onde veio cada entrada.
Em outras palavras, para cada UTXO sendo movido, o dispositivo desejará verificar novamente os detalhes da transação diretamente antes, o que levou à criação desse UTXO. Se essa transação fosse complexa, envolveria a importação de mais dados, o que se refletiria em algo como o tamanho de um arquivo PSBT. Vamos dar uma olhada na complexidade da transação.
A maioria das pessoas recebe bitcoin em sua carteira de três maneiras: de uma exchange, de um pool de mineração ou diretamente de outra pessoa em uma transação peer-to-peer (P2P). As transações ponto a ponto geralmente contêm complexidade muito baixa e os UTXOs resultantes terão uma massa de assinatura relativamente pequena.
No entanto, as bolsas e os pools de mineração tendem a distribuir fundos em lotes, enviando bitcoin para muitas pessoas ao mesmo tempo na mesma transação. Essas transações são mais complexas e os UTXOs resultantes terão uma massa de assinaturas maior.
Investiguei as tendências de distribuição de vários pools e bolsas de mineração populares na América, e minhas descobertas são apresentadas no gráfico abaixo. O número de saídas indica o número de pessoas que normalmente enviam bitcoins em cada distribuição. Um número mais alto significa mais complexidade de transação e uma carga de assinatura em massa mais considerável para os destinatários.
Esses números são aproximações no momento da redação e estão sujeitos a alterações de acordo com a forma como cada pool ou bolsa realiza distribuições no futuro.
Observe que as distribuições dos pools de mineração são geralmente maiores do que as exchanges, e certos pools de mineração, como o F2Pool, usam distribuições extraordinariamente grandes. Conseqüentemente, se você receber um UTXO diretamente de um pagamento F2Pool, é mais provável que esse UTXO faça com que certas carteiras de hardware tenham dificuldades de assinatura.
Em 2017, ocorreu o soft fork de testemunha segregada e o processo de assinatura foi alterado para transações SegWit. Foi introduzido um requisito para incluir valores de entrada nos dados com os quais os usuários se comprometem com uma assinatura. Como resultado, acreditava-se que qualquer tentativa de enganar um usuário ou dispositivo para que assinasse inadvertidamente uma transação com taxas absurdamente altas seria evitada. A maioria dos fabricantes de carteiras de hardware agiu de acordo, removendo as verificações de segurança do valor de entrada e simplificando o processo de assinatura para transações SegWit.
No entanto, em meados de 2020, uma vulnerabilidade foi encontrada no BIP 143, levando muitos fabricantes de carteiras de hardware a reintroduzir verificações de segurança de valores de entrada para transações SegWit. No momento em que este artigo foi escrito, as verificações de segurança do valor de entrada continuavam sendo um processo normal durante a assinatura de uma carteira de hardware. Há alguma discussão na comunidade sobre mudanças futuras que poderiam eliminar de forma mais eficaz a necessidade de verificações de segurança de valores de entrada, como tornar as taxas explícitas em cada transação, em vez de implícitas.
As variações na massa de assinatura significam que, quando você está tentando retirar bitcoin de sua carteira de armazenamento refrigerado de autocustódia, há alguma relevância em como você obteve o bitcoin em primeiro lugar. Os métodos que você usa para adquirir bitcoin podem criar diferenças na hora de aprovar transferências.
Se você possui um UTXO que foi movido de uma carteira diferente que você controla ou foi recebido de uma transação peer-to-peer, é provável que a transação tenha sido relativamente simples. O UTXO terá uma massa de assinatura menor e será mais fácil de assinar durante gastos futuros. Por outro lado, se você recebeu um UTXO diretamente de um pool de mineração, ou especialmente de um pool de mineração que faz distribuições muito grandes (conforme mostrado no gráfico anterior), você pode esperar que o UTXO seja mais difícil de assinar.
Felizmente, se sua carteira de hardware não conseguir assinar porque você está tentando mover muitos UTXOs de alta massa simultaneamente, isso não significa que seu bitcoin esteja permanentemente preso. Uma solução rápida e fácil é dividir sua transação em diversas transações, movimentando seu bitcoin em pedaços. Cada pedaço conterá apenas uma fração dos dados e é mais provável que seu dispositivo forneça uma assinatura com êxito.
Outra estratégia é evitar falhas de assinatura, em primeiro lugar, controlando o número de UTXOs que você possui e a massa de assinatura desses UTXOs. Embora não seja possível alterar a forma como os pools de mineração e as bolsas distribuem os fundos, é essencial lembrar que a massa de assinatura de um UTXO é determinada pela transação imediatamente anterior, e não por qualquer histórico de transações anterior a ela. Isso significa que você pode receber um UTXO de um pool de mineração e transferi-lo imediatamente para outra carteira ou endereço que você controla, simulando uma transação ponto a ponto. O UTXO resultante no novo endereço terá uma massa de assinatura pequena em vez de grande.
É importante destacar que a assinatura em massa afeta apenas o tempo e o esforço que uma carteira de hardware requer para assinar uma transação, e não as taxas de rede que você pagará. Isso ocorre porque a assinatura em massa só é relevante durante o processo de assinatura e não fará com que sua transação ocupe mais dados no blockchain.
Isso significa que você não pagará necessariamente mais taxas de transação se receber bitcoin de um pool de mineração como o F2Pool, nem suas taxas de transação serão reduzidas ao escolher um serviço que use menos resultados para suas distribuições.
Embora saibamos que assinar transações com muitos UTXOs pode causar falhas no dispositivo, esta declaração geral ainda deixa algumas questões: existe um número definido de UTXOs que fariam com que uma carteira de hardware falhasse durante a assinatura? Certos UTXOs podem causar mais dificuldades do que outros?
Ao pesquisar as respostas a essas perguntas, descobri que o tempo e o esforço que uma carteira de hardware requer para assinar uma transação não depende apenas do número de UTXOs enviados e de quantos endereços de recebimento existirão. Também depende de detalhes semelhantes em torno das transações anteriores de onde veio cada UTXO, um fenômeno que chamo de “assinatura em massa”. Não tenho conhecimento de nenhuma outra publicação que faça referência a esse conceito.
Em outras palavras, UTXOs com maior massa de assinatura – explicados com mais detalhes abaixo – podem ser mais difíceis de assinar do que outros. Mesmo que dois UTXOs possam usar a mesma quantidade de dados no blockchain, pode ser necessário um processamento substancialmente maior para assinar usando uma carteira de hardware.
Esse fato vai além dos tipos de endereço e quóruns multisig; um UTXO em um endereço multisig 2 de 3 pode exigir substancialmente mais esforço para assinar do que outro UTXO no mesmo endereço (ou um endereço equivalente, e mesmo que os valores de bitcoin e os endereços de destino sejam exatamente os mesmos).
Para entender por que dois UTXOs de aparência semelhante podem ter massas de assinatura dramaticamente diferentes, você precisa entender o método indireto que as carteiras de hardware usam para verificar os valores de entrada sem uma conexão com a Internet e como a complexidade da transação pode diferir entre os vários métodos de recebimento de bitcoin em sua carteira.
Para qualquer transação de bitcoin, é importante verificar os valores dos insumos; caso contrário, grandes quantias de seu bitcoin poderão ser pagas acidentalmente aos mineradores. Por que? Porque as taxas cobradas pelos mineradores não são declaradas explicitamente na transação, mas calculadas implicitamente subtraindo o valor dos resultados do valor dos insumos. Portanto, se houver uma grande diferença entre os dois números, a taxa cobrada também será grande.
Por exemplo, se você tivesse UTXOs totalizando 0,8 BTC e os usasse para enviar 0,3 BTC para algum lugar, se você não enviasse os ~0,5 BTC restantes de volta para si mesmo como troco, o minerador do bloco agora pode reivindicar os 0,5 BTC como um troco. parte de seus honorários ganhos.
Não se preocupe! Todas as ferramentas Bitcoin modernas e respeitadas incluem mecanismos automáticos de segurança, portanto, cometer esse erro seria bastante difícil (se não impossível). O processo pode ser tão simples quanto pesquisar na blockchain para verificar a quantidade de entradas e depois comparar seu total com a soma das saídas escolhidas para determinar se a taxa é razoável.
Mas é claro que as carteiras de hardware são projetadas para funcionar independentemente da Internet, o que é especialmente evidente para dispositivos isolados. Sem a internet ou uma conexão de nó, o blockchain não pode ser observado. Portanto, a maioria das carteiras de hardware deve usar um método alternativo e indireto para verificar os valores de entrada. Essencialmente, o dispositivo não só precisa importar as informações que descrevem a transação que irá assinar, mas também importar o histórico de onde veio cada entrada.
Em outras palavras, para cada UTXO sendo movido, o dispositivo desejará verificar novamente os detalhes da transação diretamente antes, o que levou à criação desse UTXO. Se essa transação fosse complexa, envolveria a importação de mais dados, o que se refletiria em algo como o tamanho de um arquivo PSBT. Vamos dar uma olhada na complexidade da transação.
A maioria das pessoas recebe bitcoin em sua carteira de três maneiras: de uma exchange, de um pool de mineração ou diretamente de outra pessoa em uma transação peer-to-peer (P2P). As transações ponto a ponto geralmente contêm complexidade muito baixa e os UTXOs resultantes terão uma massa de assinatura relativamente pequena.
No entanto, as bolsas e os pools de mineração tendem a distribuir fundos em lotes, enviando bitcoin para muitas pessoas ao mesmo tempo na mesma transação. Essas transações são mais complexas e os UTXOs resultantes terão uma massa de assinaturas maior.
Investiguei as tendências de distribuição de vários pools e bolsas de mineração populares na América, e minhas descobertas são apresentadas no gráfico abaixo. O número de saídas indica o número de pessoas que normalmente enviam bitcoins em cada distribuição. Um número mais alto significa mais complexidade de transação e uma carga de assinatura em massa mais considerável para os destinatários.
Esses números são aproximações no momento da redação e estão sujeitos a alterações de acordo com a forma como cada pool ou bolsa realiza distribuições no futuro.
Observe que as distribuições dos pools de mineração são geralmente maiores do que as exchanges, e certos pools de mineração, como o F2Pool, usam distribuições extraordinariamente grandes. Conseqüentemente, se você receber um UTXO diretamente de um pagamento F2Pool, é mais provável que esse UTXO faça com que certas carteiras de hardware tenham dificuldades de assinatura.
Em 2017, ocorreu o soft fork de testemunha segregada e o processo de assinatura foi alterado para transações SegWit. Foi introduzido um requisito para incluir valores de entrada nos dados com os quais os usuários se comprometem com uma assinatura. Como resultado, acreditava-se que qualquer tentativa de enganar um usuário ou dispositivo para que assinasse inadvertidamente uma transação com taxas absurdamente altas seria evitada. A maioria dos fabricantes de carteiras de hardware agiu de acordo, removendo as verificações de segurança do valor de entrada e simplificando o processo de assinatura para transações SegWit.
No entanto, em meados de 2020, uma vulnerabilidade foi encontrada no BIP 143, levando muitos fabricantes de carteiras de hardware a reintroduzir verificações de segurança de valores de entrada para transações SegWit. No momento em que este artigo foi escrito, as verificações de segurança do valor de entrada continuavam sendo um processo normal durante a assinatura de uma carteira de hardware. Há alguma discussão na comunidade sobre mudanças futuras que poderiam eliminar de forma mais eficaz a necessidade de verificações de segurança de valores de entrada, como tornar as taxas explícitas em cada transação, em vez de implícitas.
As variações na massa de assinatura significam que, quando você está tentando retirar bitcoin de sua carteira de armazenamento refrigerado de autocustódia, há alguma relevância em como você obteve o bitcoin em primeiro lugar. Os métodos que você usa para adquirir bitcoin podem criar diferenças na hora de aprovar transferências.
Se você possui um UTXO que foi movido de uma carteira diferente que você controla ou foi recebido de uma transação peer-to-peer, é provável que a transação tenha sido relativamente simples. O UTXO terá uma massa de assinatura menor e será mais fácil de assinar durante gastos futuros. Por outro lado, se você recebeu um UTXO diretamente de um pool de mineração, ou especialmente de um pool de mineração que faz distribuições muito grandes (conforme mostrado no gráfico anterior), você pode esperar que o UTXO seja mais difícil de assinar.
Felizmente, se sua carteira de hardware não conseguir assinar porque você está tentando mover muitos UTXOs de alta massa simultaneamente, isso não significa que seu bitcoin esteja permanentemente preso. Uma solução rápida e fácil é dividir sua transação em diversas transações, movimentando seu bitcoin em pedaços. Cada pedaço conterá apenas uma fração dos dados e é mais provável que seu dispositivo forneça uma assinatura com êxito.
Outra estratégia é evitar falhas de assinatura, em primeiro lugar, controlando o número de UTXOs que você possui e a massa de assinatura desses UTXOs. Embora não seja possível alterar a forma como os pools de mineração e as bolsas distribuem os fundos, é essencial lembrar que a massa de assinatura de um UTXO é determinada pela transação imediatamente anterior, e não por qualquer histórico de transações anterior a ela. Isso significa que você pode receber um UTXO de um pool de mineração e transferi-lo imediatamente para outra carteira ou endereço que você controla, simulando uma transação ponto a ponto. O UTXO resultante no novo endereço terá uma massa de assinatura pequena em vez de grande.
É importante destacar que a assinatura em massa afeta apenas o tempo e o esforço que uma carteira de hardware requer para assinar uma transação, e não as taxas de rede que você pagará. Isso ocorre porque a assinatura em massa só é relevante durante o processo de assinatura e não fará com que sua transação ocupe mais dados no blockchain.
Isso significa que você não pagará necessariamente mais taxas de transação se receber bitcoin de um pool de mineração como o F2Pool, nem suas taxas de transação serão reduzidas ao escolher um serviço que use menos resultados para suas distribuições.