O Bitcoin Core é um projeto open-source que mantém e publica o software cliente chamado ‘Bitcoin Core’.
É descendente direto do software cliente original Bitcoin publicado por Satoshi Nakamoto após ele ter publicado o famoso whitepaper do Bitcoin.
O Bitcoin Core consiste de um software ‘full-node’ para completa validação da blockchain, assim como uma carteira bitcoin. O projeto, atualmente, também mantém softwares relacionados como a biblioteca de criptografia libsecp256k1 e outros que podem ser encontrados no GitHub.
Qualquer um pode contribuir para o Bitcoin Core.
INSTALANDO DEPENDÊNCIAS
# yum install -y autoconf automake boost-devel gcc-c++ git libdb4-cxx libdb4-cxx-devel libevent-devel libtool openssl-devel wget
INSTALANDO BERKELEY DB
$ wget http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz
$ sha256sum db-4.8.30.NC.tar.gz
# o último comando deve ter gerado o *hash*
12edc0df75bf9abd7f82f821795bcee50f42cb2e5f76a6a281b85732798364ef
$ tar -xvf db-4.8.30.NC.tar.gz
$ cd db-4.8.30.NC/build_unix
$ mkdir -p build
$ BDB_PREFIX=$(pwd)/build
$ ../dist/configure -disable-shared -enable-cxx -with-pic -prefix=$BDB_PREFIX
$ make install
COMPILANDO
$ cd ~
Clonando repositório com o GIT
$ git clone https://github.com/bitcoin/bitcoin.git
$ cd bitcoin
Liste as tags de releases disponíveis:
$ git tag
#[... outras tags ...]
v0.11.2
v0.11.2rc1
v0.12.0
v0.12.0rc1
v0.12.0rc2
v0.12.0rc3
v0.12.0rc4
v0.12.0rc5
v0.12.1
#[... outras tags ...]
dê um checkout para a última versão estável
git checkout v0.18.0
Agora basta fazer o build (obs.: $BDB_PREFIX definida acima):
$ ./autogen.sh
$ ./configure LDFLAGS="-L${BDB_PREFIX}/lib/" CPPFLAGS="-I${BDB_PREFIX}/include/"
#[...]
$ make
#[...]
$ make install # opcional caso queira os binários no seu $PATH
#[...]
Verificando se tudo ocorreu bem
$bitcoind --version
Bitcoin Core Daemon version v0.18.0
Copyright (C) 2009-2019 The Bitcoin Core developers
API JSON-RPC
Para forma a estrutura da pasta .bitcoin chame o bitcoind e dê um CTRL+C logo em seguida.
$ bitcoind
^C
Vá até a pasta .bitcoin que por padrão fica no seu diretório #HOME. Crie ou edite o arquivo bitcoin.conf contendo o usuário e senha para o servidor RPC.
Exemplo de como seu arquivo ~/.bitcoin/bitcoin.conf deve ficar
server=1
dbcache=1536
rpcport=8332
rpcuser=bitcoinrpc
rpcpassword=yKVT3dVjz5kjG8K7ewWu94
# substitua 10.0.0.15 pelo seu endereço de IP do seu servidor
rpcbind=10.0.0.15
rpcbind=127.0.0.1
#substitua 10.0.0.50 pelo endereço de IP que poderá se conectar via RPC
rpcallowip=10.0.0.50
rpcallowip=127.0.0.1
Tendo seguido todos esses passos você tem tudo pronto para executar o software cliente como um full-node.
INICIANDO O CORE BITCOIN
Conectando à mainnet em modo daemon para não segurar o terminal.
$ bitcoind -daemon
Bitcoin server starting
ENCRIPTAR CARTEIRA
É extremamente importante encriptar a carteira adicionando uma senha para realizar à sua manipulação.
$ bitcoin-cli encryptwallet sua_senha_aqui
Inicie o bitcoind novamente para verificar o novo atributo da carteira encriptada.
$ bitcoin-cli stop
$ bitcoind -daemon
$ bitcoin-cli -getinfo
{
"version": 180000,
"protocolversion": 70015,
"walletversion": 169900,
"balance": 0.00000000,
"blocks": 387195,
"timeoffset": 0,
"connections": 8,
"proxy": "",
"difficulty": 79102380900.22598,
"testnet": false,
"keypoololdest": 1564418881,
"keypoolsize": 999,
"unlocked_until": 0, # <--- sua carteira está protegida
"paytxfee": 0.00000000,
"relayfee": 0.00001000,
"warnings": ""
}
Para “abrir” sua carteira, utilize o comando walletpassphrase seguido de sua senha bem como o tempo que deseja que a carteira permaneça “aberta”.
$ bitcoin-cli walletpassphrase sua_senha_aqui 60
Quando você chamar novamente o getinfo, poderá verificar que a certeira esta “aberta”.
$ bitcoin-cli -getinfo
{
"version": 180000,
"protocolversion": 70015,
"walletversion": 169900,
"balance": 0.00000000,
"blocks": 394234,
"timeoffset": 0,
"connections": 8,
"proxy": "",
"difficulty": 113354299801.4711,
"testnet": false,
"keypoololdest": 1564418881,
"keypoolsize": 1000,
"unlocked_until": 1564423839, <--- tempo em formato UNIX até quando a carteira permanecerá "aberta"
"paytxfee": 0.00000000,
"relayfee": 0.00001000,
"warnings": ""
}