Skip to content

Commit 1be8fd8

Browse files
committed
Review 18_1
1 parent 4df18c9 commit 1be8fd8

1 file changed

Lines changed: 35 additions & 36 deletions

File tree

pt/18_1_Accessing_Bitcoind_with_Go.md

Lines changed: 35 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# 17.1: Acessando o Bitcoind com Go
1+
# 18.1: Acessando o Bitcoind com Go
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
@@ -12,7 +12,7 @@ Para nos preparamos para o uso do Go em nossa máquina UNIX, primeiro precisamos
1212
$ sudo apt install curl
1313
```
1414

15-
Então, vamos ler a [página de downloads do Go](https://golang.org/dl/), para obtermos o link para o download mais recente e posteriormente fazer o download usando `curl`. Para uma configuração Debian, vamos querer usar a versão `linux-amd64`:
15+
Então, vamos ler a [página de downloads do Go](https://golang.org/dl/) para obtermos o link para o download mais recente e posteriormente fazer o download usando `curl`. Para uma configuração Debian, vamos querer usar a versão `linux-amd64`:
1616

1717
```
1818
$ curl -O https://dl.google.com/go/go1.15.1.linux-amd64.tar.gz
@@ -31,7 +31,7 @@ $ sudo chown -R root:root ./go
3131
$ sudo mv go /usr/local
3232
```
3333

34-
Agora precisamos criar um caminho no Go para especificar nosso ambiente. Abra o arquivo `~ / .profile` com o editor de texto mais utilizado por nós e vamos escolher e adicionar o seguinte ao final dele:
34+
Agora precisamos criar um caminho no Go para especificar nosso ambiente. Abra o arquivo `~ / .profile` com o editor de texto de sua escolha e adicione o seguinte ao final dele:
3535

3636
```
3737
export GOPATH=$HOME/work
@@ -86,7 +86,7 @@ Devemos ver a contagem de blocos impressa:
8686
2020/09/01 11:41:24 Block count: 1830861
8787
```
8888

89-
### Criando um projeto `rpcclient`
89+
### Criando um Projeto `rpcclient`
9090

9191
Normalmente, iríamos criar projetos no diretório `~/work/src/myproject/bitcoin`:
9292
```
@@ -101,13 +101,13 @@ import (
101101
"github.com/btcsuite/btcd/rpcclient"
102102
)
103103
```
104-
Esta declaração `import` permite que importemos bibliotecas relevantes. Para cada exemplo aqui, precisaremos importar `"log","fmt"` e `"github.com/btcsuite/btcd/rpcclient"`. Podemos precisar importar bibliotecas adicionais em alguns exemplos.
104+
Esta declaração `import` permite que importemos bibliotecas relevantes. Para cada exemplo aqui, precisaremos importar `"log", "fmt"` e `"github.com/btcsuite/btcd/rpcclient"`. Podemos precisar importar bibliotecas adicionais em alguns exemplos.
105105

106106
* O `log` é usado para mostrar mensagens de erro na tela. Após cada vez que o node Bitcoin for chamado, uma instrução `if` irá verificar se há algum erro. Se houver erros, o `log` é usado para imprimi-los;
107107
* O `fmt` é usado para imprimir a saída;
108108
* O `rpcclient` é obviamente a biblioteca do `rpcclient`;
109109

110-
## Construindo nossa conexão
110+
## Construindo Nossa Conexão
111111

112112
Cada função do `bitcoind` no Go começa com a criação da conexão RPC, usando a função `ConnConfig`:
113113
```
@@ -126,15 +126,15 @@ Cada função do `bitcoind` no Go começa com a criação da conexão RPC, usand
126126
```
127127
Os parâmetros da `connCfg` permitem que escolhamos a porta Bitcoin RPC, nome de usuário, senha e se estamos usando a testnet ou mainnet.
128128

129-
> **NOTA:** Novamente, precisamos nos certificar de substituir o `User` e o `Pass` com aquele encontrado no nosso `~/.bitcoin/bitcon.conf`.
129+
> **NOTA:** Novamente, precisamos nos certificar de substituir o `User` e o `Pass` com aqueles encontrados no nosso `~/.bitcoin/bitcon.conf`.
130130
131-
A função `rpcclient.New(connCfg, nil)` configura o`client` para nos conectarmos ao nosso node de Bitcoin.
131+
A função `rpcclient.New(connCfg, nil)` configura o`client` para nos conectarmos ao nosso node Bitcoin.
132132

133-
A linha `defer client.Shutdown()` é para desconectar do nosso node Bitcoin, uma vez que a função `main()` termina de ser executada. Após a linha `defer client.Shutdown()` é onde as coisas interessantes acontecem, e será muito fácil de utilizar. Isso porque o `rpcclient` ajuda a transformar os comandos `bitcoin-cli` em funções, usando PascalCase. Por exemplo, `bitcoin-cli getblockcount` se transformará em `client.GetBlockCount` no Go.
133+
A linha `defer client.Shutdown()` é para desconectar do nosso node Bitcoin, uma vez que a função `main()` termina de ser executada. Após a linha `defer client.Shutdown()` é onde as coisas interessantes acontecem –– e será muito fácil de utilizar. Isso porque o `rpcclient` ajuda a transformar os comandos `bitcoin-cli` em funções, usando PascalCase. Por exemplo, `bitcoin-cli getblockcount` se transformará em `client.GetBlockCount` no Go.
134134

135-
### Fazendo uma chamada RPC
135+
### Fazendo uma Chamada RPC
136136

137-
Agora, tudo o que é necessário é fazer uma chamada informativa como `GetBlockCount` ou` GetBlockHash` usando nosso `client`:
137+
Agora, tudo o que precisamos fazer é uma chamada informativa como `GetBlockCount` ou` GetBlockHash` usando nosso `client`:
138138
```
139139
blockCount, err := client.GetBlockCount()
140140
if err != nil {
@@ -149,7 +149,7 @@ Agora, tudo o que é necessário é fazer uma chamada informativa como `GetBlock
149149
fmt.Printf("%s\n", blockHash.String())
150150
```
151151

152-
### Fazendo uma chamada RPC com argumentos
152+
### Fazendo uma Chamada RPC com Argumentos
153153

154154
As funções `rpcclient` também podem receber entradas, por exemplo, `client.GetBlockHash(blockCount)` recebe a contagem de blocos como uma entrada. O `client.GetBlockHash (blockCount)` de cima seria parecido com um comando `bitcoin-cli`:
155155
```
@@ -158,9 +158,9 @@ $ bitcoin-cli getblockhash 1830868
158158
```
159159
No entanto, uma peculiaridade com hashes no `rpcclient` é que normalmente eles irão ser mostrados em uma codificação diferente se imprimirmos normalmente com o ` blockHash`. Para imprimi-los como uma string, precisamos usar o `blockHash.String()`.
160160

161-
### Executando nosso código
161+
### Executando Nosso Código
162162

163-
Podemos baixar o código completo do [diretório src](src / 17_1_blockinfo.go).
163+
Podemos baixar o código completo do [diretório src](src/18_1_blockinfo.go).
164164

165165
Podemos então, executar:
166166
```
@@ -169,11 +169,11 @@ $ go run blockinfo.go
169169
00000000000002d53b6b9bba4d4e7dc44a79cebd1024d1bcfb9b3cc07d6cad9c
170170
```
171171

172-
O último número do bloco junto com nosso hash deve ser impresso.
172+
O último número do bloco, junto com nosso hash, devem ser impressos.
173173

174-
## Pesquisando os fundos
174+
## Procurando por Fundos
175175

176-
Devido às limitações do `btcd` no `rpcclient`, não pode fazer o uso da função `getwalletinfo`. No entanto, podemos usar o RPC `getbalance`:
176+
Devido às limitações do `btcd` no `rpcclient`, não podemos fazer uso da função `getwalletinfo`. No entanto, podemos usar o RPC `getbalance`:
177177

178178
```
179179
wallet, err := client.GetBalance("*")
@@ -183,22 +183,21 @@ Devido às limitações do `btcd` no `rpcclient`, não pode fazer o uso da funç
183183
184184
fmt.Println(wallet)
185185
```
186-
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.
186+
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.
187187

188-
Se executarmos [o código src](src / 17_1_getbalance.go), deveremos obter uma saída semelhante a esta:
188+
Se executarmos [o código src](src/18_1_getbalance.go), deveremos obter uma saída semelhante a esta:
189189
```
190190
$ go run getbalance.go
191191
0.000689 BTC
192192
```
193193

194-
## Criando um endereço
194+
## Criando um Endereço
195195

196196
Podemos gerar endereços em Go, mas não podemos especificar o tipo do endereço:
197197

198198
Isso requer o uso de uma função especial `chaincfg`, para especificar para qual rede os endereços estão sendo criados. Esta especificação é necessária apenas durante a geração do endereço, por isso é usada apenas neste exemplo. Também podemos incluir isso nos demais exemplos, mas não é necessário.
199199

200-
Be sure to import ```"github.com/btcsuite/btcd/chaincfg"```:
201-
Vamos nos certificar de importar o `"github.com/btcsuite/btcd/chaincfg"`:
200+
Certifique-se de importar o `"github.com/btcsuite/btcd/chaincfg"`:
202201
```
203202
import (
204203
"log"
@@ -235,20 +234,20 @@ Podemos então criar nosso endereço:
235234
```
236235
Uma peculiaridade com o `client.GetNewAddress("")` é que uma string vazia precisa ser incluída para que tudo funcione perfeitamente.
237236

238-
Executando o [the source](17_1_getaddress.go) teremos os seguintes resultados:
237+
Executando o [código fonte](18_1_getaddress.go) teremos os seguintes resultados:
239238
```
240239
$ go run getaddress.go
241240
tb1qutkcj34pw0aq7n9wgp3ktmz780szlycwddfmza
242241
```
243242

244-
### Decodificando um endereço
243+
### Decodificando um Endereço
245244

246-
Criando um endereço exigia um trabalho extra, ao especificar a blockchain correta. Usar um endereço também funcionará, porque teremos que decodificá-lo antes de usá-lo.
245+
Criar um endereço exigia um trabalho extra, em especificar a blockchain correta. Usar um endereço também exigirá, porque teremos que decodificá-lo antes de usá-lo.
247246

248247
Isso significa que teremos que importar as bibliotecas `"github.com/btcsuite/btcutil"` e `"github.com/btcsuite/btcd/chaincfg"`.
249248

250249
* O `btcutil` permite que um endereço Bitcoin seja decodificado de uma forma que o `rpcclient` possa entender. Isso é necessário ao trabalhar com endereços no `rpcclient`;
251-
* O `chaincfg` é (novamente) usado para configurar nossa cadeia como a cadeia Testnet. Isso é necessário para a decodificação de endereços, pois os endereços usados na Mainnet e na Testnet são diferentes.
250+
* O `chaincfg` é (novamente) usado para configurar nossa chain como a chain Testnet. Isso é necessário para a decodificação de endereços, pois os endereços usados na Mainnet e na Testnet são diferentes.
252251

253252
```
254253
import (
@@ -259,7 +258,7 @@ import (
259258
"github.com/btcsuite/btcd/chaincfg"
260259
)
261260
```
262-
A variável defaultNet agora é usada para especificar se nosso node do Bitcoin que está na Testnet ou na Mainnet. Essa informação (e o objeto `btcutil`) é então usado para decodificar o endereço.
261+
A variável defaultNet agora é usada para especificar se nosso node Bitcoin está na Testnet ou na Mainnet. Essa informação (e o objeto `btcutil`) é então usada para decodificar o endereço.
263262

264263
> **MAINNET VS TESTNET:** `&chaincfg.TestNet3Params` deve ser `& chaincfg.MainNetParams` na Mainnet.
265264
@@ -271,9 +270,9 @@ A variável defaultNet agora é usada para especificar se nosso node do Bitcoin
271270
}
272271
```
273272

274-
> **NOTA:** Precisamos alterar o endereço (`mpGpCMX6SuUimDZKiVViuhd7EGyVxkNnha`) para um que seja da nossa carteira. Podemos usar o `bitcoin-cli listunspent` para encontrar alguns endereços com fundos para o teste. Se quisermos ser realmente sofisticados, podemos modificar o código Go para obter um argumento e, em seguida, escrever um script que executa o `listunspent`, para depois salvarmos a informação em uma variável e executar o código Go nela.
273+
> **NOTA:** Precisamos alterar o endereço (`mpGpCMX6SuUimDZKiVViuhd7EGyVxkNnha`) para um que seja da nossa carteira. Podemos usar o `bitcoin-cli listunspent` para encontrar alguns endereços com fundos para teste. Se quisermos ser realmente sofisticados, podemos modificar o código Go para obter um argumento e, em seguida, escrever um script que executa o `listunspent`, para depois salvarmos a informação em uma variável e executar o código Go nela.
275274
276-
Só depois disso usamos o RPC `getreceivedbyaddress`, no nosso endereço decodificado:
275+
Só depois disso usamos o RPC `getreceivedbyaddress` no nosso endereço decodificado:
277276
```
278277
wallet, err := client.GetReceivedByAddress(addr)
279278
if err != nil {
@@ -282,20 +281,20 @@ Só depois disso usamos o RPC `getreceivedbyaddress`, no nosso endereço decodif
282281
283282
fmt.Println(wallet)
284283
```
285-
Ao executar [o código](src/17_1_getamountreceived.go), devemos obter uma saída semelhante a esta:
284+
Ao executar [o código](src/18_1_getamountreceived.go), devemos obter uma saída semelhante a esta:
286285
```
287286
$ go run getamountreceived.go
288287
0.0085 BTC
289288
```
290289

291-
## Enviando uma transação
290+
## Enviando uma Transação
292291

293292
Agora temos todas as peças do quebra-cabeça no lugar para enviar uma transação. Vamos querer:
294293

295294
1. Importar as bibliotecas corretas, incluindo a `chaincfg` para especificar uma rede e o `btcutil` para decodificar um endereço;
296295
2. Escolher um endereço para enviar;
297296
3. Decodificar esse endereço;
298-
4. Executar o `sendtoaddress` para enviar fundos da maneira mais fácil.
297+
4. Executar o `sendtoaddress` para enviar fundos da maneira fácil.
299298
```
300299
package main
301300
@@ -334,14 +333,14 @@ func main() {
334333
fmt.Println(sent)
335334
}
336335
```
337-
Quando executamos [o código](src/17_1_sendtransaction.go), o txid da transação nos será retornado:
336+
Quando executamos [o código](src/18_1_sendtransaction.go), o txid da transação nos será retornado:
338337

339338
```
340339
$ go run sendtransaction.go
341340
9aa4cd6559e0d69059eae142c35bfe78b71a8084e1fcc2c74e2a9675e9e7489d
342341
```
343342

344-
### Pesquisando uma transação
343+
### Consultando uma Transação
345344

346345
Para consultar uma transação, como a que acabamos de enviar, precisaremos fazer mais uma vez algumas conversões, desta vez do txid. O `"github.com/btcsuite/btcd/chaincfg/chainhash"` é importado para permitir que os hashes sejam armazenados no código Go. O `chainhash.NewHashFromStr("hash")` converte um hash em uma string para um formato que funciona com o rpcclient.
347346

@@ -383,7 +382,7 @@ func main() {
383382
```
384383
> **NOTA:** Novamente, vamos querer trocar o txid por um que realmente será reconhecido pelo nosso sistema.
385384
386-
Ao executar [o código](src/17_1_lookuptransaction.go), ele imprimirá os detalhes associados a uma transação, como nosso valor e quantas vezes foi confirmado:
385+
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:
387386

388387
```
389388
$ go run lookuptransaction.go
@@ -418,4 +417,4 @@ Embora o `btcd` e o `rpcclient` tenham alguns limites, ainda podemos executar os
418417

419418
## O Que Vem Depois?
420419

421-
Vamos aprender mais sobre "Conversando com o Bitcoind com Outras Linguagens" na seção [§17.2: Acessando Bitcoin com Java](17_2_Accessing_Bitcoind_with_Java.md).
420+
Vamos aprender mais sobre "Conversando com o Bitcoind com Outras Linguagens" na seção [§18.2: Acessando Bitcoin com Java](18_2_Accessing_Bitcoind_with_Java.md).

0 commit comments

Comments
 (0)