Skip to content

Commit 73e1a65

Browse files
committed
Review 18_4
1 parent 9cbc5e1 commit 73e1a65

1 file changed

Lines changed: 36 additions & 36 deletions

File tree

pt/18_4_Accessing_Bitcoind_with_Python.md

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# 17.4: Acessando o Bitcoind com Python
1+
# 18.4: Acessando o Bitcoind com Python
22

33
> :information_source: **NOTA:** Esta seção foi adicionada recentemente ao curso e é um rascunho inicial que ainda pode estar aguardando revisão.
44
@@ -13,7 +13,7 @@ Podemos verificar isso executando:
1313

1414
Se ele retornar um número de versão (por exemplo, `3.7.3` ou `3.8.3`), então temos o python3 instalado.
1515

16-
No entanto, se não tivermos o Python instalado, precisaremos compilá-lo a partir do código-fonte. Podemos consultar como fazer isso, como mostrado no ["Construindo Python a partir da fonte"](17_4_Accessing_Bitcoind_with_Python.md # variant-build-python-from-source) antes de continuarmos.
16+
No entanto, se não tivermos o Python instalado, precisaremos compilá-lo a partir do código-fonte. Devemos consultar como fazer isso em ["Construindo Python da Fonte"](18_4_Accessing_Bitcoind_with_Python.md#variant-build-python-from-source) antes de continuarmos.
1717

1818
### Configurando o BitcoinRPC
1919

@@ -22,13 +22,13 @@ Quer tenhamos usado um Python existente ou compilado a partir da fonte, agora es
2222
```
2323
$ pip3 install python-bitcoinrpc
2424
```
25-
Se você não instalamos o `pip`, precisaremos executar o seguinte:
25+
Se não instalamos o `pip`, precisaremos executar o seguinte:
2626
```
2727
$ sudo apt install python3-pip
2828
```
2929
Em seguida, vamos repetir o comando `pip3 install python-bitcoinrpc`.
3030

31-
### Criar um projeto BitcoinRPC
31+
### Criando um Projeto BitcoinRPC
3232

3333
Geralmente, precisaremos incluir declarações apropriadas do `bitcoinrpc` em nosso projetos Bitcoin usando o Python. O seguinte fornecerá acesso aos comandos baseados em RPC:
3434
```py
@@ -43,14 +43,14 @@ O `pprint` irá imprimir a resposta `json` do `bitcoind`.
4343

4444
O `logging` irá imprimir a chamada que fizemos para o respose do `bitcoind` e o próprio `bitcoind`, o que é útil quando fazemos um monte de chamadas juntas. Se não quisermos um retorno muito grande no terminal, podemos comentar o bloco `logging`.
4545

46-
## Construindo a nossa conexão
46+
## Construindo a Nossa Conexão
4747

4848
Agora estamos prontos para começar a interagir com o `bitcoind` estabelecendo uma conexão. Vamos criar um arquivo chamado `btcrpc.py` e digitar o seguinte:
4949

5050
```py
5151
logging.basicConfig()
5252
logging.getLogger("BitcoinRPC").setLevel(logging.DEBUG)
53-
# rpc_user and rpc_password are set in the bitcoin.conf file
53+
# rpc_user e rpc_password estão configurados no arquivo bitcoin.conf
5454
rpc_user = "StandUp"
5555
rpc_pass = "6305f1b2dbb3bc5a16cd0f4aac7e1eba"
5656
rpc_host = "127.0.0.1"
@@ -59,9 +59,9 @@ rpc_client = AuthServiceProxy(f"http://{rpc_user}:{rpc_pass}@{rpc_host}:18332",
5959

6060
Os argumentos na URL são `<rpc_username>:<rpc_password>@<host_IP_address>:<port>`. Como de costume, o `user` e o `pass` são encontrados no arquivo `~/.bitcoin/bitcoin.conf`, enquanto o `host` é o nosso localhost, e a porta é `18332` para Testnet. O argumento `timeout` é especificado desde o tempo limite dos sockets sob grande demanda na rede principal. Se obtivermos a resposta `socket.timeout: timed out`, precisamos ser pacientes e aumentar o` timeout`.
6161

62-
> :link: ** MAINNET VS TESTNET: ** A porta seria 8332 para uma configuração na Mainnet.
62+
> :link: **MAINNET VS TESTNET:** A porta seria 8332 para uma configuração na Mainnet.
6363
64-
### Fazendo uma chamada RPC
64+
### Fazendo uma Chamada RPC
6565

6666
Se o `rpc_client` for inicializado com sucesso, seremos capazes de enviar comandos RPC para o nosso node do Bitcoin.
6767

@@ -87,7 +87,7 @@ Block Count: 1773020
8787
---------------------------------------------------------------
8888
```
8989

90-
### Fazendo uma chamada RPC enviando argumentos
90+
### Fazendo uma Chamada RPC com Argumentos
9191

9292
Podemos usar esse blockcount como um argumento para recuperar o blockhash de um bloco e também para recuperar os detalhes do bloco.
9393

@@ -128,7 +128,7 @@ print("---------------------------------------------------------------\n")
128128

129129
### Executando nosso código
130130

131-
Podemos usar [o código que está no src/](src/17_4_getinfo.py) e executá-lo com `python3`:
131+
Podemos usar [o código que está no src/](src/18_4_getinfo.py) e executá-lo com `python3`:
132132

133133
```
134134
$ python3 getinfo.py
@@ -160,7 +160,7 @@ First 10 transactions:
160160
---------------------------------------------------------------
161161
```
162162

163-
## Pesquisando fundos
163+
## Pesquisando Fundos
164164

165165
Da mesma forma, podemos recuperar as informações da nossa carteira com o RPC `getwalletinfo`:
166166

@@ -244,7 +244,7 @@ pprint(utxo_tx_details)
244244
print("---------------------------------------------------------------\n")
245245
```
246246

247-
Este código está disponível no arquivo [walletinfo.py](src/17_4_walletinfo.py).
247+
Este código está disponível no arquivo [walletinfo.py](src/18_4_walletinfo.py).
248248
```
249249
$ python3 walletinfo.py
250250
---------------------------------------------------------------
@@ -338,16 +338,16 @@ UTXO Details:
338338
---------------------------------------------------------------
339339
```
340340

341-
## Crindo um endereço
341+
## Crindo um Endereço
342342

343343
Criar um novo endereço com Python 3 requer apenas o uso de um RPC como `getnewaddress` ou `getrawchangeaddress`.
344344
```
345345
new_address = rpc_client.getnewaddress("Learning-Bitcoin-from-the-Command-Line")
346346
new_change_address = rpc_client.getrawchangeaddress()
347347
```
348-
Neste exemplo, usamos comando `getnewaddress` junto com um argumento: o rótulo `Learning-Bitcoin-from-the-Command-Line`.
348+
Neste exemplo, usamos o comando `getnewaddress` junto com um argumento: o rótulo `Learning-Bitcoin-from-the-Command-Line`.
349349

350-
## Enviando uma transação
350+
## Enviando uma Transação
351351

352352
A criação de uma transação no Python 3 requer a combinação de alguns dos exemplos anteriores, de criação de endereços e de recuperação de UTXOs, com alguns comandos novos do RPC para criar, assinar e enviar uma transação, da mesma forma que fizemos anteriormente na linha de comando.
353353

@@ -359,13 +359,13 @@ Existem cinco etapas:
359359
3. Assinar a transação bruta com a chave privada do UTXO;
360360
4. Transmitir a transação na Testnet do bitcoin.
361361

362-
### 1. Selecionando o UTXO e definindo os detalhes da transação
362+
### 1. Selecionando o UTXO e Definindo os Detalhes da Transação
363363

364364
No trecho de código a seguir, primeiro selecionaremos o UTXO que gostaríamos de gastar. Em seguida, iremos obter o endereço, id da transação e o índice vetorial da saída.
365365

366366
```py
367367
utxos = rpc_client.listunspent()
368-
selected_utxo = utxos[0] # again, selecting the first utxo here
368+
selected_utxo = utxos[0] # novamente, selecionando o primeiro utxo aqui
369369
utxo_address = selected_utxo['address']
370370
utxo_txid = selected_utxo['txid']
371371
utxo_vout = selected_utxo['vout']
@@ -375,17 +375,17 @@ Em seguida, também recuperamos o endereço do destinatário para o qual desejam
375375

376376
```py
377377
recipient_address = new_address
378-
recipient_amt = utxo_amt / 2 # sending half coins to recipient
379-
miner_fee = 0.00000300 # choose appropriate fee based on your tx size
378+
recipient_amt = utxo_amt / 2 # enviando metade das moedas para o recebedor
379+
miner_fee = 0.00000300 # escolha uma taxa apropriada baseada no tamanho da sua transação
380380
change_address = new_change_address
381381
change_amt = float('%.8f'%((utxo_amt - recipient_amt) - miner_fee))
382382
```
383383

384-
> :warning: **AVISO:** Obviamente, um programa real faria escolhas mais sofisticadas sobre qual UTXO usar, o que fazer com os fundos e que taxa de mineração pagar.
384+
> :warning: **AVISO:** Obviamente, um programa real faria escolhas mais sofisticadas sobre qual UTXO usar, o que fazer com os fundos e qual taxa de mineração pagar.
385385
386-
### 2. Criando uma transação bruta
386+
### 2. Criando uma Transação Bruta
387387

388-
Agora temos todas as informações para enviar uma transação, mas antes de enviá-la, devemos criar uma transação.
388+
Agora temos todas as informações para enviar uma transação, mas antes de enviá-la, devemos criá-la.
389389

390390
```py
391391
txids_vouts = [{"txid": utxo_txid, "vout": utxo_vout}]
@@ -396,13 +396,13 @@ Lembre-se de que o formato do comando `createrawtransaction` é:
396396

397397
```$ bitcoin-cli createrawtransaction '[{"txid": <utxo_txid>, "vout": <vector_id>}]' '{"<address>": <amount>}'```
398398

399-
O `txids_vouts` é, portanto, uma lista e o `address_amts` é um dicionário python, para combinar com o formato de `createrawtransaction`.
399+
O `txids_vouts` é, portanto, uma lista, e o `address_amts` é um dicionário python, para combinar com o formato de `createrawtransaction`.
400400

401401
Se quisermos ver mais sobre os detalhes da transação que criamos, podemos usar `decoderawtransaction`, tanto no Python 3 quanto com `bitcoin-cli`.
402402

403-
### 3. Assinar transação bruta
403+
### 3. Assinar Transação Bruta
404404

405-
Assinar uma transação geralmente é a parte mais complicada do envio de uma transação, quando olhamos a parte de programação. Aqui recuperamos uma chave privada de um endereço com `dumpprivkey` e a coloca em uma matriz:
405+
Assinar uma transação geralmente é a parte mais complicada do envio de uma transação, quando olhamos a parte de programação. Aqui recuperamos uma chave privada de um endereço com `dumpprivkey` e a colocamos em uma matriz:
406406
```py
407407
address_priv_key = [] # list of priv keys of each utxo
408408
address_priv_key.append(rpc_client.dumpprivkey(utxo_address))
@@ -411,7 +411,7 @@ Depois, usamos esse array, que deve conter as chaves privadas de cada UTXO que e
411411
```py
412412
signed_tx = rpc_client.signrawtransactionwithkey(unsigned_tx_hex, address_priv_key)
413413
```
414-
Isso retornará um objeto JSON com o hex da transação assinada e, se foi assinado completamente ou não:
414+
Isso retornará um objeto JSON com o hex da transação assinada e se foi assinado completamente ou não:
415415

416416
### 4. Transmitindo a Transação
417417

@@ -420,9 +420,9 @@ Finalmente, estamos prontos para transmitir a transação assinada na rede Bitco
420420
```py
421421
send_tx = rpc_client.sendrawtransaction(signed_tx['hex'])
422422
```
423-
### Executando nosso código
423+
### Executando Nosso Código
424424

425-
[Este código](src/17_4_sendtx.py) está cheio de instruções com `print` para demonstrar todos os dados disponíveis em cada momento:
425+
[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:
426426
```
427427
$ python3 sendtx.py
428428
Creating a Transaction
@@ -457,34 +457,34 @@ TXID of sent transaction: 187f8baa222f9f37841d966b6bad59b8131cfacca861cbe9bfc86
457457

458458
## Resumo: Acessando o Bitcoind com Python
459459

460-
Acessar Bitcoind com Python é muito fácil usando uma biblioteca `python-bitcoinrpc`. A primeira coisa a se fazer, é estabelecer uma conexão com nossa instância `bitcoind`, então podemos fazer todas as chamadas API bitcoin conforme descrito nos documentos do Bitcoin Core. Isso torna mais fácil criar programas pequenos ou grandes para gerenciar nosso próprio node, verificando saldos ou criando aplicações interessantes, conforme acessamos todo o poder do `bitcoin-cli`.
460+
Acessar Bitcoind com Python é muito fácil usando a biblioteca `python-bitcoinrpc`. A primeira coisa a se fazer é estabelecer uma conexão com nossa instância `bitcoind`, então podemos fazer todas as chamadas da API do Bitcoin conforme descrito nos documentos do Bitcoin Core. Isso torna mais fácil criar programas pequenos ou grandes para gerenciar nosso próprio node, verificando saldos ou criando aplicações interessantes, conforme acessamos todo o poder do `bitcoin-cli`.
461461

462462
## O Que Vem Depois?
463463

464-
Vamos aprender mais sobre "Conversando com o Bitcoind com Outras Linguagens" na seção [§17.5: Acessando o Bitcoind com Rust](17_5_Accessing_Bitcoind_with_Rust.md).
464+
Vamos aprender mais sobre "Conversando com o Bitcoind com Outras Linguagens" na seção [§18.5: Acessando o Bitcoind com Rust](18_5_Accessing_Bitcoind_with_Rust.md).
465465

466-
## Variante: Construindo o Python a partir do código-fonte
466+
## Variante: Construindo Python da Fonte
467467

468-
Se precisarmos instalar o Python 3 a partir do código-fonte, precisaremos seguir estas instruções e continuar da parte ["Criando um projeto BitcoinRPC"](17_4_Accessing_Bitcoind_with_Python.md#Creating-a-bitcoinrpc-project).
468+
Se precisarmos instalar o Python 3 a partir do código-fonte, precisaremos seguir estas instruções, e então continuar com ["Criando um projeto BitcoinRPC"](18_4_Accessing_Bitcoind_with_Python.md#creating-a-bitcoinrpc-project).
469469

470-
### 1. Instalando as dependências
470+
### 1. Instalando as Dependências
471471
```sh
472472
$ sudo apt-get install build-essential checkinstall
473473
$ sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev
474474
```
475475

476-
### 2. Baixando e extraindo o Python
476+
### 2. Baixando e Extraindo o Python
477477
```sh
478478
$ wget https://www.python.org/ftp/python/3.8.3/Python-3.8.3.tgz
479479
$ tar -xzf Python-3.8.3.tgz
480480
```
481481

482-
### 3. Compilando o código-fonte Python e verificando a instalação:
482+
### 3. Compilando o Código-Fonte Python e Verificando a Instalação:
483483

484484
```sh
485485
$ cd Python-3.8.3
486486
$ sudo ./configure --enable-optimizations
487-
$ sudo make -j 8 # enter the number of cores of your system you want to use to speed up the build process.
487+
$ sudo make -j 8 # coloque o número de núcleos que você quer usar do seu sistema para acelerar o processo
488488
$ sudo make altinstall
489489
$ python3.8 --version
490490
```

0 commit comments

Comments
 (0)