bitmover
Legendary
Offline
Activity: 2492
Merit: 6320
bitcoindata.science
|
|
June 10, 2024, 06:10:19 PM Last edit: June 10, 2024, 06:26:20 PM by bitmover |
|
Descriptor wallets do not allow dumpprivkey because the fundamental principle behind descriptor wallets is that private keys are not enough information to transport a wallet. Private keys lack derivation information and lack information about what kind of scripts to create. They also do not work for wallets that have anything more complicated than just single key scripts.
Obrigado por postar isso. Isso mostra q o que eu falei acima, explicando que o que o darkv0rt3x está fazendo é inseguro e inútil, esta alinhado com o entendimento mais recentes do devs do bitcoin core. Para quem não sabe, achow101 é um dev do bitcoin core. https://github.com/achow101/Talvez o conceito de preocupar em guardar as pk individuais não seja mais necessário, o que devemos nos preocupar é se a carteira nos oferesse a Seed ou xprivs (no caso do Bitcoin Core).
Se você acessar o site que falei, iancoleman.io/bip39, você consegue tirar a xpriv (Account Extended Private Key) de qualquer seed. Como exercício , vale qualquer método para derivar chaves privadas a partir da seed. Mas como medida de segurança, não se deve fazer isso.
|
|
|
|
darkv0rt3x (OP)
|
|
June 11, 2024, 07:15:57 AM |
|
Descriptor wallets do not allow dumpprivkey because the fundamental principle behind descriptor wallets is that private keys are not enough information to transport a wallet. Private keys lack derivation information and lack information about what kind of scripts to create. They also do not work for wallets that have anything more complicated than just single key scripts.
Obrigado por postar isso. Isso mostra q o que eu falei acima, explicando que o que o darkv0rt3x está fazendo é inseguro e inútil, esta alinhado com o entendimento mais recentes do devs do bitcoin core. Para quem não sabe, achow101 é um dev do bitcoin core. https://github.com/achow101/Talvez o conceito de preocupar em guardar as pk individuais não seja mais necessário, o que devemos nos preocupar é se a carteira nos oferesse a Seed ou xprivs (no caso do Bitcoin Core).
Se você acessar o site que falei, iancoleman.io/bip39, você consegue tirar a xpriv (Account Extended Private Key) de qualquer seed. Como exercício , vale qualquer método para derivar chaves privadas a partir da seed. Mas como medida de segurança, não se deve fazer isso. Isso é apenas para descriptor wallets. Podes achar inútil. Para mim não é! E se calhar para outros também não é. Continuo a dizer que colocar seeds em sites ou gerar wallets em sites é só ridículo, mas cada um é que sabe! Volto a repetir que o meu intuito não é aumentar segurança, nem nunca foi. E já o tinha dito!
|
Bitcoin is energy. Bitcoin is freedom I rather die on my feet than living on my knees!
|
|
|
TryNinja
Legendary
Offline
Activity: 3024
Merit: 7442
Top Crypto Casino
|
|
June 12, 2024, 01:59:11 AM |
|
Bitcoin Core é outra carteira que não permite mais exportar chaves privadas WIF individuais, eu fui um dos contrários a esta decisão, os desenvolvedores chegaram a conclusão de que não é seguro. O Bitcoin Core não tem mais nenhum comando para exportação pk filhas individuais porque desde a implementação de descritores passou a ser o formato padrão, mudaram o derivation path para os padrões atuais: m/44, 49, 84 e 86 para taproot, antes das carteiras descritoras, as chaves privadas eram derivadas de um derivation path reforçado. Quando mudou o derivation path para os padrões atuais, a derivação das chaves filhas deixaram de ser reforçadas, o padrão atual que citei é usado por 99% das carteiras HD e não são reforçadas, chaves não reforçadas significam que não são tão seguras em relação as reforçadas, isso quer dizer que se o usuário vazar qualquer pk de seu endereço e a chave pública estendida, o atacante apenas com essas duas informações pode calcular para derivar TODAS as chaves filhas da carteira! Meio que concordo com você. Creio que não tem nada de errado em exportar uma private-key, ela é a fundação mais básica do Bitcoin, assim como atomos são a fundação da matéria. Entendo a questão de seguir com os "descriptors" de forma que haja um padrão que ajuda naquela situação onde você tem uma seed mas um derivation path gera tais endereços, outro gera endereços diferentes, aí tem como ser legacy ou segwit... enfim, fácil de se perder... mas dessa forma você só pode facilmente exportar e importar sua carteira se aquele programa suporta esse novo padrão. @darkv0rt3x consegue fazer um novo resumo do seu problema e o que quer, atualizado com o que entendeu até agora? Não consigo ler todos os replies então fica dificil de acompanhar tudo. Posso tentar te ajudar.
|
|
|
|
Forsyth Jones
|
|
June 18, 2024, 08:05:19 PM |
|
Meio que concordo com você. Creio que não tem nada de errado em exportar uma private-key, ela é a fundação mais básica do Bitcoin, assim como atomos são a fundação da matéria.
Entendo a questão de seguir com os "descriptors" de forma que haja um padrão que ajuda naquela situação onde você tem uma seed mas um derivation path gera tais endereços, outro gera endereços diferentes, aí tem como ser legacy ou segwit... enfim, fácil de se perder... mas dessa forma você só pode facilmente exportar e importar sua carteira se aquele programa suporta esse novo padrão.
@darkv0rt3x consegue fazer um novo resumo do seu problema e o que quer, atualizado com o que entendeu até agora? Não consigo ler todos os replies então fica dificil de acompanhar tudo. Posso tentar te ajudar.
Pois é cara, a migração para o descritor foi uma atualização realmente necessária e ótima, porém poucos usuários ou os mais experientes ou depois de fuçar muito pela internet que vão saber usar essa parada direito. Acho que não custava nada manter a exportação de chaves, pois o usuário que exporta essas coisas está ciente dos riscos, ou poderia mudar o nome ou um novo comando especifico pra isso, ex: deriveprivkeys "descritor":"script(xpriv/84h/0h/0h/0/*)#checksum" "[0,50]" Aí derivaria 50 endereços e as chaves associadas: "endereço" "privkey associada" "index" eu imagino que em algum momento em específico, o usuário vai precisar pegar essa chave privada, seja pra assinar mensagem pelo endereço em outro software e etc. Pra pegar as chaves privadas do Bitcoin Core, ou você faz isso pelo iancoleman colando a xpriv lá. Pra importar direto na Electrum não há, pois a Electrum deriva a carteira pela xpriv pelo caminho raiz: m/0 ou seja, você deve entrar no iancoleman e colar a xpriv lá pra derivar as xpriv a nível de conta (Account extended private key) para que a Electrum consiga gerar a mesma carteira no Bitcoin Core. A Sparrow deixa especificar o derivation path quando utiliza xpriv, porém ela não deriva chaves privadas filhas. Porém se você não confia em sites como iancoleman, a única opção que esses usuários tem é criar seu próprio script para fazer o que você bem queira, como fez o nosso colega darkv0rt3x, porém se você pegar esse script de alguém que já fez, você terá que confiar no código dessa pessoa (a não ser que você saiba revisar o código e veja por sí só). Podia ser tudo pelo Bitcoin core mesmo, eu acho que isso coloca os usuários que queiram exportar chaves filhas mais em risco ainda, pois eles buscaram soluções de terceiros para isso, expondo ainda mais a chave.
|
| | . .Duelbits. | │ | ..........UNLEASH.......... THE ULTIMATE GAMING EXPERIENCE | │ | DUELBITS FANTASY SPORTS | ████▄▄▄█████▄▄▄ ░▄████████████████▄ ▐██████████████████▄ ████████████████████ ████████████████████▌ █████████████████████ ████████████████▀▀▀ ███████████████▌ ███████████████▌ ████████████████ ████████████████ ████████████████ ████▀▀███████▀▀ | . ▬▬ VS ▬▬ | ████▄▄▄█████▄▄▄ ░▄████████████████▄ ▐██████████████████▄ ████████████████████ ████████████████████▌ █████████████████████ ███████████████████ ███████████████▌ ███████████████▌ ████████████████ ████████████████ ████████████████ ████▀▀███████▀▀ | /// PLAY FOR FREE /// WIN FOR REAL | │ | ..PLAY NOW.. | |
|
|
|
darkv0rt3x (OP)
|
|
June 20, 2024, 08:07:40 AM |
|
@darkv0rt3x consegue fazer um novo resumo do seu problema e o que quer, atualizado com o que entendeu até agora? Não consigo ler todos os replies então fica dificil de acompanhar tudo. Posso tentar te ajudar.
O meu objectivo é poder ter as PKs das addresses onde eu tenho Bitcoin. E estas apps que a gente vai usando e testando, tipo Peach, Relai e outras, acabam por nunca nos mostrarem as PKs "a nu" ou raw, e era isso mesmo que eu queria, uma vez que com a PK eu posso importá-la, em último recurso no Bitcoin Core, e ter acesso à address com os meus fundos. Eu tenho a minha forma de ter as minhas PKs guardadas de várias maneiras (redundância), e uma delas é tê-las em papel. E quando dizem que, ah e tal as PKs não têm toda a informação neessária para transportar wallets de um lado para o outro e é difícil e etc por causa de derivaion paths e não sei que mais. Isso acontece porque houve necessidade das wallets de flexibilizarem determinados processos e agilizarem as coisas e melhorarem o UX. Para mim podia continuar a coisa o mais arcaica possível. 1 PK gerar uma e uma só address. Ponto final! Mas entendo que se há a possibilidade de evoluir, então que se evolua. Mas @TryNinja, acho que neste momento, o script que fiz, por mais burro que seja, faz o que pretendo e até mais, por isso estou satisfeito! Obrigado por te disponibilizares a ajudar!
|
Bitcoin is energy. Bitcoin is freedom I rather die on my feet than living on my knees!
|
|
|
Forsyth Jones
|
|
June 20, 2024, 09:22:40 PM |
|
... Eu tenho a minha forma de ter as minhas PKs guardadas de várias maneiras (redundância), e uma delas é tê-las em papel.
E quando dizem que, ah e tal as PKs não têm toda a informação neessária para transportar wallets de um lado para o outro e é difícil e etc por causa de derivaion paths e não sei que mais. Isso acontece porque houve necessidade das wallets de flexibilizarem determinados processos e agilizarem as coisas e melhorarem o UX.
Para mim podia continuar a coisa o mais arcaica possível. 1 PK gerar uma e uma só address. Ponto final! Mas entendo que se há a possibilidade de evoluir, então que se evolua. ...
Então, uma wallet que mostre diretamente a chave privada dos endereços é difícil, o máximo que eles fazem é fornecer o mnemônico que nada mais é que um conjunto de palavras codificada, na verdade essas palavras são um conjunto de códigos hexadecimais extenso codificadas, ele serve pra gerar a chave raiz BIP32 (xpriv) e se tiver um 'salt' adicionada ao mnemônico (passphrase), esse xpriv muda a cada caractere adicionado no 'salt'. Pra mim, tendo acesso a seed, eu consigo importá-la na electrum que é um software muito confiável, alterar para o derivationpath que eu quero (normalmente nunca vai precisar alterar, pois os padrões são usados em 99% das wallets), mas uma vez ou outra vamos encontrar uma carteira que usa um derivation path diferente, como a Schildbatch wallet (bitcoin wallet para android), aí importando na Electrum, eu consigo obter tanto as chaves privadas quanto a chave privada estendida BIP32. Ou seja, com o mnemônico ou com a xpriv raiz BIP32 eu consigo chegar ao derivation path e endereços que eu quero, carteiras como a Sparrow você pode fazer isso, já na Electrum, se você só tem a xpriv, ela vai recuperar a nível de conta (com xpriv, electrum não permite alterar o path). Acho essencial que a carteira deixe exportar chaves privadas, mas se não tiver jeito por ela, tem como fazer por outros softwares como Electrum.
|
| | . .Duelbits. | │ | ..........UNLEASH.......... THE ULTIMATE GAMING EXPERIENCE | │ | DUELBITS FANTASY SPORTS | ████▄▄▄█████▄▄▄ ░▄████████████████▄ ▐██████████████████▄ ████████████████████ ████████████████████▌ █████████████████████ ████████████████▀▀▀ ███████████████▌ ███████████████▌ ████████████████ ████████████████ ████████████████ ████▀▀███████▀▀ | . ▬▬ VS ▬▬ | ████▄▄▄█████▄▄▄ ░▄████████████████▄ ▐██████████████████▄ ████████████████████ ████████████████████▌ █████████████████████ ███████████████████ ███████████████▌ ███████████████▌ ████████████████ ████████████████ ████████████████ ████▀▀███████▀▀ | /// PLAY FOR FREE /// WIN FOR REAL | │ | ..PLAY NOW.. | |
|
|
|
bitmover
Legendary
Offline
Activity: 2492
Merit: 6320
bitcoindata.science
|
|
June 20, 2024, 11:11:29 PM |
|
Pra mim, tendo acesso a seed, eu consigo importá-la na electrum que é um software muito confiável, alterar para o derivationpath que eu quero (normalmente nunca vai precisar alterar, pois os padrões são usados em 99% das wallets), mas uma vez ou outra vamos encontrar uma carteira que usa um derivation path diferente, como a Schildbatch wallet (bitcoin wallet para android), aí importando na Electrum, eu consigo obter tanto as chaves privadas quanto a chave privada estendida BIP32. É comum carteiras que usem derivation paths diferentes, especialmente em se tratando de altcoins. Eu já passei por algumas situações assim. A coinomi por exemplo usa derivation path próprios para ethereum e para monero.
|
|
|
|
darkv0rt3x (OP)
|
|
June 21, 2024, 09:30:09 AM |
|
Então, uma wallet que mostre diretamente a chave privada dos endereços é difícil...
Por isso mesmo é que eu quis fazer aquele script! É comum carteiras que usem derivation paths diferentes, especialmente em se tratando de altcoins. Eu já passei por algumas situações assim.
A coinomi por exemplo usa derivation path próprios para ethereum e para monero.
Retirando a excepção que o @Forsyth Jones mencionou, os derivation paths são mais ou menos constantes. Quero dizer que o derivation path é constituído por 6 partes: m: Master or Root node 44': Purpose, pode ser BIP44(P2PKH), BIP49 (P2SH-wrapped SegWit addresses) ou BIP84 (bech32) 0': Coin type for Bitcoin. Cada coin tem um valor, 60 para Shitereum 0': Account index - Número de contas dentro da wallet 0: Endereço de destino (ou externo) ou Endereço de troco (ou interno). 0: Quantidade de endereços a gerar.
|
Bitcoin is energy. Bitcoin is freedom I rather die on my feet than living on my knees!
|
|
|
bitmover
Legendary
Offline
Activity: 2492
Merit: 6320
bitcoindata.science
|
|
June 21, 2024, 02:26:41 PM |
|
Então, uma wallet que mostre diretamente a chave privada dos endereços é difícil...
Por isso mesmo é que eu quis fazer aquele script! É comum carteiras que usem derivation paths diferentes, especialmente em se tratando de altcoins. Eu já passei por algumas situações assim.
A coinomi por exemplo usa derivation path próprios para ethereum e para monero.
Retirando a excepção que o @Forsyth Jones mencionou, os derivation paths são mais ou menos constantes. Quero dizer que o derivation path é constituído por 6 partes: m: Master or Root node 44': Purpose, pode ser BIP44(P2PKH), BIP49 (P2SH-wrapped SegWit addresses) ou BIP84 (bech32) 0': Coin type for Bitcoin. Cada coin tem um valor, 60 para Shitereum 0': Account index - Número de contas dentro da wallet 0: Endereço de destino (ou externo) ou Endereço de troco (ou interno). 0: Quantidade de endereços a gerar. Sei que você não gosta desse site, mas ele ilistra bem o que falei https://iancoleman.io/bip39/Clique rm BIp32 e depois em cliente. Vc verá que inclusive a ledger usa um derivation path próprio dela.
|
|
|
|
darkv0rt3x (OP)
|
|
June 21, 2024, 02:29:04 PM |
|
Então, uma wallet que mostre diretamente a chave privada dos endereços é difícil...
Por isso mesmo é que eu quis fazer aquele script! É comum carteiras que usem derivation paths diferentes, especialmente em se tratando de altcoins. Eu já passei por algumas situações assim.
A coinomi por exemplo usa derivation path próprios para ethereum e para monero.
Retirando a excepção que o @Forsyth Jones mencionou, os derivation paths são mais ou menos constantes. Quero dizer que o derivation path é constituído por 6 partes: m: Master or Root node 44': Purpose, pode ser BIP44(P2PKH), BIP49 (P2SH-wrapped SegWit addresses) ou BIP84 (bech32) 0': Coin type for Bitcoin. Cada coin tem um valor, 60 para Shitereum 0': Account index - Número de contas dentro da wallet 0: Endereço de destino (ou externo) ou Endereço de troco (ou interno). 0: Quantidade de endereços a gerar. Sei que você não gosta desse site, mas ele ilistra bem o que falei https://iancoleman.io/bip39/Clique rm BIp32 e depois em cliente. Vc verá que inclusive a ledger usa um derivation path próprio dela. Eu gosto do site. O que não aconselho é usar-se o site (nem esse nenhum tipo bitaddress.org) para gerar addresses ou PKs ou o que quer se seja que a gente depois vá usar em "ambiente de produção"!
|
Bitcoin is energy. Bitcoin is freedom I rather die on my feet than living on my knees!
|
|
|
Forsyth Jones
|
|
July 04, 2024, 01:51:52 AM |
|
@darkv0rt3x você sabe como descriptografar o backup da carteira Bitcoin Wallet? Essa é a primeira carteira bitcoin mobile que existiu, desde 2011, ela possui o sistema de backup por arquivo digital e não mostra a semente de recuperação (a semente de recuperação está criptografada no backup exportado). Eu conseguia descriptografar em 2018, fui testar de novo e não tô conseguindo, parece que eles mudaram o algorítimo ou adicionaram uma nova camada. Antes eu só precisava exportar o backup (sem o PIN, somente a senha) e descriptografava com openssl aes-256-cbc, agora sempre que eu tento no terminal do linux da bad password (senha errada), mesmo estando certa. https://bitcointalk.org/index.php?topic=5305923.0
|
| | . .Duelbits. | │ | ..........UNLEASH.......... THE ULTIMATE GAMING EXPERIENCE | │ | DUELBITS FANTASY SPORTS | ████▄▄▄█████▄▄▄ ░▄████████████████▄ ▐██████████████████▄ ████████████████████ ████████████████████▌ █████████████████████ ████████████████▀▀▀ ███████████████▌ ███████████████▌ ████████████████ ████████████████ ████████████████ ████▀▀███████▀▀ | . ▬▬ VS ▬▬ | ████▄▄▄█████▄▄▄ ░▄████████████████▄ ▐██████████████████▄ ████████████████████ ████████████████████▌ █████████████████████ ███████████████████ ███████████████▌ ███████████████▌ ████████████████ ████████████████ ████████████████ ████▀▀███████▀▀ | /// PLAY FOR FREE /// WIN FOR REAL | │ | ..PLAY NOW.. | |
|
|
|
joker_josue
Legendary
Offline
Activity: 1848
Merit: 5075
**In BTC since 2013**
|
|
July 04, 2024, 06:41:01 AM |
|
@darkv0rt3x você sabe como descriptografar o backup da carteira Bitcoin Wallet? Essa é a primeira carteira bitcoin mobile que existiu, desde 2011, ela possui o sistema de backup por arquivo digital e não mostra a semente de recuperação (a semente de recuperação está criptografada no backup exportado). Eu conseguia descriptografar em 2018, fui testar de novo e não tô conseguindo, parece que eles mudaram o algorítimo ou adicionaram uma nova camada. Antes eu só precisava exportar o backup (sem o PIN, somente a senha) e descriptografava com openssl aes-256-cbc, agora sempre que eu tento no terminal do linux da bad password (senha errada), mesmo estando certa. https://bitcointalk.org/index.php?topic=5305923.0Bem se isso era possível antes, provavelmente a carteira não estava a fazer um bom backup. Mas, se a carteira não dá a semente, não sei até que ponto ela é segura. Ainda por cima tratar-se de uma carteira para um dispositivo móvel.
|
|
|
|
bitmover
Legendary
Offline
Activity: 2492
Merit: 6320
bitcoindata.science
|
|
July 04, 2024, 05:47:03 PM |
|
@darkv0rt3x você sabe como descriptografar o backup da carteira Bitcoin Wallet? Essa é a primeira carteira bitcoin mobile que existiu, desde 2011, ela possui o sistema de backup por arquivo digital e não mostra a semente de recuperação (a semente de recuperação está criptografada no backup exportado). Eu conseguia descriptografar em 2018, fui testar de novo e não tô conseguindo, parece que eles mudaram o algorítimo ou adicionaram uma nova camada. Antes eu só precisava exportar o backup (sem o PIN, somente a senha) e descriptografava com openssl aes-256-cbc, agora sempre que eu tento no terminal do linux da bad password (senha errada), mesmo estando certa. https://bitcointalk.org/index.php?topic=5305923.0Você já olhou o github deles? tem dezenas de perguntas sobre recover/back ups. Achei um texto oficial aqui https://github.com/bitcoin-wallet/bitcoin-wallet/blob/main/wallet/README.recover.mdVoce basicamente precisa baixar o bitcoinj ( https://github.com/bitcoinj/bitcoinj.git) e decodificar por lá; Mas, se a carteira não dá a semente, não sei até que ponto ela é segura. Ainda por cima tratar-se de uma carteira para um dispositivo móvel.
Não existiam Seeds em 2011, quando a carteira foi lançada.
|
|
|
|
darkv0rt3x (OP)
|
|
July 04, 2024, 07:45:03 PM |
|
@darkv0rt3x você sabe como descriptografar o backup da carteira Bitcoin Wallet? Essa é a primeira carteira bitcoin mobile que existiu, desde 2011, ela possui o sistema de backup por arquivo digital e não mostra a semente de recuperação (a semente de recuperação está criptografada no backup exportado). Eu conseguia descriptografar em 2018, fui testar de novo e não tô conseguindo, parece que eles mudaram o algorítimo ou adicionaram uma nova camada. Antes eu só precisava exportar o backup (sem o PIN, somente a senha) e descriptografava com openssl aes-256-cbc, agora sempre que eu tento no terminal do linux da bad password (senha errada), mesmo estando certa. https://bitcointalk.org/index.php?topic=5305923.0Não sei. Não faço ideia de como o fazer! Nunca tentei fazê-lo senão pelas vias normais do walletpassphrase.
|
Bitcoin is energy. Bitcoin is freedom I rather die on my feet than living on my knees!
|
|
|
Forsyth Jones
|
|
July 04, 2024, 11:13:13 PM |
|
Não existiam Seeds em 2011, quando a carteira foi lançada.
Mas assim que o Bip39 foi introduzido, a carteira adaptou ao código. Mas o sistema de backup deles, eles não mudaram, é por arquivo de backup criptografado. Quando eu tiver um tempo, vou tentar descriptografar de novo.
|
| | . .Duelbits. | │ | ..........UNLEASH.......... THE ULTIMATE GAMING EXPERIENCE | │ | DUELBITS FANTASY SPORTS | ████▄▄▄█████▄▄▄ ░▄████████████████▄ ▐██████████████████▄ ████████████████████ ████████████████████▌ █████████████████████ ████████████████▀▀▀ ███████████████▌ ███████████████▌ ████████████████ ████████████████ ████████████████ ████▀▀███████▀▀ | . ▬▬ VS ▬▬ | ████▄▄▄█████▄▄▄ ░▄████████████████▄ ▐██████████████████▄ ████████████████████ ████████████████████▌ █████████████████████ ███████████████████ ███████████████▌ ███████████████▌ ████████████████ ████████████████ ████████████████ ████▀▀███████▀▀ | /// PLAY FOR FREE /// WIN FOR REAL | │ | ..PLAY NOW.. | |
|
|
|
joker_josue
Legendary
Offline
Activity: 1848
Merit: 5075
**In BTC since 2013**
|
|
July 05, 2024, 05:47:56 AM |
|
Mas, se a carteira não dá a semente, não sei até que ponto ela é segura. Ainda por cima tratar-se de uma carteira para um dispositivo móvel.
Não existiam Seeds em 2011, quando a carteira foi lançada. É verdade. Nem me lembrei disso. Mas assim que o Bip39 foi introduzido, a carteira adaptou ao código.
Mas o sistema de backup deles, eles não mudaram, é por arquivo de backup criptografado.
Quando eu tiver um tempo, vou tentar descriptografar de novo.
Eles podem ter adaptado, mas as wallet antes do BIP39, muito provavelmente não ficaram automaticamente com a seed. Apenas as wallet a seguir é que passaram a ter a seed. Experimenta criar uma carteira agora e ver se te dão a seed ou não.
|
|
|
|
Forsyth Jones
|
|
July 19, 2024, 12:38:53 AM |
|
Estou trabalhando em um script python que faz basicamente "a mesma coisa" que o site do iancoleman ou afins, mas sem depender de ser um site, arquivo html e abrir no navegador. Mas por enquanto com limitações. Ele por enquanto faz o seguinte: Gera chaves privadas WIF e endereços bitcoin nos derivation path padrões: BIP44, BIP49, BIP84 e BIP86 contendo todos os formatos de endereços disponíveis, incluindo o taproot. O usuário é solicitado ao rodar o script: Entrar com o mnemônico (o código checa se o mnemônico é válido). Passphrase (se não for incluida, ele ignora e gera só à partir da seed). Oferece quatro tipos de endereços: p2pkh, p2wpkh-p2sh, p2wpkh e p2tr, com seus respectivos paths padrões. Pode escolher mostrar entre os endereços internal recebimento (0) ou external troco, change (1). Gera a chave privada extendida na raiz BIP32 (root key). Gera também a chave privada extendida para a conta BIP32, pra por exemplo, se quiser importar na Electrum. Depois de gerar uma lista com as chaves WIF, endereços e o detalhamento de cada index, o script pergunta se quer salvar em um dump.txt O que eu não consegui fazer e qual as limitações: Não consigo alterar o derivation path pra fora dos padrões, da erro no código ou gera chaves incorretas (perigoso). Quase o mesmo problema que acima, não consigo alterar a conta de uma mesma carteira via derivation path. Só funciona nos derivation path padrões mencionados. Eu não entendo nada de python ainda, pedi pro chatGPT criar pra mim esse código com base nas descrições, ele não acertou de primeira, depois de várias tentativas e erros, eu consegui fazer com que o código rode pelo menos o básico. Depois eu posso postar o código aqui via pastebin, github. Mas lembrem-se, é um código experimental criado por alguém que não sabe (eu) que inclusive foi criado pelo chat GPT, eu neutralizei o máximo de erros que consegui, então ainda pode existir erros. Então deve ser usado apenas pra fins educativos.
|
| | . .Duelbits. | │ | ..........UNLEASH.......... THE ULTIMATE GAMING EXPERIENCE | │ | DUELBITS FANTASY SPORTS | ████▄▄▄█████▄▄▄ ░▄████████████████▄ ▐██████████████████▄ ████████████████████ ████████████████████▌ █████████████████████ ████████████████▀▀▀ ███████████████▌ ███████████████▌ ████████████████ ████████████████ ████████████████ ████▀▀███████▀▀ | . ▬▬ VS ▬▬ | ████▄▄▄█████▄▄▄ ░▄████████████████▄ ▐██████████████████▄ ████████████████████ ████████████████████▌ █████████████████████ ███████████████████ ███████████████▌ ███████████████▌ ████████████████ ████████████████ ████████████████ ████▀▀███████▀▀ | /// PLAY FOR FREE /// WIN FOR REAL | │ | ..PLAY NOW.. | |
|
|
|
TryNinja
Legendary
Offline
Activity: 3024
Merit: 7442
Top Crypto Casino
|
|
July 19, 2024, 01:26:35 AM |
|
Depois eu posso postar o código aqui via pastebin, github. Mas lembrem-se, é um código experimental criado por alguém que não sabe (eu) que inclusive foi criado pelo chat GPT, eu neutralizei o máximo de erros que consegui, então ainda pode existir erros.
Posta aqui para eu dar uma olhada, por gentileza. Só botar vários print() bem grandes avisando que o código está extremamente quebrado, não testato, super arriscado, e que não deve ser usado seriamente.
|
|
|
|
Forsyth Jones
|
|
July 19, 2024, 10:03:46 PM |
|
Posta aqui para eu dar uma olhada, por gentileza. Só botar vários print() bem grandes avisando que o código está extremamente quebrado, não testato, super arriscado, e que não deve ser usado seriamente. Segue o código: import sys from bip_utils import ( Bip39MnemonicValidator, Bip39SeedGenerator, Bip44, Bip49, Bip84, Bip86, Bip44Coins, Bip49Coins, Bip84Coins, Bip86Coins, Bip44Changes, Bip32Slip10Secp256k1, Secp256k1PrivateKey, WifEncoder ) from getpass import getpass
def main(): # Perguntar pelo mnemônico mnemonic = input("Digite o mnemônico: ").strip()
# Validar o mnemônico if not Bip39MnemonicValidator().IsValid(mnemonic): print("Mnemônico inválido!") sys.exit(1)
# Perguntar pela passphrase (opcional) passphrase = getpass("Digite a passphrase (opcional): ").strip()
# Gerar a seed BIP39 seed = Bip39SeedGenerator(mnemonic).Generate(passphrase)
# Definindo os paths padrões deriv_paths = { '1': "m/44'/0'/0'", # p2pkh '2': "m/49'/0'/0'", # p2wpkh-p2sh '3': "m/84'/0'/0'", # p2wpkh '4': "m/86'/0'/0'" # p2tr }
print("Tipos de endereços disponíveis:") print("1: p2pkh (m/44'/0'/0')") print("2: p2wpkh-p2sh (m/49'/0'/0')") print("3: p2wpkh (m/84'/0'/0')") print("4: p2tr (m/86'/0'/0')")
address_type = input("Escolha o tipo de endereço (1-4): ").strip()
if address_type not in deriv_paths: print("Tipo de endereço inválido!") sys.exit(1)
derivation_path = deriv_paths[address_type]
# Perguntar se quer gerar endereços de recebimento (0) ou de troco (1) address_purpose = input("Gerar endereços de recebimento (0) ou de troco (1)? ").strip() if address_purpose not in ['0', '1']: print("Opção inválida!") sys.exit(1)
# Ajustar o caminho de derivação para endereços de troco derivation_path += f"/{address_purpose}"
# Perguntar a partir de qual index mostrar os endereços start_index = int(input("A partir de qual index mostrar os endereços (padrão 0)? ").strip() or 0)
# Perguntar quantos endereços mostrar address_count = int(input("Quantos endereços mostrar (padrão 50)? ").strip() or 50)
# Inicializar a classe BIP adequada bip_cls_dict = { '1': (Bip44, Bip44Coins.BITCOIN), '2': (Bip49, Bip49Coins.BITCOIN), '3': (Bip84, Bip84Coins.BITCOIN), '4': (Bip86, Bip86Coins.BITCOIN) } bip_cls, coin_type = bip_cls_dict[address_type] bip_obj = bip_cls.FromSeed(seed, coin_type)
# Derivar a conta principal bip_acc_obj = bip_obj.Purpose().Coin().Account(0)
# Derivar os endereços addresses = [] for i in range(start_index, start_index + address_count): addr_obj = bip_acc_obj.Change(Bip44Changes(int(address_purpose))).AddressIndex(i) priv_key = addr_obj.PrivateKey().Raw().ToBytes() priv_key_wif = WifEncoder.Encode(Secp256k1PrivateKey.FromBytes(priv_key)) addresses.append({ 'index': i, 'address': addr_obj.PublicKey().ToAddress(), 'private_key_wif': priv_key_wif, 'hdkeypath': f"{derivation_path}/{i}" })
# Gerar a chave privada BIP32 raiz bip32_obj = Bip32Slip10Secp256k1.FromSeed(seed) root_xpriv = bip32_obj.PrivateKey().ToExtended()
# Gerar a chave privada estendida BIP32 no nível da conta account_xpriv = bip_acc_obj.PrivateKey().ToExtended()
# Mostrar os resultados print("\nMnemônico:", mnemonic) if passphrase: print("Passphrase:", passphrase) print("\nBIP32 Masterkey:", root_xpriv) print("Extended Private Key (Account Level):", account_xpriv) print()
for addr in addresses: print(f"{addr['private_key_wif']} # addr={addr['address']} hdkeypath={addr['hdkeypath']}")
# Perguntar se deseja gerar um arquivo dump.txt save_to_file = input("Deseja gerar um arquivo dump.txt para importar em uma carteira? (s/n): ").strip().lower() if save_to_file == 's': with open('dump.txt', 'w') as f: f.write(f"Mnemônico: {mnemonic}\n") if passphrase: f.write(f"Passphrase: {passphrase}\n") f.write(f"\nBIP32 Masterkey: {root_xpriv}\n") f.write(f"Extended Private Key (Account Level): {account_xpriv}\n\n") for addr in addresses: f.write(f"{addr['private_key_wif']} # addr={addr['address']} hdkeypath={addr['hdkeypath']}\n") print("Arquivo dump.txt gerado com sucesso!") else: print("Saída salva apenas na tela.")
if __name__ == "__main__": main() Instale a biblioteca bip32utils com: Se puder agregar alguma melhoria nesse código, como as que eu citei de poder alterar o derivation path e o código derivar os dados corretamente sem nenhum erro eu agradeceria muito, bem como derivar de subcontas. Uma coisa interessante também (que eu não consegui fazer) é gerar as xpubs de cada mnemônico/contas, pra ficar bem igual ao iancoleman mesmo.
|
| | . .Duelbits. | │ | ..........UNLEASH.......... THE ULTIMATE GAMING EXPERIENCE | │ | DUELBITS FANTASY SPORTS | ████▄▄▄█████▄▄▄ ░▄████████████████▄ ▐██████████████████▄ ████████████████████ ████████████████████▌ █████████████████████ ████████████████▀▀▀ ███████████████▌ ███████████████▌ ████████████████ ████████████████ ████████████████ ████▀▀███████▀▀ | . ▬▬ VS ▬▬ | ████▄▄▄█████▄▄▄ ░▄████████████████▄ ▐██████████████████▄ ████████████████████ ████████████████████▌ █████████████████████ ███████████████████ ███████████████▌ ███████████████▌ ████████████████ ████████████████ ████████████████ ████▀▀███████▀▀ | /// PLAY FOR FREE /// WIN FOR REAL | │ | ..PLAY NOW.. | |
|
|
|
bitmover
Legendary
Offline
Activity: 2492
Merit: 6320
bitcoindata.science
|
|
July 22, 2024, 12:27:50 AM |
|
O usuário é solicitado ao rodar o script:
Entrar com o mnemônico (o código checa se o mnemônico é válido). Passphrase (se não for incluida, ele ignora e gera só à partir da seed).
pode ser interessante gerar automaticamente uma seed valida, para o usuário poder testar a ferramenta sem precisar recorrer a outro software para testar o seu
|
|
|
|
|