Vender o VR por Bitcoin é muito bom!
npub1fmp5...udr0
npub1fmp5...udr0
🇱🇻 1991 Barricades Museum 🇱🇻
The 1991 barricades in Riga were a popular resistance movement in Latvia against Soviet control during the independence movements in the Baltic States.
In January 1991, thousands of Latvians built barricades in the streets of Riga to protect key buildings, such as the Parliament and the national radio headquarters, from Soviet forces attempting to suppress the independence movement.

#BH2024 

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 @Diego Kolling
Estou exercitando esse pensamento pois estou pensando em outros casos de uso para carteiras multisig, algo bem fora da curva.
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 @Diego Kolling
Estou exercitando esse pensamento pois estou pensando em outros casos de uso para carteiras multisig, algo bem fora da curva.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"
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:
Thread original no twitter: 
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"
Milk Sad: /home
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: 
COLDCARD Documentation
COLDCARD FAQ
Frequently asked questions about COLDCARD — seed words, PINs, firmware upgrades, backups, secure elements, PSBT, and more.

X (formerly Twitter)
Bolsonitro Ucrânia 🇺🇦🇻🇦 (@bolsonitro_btc) on X
Doutores, números aleatórios é coisa séria em nosso meio, muito importante no contexto do Bitcoin.
🧵
Cashu faucet, using the @eNuts ⚡️🌰 wallet as an example.
Live:
Source code:
#cashu

Telegram
SatsCzar Faucet
You can contact @SatsCzarFaucet_bot right away.
GitHub
GitHub - SatsCzar/bolsonitro-faucet
Contribute to SatsCzar/bolsonitro-faucet development by creating an account on GitHub.
Uma reflexão sobre o livro "Memórias do Subsolo", de Fiódor Dostoiévski. 🧵
Com este livro, Dostoiévski buscava explorar temas profundos sobre a condição humana, explorando aspectos sombrios e por vezes, desconfortáveis.
O homem do subsolo é isolado, e chama à si mesmo de "homem doente", algumas de suas características são: O isolamento social, o ressentimento, amargura, agressividade, vitimização e falta de empatia.
Ele é uma pessoa ruim, que brigou com todos, e por isso terminou à vida isolado e sozinho, mas além disso, em suas relações com outras pessoas, ele se mostrou cruel e tóxico.
Existe uma história no livro, onde ele oferece uma promessa de ajuda à uma jovem, apenas para humilha-la, e quando ela vai em busca dessa promessa, ele confessa que era uma mentira, e o fez apenas para humilhar a moça.
Na época que li esse livro, fiquei com medo tomar o mesmo caminho e de terminar à vida igual à este personagem da ficção, com certeza um medo sem motivo, mas mesmo assim me assustou a forma como o personagem estava terminando à vida, cheio de ressentimentos.
Não só ressentimentos sobre seu passado, mas também sobre a sociedade, se vendo como uma vítima e justificando suas atitudes desprezíveis.
E o problema doutores, é que eu vejo hoje em dia na internet, pessoas seguindo o mesmo caminho do homem do subsolo, destilando ódio e ressentimento gratuito por não saber lidar com as próprias frustrações, principalmente contra às mulheres.
Além da vitimização, se fazendo de vítimas da sociedade por não terem conseguido o que queriam, e ficando cada vez mais sedentas de consumir conteúdo que reforça esse mesmo padrão de comportamento.
Quando você descarrega suas frustrações em comentários como: "Nenhuma mulher presta", ou coisa pior, você está se vitimizando, culpando um coletivo, e seguindo no mesmo caminho do homem do subsolo, pois esses pensamentos possuem outros efeitos em seu subconsciente.
Levando à depressão, ansiedade e estresse, além de não contribuir em coisa alguma para resolver qualquer problema, ou pessoal, ou da sociedade.
Como conclusão doutores, aprendam à lidar com as frustrações, não repitam maus comportamentos, corrijam seus caminhos, e principalmente, busquem à Deus e pensem sobre o quanto ele é bom, e o quanto à vida é bela. Busquem à verdade.

Com este livro, Dostoiévski buscava explorar temas profundos sobre a condição humana, explorando aspectos sombrios e por vezes, desconfortáveis.
O homem do subsolo é isolado, e chama à si mesmo de "homem doente", algumas de suas características são: O isolamento social, o ressentimento, amargura, agressividade, vitimização e falta de empatia.
Ele é uma pessoa ruim, que brigou com todos, e por isso terminou à vida isolado e sozinho, mas além disso, em suas relações com outras pessoas, ele se mostrou cruel e tóxico.
Existe uma história no livro, onde ele oferece uma promessa de ajuda à uma jovem, apenas para humilha-la, e quando ela vai em busca dessa promessa, ele confessa que era uma mentira, e o fez apenas para humilhar a moça.
Na época que li esse livro, fiquei com medo tomar o mesmo caminho e de terminar à vida igual à este personagem da ficção, com certeza um medo sem motivo, mas mesmo assim me assustou a forma como o personagem estava terminando à vida, cheio de ressentimentos.
Não só ressentimentos sobre seu passado, mas também sobre a sociedade, se vendo como uma vítima e justificando suas atitudes desprezíveis.
E o problema doutores, é que eu vejo hoje em dia na internet, pessoas seguindo o mesmo caminho do homem do subsolo, destilando ódio e ressentimento gratuito por não saber lidar com as próprias frustrações, principalmente contra às mulheres.
Além da vitimização, se fazendo de vítimas da sociedade por não terem conseguido o que queriam, e ficando cada vez mais sedentas de consumir conteúdo que reforça esse mesmo padrão de comportamento.
Quando você descarrega suas frustrações em comentários como: "Nenhuma mulher presta", ou coisa pior, você está se vitimizando, culpando um coletivo, e seguindo no mesmo caminho do homem do subsolo, pois esses pensamentos possuem outros efeitos em seu subconsciente.
Levando à depressão, ansiedade e estresse, além de não contribuir em coisa alguma para resolver qualquer problema, ou pessoal, ou da sociedade.
Como conclusão doutores, aprendam à lidar com as frustrações, não repitam maus comportamentos, corrijam seus caminhos, e principalmente, busquem à Deus e pensem sobre o quanto ele é bom, e o quanto à vida é bela. Busquem à verdade.

Quem quiser criar um bot para Telegram com Javascript, segue:
Swatch bonito demais !


Eu não me candidato KKKK

Seja DCA mensal, semanal ou diário, não faz diferença guys!
A quantidade de BTCs é a mesma, muda 1% à favor do diário em 5 anos, se for 4 anos fica 1% à favor do mensal, no geral, vai mudando mas não passa de 1%, as linhas andam todas iguais.
Eu prefiro mensal, mas whathever.

