Можливо мені не вдалося налякати вас достатньою мірою, щоб ви відмовилися від цієї шаленої ідеї - приймати оплату в bitcoin. Ну тоді я маю для вас ще одну порцію головного болю на п'яту точку.
Начало огляду для розробників ЗДЕСЬ
Кошелек, кошелек! Який гаманець??
Щоб організувати прийом біткоїнів на сайті, як не складно здогадатися, нам знадобиться гаманець. Moreover, neither a hardware one, like Trezor or KeepKey, nor a desktop one, like the Orthodox Bitcoin-Qt, suits us. Тільки серверна реалізація, тільки хардкор. Хардкором буде біткойн, еталонний біткойн-демон від основної команди біткойн.
Невеликий відступ (або застереження, як вам більше подобається): описане нижче передбачає, що ви маєте досвід взаємодії з командним рядком UNIX-подібних операційних систем (Linux, FreeBSD, MacOSX), маєте принаймні смутне уявлення про те, що таке сценарії bash (не цитатник, а оболонка командного рядка), маєте досвід інсталяції програмних пакетів принаймні на рівні Copy-Paste та, ймовірно, володієте певною мовою програмування.
Встановлення демона bitcoind досить повно описано на офіційному сайті bitcoin core. Якщо вам цікавий цей процес, або у вас щось не виходить, ласкаво просимо в коментарі, якщо буде достатньо бажаючих, розповім цю тему докладніше. Ось коротка шпаргалка про те, як встановити біткойн для однієї з найпоширеніших серверних операційних систем – Ubuntu Linux:
#додати репозиторій:
#!ВАЖЛИВО - встановлення пакетів вимагає прав суперкористувача
sudo apt-add-repository ppa: bitcoin/bitcoin
# Ми ввічливо просимо систему оновити список пакетів, які вона знає:
sudo apt-get update
# І нарешті магія:
sudo apt-get install bitcoin
Після успішного виконання наведених вище команд демон біткойнів, який нам потрібен для подальших маніпуляцій, буде міцно встановлено на вашому сервері Linux. Важливо пам’ятати, що сама установка ще не дає нам можливості надсилати та отримувати монети.
Демони замуровані!!
Тепер нам потрібно вирішити, в якому режимі ми будемо запускати нашого демона. Логічно запитати - які саме вони? І вони бувають трьох основних типів.
Перший фактично бойовий. Якщо ваш передчасно померлий дядько виявився таємним власником незліченних багатств в біткойнах, можете сміливо починати в бойовому режимі і проводити всі експерименти з реальними грошима..
Ми ж, люди простіші, розглянемо для початку два інші режими. Якщо бути зовсім точним, то правильніше говорити про те, з якими мережами буде працювати наш сервіс. Той самий бойовий режим - це mainnet, тобто основна мережа, якою ходять цілком справжні біткоїни і з усіма проблемами відразу.
Другий, більш щадний режим для молодих розробників - це testnet - з назви нескладно здогадатися, що мережа тестова. Якщо вам спершу вистачило головного болю, то можете на цьому зупинитися. Тестова мережа "майже справжня". Вам знадобиться з'єднання з internet, транзакції так само будуть підтверджуватись майнерами, тільки час на формування блоку в тестовій мережі значно менше. Ну і, звичайно, тестові коїни не мають жодної фінансової ваги. Якщо пошукати в мережі - можна знайти чимало сайтів, що надають тестові монети в тимчасове користування (у співтоваристві вважається хорошим тоном повертати тестові монети після використання).
Якщо ж ви зовсім затворник, або не маєте бажання завантажувати безглуздий тестовий blockchain - то для вас є третій, і найцікавіший, і на мій погляд найзручніший для локальної розробки шлях - regtest (Regression Test Mode) - для себе сути для себе. Звичайно, ваші транзакції побачите тільки ви, зате ви можете милуватися на кругленьку суму в 100 000 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 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
А ось що з ними робити далі - ми розглянемо в наступних статтях.
Читайте також
Торговий робот своїми руками: більше деталей, більше нюансів
У першій частині ми розібрали базову ідею: торговий радник — це не «робот, який торгує замість вас», а система, яка отримує ринкові дані, формує сигнал (і пояснення) і показує результат людині.
Приймаємо оплату в bitcoin: Частина четверта, ближче до діла!
У попередніх статтях ми розглянули загальні принципи організації платіжного шлюзу bitcoin, розібралися з інструментами та необхідним програмним забезпеченням і навіть зібрали свою кишенькову bitcoin-мережу.
