Принимаем оплату в bitcoin: Часть вторая. Инструменты и подготовка

Принимаем оплату в bitcoin: Часть вторая. Инструменты и подготовка

Возможно мне не удалось напугать вас в достаточной степени, чтобы вы отказались от этой безумной идеи - принимать оплату в bitcoin. Ну тогда у меня для вас есть еще одна порция головной боли на пятую точку.

Начало обзора для разработчиков ЗДЕСЬ


Кошелек, кошелек! Какой кошелек??

Для того, чтобы организовать прием bitcoin на сайте, как не слишком сложно догадаться, нам понадобится кошелек. Причем нам не подходит ни апаратный, вроде Trezor или KeepKey, ни настольный, вроде православного Bitcoin-Qt. Только серверная реализация, только хардкор. В качестве хардкора будет выступать bitcoind - референсный bitcoin-демон от команды bitcoin core.  

Небольшое отступление (или предупреждение, кому как больше нравится): описанное дальше подразумевает, что вы имеете опыт взаимодействия с командной строкой UNIX-подобных операционных систем (Linux, FreeBSD, MacOSX), представляете себе хотя бы отдаленно, что такое bash-скрипты (не цитатник, а оболочка командной строки), имеете опыт установки програмных пакетов хотя бы на уровне Copy-Paste ну и, наверное, владеете каким то языком программирования.


Установка bitcoind демона достаточно полно описана на официальном сайте bitcoin core. Если вам интересен этот процесс, или у вас что то не получается - добро пожаловать в комментарии, если будет достаточное количество желающих я раскрою эту тему подробнее. Вот краткая шпаргалка, как установить bitcoind для одной из самых распространенных серверных операционных систем - Ubuntu Linux:

#добавляем репозиторий:
#!ВАЖНО - установка пакетов требует прав суперпользователя
sudo apt-add-repository ppa:bitcoin/bitcoin
# Вежливо просим систему обновить список известных ей пактетов:
sudo apt-get update
# Ну и наконец магия:
sudo apt-get install bitcoind

После успешного выполнения перечисленных выше команд, на вашем linux-сервере прочно обоснуется тот самый демон bitcoin, который нам нужен для дальнейших манипуляций. Важно помнить, что сама по себе установка еще не дает нам возможности отправлять и получать монетки.

Замуровали демоны!!

Теперь нам надо определиться - в каком режиме мы запустим наш демон. Логично спросить - а какие они, собственно, бывают? А бывают они трех основных типов.

 Первый, это собственно боевой. Если ваш безвременно усопший дядюшка оказался тайным держателем несметного богатства в bitcoin, можете смело стартовать в боевом режиме и все эксперименты ставить с реальными деньгами. 

Мы же, люди попроще, рассмотрим для начала два других режима. Если быть совсем точным, то правильнее говорить о том, с какими сетями будет работать наш сервис. Тот самый боевой режим - это mainnet, то есть основная сеть, по которой ходят вполне настоящие биткоины и со всеми вытекающими проблемами сразу. 

Второй, более щадящий режим для молодых, не заматеревших разработчиков - это testnet - из названия несложно догадаться, что сеть тестовая. Если вам для начала хватило головной боли, то можете на этом и остановиться. Тестовая сеть "почти как настоящая". Вам понадобится соединение с internet, транзакции так же будут подтверждаться майнерами, только время на формирование блока в тестовой сети значительно меньше. Ну и, естественно, тестовые коины не имеют никакого финансового веса. Если поискать в сети - можно найти немалое количество сайтов, предоставляющих тестовые монеты во временное пользование (в сообществе считается хорошим тоном возвращать тестовые монеты после использования). 

Если же вы совсем затворник, или не имеете желания скачивать бессмысленный тестовый blockchain - то для вас есть третий, и самый интересный, и на мой взгляд самый удобный для локальной разработки путь - regtest (Regression Test Mode) - по сути вы создаете свой маленький bitcoin для себя. Конечно, ваши транзакции увидите только вы, зато вы можете любоваться на кругленькую сумму в 100000 BTC на своем кошельке и тратить их направо и налево. По сути же -вам доступны любая скорость прохождения транзакций, любые суммы, и конечно,  поведение программного обеспечения вы сможете наблюдать так же, как и в боевой сети, но совершенно бесплатно и значительно быстрее. 

В случае, если вы решили воспользоваться тестовой сетью testnet, настройка будет мало отличаться от настройки обычной full node. Первое что вам необходимо сделать после установки демона bitcoind перед его запуском - это создать конфигурационный файл. В домашней директории на вашей linux-машине выполняете команду mkdir -p ~/.bitcoin - это то место, где bitcoind будет искать файл конфигурации, и создаете там файл bitcoin.conf содержащий строки:

# разрешаем доступ по JSON-RPC
server=1 
# кроме того нам понадобится пользователь, который будет пересылать команды демону
rpcuser=username
rpcpassword=userpassword
# и указываем рабочую сеть testnet
testnet=1

Если вы используете операционку, отличную от linux, то расположение файла конфигурации может отличатся:

  Windows: %APPDATA%\Bitcoin\

  OSX: $HOME/Library/Application Support/Bitcoin/

  Linux/FreeBSD: $HOME/.bitcoin/

Когда все подготовленно, запускаем демона командой bitcoind -daemon и ждем пару минут. Теперь можно проверить, что у нас получилось. Выполняем команду bitcoin-cli getwalletinfo и смотрим на результат. Должно получится что то похожее:

{
	"result": {
		"walletname": "wallet.dat",
		"walletversion": 159900,
		"balance": 0.00000000,
		"unconfirmed_balance": 0.00000000,
		"immature_balance": 0.00000000,
		"txcount": 0,
		"keypoololdest": 1528398419,
		"keypoolsize": 981,
		"keypoolsize_hd_internal": 1000,
		"unlocked_until": 0,
		"paytxfee": 0.00000000,
		"hdmasterkeyid": "a721caa39233676ccd3dc0509d0b93a6bc55fb52"
	},
	"error": null,
	"id": null
}

Пока не важно, что все это означает. Важно, что результат должен содержать информацию о состоянии вашей новоиспеченной полной ноды. Теперь начинается самое увлекательное - процесс синхронизации с сетью.

 Для основной сети он может занять пару суток, но testnet значительно компактнее. И в зависимости от скорости интернета займет до нескольких часов. Выполняем команду bitcoin-cli getnetworkinfo и изучаем полученный результат. Нас интересует строчка "connections", она должна быть отличной от нуля. Это параметр, который говорит сколько соединений с удаленными нодами есть у вашего bitcoind. Если по какой то причине там красуется гордое "0" - что-то пошло не так. Смотрим в файл .bitcoin/debug.log, и пытаемся разобраться что же именно. В следующей статье мы рассмотрим более подробно как собрать свой персональный биткоин на отдельно взятой машине, то есть как воспользоваться regtest (Regression Test Mode). 


А пока попробуем выполнить что-то мало мальски полезное на получившейся ноде. Сразу возникает вопрос - у нас нет ничего похожего на интерфейс кошелька. Как нам получить адрес, отправить средства посмотреть баланс? 

Выполним команду 


bitcoin-cli getnewaddress


В ответ мы получим что-то подобное: muMKs9cCCfdq5mV7mnffuLLFNqgFR33nNB. Это наш новый адрес в сети testnet. Он отличается от обычного - и это хорошо, потому что никто не сможет случайно отправить реальные монеты на тестовый адрес. Но что нам этот адрес дает? Например, мы можем получить немного тестовых монет на сайтах вроде тех, что перечислены ниже:


https://testnet.coinfaucet.eu/en/

https://kuttler.eu/en/bitcoin/btc/faucet/

http://tpfaucet.appspot.com


Примеры кода, приведенного в статье вы можете посмотреть на github

А вот что с ними делать дальше - мы рассмотрим в следующих статьях.

Читайте также

76342024-02-25

Сканер блоков (Blockchain explorer) своими руками: немного теории

В прошлой статье мы рассмотрели причины, по которым нам может понадобится свой blockexplorer. Замечу, что список этот далеко не полный, но будем считать, что мы определились - нам нужен свой источник данных о транзакциях и их связях с адресами.

Обучение, Bitcoin, Ethereum, Разработчику, Технологии
44712018-07-31

Lity. Новый язык смарт-контрактов

На данный момент в сети Ethereum опубликовано более чем 1700 децентрализованных приложений (DApps), и их число не перестает увеличиваться. И хотя все Dapps полагаются на смарт контракты, надежность самих смарт контрактов стоит под вопросом - киберпреступники заработали уже более миллиарда долларов на их взломах.

Ethereum, Разработчику

Последние статьи из раздела Разработчику

Свежее видео на канале

Выбор редакции

645402020-10-30

Топ 10 крипто кошельков в 2020 году

По мере роста популярности криптовалют растет и спрос на качественные и безопасные криптовалютные кошельки.

Кошельки
568432017-12-10

Bitcoin: пирамида или нет?

С января 2009 года, когда был сгенерирован первый генезиз-блок bitcoin-сети, прошло уже девять лет, но до сих пор всякого рода "эксперты" ломают копья в спорах: являются ли криптовалюты финансовой пирамидой или нет. Быстрый рост доходности bitcoin и прибыли тех, кто раньше стал участником этой системы, пугает схожестью с пирамидами 90-х.

Bitcoin
536012018-04-28

on-chain и off-chain управление: за и против

Чтобы понять важность управления блокчейном и дискуссии вокруг этого вопроса, сначала нужно определить что такое управление блокчейном, его роль и цели. Управление блокчейном в сфере криптовалют состоит из двух пунктов: правил протокола (кода) и экономических стимулов, на которых основана сеть.

Blockchain
418112021-05-08

Какие альткоины принесут своим держателям доход в 2021 году?

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

Альткоины
382302018-05-12

Эволюция человека и денег

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

Это интересно
184982024-02-03

Сканер блоков (Blockchain explorer) своими руками: Зачем он нужен?

При разработке крипто кошелька вы столкнетесь с рядом проблем, и не являются очевидными. Не будем рассматривать сейчас проблемы, связанные генерацией адресов, подписью транзакций и другими вопросами, которые могут прийти в голову в первую очередь.

Обучение, Bitcoin, Ethereum, Технологии