Avatar
Bolsonitro Ucrânia 🇺🇦🇻🇦
4ec341e6e1f57370630b7bf9b79a9593a2f7eb98afe45f3b970fa0036dc2fdaf
Bitcoiner Software developer Catholic We are all #NAFO

Novo vídeo explicando sobre empréstimo colateralizado em Bitcoin:

https://youtu.be/7XjE6ABGCcs?si=U1Re-6xxbko7dChz

"O mundo de ontem" do Stefan Zweig.

Esqueci o capítulo, acho que é "Mundo em Revolução".

Hiperinflação causando degeneração moral na república de Weimar.

Naquele período, Berlin era a capital da prostituição, muitas fontes relatam que se você tivesse dólares, o sexo seria muito barato (mesmo que estivesse falando das mulheres "de luxo" na cidade).

https://twitter.com/bolsonitro_btc/status/1753376053484020064

Além disso, vários outros autores alemães e franceses relatam à mesma coisa.

Contratos multisig com timelock e lightning network 🧵🧵🧵

Uma carteira multisig nada mais é que uma carteira bitcoin, onde duas pessoas devem assinar para gastar os fundos, isso é como um contrato em que as duas partes devem cumprir certas responsabilidades.

Em alguns contratos, é feita uma multisig 2/3 com um terceiro atuando como juiz das partes, isso é semelhante ao que existe no fiat e chama-se conta escrow.

Na imagem, um escrow service do fiat, sem uso de multisig.

Já o timelock, nada mais é que um atributo de uma transação do bitcoin, a transação só é válida e só pode ser incluída num bloco quando tiver decorrido o tempo de timelock, isso serve como um tipo de cláusula de saída de um contrato, por exemplo:

Ema sociedade empresarial com dois sócios tendo 50/50 em uma multisig 2/2, se as duas partes estiverem de acordo, os fundos podem ser movidos, os dois assinando a transação, porém à cada transação nova, uma transação timelock pode ser gerada e assinada pelos dois. 🔑

Portanto, em caso de discordância e decorrido o tempo do timelock, qualquer parte poderia unilateralmente, transmitir a transação que move os fundos para os dois sócios na proporção 50/50 (ou a proporção acordada), já que essa transação foi previamente assinada por ambos.

Ou seja, essa transação que ficaria guardada, serve de cláusula de saída do contrato, garantindo que a outra parte não será lesada.

É assim que uma carteira multisig e transações timelock pode ser usada em contratos.

OK mas o que isso tem haver com lightning network?

⚡️⚡️

Bom, a lightning é uma segunda camada do Bitcoin, onde as transações acontecem, e é registrado nos nodes o estado atual dos canais que ele tem.

Cada canal da lightning nada mais é que uma carteira multisig 2/2 onde ambos fizeram um depósito, e cada vez que ocorre uma transação, é gerada uma nova transação com timelock que é assinada pelas duas partes, mas não é transmitida na rede.

Portanto, em um canal, os nodes podem mandar bitcoins um pro outro, salvando o estado final apenas, sem precisar criar novas transações, além daquela que abriu o canal.

Em caso de fechamento do canal, os nodes se comunicam e fecham o canal (que é uma multisig 2/2), porém e no caso de um dos nodes estar offline? Como que faz? Perdeu tudo?

Então, aí que entram as transações timelock, que servem de cláusula de emergency withdraw do contrato (canal), um dos nodes unilateralmente pode transmitir a transação após decorrido o timelock, essa transação conterá o estado atual daquele canal (50/50 ou 90/10, whathever).

Dessa forma, mesmo em caso de uma das partes ir de base, existe um emergency withdraw no contrato, que foi previamente assinado pelas duas partes, cláusula de saída.

Não vou entrar em detalhes sobre o que acontece se um node lightning tentar fraudar o outro, mas vocês podem pesquisar sobre Lightning Watchtowers.

A parte de lightning aprendi numa palestra presencial com o nostr:npub1z24p8ghllrl4jxyw8juggm3cfrpn8vvfxxsjzjj4tuaz0qfkeqkstnk760

Estou exercitando esse pensamento pois estou pensando em outros casos de uso para carteiras multisig, algo bem fora da curva.

ESTAMOS DESMONETIZANDO O OURO

"we are also observing an increasing divergence between global fund flows into Bitcoin ETPs and fund flows into global Gold ETPs (Chart-of-the-Week). While global Gold ETPs have seen net outflows or approximately -2.6 bn USD, global Bitcoin ETPs have attracted around +4.8 bn USD year-to-date, according to our own calculations based on Bloomberg data."

https://etc-group.com/blog/regular-updates/ETC_Group_Crypto_Market_Compass_08_2024/

"Todo homem faz a experiência do mal, à sua volta e em si mesmo. Esta experiência faz-se também nas relações entre o homem e a mulher. A união sempre foi ameaçada pela discórdia, espírito de domínio, infidelidade, ciúmes e conflitos".

"Esta desordem, NÃO PROCEDE DA NATUREZA DO HOMEM E DA MULHER, MAS DO PECADO, ruptura com Deus"

"Para curar o pecado, o homem e a mulher precisam da ajuda da graça de Deus, que na sua misericórdia infinita, nunca lhes recusou"

Catecismo da Igreja, 1606, 1607, 1608.

https://www.vatican.va/archive/cathechism_po/index_new/p2s2cap3_1533-1666_po.html#ARTIGO_7_

Doutores, números aleatórios é coisa séria em nosso meio, muito importante no contexto do Bitcoin.

🧵

Isso porque as carteiras de Bitcoin são geradas à partir de números aleatórios, se eu obter um número aleatório igual ao seu, poderei obter uma carteira idêntica à sua.

Por isso precisa-se de entropia o suficiente, números realmente aleatórios.

Recentemente foi descoberta a vulnerabilidade Milk Sad, no qual uma lib usou um algoritmo inseguro para geração de números aleatórios, inicializando com 32 bits de dados, esses 32 bits era a hora atual do sistema. (Essa é a semente do algoritmo)

Um bit é um dado binário (0 ou 1), no computador, tudo é binário, então 32 bits de dados é algo como:

01010011011100110011101010101101

Acontece que o algoritmo de geração (Mersenne Twister) gera o mesmo número aleatório para se a semente for a mesma.

Então se eu gero sempre um mesmo número "aleatório" se a semente for igual, e a lib usava 32bits como semente, então o total de combinações possíveis era de 2^32 = 4.294.967.296

Isso não é um número grande.

Portanto alguém poderia fazer um bruteforce e gerar várias carteiras que outras pessoas também geraram com essa lib.

Essa lib foi usada como exemplo do livro "Mastering Bitcoin"

A vulnerabilidade foi batizada de "Milk Sad" porque quando a data do sistema fosse 0 a lib gerava a mesma mnemonica, que começava com "Milk Sad"

https://milksad.info

Recentemente houve outra vulnerabilidade descoberta, também envolvendo a aleatoriedade.

A lib BitcoinJS foi usada para gerar a carteira Bitcoin nos navegadores, acontece que ela usou métodos do JS que eram inseguros, como o Math.Random() ou window.crypto.random que ainda não estava disponível em muitos navegadores.

Isso fez com que carteiras geradas entre 2011 e 2015 não tivessem entropia suficiente, e portanto, estariam vulneráveis. Em torno de 1,2 a 2,2 bilhões de dólares estão vulneráveis à esse tipo de ataque.

Depois de março/2012 alguns projetos começaram a adicionar fontes de entropia, além dos números do Math.Random() como cliques e movimentos do mouse.

Mas isso não é suficiente, e pelo que entendi, a Unciphered conseguiu minerar algumas dessas carteiras antigas de BTC.

É por isso que fontes de números verdadeiramente aleatórios, e que não sejam de meros 32 bits, é muito importante.

Lembra que 32 bits são 2^32 combinações possíveis?

Se for 256 bits são 2^256 que dá 115792089237316195423570985008687907853269984665640564039457584007913129639936 combinações possíveis.

Ou seja, quase impossível de testar todas elas.

Existem muitas fontes de entropia, alguns processadores geram uma entropia com base no ruído de wifi, ruído da entrada de energia, microfone, giroscópio etc.

Por exemplo, esse é o histograma de geração de números aleatórios no RP2040, usado no Raspberry Pi Pico (Não é o Pi Zero).

Como você pode ver, não é aleatório, e não atende os critérios de segurança, isso é uma informação bem clara no datasheet.

Já o ESP32 usa um número aleatório do processador correlacionado à fontes de ruído, como Wi-Fi.

Ou seja, tem algumas condições para que seja verdadeiramente aleatório.

ESP32 é o processador do SEEDER, que disponibiliza a função de gerar uma carteira usando a entropia do processador, ou usando a jogada de moeda.

A primeira vez que me falaram de HW no ESP32 eu perguntei logo sobre a entropia.

Mesmo assim é um número aleatório de 32 bits. Então é preciso ter cuidado.

A vantagem é que a Seeder permite que use entropia gerada pela moeda.

O que com certeza gera mais entropia que o processador.

Se for usar essa peça, gere pela moeda.

Já a Krux permite que se use a câmera, ou dados de 6 ou 20 lados, como fonte de entropia.

Segundo a documentação, ela não usa outras fontes de entropia além dos dados ou da foto em si, portanto, não usa o gerador de números aleatórios do processador.

Ainda é preciso testar.

Hardware Wallets como Trezor e Ledger usam o gerador de números aleatórios do processador junto à fontes externas de ruído.

Já a Cold Card gera um número com o processador, usa isso como seed para um algoritmo de geração de números pseudoaleatórios, passa o resultado num SHA256 e permite que você adicione a entropia dos dados na entropia que ela já gerou, fazendo com que a semente que gera a mnemonica seja de 256 bits.

FONTE: https://coldcard.com/docs/faq/#entropy

Thread original no twitter: https://twitter.com/bolsonitro_btc/status/1724938021617746269

Na verdade acabei de perceber que fui eu que li errado o seu comentário anterior KKKKKKKKKKK, nesse caso concordo 100% contigo.

De fato, não é fácil, é como o Korea diz, requer muita prova de trabalho.

Aí questão de fácil eu acho que depende 😅

Você quer uma moça que vai para carnaval ou uma moça inteligente que estuda, trabalha e quer um futuro? Uma é fácil, a outra é difícil, uma vai ser boa esposa e outra não.

Mas a moral da história é essa mesmo, chorar e ficar ressentido não vai resolver o problema, muito menos ajudar em algo. Só perdemos no momento que desistimos e começarmos à culpar terceiros.

Claims? In this case, the demands for annexation of the area that Russia invaded in 2014? How to satisfy annexation claims?