Pull to refresh

Comments 21

В биткоин клиенте нету давно аккаунтов, но архаизмы остались. Весь инет рекомендует оперировать raw транзакциями:


  1. генерим аддресс для юзера getrawchangeaddress (SO discussion)
  2. listunspent 6 (например транзакции с 6 конфирмами), в этом архиве отбираем все транзакции, которые пришли на сгенеренные адреса, и все.

Всего 2 команды :)


Отправка биткоинов (если дойдет до этого) делается через rawtransactions: createrawtransaction/signrawtransaction/sendrawtransaction, в первой указываются архивом транзакции на валете, которые надо использовать (через айди и vout). Следом там указыватся архив получателей. Комиссия — это недоданные биткоины. То бишь если там в сумме 0.9, а отправлено юзерам 0.8, то 0.1 уйдет как miner fee.


curl --data-binary

обычная тоже проходит: curl -u login:passwd -X POST -H "Content-Type: application/json" --data 'data_here' http://ip:port


Заголовок спойлера

у меня своя либа для нескольких валлетов (btc/eth/xmr) и 3 трейд сайтов. Самый кривой апи — это у ETH.

Да, действительно, на аккаунты лучше не опираться, как оказалось. Если кому-то интересно — то вот issue на github с доп. информацией.

А вот raw транзакции показались излишне замороченными для быстрого старта. Сам с ними много не работал, но, как понимаю, это может сократить комиссию, если есть необходимость отправки пачкой платежи на несколько адресов?

А по curl — я вообще обычно для краткости пишу -d 'data_here' ).

А можно в личку скинуть линк на либу? Или она проприетарная?
А вот raw транзакции показались излишне замороченными для быстрого старта. Сам с ними много не работал, но, как понимаю, это может сократить комиссию, если есть необходимость отправки пачкой платежи на несколько адресов?

Все платежи надо делать через них, иначе логику (выбор транзакций для создания новой) контролирует сам клиент (bitcoin core client). Комиссия — как я писал выше, это просто недоздача. Через core клиент получаем размер комиссию через estimatesmartfee 2, что даст стоимость для 1кб данных чтобы максимум через через 2 блока оказаться в blockchain. Следом расчитать размер комиссии по формуле IN146+OUT34+11 bytes, где IN — колво входых адресов, а OUT — выходных. Вот по этой формуле расчитывается комиссия, чтобы за 7-8 минут получить первый конфирм. Далее — многие используют усредненные комиссии, там 30 минут — час, когда несрочно.


Транзакция, сделанная руками (тестнет, там комиссия от балды, но обычно 0.01): https://live.blockcypher.com/btc-testnet/tx/ffa1b85c05f52205d432f290680b2ccb09c93d5049186cdcfbc33953deb224c2/


{"jsonrpc":"2.0","id":"23767114995403","method":"createrawtransaction","params":[[{"txid":"9f0ff312df1c879594c89f5c25c634ef11e95a61591daf295e7b931ac32b12ec","vout":0}],{"n3wm3yNqXURGzAHHjEMUzrtHtH2KKVgmLx":0.08}]} — 0.01 ушло на комиссию сети.


затем вывод подписывается через signrawtransaction и ее вывод отправляется через sendrawtransaction.


Кстати, про комиссию, если например надо отправить 3 BTC, комиссия 0.05BTC, и на входе мы имеем 5 BTC, то надо сделать raw и отправить 3 получателю, 1.95 себе на новый адресс. Это, например, биткоин клиент генерит сам (когда на автомате посылает). Так же в случае с raw можно делать транзакции от транзакций с 0 уровнем подтверждения, то бишь там пришли бабки, и надо с ним сделать неспешных платежей. То можно спокойно генерить новые tx от tx, которые были отправлены недавно.


А можно в личку скинуть линк на либу? Или она проприетарная?

Не могу расшарить, это ядро проекта, с пулом и прочими пряниками. Кстати пул очень хорошая вещь. И через raw надо группировать платежи юзерам. Это уменьшает комиссию им + можно очень много плюшек вводить (как создана логика пула). Даже далеко ходить не надо — просто группировать все на 1 адрес это уже пул. И потраченная комиссия потом просто взымается с юзеров. А если биткоины юзеров "простаивают", то они и так уже в системе. Но это к теме статьи не относится :)

Вот по этой формуле расчитывается комиссия, чтобы за 7-8 минут получить первый конфирм

Это довольно сложно, если учесть, что среднее время генерации блока 10 минут :)

А что у вас за проект, если не секрет?

Если кратко: там онлайн крипто кошельки, обмен через биржи, банки, пластик, трейдплатформа, плюшки от госва.
Это в порядке роста. Очень интересно девелопить, сейчас в самом начале :)


Мое личное мнение — крипта, это воздух. Её стоимость обусловливается востребованностью и ограниченностью в гос-вах. В ней есть потенциал только чтобы делать на ней деньги, предоставляя сервисы тем, кто в нее верит или так же хочет делать деньги.
Сам я ее не использую, ничего в ней не храню и не инвестирую.

Да и либ в сети полно, как нормальных, так и не очень.
Для узкоспециализорованных проектов надо как правио 5-7 вызовов реализовать из всего перечня. Далее — выходной формат унифицируется как возможно. Хотя для разных вылют разная точность.

Для приема платежей можно запускать bitcoind с опцией -prune=551. В этом случае он будет занимать около 4Gb. И это все равно будет полная нода — с полной валидацией всех блоков локально.
Спасибо за способ, действительно может сильно снизить требования к серверу!

-prune=колво_мегабайт
c 8192 он занимает 9.9


Так что 4 с 551 мегабайтами — что-то там не так.

sudo du -h
77M ./blocks/index
516M ./blocks
424K ./database
2.9G ./chainstate
3.4G .

551M — это размер под блоки.
2.9G — chainstate — база непотраченных выходов (балансов).
Всего — 3.4G

на тест лаптопе


nikitas@pentagon:~/.bitcoin$ du -h
72M ./blocks/index
8.0G    ./blocks
3.4G    ./chainstate
259M    ./testnet3/blocks/index
8.3G    ./testnet3/blocks
954M    ./testnet3/chainstate
9.2G    ./testnet3
21G .

В любом случае 500 метров под блоки какая-то экономия на спичках.

Еще под кошелек (у меня его нет) мегабайт 500.
Для простого приёма оплаты по-моему проще подключить сторонний платёжный сервис типа BitPay. Некоторые из них позволяют принимать платежи в сотнях криптовалют, что самому точно не имеет смысла делать.
Согласен, если объём платежей планируется небольшой и маржа позволяет, то сторонний сервис — самый лучший вариант. Но, например, для криптовалютной биржи или обменника такой вариант не самый лучший
вы подключали bitpay к битрикс?
Вообще для приёма платежей не нужно хранить секретные ключи на сервере — достаточно публичных. BIP-32 позволяет генерировать индивидуальные адреса для приёма платежей хоть под каждую транзакцию, имея только публичный (расширенный публичный, если точнее) ключ. Тогда можно и отдельный сервер не заводить для битков. Остаётся риск подмены ключа злоумышленником, но от этого и отдельный сервер не поможет.
Да, действительно, тоже хороший вариант, правда, я в своё время не смог найти быстро простого и удобного способа использовать BIP-32, плюс была необходимость в совершении автоматизированных платежей.
error: Could not locate RPC credentials. No authentication cookie could be found, and RPC password is not set. See -rpcpassword and -stdinrpcpass. Configuration file: (/root/.bitcoin/bitcoin.conf)
— появляется на шаге проверки: curl --data-binary…
попробовал через: bitcoin-cli getwalletinfo
— нода ищет файл настоек по умолчанию. Тогда 2 вопроса: зачем и как перенаправить ноду в /etc/bitcoin/bitcoin.conf — ?
Запускаете через сервис systemd? Если руками — то надо указать, что конфиг лежит в /etc/bitcoin/bitcoin.conf либо просто положить его в /root/.bitcoin/bitcoin.conf, как просит кошелек (менее безопасно)
Здравствуйте!
Это еще актуально? Кто-то в реальности подключал и использует прием крипто-платежей в битрикс магазине?

за последнее время появилось множество криптопроцессинговых сервисов, позволяющих быстро провести интеграцию по API или с помощью готовых модулей интеграции с популярными CMS преимущественно зарубежными по типу Opencart, Woocommerce и др. С точки зрения бизнеса не особо вижу смысла делать собственный модуль оплаты криптой, если есть готовые решения с широким функционалом. Если у выбранного сервиса нет готовой интеграции под Битрикс, ее можно недорого заказать, предоставив разработчику API сервиса или обратившись с запросом напрямую в сервис

Sign up to leave a comment.

Articles