Принимаем оплату в 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

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

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

32372018-06-07

Apple опубликовали новые правила о криптовалютных приложениях

Согласно информации TechCrunch, ряд разработчиков Apple не так давно объединили усилия для создания “Союза разработчиков”. Союз обратился к Apple с просьбой предоставить пользователям Apple Store возможность скачивать бесплатные пробные версии их приложений. Это один из первых случаев, когда независимые iOS разработчики пытаются дать отпор политике Apple Store.

Разработчику
8152018-06-15

Принимаем оплату в bitcoin: Часть Третья, свой testnet. С блэкджеком

В прошлой статье я рассказал как установить bitcoind ( ну как минимум на Ubuntu Linux) и как подключится к testnet. Но testnet - хорошее решение, когда вы проводите тесты готового сайта, уже развернутого на сервере в интернете. А вот для локальной разработки это далеко не самое удобное решение.

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

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

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

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

139232017-12-10

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

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

Bitcoin
106022018-04-28

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

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

Blockchain
70532018-07-28

Грузинская криптокухня. Выбираем блюда

Ни для кого не секрет тот факт, что Грузия является одной из самых лояльных стран постоветского пространства, где не только уютно, но и выгодно вести бизнес. Это стало возможным буквально за последние 10 лет благодаря колоссальным реформаторским усилиям сменявших друг друга руководителей страны, каждый из которых стремился сделать её лучше и богаче. Как именно обстоят дела здесь с криптовалютным бизнесом попытаемся разобраться в нашем сегодняшнем материале.

Право, Майнинг, Регуляторы
56692018-06-24

Поиск серых майнеров в недрах Chrome и Opera

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

Безопасность
33522018-09-12

Три быка, которые могут спасти крипторынок

Несмотря на упадок криптовалютного рынка, долгожданное участие институциональных инвесторов в сделках с цифровыми активами уже не за горами. Такие известные фирмы, как Coinbase, Nasdaq и Bakkt уже вошли в мейнстрим, осталось только подождать, пока это сделает весь рынок цифровых активов.

Мнение
31832018-06-08

Принимаем оплату в bitcoin: Часть первая, теоретическая

Интернет полон статей о том, какое прекрасное будущее готовит нам blockchain, как это "стильно, модно и инновационно". Однако информации, как практически воспользоваться всем этим великолепием, крайне мало. Попробуем частично восполнить этот пробел.

Обучение