diff --git a/pt/04_2__Interlude_Using_JQ.md b/pt/04_2__Interlude_Using_JQ.md index 0ec4618..ba5165c 100644 --- a/pt/04_2__Interlude_Using_JQ.md +++ b/pt/04_2__Interlude_Using_JQ.md @@ -397,7 +397,7 @@ alias btcunspent="bitcoin-cli listunspent | jq -r '.[] | { txid: .txid, vout: .v ## Executando o Script de Taxa de Transação -O [Script de Cálculo de Taxa](src/04_2_i_txfee-calc.sh) está disponível no diretório `src/`. Você pode baixá-lo e salvá-lo como ```txfee-calc.sh```. +O [Script de Cálculo de Taxa](../src/04_2_i_txfee-calc.sh) está disponível no diretório `src/`. Você pode baixá-lo e salvá-lo como ```txfee-calc.sh```. > :warning: **ATENÇÃO:** Este script não foi verificado extensivamente. Se for usá-lo para verificar as taxas de transação reais, só deve fazê-lo depois de fazer uma verificação pessoal dos valores. diff --git a/pt/10_2_Building_the_Structure_of_P2SH.md b/pt/10_2_Building_the_Structure_of_P2SH.md index 49ee5de..112d864 100644 --- a/pt/10_2_Building_the_Structure_of_P2SH.md +++ b/pt/10_2_Building_the_Structure_of_P2SH.md @@ -68,7 +68,7 @@ Para completar nossa serialização, traduzimos o código hexadecimal em binári ## Executando o Script de Conversão de Inteiros -Um script completo para alterar um número inteiro entre -2147483647 e 2147483647 para uma representação de magnitude assinada do tipo _little-endian_ em hexadecimal pode ser encontrado no [diretório de código src](src/10_2_integer2lehex.sh). Podemos baixar o ```integeer2lehex.sh```. +Um script completo para alterar um número inteiro entre -2147483647 e 2147483647 para uma representação de magnitude assinada do tipo _little-endian_ em hexadecimal pode ser encontrado no [diretório de código src](../src/10_2_integer2lehex.sh). Podemos baixar o ```integeer2lehex.sh```. > :warning: **AVISO:** Este script não foi verificado de forma consistente. Se formos utilizá-lo para criar scripts de bloqueio reais, precisamos nos certificar de verificar e testar os resultados. diff --git a/pt/16_1_Accessing_Bitcoind_with_C.md b/pt/16_1_Accessing_Bitcoind_with_C.md index b6e3aec..0801110 100644 --- a/pt/16_1_Accessing_Bitcoind_with_C.md +++ b/pt/16_1_Accessing_Bitcoind_with_C.md @@ -26,7 +26,7 @@ $ sudo apt-get install git $ git clone https://github.com/gitmarek/libbitcoinrpc ``` -> :warning: **ATENÇÃO** Uma alteração no RPC "signrawtransaction" causou uma assinatura com ``libbitcoinrpc`` para o segfault no Bitcoin 0.17 ou superior. O [Pull Request foi submetido](https://github.com/gitmarek/libbitcoinrpc/pull/1/commits) para resolver o problema, mas se ainda não tiver sido feito o merge, podemos simplesmente fazer uma simples mudança no código-fonte para ``src/bitcoinrpc_method.c`` antes de compilarmos. +> :warning: **ATENÇÃO** Uma alteração no RPC "signrawtransaction" causou uma assinatura com ``libbitcoinrpc`` para o segfault no Bitcoin 0.17 ou superior. O [Pull Request foi submetido](https://github.com/gitmarek/libbitcoinrpc/pull/1/commits) para resolver o problema, mas se ainda não tiver sido feito o merge, podemos simplesmente fazer uma simples mudança no código-fonte para ``src/bitcoinrpc_method.c`` antes de compilarmos. ### Compilando o libbitcoinrpc @@ -155,7 +155,7 @@ bitcoinrpc_global_cleanup(); ### Testando o Código de Teste -O código de teste pode ser encontrado [no diretório src com o nome 15_1_testbitcoin.c](src/15_1_testbitcoin.c). Vamos fazer o download para a nossa máquina TestNet e depois inserir a senha correta do RPC (e alterar o usuário RPC se não tivermos criado o servidor com StandUp). +O código de teste pode ser encontrado [no diretório src com o nome 16_1_testbitcoin.c](../src/16_1_testbitcoin.c). Vamos fazer o download para a nossa máquina TestNet e depois inserir a senha correta do RPC (e alterar o usuário RPC se não tivermos criado o servidor com StandUp). Podemos compilar e executar o código da seguinte maneira: ``` @@ -223,7 +223,7 @@ printf("Block Count: %d\n",blocks); ### Testando o Código de Informação -Vamos recuperar o código de teste que está no [diretório src](15_1_GetMiningInfo.c). +Vamos recuperar o código de teste que está no [diretório src](../src/16_1_getmininginfo.c). ``` $ cc getmininginfo.c -lbitcoinrpc -ljansson -o getmininginfo $ ./getmininginfo diff --git a/pt/16_2_Programming_Bitcoind_with_C.md b/pt/16_2_Programming_Bitcoind_with_C.md index 67458a9..03c1158 100644 --- a/pt/16_2_Programming_Bitcoind_with_C.md +++ b/pt/16_2_Programming_Bitcoind_with_C.md @@ -330,7 +330,7 @@ O código inteiro, com um _pouco_ mais verificação de erros, está disponível ## Testando o Código -O código completo pode ser encontrado no [diretório src/](src/16_2_sendtoaddress.c). +O código completo pode ser encontrado no [diretório src/](../src/16_2_sendtoaddress.c). Compile-o como de costume: ``` diff --git a/pt/16_3_Receiving_Bitcoind_Notifications_with_C.md b/pt/16_3_Receiving_Bitcoind_Notifications_with_C.md index 4f081a8..f6f810a 100644 --- a/pt/16_3_Receiving_Bitcoind_Notifications_with_C.md +++ b/pt/16_3_Receiving_Bitcoind_Notifications_with_C.md @@ -121,7 +121,7 @@ Claro, quando terminar o processo, precisamos limpar tudo: ### Testando o Código de Notificação -O código-fonte completo está no [diretório src/](src/15_3_chainlistener.c) como de costume. Precisamos compilá-lo: +O código-fonte completo está no [diretório src/](../src/16_3_chainlistener.c) como de costume. Precisamos compilá-lo: ``` $ cc -o chainlistener chainlistener.c -I/usr/local/include -L/usr/local/lib -lzmq -lczmq ``` diff --git a/pt/17_1_Setting_Up_Libwally.md b/pt/17_1_Setting_Up_Libwally.md index 57f5810..685c5ab 100644 --- a/pt/17_1_Setting_Up_Libwally.md +++ b/pt/17_1_Setting_Up_Libwally.md @@ -129,7 +129,7 @@ Em ambos os casos, o argumento é para flags, mas atualmente está definido como ## Testando um Programa de Teste da Libwally -O diretório src contém o arquivo [testwally.c](src/17_1_testwally.c), que apenas mostra como funcionam as funções de inicialização e de limpeza. +O diretório src contém o arquivo [testwally.c](../src/17_1_testwally.c), que apenas mostra como funcionam as funções de inicialização e de limpeza. Podemos compilá-lo da seguinte maneira: ``` diff --git a/pt/17_2_Using_BIP39_in_Libwally.md b/pt/17_2_Using_BIP39_in_Libwally.md index 10967ab..90451b1 100644 --- a/pt/17_2_Using_BIP39_in_Libwally.md +++ b/pt/17_2_Using_BIP39_in_Libwally.md @@ -82,7 +82,7 @@ Se dizermos tudo certo, devemos obter uma seed de 64 bytes. (Essa é a variável ## Testando o Código Mnemônico -O código completo para gerar entropia, gerar um mnemônico BIP39, validar o mnemônico e gerar uma seed pode ser encontrado no [diretório src/](src/17_2_genmnemonic.c). Podemos fazer o download e compilar: +O código completo para gerar entropia, gerar um mnemônico BIP39, validar o mnemônico e gerar uma seed pode ser encontrado no [diretório src/](../src/17_2_genmnemonic.c). Podemos fazer o download e compilar: ``` $ cc genmnemonic.c -lwallycore -lsodium -o genmnemonic ``` diff --git a/pt/17_3_Using_BIP32_in_Libwally.md b/pt/17_3_Using_BIP32_in_Libwally.md index d85b510..f9f0d99 100644 --- a/pt/17_3_Using_BIP32_in_Libwally.md +++ b/pt/17_3_Using_BIP32_in_Libwally.md @@ -115,7 +115,7 @@ Há também uma função `wally_bip32_key_to_address`, que pode ser usada para g ## Testando o Código HD -O código para esses exemplos HD pode, como de costume, ser encontrado no [diretório src/](src/17_3_genhd.c). +O código para esses exemplos HD pode, como de costume, ser encontrado no [diretório src/](../src/17_3_genhd.c). Podemos compilá-lo e testá-lo: ``` diff --git a/pt/17_4_Using_PSBTs_in_Libwally.md b/pt/17_4_Using_PSBTs_in_Libwally.md index 4bff407..048d92c 100644 --- a/pt/17_4_Using_PSBTs_in_Libwally.md +++ b/pt/17_4_Using_PSBTs_in_Libwally.md @@ -116,7 +116,7 @@ Obviamente, há muito mais coisas que poderemos observar nos PSBTs. Na verdade, ### Testando Nosso Leitor PSBT -Novamente, o código para este leitor PSBT (extremamente rudimentar e específico) está no [diretório src/](src/17_4_examinepsbt.c). +Novamente, o código para este leitor PSBT (extremamente rudimentar e específico) está no [diretório src/](../src/17_4_examinepsbt.c). Podemos compilá-lo normalmente: ``` @@ -289,7 +289,7 @@ Mas o que temos ainda não é um PSBT legal, por falta de entradas. Podemos cri ``` ### Testando nosso PSBT Criado -Neste ponto, devemos ter um PSBT vazio, mas funcionando, que pode ser visto compilando e executando [o programa](src/17_4_createemptypsbt.c). +Neste ponto, devemos ter um PSBT vazio, mas funcionando, que pode ser visto compilando e executando [o programa](../src/17_4_createemptypsbt.c). ``` $ cc createemptypsbt.c -lwallycore -o createemptypsbt $ ./createemptypsbt diff --git a/pt/17_5_Using_Scripts_in_Libwally.md b/pt/17_5_Using_Scripts_in_Libwally.md index b8df034..d88d846 100644 --- a/pt/17_5_Using_Scripts_in_Libwally.md +++ b/pt/17_5_Using_Scripts_in_Libwally.md @@ -112,7 +112,7 @@ Mostraremos como fazer uso disso na seção §17.7. ## Testando Nosso Script de Substituição -Podemos pegar o código de teste do [diretório src/](src/17_5_replacewithscript.c) e compilá-lo: +Podemos pegar o código de teste do [diretório src/](../src/17_5_replacewithscript.c) e compilá-lo: ``` $ cc replacewithscript.c -lwallycore -o replacewithscript ``` diff --git a/pt/17_7_Integrating_Libwally_and_Bitcoin-CLI.md b/pt/17_7_Integrating_Libwally_and_Bitcoin-CLI.md index df3e176..ddfd2e6 100644 --- a/pt/17_7_Integrating_Libwally_and_Bitcoin-CLI.md +++ b/pt/17_7_Integrating_Libwally_and_Bitcoin-CLI.md @@ -33,7 +33,7 @@ $ utxo_vout=$(bitcoin-cli listunspent | jq -r '.[0] | .vout') $ recipient=tb1qycsmq3jas5wkhf8xrfn8k7438cm5pc8h9ae2k0 $ rawtxhex=$(bitcoin-cli -named createrawtransaction inputs='''[ { "txid": "'$utxo_txid'", "vout": '$utxo_vout' } ]''' outputs='''{ "'$recipient'": 0.0009 }''') ``` -Embora tenhamos colocado um destinatário e uma quantia na saída, isto é irrelevante, porque nós o reescreveremos. Um código mais elaborado poderia ler as informações `vout` existentes antes de reescrever, mas estamos mantendo as coisas muito próximas do nosso [código original](src/17_5_replacewithscript.c). +Embora tenhamos colocado um destinatário e uma quantia na saída, isto é irrelevante, porque nós o reescreveremos. Um código mais elaborado poderia ler as informações `vout` existentes antes de reescrever, mas estamos mantendo as coisas muito próximas do nosso [código original](../src/17_5_replacewithscript.c). Aqui está a única alteração necessária, para permitir que especifiquemos os satoshis no `vout`, sem ter que codificá-lo, como no original: ``` @@ -182,7 +182,7 @@ Infelizmente, nem todas as interações entre a Libwally e o `bitcoin-cli` são ## Importando Chaves Privadas -Felizmente, podemos fazer quase a mesma coisa importando uma chave privada gerada na Libwally. Dê uma olhada no [genhd-for-import.c](src/17_7_genhd_for_import.c), uma versão simplificada do programa `genhd` da seção [§17.3](17_3_Using_BIP32_in_Libwally.md) que também usa a biblioteca `jansson` da seção [§16.1](16_1_Accessing_Bitcoind_with_C.md) para saída regularizada. +Felizmente, podemos fazer quase a mesma coisa importando uma chave privada gerada na Libwally. Dê uma olhada no [genhd-for-import.c](../src/17_7_genhd_for_import.c), uma versão simplificada do programa `genhd` da seção [§17.3](17_3_Using_BIP32_in_Libwally.md) que também usa a biblioteca `jansson` da seção [§16.1](16_1_Accessing_Bitcoind_with_C.md) para saída regularizada. O código atualizado também contém uma alteração importante, pois ele solicita uma impressão digital da Libwally para que se possa criar um caminho de derivação de maneira adequada: ``` diff --git a/pt/18_1_Accessing_Bitcoind_with_Go.md b/pt/18_1_Accessing_Bitcoind_with_Go.md index 1a3b43e..a61705e 100644 --- a/pt/18_1_Accessing_Bitcoind_with_Go.md +++ b/pt/18_1_Accessing_Bitcoind_with_Go.md @@ -160,7 +160,7 @@ No entanto, uma peculiaridade com hashes no `rpcclient` é que normalmente eles ### Executando Nosso Código -Podemos baixar o código completo do [diretório src](src/18_1_blockinfo.go). +Podemos baixar o código completo do [diretório src](../src/18_1_blockinfo.go). Podemos então, executar: ``` @@ -185,7 +185,7 @@ Devido às limitações do `btcd` no `rpcclient`, não podemos fazer uso da fun ``` O `client.GetBalance("*")` requer a entrada `"*"` devido a uma peculiaridade do `btcd`. O asterisco significa que desejamos obter o saldo de todas as nossas carteiras. -Se executarmos [o código src](src/18_1_getbalance.go), deveremos obter uma saída semelhante a esta: +Se executarmos [o código src](../src/18_1_getbalance.go), deveremos obter uma saída semelhante a esta: ``` $ go run getbalance.go 0.000689 BTC @@ -281,7 +281,7 @@ Só depois disso usamos o RPC `getreceivedbyaddress` no nosso endereço decodifi fmt.Println(wallet) ``` -Ao executar [o código](src/18_1_getamountreceived.go), devemos obter uma saída semelhante a esta: +Ao executar [o código](../src/18_1_getamountreceived.go), devemos obter uma saída semelhante a esta: ``` $ go run getamountreceived.go 0.0085 BTC @@ -333,7 +333,7 @@ func main() { fmt.Println(sent) } ``` -Quando executamos [o código](src/18_1_sendtransaction.go), o txid da transação nos será retornado: +Quando executamos [o código](../src/18_1_sendtransaction.go), o txid da transação nos será retornado: ``` $ go run sendtransaction.go @@ -382,7 +382,7 @@ func main() { ``` > **NOTA:** Novamente, vamos querer trocar o txid por um que realmente será reconhecido pelo nosso sistema. -Ao executar [o código](src/18_1_lookuptransaction.go), ele imprimirá os detalhes associados a uma transação, como seu valor e quantas vezes foi confirmada: +Ao executar [o código](../src/18_1_lookuptransaction.go), ele imprimirá os detalhes associados a uma transação, como seu valor e quantas vezes foi confirmada: ``` $ go run lookuptransaction.go diff --git a/pt/18_2_Accessing_Bitcoind_with_Java.md b/pt/18_2_Accessing_Bitcoind_with_Java.md index 7b01aad..06487f0 100644 --- a/pt/18_2_Accessing_Bitcoind_with_Java.md +++ b/pt/18_2_Accessing_Bitcoind_with_Java.md @@ -154,7 +154,7 @@ PubKey: 0368d0fffa651783524f8b934d24d03b32bf8ff2c0808943a556b3d74b2e5c7d65 ### Executando Nosso Código -O código para esses exemplos pode ser encontrado no [diretório src/](src/18_2_App-getinfo.java) e deve ser instalado na estrutura de diretório padrão criada neste caso como `~/java-project/src/main/java/com/blockchaincommons/lbtc/App.java`. Ele pode então ser compilado e executado. +O código para esses exemplos pode ser encontrado no [diretório src/](../src/18_2_App-getinfo.java) e deve ser instalado na estrutura de diretório padrão criada neste caso como `~/java-project/src/main/java/com/blockchaincommons/lbtc/App.java`. Ele pode então ser compilado e executado. ``` $ mvn compile @@ -277,7 +277,7 @@ System.out.println("Sent signedRawTx (txID): " + sentRawTransactionID); ### Executando Nosso Código -Agora podemos executar [o código da transação](src/18_2_App-sendtx.java) como `~/java-project/src/main/java/com/blockchaincommons/lbtc/App.java`. +Agora podemos executar [o código da transação](../src/18_2_App-sendtx.java) como `~/java-project/src/main/java/com/blockchaincommons/lbtc/App.java`. ``` $ mvn compile @@ -316,7 +316,7 @@ Para fazer isso, podemos usar a classe `BitcoinAcceptor` do `JavaBitcoindRpcClie acceptor.run(); ``` -Veja [o diretório src/](src/18_2_App-listen.java) para o código completo. Cada vez que uma transação é enviada ou um novo bloco é gerado, devemos ver a saída em nosso console: +Veja [o diretório src/](../src/18_2_App-listen.java) para o código completo. Cada vez que uma transação é enviada ou um novo bloco é gerado, devemos ver a saída em nosso console: ``` Transaction: {account=Tests, address=mhopuJzgmTwhGfpNLCJ9CRknugY691oXp1, category=receive, amount=5.0E-4, label=Tests, vout=1, confirmations=0, trusted=false, txid=361e8fcff243b74ebf396e595a007636654f67c3c7b55fd2860a3d37772155eb, walletconflicts=[], time=1513132887, timereceived=1513132887, bip125-replaceable=unknown} diff --git a/pt/18_3_Accessing_Bitcoind_with_NodeJS.md b/pt/18_3_Accessing_Bitcoind_with_NodeJS.md index 152ea62..89ae123 100644 --- a/pt/18_3_Accessing_Bitcoind_with_NodeJS.md +++ b/pt/18_3_Accessing_Bitcoind_with_NodeJS.md @@ -109,7 +109,7 @@ O resultado das funções BCRPC é um objeto JSON contendo informações sobre q ### Executando Nosso Código -Podemos encontrar o código `getinfo` no [diretório src/](src/18_3_getinfo.js). +Podemos encontrar o código `getinfo` no [diretório src/](../src/18_3_getinfo.js). ``` $ node getinfo.js 1831094 @@ -162,7 +162,7 @@ agent.getWalletInfo(function (err, walletInfo) { }); ``` -O código está disponível como [walletinfo.js](src/18_3_walletinfo.js). +O código está disponível como [walletinfo.js](../src/18_3_walletinfo.js). ``` $ node walletinfo.js 0.008498 @@ -260,7 +260,7 @@ Devemos obter uma saída semelhante a esta: } ``` -O código completo está disponível no [sendtx.js](src/18_3_sendtx.js). +O código completo está disponível no [sendtx.js](../src/18_3_sendtx.js). ## Resumo: Acessando o Bitcoind com NodeJS diff --git a/pt/18_4_Accessing_Bitcoind_with_Python.md b/pt/18_4_Accessing_Bitcoind_with_Python.md index f343cc9..8eac58d 100644 --- a/pt/18_4_Accessing_Bitcoind_with_Python.md +++ b/pt/18_4_Accessing_Bitcoind_with_Python.md @@ -128,7 +128,7 @@ print("---------------------------------------------------------------\n") ### Executando nosso código -Podemos usar [o código que está no src/](src/18_4_getinfo.py) e executá-lo com `python3`: +Podemos usar [o código que está no src/](../src/18_4_getinfo.py) e executá-lo com `python3`: ``` $ python3 getinfo.py @@ -244,7 +244,7 @@ pprint(utxo_tx_details) print("---------------------------------------------------------------\n") ``` -Este código está disponível no arquivo [walletinfo.py](src/18_4_walletinfo.py). +Este código está disponível no arquivo [walletinfo.py](../src/18_4_walletinfo.py). ``` $ python3 walletinfo.py --------------------------------------------------------------- @@ -422,7 +422,7 @@ send_tx = rpc_client.sendrawtransaction(signed_tx['hex']) ``` ### Executando Nosso Código -[Este código](src/18_4_sendtx.py) está cheio de instruções com `print` para demonstrar todos os dados disponíveis a cada momento: +[Este código](../src/18_4_sendtx.py) está cheio de instruções com `print` para demonstrar todos os dados disponíveis a cada momento: ``` $ python3 sendtx.py Creating a Transaction diff --git a/pt/18_5_Accessing_Bitcoind_with_Rust.md b/pt/18_5_Accessing_Bitcoind_with_Rust.md index 20b4d37..d13ceb3 100644 --- a/pt/18_5_Accessing_Bitcoind_with_Rust.md +++ b/pt/18_5_Accessing_Bitcoind_with_Rust.md @@ -134,7 +134,7 @@ Aqui está o código completo para recuperar um hash de bloco, transformando-o e ### Executando Nosso Código -Podemos acessar o [código src](src/18_5_main-getinfo.rs) e executá-lo. Infelizmente, a informação do "Block" sairá um pouco feia porque este exemplo não inclui uma biblioteca para embelezá-la. +Podemos acessar o [código src](../src/18_5_main-getinfo.rs) e executá-lo. Infelizmente, a informação do "Block" sairá um pouco feia porque este exemplo não inclui uma biblioteca para embelezá-la. ``` $ cargo run @@ -289,7 +289,7 @@ println!("{:?}", txid_sent); ### Executando Nosso Código -Agora podemos executar o código completo do [src](src/18_5_main-sendtx.rs). +Agora podemos executar o código completo do [src](../src/18_5_main-sendtx.rs). ``` diff --git a/pt/18_6_Accessing_Bitcoind_with_Swift.md b/pt/18_6_Accessing_Bitcoind_with_Swift.md index 471c376..460e70d 100644 --- a/pt/18_6_Accessing_Bitcoind_with_Swift.md +++ b/pt/18_6_Accessing_Bitcoind_with_Swift.md @@ -191,7 +191,7 @@ makeCommand(method: method,param: param) { result in ### Executando Nosso Código -O código completo está disponível no [diretório src/](src/18_6_getinfo.playground). Carregue-o no playground Xcode e, em seguida, "Editor -> Executar Playground" e devemos obter resultados como: +O código completo está disponível no [diretório src/](../src/18_6_getinfo.playground). Carregue-o no playground Xcode e, em seguida, "Editor -> Executar Playground" e devemos obter resultados como: ``` { bestblockhash = 00000000000000069725608ebc5b59e520572a8088cbc57ffa5ba87b7f300ac7; @@ -384,7 +384,7 @@ Enviar nossa transação é igualmente simples: } ``` -O código para este remetente de transação pode ser encontrado no [diretório src/](src/18_6_sendtx.playground). +O código para este remetente de transação pode ser encontrado no [diretório src/](../src/18_6_sendtx.playground). ## Usando o Swift de Outras Maneiras