Bitcoin core linux console

Основные команды для взаимодействия с консолью Bitcoin Core RPC

В этой статье мы рассмотрим использование полностью синхронизированного узла Bitcoin Core для запуска команд в консоли bitcoin-qt. Если на вашем компьютере еще не установлен Bitcoin Core, вы можете скачать его здесь .

Имейте в виду, что Bitcoin Core предъявляет повышенные минимальные требования к пространству (в настоящее время

250 ГБ), требования к полосе пропускания и потребуется повторная синхронизация, если в автономном режиме в течение любого периода времени.

Bitcoin Core имеет встроенные команды для получения данных, генерации адресов, отправки транзакций и многого другого. Консоль RPC — отличный способ начать работу, если вы заинтересованы в разработке биткоин приложений или просто узнать больше о работе узлов сети биткоин. Мы будем изучать некоторые основные команды для получения информации о сети, блокчейне и транзакциях.

После того, как вы установили биткоин клиент и ожидали синхронизации вашего узла с сетью, откройте консоль. Его можно найти в раскрывающемся окне при запуске bitcoin-qt (графический интерфейс для Bitcoin Core).

Консоль биткоин-RPC принимает различные команды, обычно от 0 или 1 arguments. Существуют также методы, которые требуют более 1 arguments, такие как отправка или проверка транзакции. Полный список команд RPC можно найти здесь . В этом уроке мы будем использовать следующие основные команды для знакомства с консолью:

Общая информация

getblockchaininfo
getmininginfo
getpeerinfo

Информация о блоке

getblockcount
getbestblockhash
getblock хэш
индекс getblockhash

Информация о транзакции

getrawmempool
getrawtransaction txid
decoderawtransaction rawtx

Общая информация по командам

Эти команды будут возвращать объект с различной информацией. Например,

В этой команде много информации. Это дает нам все детали, которые нам нужны, чтобы определить лучший блок и где его найти. Мы также можем увидеть размер реализованного блокчейна и различных программных форков.

Вторая команда общей информации,

возвращает следующий объект:

Блоки и значения сложности также находятся в getblockchaininfoкоманде, но здесь мы можем найти:

  • сетевые хэши в секунду
  • количество транзакций в пуле передачи

Третья команда общей информации — это узнать информацию о Peers, с которыми ваш узел передает данные блокчейна. Эта команда:

возвращает массив объектов. Каждый объект имеет информацию об узле-партнере, к которому в данный момент подключен ваш экземпляр Bitcoin Core. Обычно это число составляет 10–50, если на маршрутизаторе открыт порт 8333. Возвращенная информация включает в себя:

  • Информация об IP-адресе
  • Время с момента последней отправки / получения
  • Время соединения узла (время работы)
  • Версия
  • Дополнительная информация о сети

общее число Peer в этом массиве указывает количество подключений, однако вы также можете использовать команду getconnectioncountдля возврата числового значения подключенных узлов.

Block команды

Чтобы получить данные о блоке, нам сначала нужен индекс блока или хеш, чтобы идентифицировать этот блок. Мы можем получить оба значения о текущем лучшем блоке в цепочке, используя команды:

чтобы вернуть текущий лучший индекс блока:

чтобы вернуть текущий лучший хеш блока:

Каждый блок в цепочке биткоинов имеет индекс и хэш, который мы можем использовать, чтобы найти подробности о нем. Блоки можно искать непосредственно с помощью хэша блока или косвенно с помощью индекса блока. Например, скажем, мы знаем, что хотим найти блок с уровнем (индекс ) 530120. Сначала введите команду:

который возвращает хеш:

Затем используйте getblockкоманду для получения данных блока:

Команда, getblockвызванная с определенным хешем, вернет:

  • количество подтвержденных блоков с этого блока
  • размер блока
  • вес блока
  • корень меркле
  • массив всех идентификаторов TX в блоке
  • время, когда блок был найден
  • блок nonce
  • текущая сложность
  • количество транзакций (нТх )
  • следующий / предыдущий блок хэшей
Читайте также:  Windows 10 не загружается калькулятор

Команды транзакции

Биткоин не индексирует транзакции по умолчанию. Чтобы искать транзакции, отличные от тех, которые связаны с вашим кошельком, вы должны сначала включить индексацию в файле конфигурации. Перейдите в «Настройки »> «Параметры » >> «Открыть файл конфигурации», чтобы открыть файл конфигурации биткойнов (bitcoin .conf).

После добавления этой команды сохраните файл и перезапустите Bitcoin Core. Этот процесс может занять несколько часов, поэтому его полезно настроить на ночь или пока вас нет. После того, как Bitcoin Core имеет проиндексированый блокчейн, любая сделка может рассматриваться индивидуально с помощью getrawtransactionи decoderawtransactionкоманды.

Это может показаться утомительным дополнительным шагом, но имейте в виду, что этот параметр также является требованием для работы lightnening node.

Теперь, когда у нас работает индексированный биткойн-узел, давайте найдем несколько транзакций для декодирования. Мы можем увидеть идентификаторы всех транзакций в mempool с помощью команды

эта команда вернет массив (обычно ) тысяч ожидающих транзакций, находящихся в настоящий момент в mempool.

Мы можем посмотреть конкретную транзакцию, выбрав один из этих идентификаторов транзакций.

это вернет необработанную транзакцию:

Эта шестнадцатеричная строка, назовем ее hex, является закодированной транзакцией и может быть декодирована с использованием:

Эта команда возвращает объект с подробной информацией об этой транзакции

  • размер транзакции
  • вес транзакции
  • детали ввода
  • выходные данные и значение / с

Здесь много информации, но обратите внимание, что указанная выше транзакция не имеет никаких значений, связанных с ее вводом. Блок, в котором была подтверждена транзакция, также недоступен в транзакции. Эти детали отсутствуют для того, чтобы блокчейн не повторял ненужные данные. Однако у нас достаточно информации для поиска сумм, полученных по каждой биткоин-транзакции и возможность просмотра результатов предыдущих транзакций. С помощью этих команд достаточно построить базовый проводник блоков.

Заключение

Консоль Bitcoin Core RPC находится в центре использования биткоин-узла для упрощения транзакций и создания приложений. Каждый экземпляр биткоина имеет доступ к почти неизменной общей базе данных с предыдущей историей транзакций, а также с информацией о сети и майнинге.

Понимание некоторых из этих основных команд является важным шагом в разработке приложений для биткоинов и работе с узлами в целом. Эти команды могут быть доступны для множества различных языков программирования для создания API и приложений, которые используют и реализуют логику транзакций. Можно вести бизнес из своего собственного узла и программно отслеживать каждую транзакцию через приложение с настраиваемым пользовательским интерфейсом.

Источник

Bitcoin core linux console

Copy raw contents

UNIX BUILD NOTES

Some notes on how to build Bitcoin Core in Unix.

(For BSD specific instructions, see build-*bsd.md in this directory.)

Always use absolute paths to configure and compile Bitcoin Core and the dependencies. For example, when specifying the path of the dependency:

Here BDB_PREFIX must be an absolute path — it is defined using $(pwd) which ensures the usage of the absolute path.

This will build bitcoin-qt as well, if the dependencies are met.

These dependencies are required:

Library Purpose Description
libboost Utility Library for threading, data structures, etc
libevent Networking OS independent asynchronous networking
Library Purpose Description
miniupnpc UPnP Support Firewall-jumping support
libnatpmp NAT-PMP Support Firewall-jumping support
libdb4.8 Berkeley DB Optional, wallet storage (only needed when wallet enabled)
qt GUI GUI toolkit (only needed when GUI enabled)
libqrencode QR codes in GUI Optional for generating QR codes (only needed when GUI enabled)
univalue Utility JSON parsing and encoding (bundled version will be used unless —with-system-univalue passed to configure)
libzmq3 ZMQ notification Optional, allows generating ZMQ notifications (requires ZMQ version >= 4.0.0)
sqlite3 SQLite DB Optional, wallet storage (only needed when wallet enabled)
systemtap Tracing (USDT) Optional, statically defined tracepoints

For the versions used, see dependencies.md

C++ compilers are memory-hungry. It is recommended to have at least 1.5 GB of memory available when compiling Bitcoin Core. On systems with less, gcc can be tuned to conserve memory with additional CXXFLAGS:

Alternatively, or in addition, debugging information can be skipped for compilation. The default compile flags are -g -O2 , and can be changed with:

Finally, clang (often less resource hungry) can be used instead of gcc, which is used by default:

Linux Distribution Specific Instructions

Dependency Build Instructions

Now, you can either build from self-compiled depends or install the required dependencies:

Berkeley DB is required for the wallet.

Ubuntu and Debian have their own libdb-dev and libdb++-dev packages, but these will install Berkeley DB 5.1 or later. This will break binary wallet compatibility with the distributed executables, which are based on BerkeleyDB 4.8. If you do not care about wallet compatibility, pass —with-incompatible-bdb to configure.

Otherwise, you can build Berkeley DB yourself.

SQLite is required for the descriptor wallet:

To build Bitcoin Core without wallet, see Disable-wallet mode

Optional port mapping libraries (see: —with-miniupnpc , —enable-upnp-default , and —with-natpmp , —enable-natpmp-default ):

ZMQ dependencies (provides ZMQ API):

User-Space, Statically Defined Tracing (USDT) dependencies:

If you want to build bitcoin-qt, make sure that the required packages for Qt development are installed. Qt 5 is necessary to build the GUI. To build without GUI pass —without-gui .

To build with Qt 5 you need the following:

Additionally, to support Wayland protocol for modern desktop environments:

libqrencode (optional) can be installed with:

Once these are installed, they will be found by configure and a bitcoin-qt executable will be built by default.

Dependency Build Instructions

Now, you can either build from self-compiled depends or install the required dependencies:

Berkeley DB is required for the wallet:

Newer Fedora releases, since Fedora 33, have only libdb-devel and libdb-cxx-devel packages, but these will install Berkeley DB 5.3 or later. This will break binary wallet compatibility with the distributed executables, which are based on Berkeley DB 4.8. If you do not care about wallet compatibility, pass —with-incompatible-bdb to configure.

Otherwise, you can build Berkeley DB yourself.

SQLite is required for the descriptor wallet:

To build Bitcoin Core without wallet, see Disable-wallet mode

Optional port mapping libraries (see: —with-miniupnpc , —enable-upnp-default , and —with-natpmp , —enable-natpmp-default ):

ZMQ dependencies (provides ZMQ API):

User-Space, Statically Defined Tracing (USDT) dependencies:

If you want to build bitcoin-qt, make sure that the required packages for Qt development are installed. Qt 5 is necessary to build the GUI. To build without GUI pass —without-gui .

To build with Qt 5 you need the following:

Additionally, to support Wayland protocol for modern desktop environments:

libqrencode (optional) can be installed with:

Once these are installed, they will be found by configure and a bitcoin-qt executable will be built by default.

The release is built with GCC and then «strip bitcoind» to strip the debug symbols, which reduces the executable size by about 90%.

miniupnpc may be used for UPnP port mapping. It can be downloaded from here. UPnP support is compiled in and turned off by default. See the configure options for UPnP behavior desired:

libnatpmp may be used for NAT-PMP port mapping. It can be downloaded from here. NAT-PMP support is compiled in and turned off by default. See the configure options for NAT-PMP behavior desired:

It is recommended to use Berkeley DB 4.8. If you have to build it yourself, you can use the installation script included in contrib/ like so:

from the root of the repository.

Otherwise, you can build Bitcoin Core from self-compiled depends.

Note: You only need Berkeley DB if the wallet is enabled (see Disable-wallet mode).

If you need to build Boost yourself:

To help make your Bitcoin Core installation more secure by making certain attacks impossible to exploit even if a vulnerability is found, binaries are hardened by default. This can be disabled with:

Hardening enables the following features:

Position Independent Executable: Build position independent code to take advantage of Address Space Layout Randomization offered by some kernels. Attackers who can cause execution of code at an arbitrary memory location are thwarted if they don’t know where anything useful is located. The stack and heap are randomly located by default, but this allows the code section to be randomly located as well.

On an AMD64 processor where a library was not compiled with -fPIC, this will cause an error such as: «relocation R_X86_64_32 against `. ‘ can not be used when making a shared object;»

To test that you have built PIE executable, install scanelf, part of paxutils, and use:

The output should contain:

Non-executable Stack: If the stack is executable then trivial stack-based buffer overflow exploits are possible if vulnerable buffers are found. By default, Bitcoin Core should be built with a non-executable stack, but if one of the libraries it uses asks for an executable stack or someone makes a mistake and uses a compiler extension which requires an executable stack, it will silently build an executable without the non-executable stack protection.

To verify that the stack is non-executable after compiling use: scanelf -e ./bitcoin

The output should contain: STK/REL/PTL RW- R— RW-

The STK RW- means that the stack is readable and writeable but not executable.

When the intention is to run only a P2P node without a wallet, Bitcoin Core may be compiled in disable-wallet mode with:

In this case there is no dependency on Berkeley DB 4.8 and SQLite.

Mining is also possible in disable-wallet mode using the getblocktemplate RPC call.

Additional Configure Flags

A list of additional configure flags can be displayed with:

Setup and Build Example: Arch Linux

This example lists the steps necessary to setup and build a command line only, non-wallet distribution of the latest changes on Arch Linux:

Note: Enabling wallet support requires either compiling against a Berkeley DB newer than 4.8 (package db ) using —with-incompatible-bdb , or building and depending on a local version of Berkeley DB 4.8. The readily available Arch Linux packages are currently built using —with-incompatible-bdb according to the PKGBUILD. As mentioned above, when maintaining portability of the wallet between the standard Bitcoin Core distributions and independently built node software is desired, Berkeley DB 4.8 must be used.

These steps can be performed on, for example, an Ubuntu VM. The depends system will also work on other Linux distributions, however the commands for installing the toolchain will be different.

Make sure you install the build requirements mentioned above. Then, install the toolchain and curl:

Источник

Читайте также:  User from uid linux
Оцените статью