Table des matières
Full Node Blockchain
Installation du noeud
pkg install bitcoin-daemon Updating FreeBSD repository catalogue... FreeBSD repository is up to date. All repositories are up to date. The following 4 package(s) will be affected (of 0 checked): New packages to be INSTALLED: bitcoin-daemon: 0.20.1_2 libzmq4: 4.3.1_1 norm: 1.5r6_1 openpgm: 5.2.122_6 Number of packages to be installed: 4 The process will require 9 MiB more space. 3 MiB to be downloaded. [1/4] Fetching bitcoin-daemon-0.20.1_2.txz: 100% 2 MiB 1.9MB/s 00:01 [2/4] Fetching libzmq4-4.3.1_1.txz: 100% 340 KiB 348.6kB/s 00:01 [3/4] Fetching openpgm-5.2.122_6.txz: 100% 310 KiB 317.2kB/s 00:01 [4/4] Fetching norm-1.5r6_1.txz: 100% 224 KiB 229.6kB/s 00:01 Checking integrity... done (0 conflicting) [1/4] Installing openpgm-5.2.122_6... [1/4] Extracting openpgm-5.2.122_6: 100% [2/4] Installing norm-1.5r6_1... [2/4] Extracting norm-1.5r6_1: 100% [3/4] Installing libzmq4-4.3.1_1... [3/4] Extracting libzmq4-4.3.1_1: 100% [4/4] Installing bitcoin-daemon-0.20.1_2... ===> Creating groups. Creating group 'bitcoin' with gid '779'. ===> Creating users Creating user 'bitcoin' with uid '779'. ===> Creating homedir(s) [4/4] Extracting bitcoin-daemon-0.20.1_2: 100% ===== Message from openpgm-5.2.122_6: -- ===> NOTICE: The openpgm port currently does not have a maintainer. As a result, it is more likely to have unresolved issues, not be up-to-date, or even be removed in the future. To volunteer to maintain this port, please create an issue at: https://bugs.freebsd.org/bugzilla More information about port maintainership is available at: https://www.freebsd.org/doc/en/articles/contributing/ports-contributing.html#maintain-port
On déplace le répertoire ou la blockchain va être téléchargée
Ne pas oublier de mettre les droits pour le user et le group bitcoin sur le répertoire /nfs99/blockchain
mkdir /nfs99/blockchain chown -R bitcoin:bitcoin /nfs99/blockchain
Mauvaise pratique, ne pas exécuter ce que l'on voit sur certains forum car lancer de cette façon, le service bitcoind démarre avec le user root et le groupe wheel
bitcoind -daemon -datadir=/nfs99/blockchain -blocksdir=/nfs99/blockchain
bitcoind -conf=/usr/local/etc/bitcoin.conf
On pompe le script rcpauth.py pour créer un user et un hash
fetch https://raw.githubusercontent.com/bitcoin/bitcoin/0.20/share/rpcauth/rpcauth.py
Modification du sheebang
#!/usr/bin/env python3 en #!/usr/local/bin/python3.7
#!/usr/local/bin/python3.7 # Copyright (c) 2015-2018 The Bitcoin Core developers # Distributed under the MIT software license, see the accompanying # file COPYING or http://www.opensource.org/licenses/mit-license.php. from argparse import ArgumentParser from base64 import urlsafe_b64encode from binascii import hexlify from getpass import getpass from os import urandom import hmac def generate_salt(size): """Create size byte hex salt""" return hexlify(urandom(size)).decode() def generate_password(): """Create 32 byte b64 password""" return urlsafe_b64encode(urandom(32)).decode('utf-8') def password_to_hmac(salt, password): m = hmac.new(bytearray(salt, 'utf-8'), bytearray(password, 'utf-8'), 'SHA256') return m.hexdigest() def main(): parser = ArgumentParser(description='Create login credentials for a JSON-RPC user') parser.add_argument('username', help='the username for authentication') parser.add_argument('password', help='leave empty to generate a random password or specify "-" to prompt for password', nargs='?') args = parser.parse_args() if not args.password: args.password = generate_password() elif args.password == '-': args.password = getpass() # Create 16 byte hex salt salt = generate_salt(16) password_hmac = password_to_hmac(salt, args.password) print('String to be appended to bitcoin.conf:') print('rpcauth={0}:{1}${2}'.format(args.username, salt, password_hmac)) print('Your password:\n{0}'.format(args.password)) if __name__ == '__main__': main()
chmod +x rpcauth.py
On génère un utilisateur RPC avec le script rpcauth.py
Remote Procedure Call
./rpcauth.py felix String to be appended to bitcoin.conf: rpcauth=felix:d6d690aaf71d98d49bbaed70293cd1a3$2f94ff9399ad9c8d10e1b7a463b9995272ff90359ee8b2f52e75a27d78217dc5 Your password: AbueAuywh47TQT9cZRNf-38Hg5jesjD6hk2wpcDvrq4=
Cela crée un hash et un mot de passe pour le user felix
Bien sûre cet utilisateur n'est pas utilisé pour accéder au RPC, c'est juste pour l'exemple
A quoi va servir de créer un utilisateur RPC ?
- celui-ci va pouvoir interroger par des commande RPC directement le nœud
- il va pouvoir créer un soft-wallet sur son poste client dans son Lan en toute sécurité, une fois sa machine coupée le wallet est en sécurité
Ne JAMAIS créer un wallet sur un nœud, j“ai vu sur certains forum Linux que l'on expliquait comment créer un wallet dans le fichier bitcoin.conf !!
Lancement du service au boot
Le daemon bitcoind lance le service avec les droits user et group bitcoin
Il est donc impératif que le répertoire de travail ou va être téléchargé la blockchain aie les bons droits ainsi que ses sous-répertoires.
Sinon si pas d’accès pas de démarrage du service.
ls -lh /nfs99 drwxr-xr-x 4 bitcoin bitcoin 512B Nov 28 19:40 blockchain
Dans /usr/local/etc/bitcoin.conf on met ces lignes en commentaires car elles seront gérées par rc.conf qui est prioritaire au fichier bitcoin.conf
datadir=/nfs99/blockchain #blocksdir=/nfs99/blockchain
Dans /etc/rc.conf
bitcoind_enable="YES" bitcoind_user="bitcoin" bitcoind_group="bitcoin" bitcoind_conf="/usr/local/etc/bitcoin.conf" bitcoind_data_dir="/nfs99/blockchain
On vérifie que le daemon à bien démarré et qu'il commence à télécharger les blocks de la blockchain
ps aux | grep bitcoin bitcoin 1137 8.4 16.8 2877120 832160 - Ss 14:07 32:48.11 /usr/local/bin/bitcoind -conf=/usr/local/etc/bitcoin.conf -datadir=/nfs99/blockchain du -cs /nfs99/blockchain/ 348621568 du -csh /nfs99/blockchain/ 332G
Débogage
Pour le débogage en cas de message –> exited on signal 6 (core dumped) dans /var/log/message de ce style:
cat /var/log/messages | grep bitcoin kernel: pid 1073 (bitcoind), jid 0, uid 779: exited on signal 6 (core dumped)
Il faut aller dans /usr/local/etc/bitcoin.conf et mettre le daemon en plus verbose que ce qu'il est par défaut.
On crée le fichier et on lui met les droits pour que le user bitcoin puisse écrire dedans
mkdir /var/log/bitcoind.log chown bitcoin:bitcoin /var/log/bitcoind.log
On règle le fichier bitcoin.conf pour que le daemon soit bavard
#----DEBUG---- # Erreur # kernel: pid 1073 (bitcoind), jid 0, uid 779: exited on signal 6 (core dumped) # Spécifiez l'emplacement du fichier journal de débogage debuglogfile=/var/log/bitcoind.log # Sortie des informations de débogage debug=libevent,qt
Forum FreeBSD: bitcoind: exited on signal 6
Github: exited on signal 6 (core dumped)
