Как подключится к Биткоину

Подключиться к ноде для управления кошельком можно через bitcoin-cli:

Со стороны ноды, к которой вы подключаетесь, параметры rpcuser/rpcpassword должны быть заранее объявлены в bitcoin.conf. Применение конфига требует перезапуска ноды.

Имейте ввиду, что:

  • Подключение к ноде Bitcoin по умолчанию разрешено только с 127.0.0.1. Если вы находитесь вне сервера, объявите разрешённые IP для подключения к ноде через параметр `rpcallowip` в bitcoin.conf (поддерживается формат 1.2.3.4/24, он же CIDR), а также в довесок настройте поверх firewall, чтобы превентивно исключить незапланированные подключения к ноде, ограничив их по IP. Публиковать ноду наружу без этих мер — значит создавать риск, что к ноде смогут подключаться посторонние люди.
  • Подключение по RPC происходит открытым текстом. Соседи по сети, ваш провайдер и государство могут перехватить данные, поскольку они передаются в открытом виде. Затем они могут использовать эти параметры для подключения к вашей ноде. Если вы не используете между клиентом и нодой никакого защищённого туннелирования, стоит хотя бы подключаться к ней через SSH port forwarding, пряча тем самым трафик от посторонних глаз.

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

Из документации на сайте bitcoin.org я понял что Bitcoin Node — это удаленный сервер участвующий в Blockchain сети. Так же как я понял у каждой Bitcoin Node могут быть свои блоки и транзакции произведенные с участием этой Bitcoin Node. Так же я знаю что Blockchain это полностью открытая система, в которой я могу получить данные о всех производимых транзакциях. К примеру у меня есть какой-нибудь условный ip сервера, который участвует в Blockchain. Как я могу получить всю информацию о блоках и транзакциях этого узла? В частности какие запросы посылать к этим серверам и как взаимодействовать с ними при помощи WebSocket?

С биткоин нодами нельзя взаимодействовать посредством WebSocket. Для этого существует сетевой протокол биткоин, и о подробностях его работы можете почитать в вики: https://en.bitcoin.it/wiki/Network

Читайте также:  Где можно хранить Биткоин кошелек с поиском пополнения и снятия с него

Если Вам нужна информация от ноды, то Вам самому нужно написать небольшой клиент.

Есть 3 основных клиентов(приложений)

1) полная нода, которая имеет на борту весь блокчейн.

2) SPV нода, которая имеет только заголовки

3) Тонкий кошелек работающий через API какого-нибудь blockchain explorer.

Первый вариант является безопасным и самым сложным(если надумаешь писать клиент). Главный плюс этого варианта — независимость от всех серверов. Ты сам себе сервер.

Второй вариант. Если ты не боишься зависеть от удаленных серверов, то он тебе подходит. Если тебе нужна только информация и осуществление мелких транзакций, то можно воспользоваться им.

Третий вариант самый простой — используй API любого blockchain explorer(так и гугли) Таким образом сможешь получить необходимую информацию.

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

У меня сервер крутится на Ubuntu, соответственно буду рассказывать под нее, разница лишь в установке клиента bitcoind в систему.

Соответственно единственное, что нам нужно, чтоб принимать биткоины, это биткоин клиент на сервере. Называется он bitcoind, это всего-лишь консольный вариант клиента, со всем тем же привычным функционалом.
Работает все это чудо через протокол JSON-RPC, висит под портом 8332. Все, что нам останется после установки, просто наладить работу клиента и Node.js.

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

sudo aptitude install python-software-properties
sudo add-apt-repository ppa:bitcoin/bitcoin
sudo aptitude update
sudo aptitude install bitcoind
mkdir

Дальше мы выполним конфигурацию клиента, создадим daemon, дабы запускать bitcoind в фоновом режиме. Конфигурационный файл клиент нужно поместить в домашней категории,

/.bitcoind, файл сам называется bitcoin.conf. Так что продолжим:

Устанавливаем логи и пароль на месте USERNAME и PASSWORD соответственно. Теперь создадим daemon для работы в фоновом режиме:
sudo nano /etc/init/bitcoind.conf

start on filesystem
stop on runlevel [!2345]
oom never
expect daemon
respawn
respawn limit 10 60 # 10 times in 60 seconds

Читайте также:  Как войти в Биткоин кошелек в мой кошелек

script
user=USER
home=/home/$user
cmd=DIR
p ># Don’t change anything below here unless you know what you’re doing
[[ -e $pidfile &&! -d «/proc/$(cat $pidfile)» ]] && rm $pidfile
[[ -e $p >exec start-stop-daemon —start -c $user —chdir $home —pidfile $pidfile —startas $cmd -b -m
end script

Авторство скрипта не за мной. USER нужно заменить на имя пользователя, под которым будем запускаться bitcoind и DIRнужно заменить расположением самого бинарика, он у меня находится по следующему пути — /usr/bin/bitcoind. У вас должен находится так же, если следовать этому туториалу.

Выполнял перезагрузку конфигурации daemon:
sudo initctl reload-configuration

Выполняем запуск:
sudo start bitcoind

У меня заработало, надеюсь, у вас тоже.

Теперь мы можем работать с биткоином через консоль, список команд клиента можно получить так:
sudo bitcoind help

Выпадет обширный список, к каждой команде можно найти описание, например, здесь. Нас интересуют лишь некоторые команды:
getnewaddress (account) — для создания нового адреса и аккаунта.
getbalance (account) — для получения баланса.
listtransactions (account) (count) (from) — для получения списка транзакций.

В принципе это и все, что нам сейчас понадобится. Я буду делать так, нажимаем на кнопочку, получаем адрес, по адресу можем пройти в свой кошелек.

Я набросал немного верстки на скорую руку, выглядит не очень, но статья эта не о верстке вовсе. Все это выглядит до внедрения функционала так.

И сам кошелек:

А дальше мы подружим сайт и биткоин клиент. Я не буду рассказывать о том, как писал ajax методы и тому подобное, это все и так знают.

Чтоб работать с bitcoind из под node.js и не писать собственный врапер уже предусмотрено несколько библиотек, я использую просто модуль bitcoin, который можно найти здесь. Так вот, приступим.

Я уже установил модуль bitcoin командой:
npm install bitcoin

Теперь осталось создать подключение в коде и написать первый функционал. Работать с модулем просто, вот пример инициализации клиента:
var client = new bitcoin.Client(< host: 'localhost', port: 8332, user: 'user', pass: 'pass' >);

Для создания нового аккаунта достаточно запросить новый адрес у нашего bitcoind, через модуль bitcoin это делается так:
app.post(‘/newwallet’, function (req, res) < var , id, function (err, addr) < if (err) < console.log(err); return res.json(< success : false >); > else < return res.json(< success : true, addr : addr >); > >); >);

Читайте также:  Как установить Биткоин core на флешку

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

Теперь займемся личным кабинетом. Давайте попробуем выводить баланс, заодно и проверим существует ли такой кошелек при переходе по нашему url. Баланс мы узнать можем только по аккаунту, либо же получить общий баланс кошелька, это нам не подходит, потому сперва мы получим аккаунт по адресу, а затем получим баланс, ну и выведем все это на экран.

Для получения аккаунта используем метод getaccount (address), который вернет нам аккаунт по адресу:
client.cmd(‘getaccount’, wallet, function (err, acc) < . >);

Ну и теперь мы можем получить баланс:
client.cmd(‘getbalance’, acc, function (err, balance) < . >);

Перед получение баланса я обрабатываю и перекидываю на главную, если вместо существующего кошелька ввели какой-нибудь крези код:
if (err || !acc) < if (err) < console.log(err); >return res.redirect(‘/’); >

Теперь займемся транзакциями. Все точно так же, только метод меняется на listtransactions, стоит заметить, что данный метод вернет лишь 10 последних транзакций, для большего числа, просто укажите 2-ым аргументом количество.
client.cmd(‘listtransactions’, acc, function (err, transactions) < . >);

Ну и осталось самое интересное, вывод денег 🙂
Стоит сказать, чтоб перевести деньги, есть два варианта.
— move (fromaccount) (toaccount) (amount) — переводит деньги между вашими аккаунтами.
— sendfrom (fromaccount) (tobitcoinaddress) (amount) — переводит с вашего аккаунта на указанный адрес.

Мы будем использовать sendfrom, дабы получить уже полноценный онлайн кошелек. Собственно код отправки выглядит так:
client.cmd(‘sendfrom’, acc, addr, amount, function (err, tid) <… >);

В ответ мы получим ID транзакции, если все прошло хорошо. Я обычно на всякий случай проверяю, есть ли возможность сделать перевод (просто сравниваю балансы) и т.п., что и вам советую.

Читайте далее:

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Adblock detector