Bitcoin API и PHP – Базовое использование


Содержание

Биткойн api не зависит от работающего демон bitcoin?

3 Cyclone [2011-08-06 02:17:00]

Я пытаюсь получить веб-сайт, ориентированный на биткойны, и мне нужно иметь возможность выполнять следующие действия без демонстрации биткойнов на любом сервере из-за ограничений моего хоста:

  • Создайте новый биткойн-адрес ( getnewaddress($account) )
  • Получить монеты по этому адресу; определить, сколько было получено ( getreceivedbyaccount($account, $minconf=1) )
  • Отправьте монеты на адрес ( sendfrom($fromaccount, $tobitcoinaddress, $amount, $minconf=1, $comment=»», $comment-to=»») )

Это все функции, которые существуют в существующем json-rpc php-клиенте, но все они зависят от работающего демон bitcoin на сервере.

Я тоже читал материал «ленивый апи», но я бы предпочел не зависеть от другой службы, чтобы получить данные блока или отправить биткойны.

tl; dr: Мне нужна версия bitcoin php api, которая не нуждается в запуске демона, с минимальным минимумом функции, описанные выше.

api php json-rpc bitcoin

6 ответов

1 diyism [2013-06-21 09:17:00]

Если вы хотите генерировать только биткойн-адрес и закрытый ключ, попробуйте:

И, возможно, мы сможем построить script только для того, чтобы найти 20 узлов биткойна для трансляции нашей транзакции.

из bitseed.xf2.org или жестко закодированный список сверстников в исходном коде chainparams.cpp: https://en.bitcoin.it/wiki/Satoshi_Client_Node_Discovery

1 cdecker [2013-01-05 16:17:00]

TL; DR;: не запускать какой-то клиент Bitcoin и не доверять третьей стороне, будет невозможно.

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

Насколько я вижу, возможным минимальным решением было бы использование третьей стороны, например http://blockchain.info, чтобы отслеживать балансы (прочитайте потраченные outputs , которые вы можете требовать при отправке транзакции) и используйте службу уведомлений, чтобы рассказать вам о входящих транзакциях (некоторые из них перечислены здесь как альтернативы https://en.bitcoin.it/wiki/BitcoinNotify).

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

Теперь для отправляющей части это будет намного сложнее, поскольку это включает в себя:

  • сбор результатов;
  • утверждая их, предоставляя соответствующие подписи;
  • создание новых выходов на нужные адреса;
  • объединение всего в транзакцию и сериализация его в спецификации протокола P2P;
  • подключение к сети P2P и отправка транзакции сверстникам.

Итак, как вы можете видеть, это быстро усложняется, когда вы пытаетесь отправить транзакции. Если отправка транзакций не является абсолютно необходимой, я бы предложил просто предоставить серверу список адресов, к которым он может получать транзакции BitAddress позволяет вам необходимо создать пары с частным ключом/адресом для этой цели.

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

Как вы ищите: создавать, отправлять, получать — это означает, что вам понадобится служба, которая уже размещает это:

Coinkite может быть хорошим вариантом, так как большинство операций биткойнов можно выполнить с помощью API:

Отправить и запросить биткойн по электронной почте, sms или bitcoin-адресу

Создание открытых ключей (HD)

Проверка остатков и получение уведомлений

Безопасное хранение биткойна в аккаунтах HSM или Multi-signature

Создайте ваучеры и бумажные кошельки (с опубликованным закрытым ключом)

Создайте адреса оплаты P2SH, выйдите из M-of-N multisig.

API для разработчиков биткоин

Используйте API-интерфейс Blockchain бесплатно, чтобы помочь вам начать создавать приложения для биткойнов.

Обработка платежа

Невероятно простой способ для веб-сайтов получать платежи в биткоинах. Данная услуга абсолютно бесплатна и безопасна. Идеально подходит для бизнеса или личного пользования.

Блок-кошелек

Служба кошелька с блочной связью

Наши API для отправки и получения оплаты от кошельков Blockchain.

Python


.NET (C#)

Добавить следующий репозиторий в вашpom.xml:

Добавить следующую зависимость в вашpom.xml:

Скачайте или выполните клонирование репозитория. Скопируйте папку lib/ в ваш проект и добавьте:

Данные транзакций и блоков

API данных Blockchain

Запросить данные JSON по блокам и транзакциям. Почти все данные, которые вы видите на этом веб-сайте, доступны в формате JSON.

Простое API для запросов

Простое API в текстовом формате для запроса данных Blockchain.

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

Время работы проверяется каждую минуту и ​​обновляется каждый час.

Биткоин: введение для разработчиков

Одним из основных преимуществ Биткоина является то, как просто, легко и удобно работать с ним, с точки зрения разработчика. Биткоин не имеет ни сторонних зависимостей, ни проприетарных API, ни быстро меняющихся интерфейсов. Каков бы ни был ваш любимый язык программирования, есть неплохая вероятность того, что уже существует простая биткоин-библиотека, которая позволит вам начать отправку и получение биткоинов в течение нескольких часов. Цель этой статьи – представить некоторые из этих библиотек, и показать основы работы с биткоин-адресами и транзакциями на любом языке.

Адреса, Ключи, Транзакции, ого!

Биткоин-протокол можно разделить на три логические части: управление адресами и ключами, создание транзакций и добавление транзакций в блоки (майнинг). Аспекты майнинга для начинающего разработчика неактуальны, и здесь не освещаются. Это отдельная специализированная область, которая быстро профессионализируется, а если вы заинтересованы в любительском майнинге – просто купите стандартное оборудование биткоин-шахтера. А вот адреса, ключи и транзакции – это то, с чем приходится иметь дело каждому, об этом-то мы и поговорим.

В плане управления биткоин-ключами, есть три типа объектов, с которыми вам придется иметь дело: секретные ключи, публичные ключи и адреса. Возможно, вы также видели термины «закрытый ключ» и » открытый ключ» в контексте криптографии с открытым ключом, так вот это то же самое. Биткоин использует не старые криптографические алгоритмы на основе разложения на множители (как RSA), а более новый вид криптографии, который называется эллиптическая криптография, поэтому биткоин-ключи немного отличается от, скажем, PGP-ключей. Секретный ключ выглядит следующим образом:

А соответствующий ему публичный:

04d8f08938e78447b2b1a629c503d5e17483b0d157 5
1a9e8f83c8460e 6ec32fd68d0b4068e83c012f54df9
95e52ed8bae38056a8d922f96872 00ae83e5a6728dff

Секретный ключ может быть преобразован в публичный ключ, а вот публичный ключ не может быть преобразован в секретный. Биткоин-адрес на самом деле не публичный ключ, а его хэш. Так, биткоин-адрес, соответствующий приведенному выше публичному ключу будет: 172YRdGzPqyXm9rm1EWKwPXTRsmcApoPQ6

Как вы могли бы заметить, биткоин-адрес представлен не в шестнадцатеричном виде, как секретный и публичный ключи. Это потому, что для него Биткоин использует «сжатый» формат представления, известный как base58check. Base58 говорит о том, что в нем используются 58 различных букв и цифр (ноль, О, l и I опущены, так как их слишком легко перепутать друг с другом). Base58 – это число с основанием 58 — аналогично привычному для нас двоичному (основание 2), десятичному (основание 10) или шестнадцатеричному (основание 16) представлению. Например, десятичное число 31337 в двоичном виде будет ’111101001101001′, в шестнадцатеричном — ’7A69′, а в основании 58 это просто ‘AKJ’. Ну а суффикс check в описании формата означает, что к перед переводом числа в base58 к нему еще добавляется четырехбайтовая «чек-сумма». Все биткоин-библиотеки (о которых мы поговорим чуть позже) делают перевод в base58check автоматически, так что вам не придется это специально программировать.

Ну а теперь, поговорим о транзакциях.

Первое, что необходимо иметь в виду, это то, что в биткоине нет понятия «счетов» или «балансов», как в обычной бухгалтерии. Все средства хранятся в объектах, известных как «выходы транзакции». Каждая транзакция имеет один или несколько «входов», каждый из которых тратит неизрасходованный «выход» более ранней транзакции («UTXO=unspent transaction output»). Общее количество биткоинов во всех входах суммируется, и транзакция может затем распределить эту сумму на любое количество своих собственных «выходов». Вот как типичная транзакция выглядит в json формате:

А если это затем сериализовать, мы получим:

0100000001aa02ce4965b5a83426d39990f571339c97ca54978ed48f6ad4ee45 160fa99b310000000000ffffffff0230750000000000001976a914a41d15ae65 7ad3bfd0846771a34d7584c37d54a288ac204e0000000000001976a914c4c5d7 91fcb4654a1ef5e03fe0ad3d9c598f982788ac00000000

Параметр каждого выхода «script» это чаще всего просто способ представления адреса получателя. Преобразовав два выходных скрипта указанной транзакции в адреса, мы получим « 1FxkfJQLJTXpW6QmxGT6oF43ZH959ns8Cq » и « 1JwSSubhmg6iPtRjtyqhUYYH7bZg3Lfy1T «, соответственно. Единственный вход в этой транзакции является ссылкой на выход предыдущей транзакции (хэш-код транзакции и индекс выхода в ней). Посмотрев на blockchain.info, мы видим, что выход 0 транзакции с хэш-кодом 319ba90f… имеет 1354164 сатоши (наименьшая стомиллионная доля биткоина), которые можно потратить. Два выхода транзакции тратят в сумме 1344164. Куда же деваются еще 10000 сатоши? Они оставлены в качестве оплаты за транзакцию майнеру, который включит эту транзакцию в блок.

Как вы уже догадались, транзакция может потратить только весь вход полностью, а не частично. Чтобы обойти эту проблему, вводится понятие «сдачи» — один из выходов отправляется получателю, а вот второй – возвращает «сдачу» с потраченного входа на свой собственный адрес. В нашем примере транзакции, первый выход – это 0.01 BTC оплаты, а второй выход — сдача. После создания транзакции, вам нужно подписать каждый вход секретным ключом, который соответствует этому адресу. Этот процесс для эллиптической криптографии не так уж и тривиален – но библиотеки-то нам на что? Они все за нас сделают, только дай правильный секретный ключ. Вот как эта наша транзакция выглядит, когда ее подписали:

0100000001aa02ce4965b5a83426d39990f571339c97ca54978ed48f6ad4ee45 160fa99b31000000008b48304502203bcabb367ca84b2af394597bff4a6169fa 55b156708557256d2c584f1bd54e1502210086fdf257e58dbb5e1f3b4686f438 5e86ea89e677a6c90a3c87ce276d88ad2b31014104e6eb4c73192bcc7b63f7e3 c05ed52c0d98abac6f6aa0876e2e57eeda6b60fe03098cb63633d08077b14cc3 0efe9bc5c9866ebc1297c03399e27381539025f887ffffffff0240420f000000 00001976a914a41d15ae657ad3bfd0846771a34d7584c37d54a288ac64400500 000000001976a914c4c5d791fcb4654a1ef5e03fe0ad3d9c598f982788ac0000

Теперь, наконец, мы можем послать подготовленную транзакцию в сеть, где ее подхватят и включат в блокчейн майнеры. Самый лучший способ сделать это программно – через интерфейс на blockchain.info/pushtx. И это, в общем-то, все – конец теории, вы теперь эксперт в биткоин-транзакциях! Ну, во всяком случае, это вполне рабочий минимум знаний, пока мы не стали рассуждать о платежных скриптах, схемах с арбитражем или с залогом и прочих продвинутых прелестях биткоин-транзакций. Но все это лучше оставить для другой статьи.

Bitcoind

Bitcoind является «эталонным клиентом», созданным основной командой биткоин-разработчиков. Это полноценный биткоин-узел, который загружает всю историю транзакций (blockchain) и обрабатывает транзакции. Bitcoind несколько ограничен по функциональности, например, он не может выдать вам историю транзакций по адресу, который вы не импортировали заранее. Тем не менее, он предоставляет достаточно мощный интерфейс для программиста. После загрузки Bitcoind и его инсталляции/сборки, первым шагом является создание файла конфигурации в папке Биткоина (

/.bitcoin – ведь вы на Линуксе, верно?) со следующим содержанием:

Понятно, стоит заменить user/pass на собственное имя пользователя и пароль. Как только вы сделаете это, перейдите в каталог, содержащий исполняемый файл (/bin если вы инсталлировали готовую сборку, или куда вы там его сами собрали) и запустите демон:

Теперь, у вас есть два пути взаимодействия с демоном bitcoind, чтобы заставить его выполнять ваши команды. Первый способ попроще: в командной строке, вводите «bitcoind» с указанием имени команды и аргументов. Например:

Второй способ использует JSON-RPC. Это общий интерфейс, который позволяет подключаться к bitcoind и выполнять команды из любого языка – а возможно, даже с другого компьютера. В Wiki Биткоина есть страница с подробным описанием некоторых способов сделать JSON-RPC-вызов в различных языках программирования. Для краткости я приведу только два.

А вот так это можно сделать в командной строке с помощью curl:

Есть два альтернативных инструментов командной строки для работы с биткоин-транзакциями: pyBitcointools и SX. SX был создан Амиром Тааки, pyBitcointools написал Виталик Бутерин. Синтаксис очень похож, хотя есть и отличия. Установка SX является относительно простым делом — все, что вам нужно сделать, это загрузить скрипт install-sx.sh, установить пару библиотек, и запустить этот скрипт. В Ubuntu, скажем, последовательность команд выглядит следующим образом:

После установки SX, вы с ним можете много чего сделать. Скажем, если вы просто создаете платформу для обработки платежей, вам достаточно загрузить историю по какому-то адресу и, возможно, посмотреть подробно его транзакции:

> sx history 114tTpMrJHJpNvkPZmz8KVcJoQjD5Utosd
Address: 114tTpMrJHJpNvkPZmz8KVcJoQjD5Utosd
output: eb84dd62287a1d85e3f31b0de869534a8f800fad559e36f779a45470aa4e8976:0
output_height: 277978
value: 100000
spend: 3216bc4b8294532cddab1ae2a95a336ee841be02e6246c1ad9cf1e7db788d10e:0
spend_height: 277979

Address: 114tTpMrJHJpNvkPZmz8KVcJoQjD5Utosd
output: 5a45c86c5aff8200db4c7f8a91b9a3e51932510cbeb2dc173fc8611bee5aeaaf:1
output_height: 278076
value: 70000
spend: 4817f863ace4337be7ea95476b2c73723fb83fbe0e1a6236fbf30f2a8aa14dee:0 spend_height: 278076


> sx fetch-transaction 516f0bfe2ed3703112434f645fdc7d805bba51c94c9d8f88b666f1c832eb423c

010000000142f2e85e078a214d5c61b58276da5cec01311e026355c570b650c2e66558
5011010000008a47304402203aa40adefd0dc4a3f960b230a9e1b284d78a4b4dec9119
368fdeb006af3b6c7b022071165df64ea4502003d8b6e9c46c28b5c5c748226737b4fe1
ee8fc4269b50ee5014104a70f7c8b0a835f549f061b725bd3e06744963a07cb2f76097b
afe040f939d6e6d23c6cc89e5b50aa944d26b7d1c8a1f3b8b4e6f7c2f54cf35fb46b0e4b94
42e1ffffffff02a0860100000000001976a914ba55b9859c7356c5e5549c8a30c463e3db6
4e84488ac80054800000000001976a9145a35a4558b8a0140f4a73aaac0be891b99e37
90e88ac00000000

Если вы хотите вычислить баланс адреса, вы должны получить всю его историю (ключ –j даст вам результат в легко разбираемом JSON -формате), отфильтровать те входы, которые уже были потрачены, и суммировать значения остальных. Это даст вам общее количество сатоши на данном адресе, которые можно потратить (напоминаю, 100 миллионов сатоши = 1 BTC). Если же вы хотите подробно разобрать транзакцию, скопируйте ее в файл и запустите:

Вы также можете работать с секретными ключами и адресами:

Ну, и можно совершать транзакции. Здесь мы используем выход 819171fa2eaa33fc684c800ae2ce34cff8400d4d966e995c6a2f0e970b6f703d:0 чтобы отправить 90000 сатоши на адрес 18qk7SqRHuS4Kf3f6dmsvqqv7iw1xy77Z6:

Можно также проверить правильность транзакции:

Ошибка имеет смысл, поскольку выходы, которые я здесь использовал, были уже потрачены. По существу, SX позволяет вам быстро сделать кастомный биткоин-клиент: вы можете выбирать непотраченные выходы по вашим адресам и вручную собирать транзакции. Предупреждение: не работайте сразу с крупными суммами – ведь это же живые деньги! Пока вы не разобрались в создании транзакций основательно, запросто можно случайно опустить ноль в числе на выходе транзакции. Это низкоуровневая система, она не отловит вашу ошибку, и в итоге вы заплатите комиссию в 90% от транзакции, вовсе того не желая. Ну, или потренируйтесь на testnete, для начала.

PyBitcointools

PyBitcointools – это «два в одном»: Python-библиотека, которая позволяет манипулировать биткоин-адресами, ключами и транзакциями и инструмент командной строки, похожий на sx. Для установки, скачайте pyBitcointools здесь github.com/vbuterin/pybitcointools, перейдите в его каталог, и запустите:
> sudo python setup.py install

Далее, чтобы импортировать все команды pyBitcointools, откройте консоль Python и введите:

Начнем с управления ключами:

Но, как упоминалось выше, pyBitcointools также включает pybtctool, подобный SX инструмент командной строки. Для использования pybtctool, выполните:

Теперь, история и выборка транзакций:

Обратите внимание, что pybtctool имеет опцию –s, которую можно использовать создания цепочки операций:

Ну и, конечно же, вы можете совершать транзакции:

Цукерберг рекомендует:  Делаем плавающий пузырек со значением для элемента range

Затем вы можете послать транзакцию в сеть с помощью pushtx или eligius_pushtx чтобы послать прямиком на этот пул. Команда eligius_pushtx полезна для «нестандартных» транзакций которые обычные биткоин-ноды отвергают, но пул Eligius относится к ним лояльно. Например, транзакции с несколькими подписями или с несколькими сторонами транзакции будут приняты здесь, но мало где еще.

Библиотеки

PyBitcointools и SX не единственные доступные инструменты, биткоин-библиотеки есть почти для каждого языка. Вот лишь некоторые из них:

Занимайтесь биткоин-программированием в свое удовольствие!

Как принимать к оплате биткоин используя API Blockchain

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

По аналогии с известными методами оплаты, такими как PayPal, WebMoney, VISA и Mastercard, Klarna и прочие, есть разные методы приема оплаты в биткоинах на своем сайте. Один из удобнейших методов в случае с биткоином — использование API биржи Blockchain. Вам не нужно привязываться к конкретному языку или SDK, не нужно даже там регистрироваться как в обычных мерчантах (которые, к тому же, становятся все привередливее).

Все что вам необходимо: иметь кошелек для приема биткоинов (или несколько, если будет угодно) и некоторое время на подключение довольно простых API в вашу систему. К тому же, клиент увидит не ваш родной кошелек, а временный кошелек биржи (что тоже приятно, не так ли?).

Прежде чем говорить непосредственно о коде (я буду в примерах использовать PHP, однако все это легко реализуется на JAVA, Python и т.д.), следует прояснить сам механизм приема оплат.

Тут все довольно просто и укладывается в следующую последовательность:

1. Вы запрашиваете у Blockchain временный кошелек, отправив ряд данных.
2. Blockchain возвращает свой временный кошелек для приема оплат вам.
3. Вы показываете этот кошелек клиенту, а также небольшую инструкцию что с этим делать.
4. Клиент оплачивает (переводит средства на кошелек).
5. Дальше следует подождать валидации платежа в системе Bitcoin.
6. В случае успешной валидации системой Blockchain будет вызван скрипт на вашем сайте (вы сами указываете какой) и переданы все данные транзакции.
7. После этого можно спокойно подтверждать факт оплаты уже внутри вашей системы.

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

Для получения временного кошелька следует отправить ряд данных:

1. URL скрипта, который будет вызван в случае успешного подтверждения транзакции. Следует заметить, что рекомендуется указывать некий параметр, или даже несколько для возможности идентификации платежа в текущей системе. Можно, конечно, просто указать идентификатор клиента в вашей системе и при получении подтверждения транзакции уже тогда вносить какие-либо данные в БД. Однако я (а также официальная документация) рекомендую использовать заранее созданный номер платежа и какую-либо проверочную фразу. Суммарно получится URL с параметрами как при обычной передаче GET запросом. Для системы Blockchain этот параметр носит название callback. Значение же следует закодировать как URL-строку.
2. Ваш кошелек, для приема платежа. Собственно, на него Blockchain и переведет полученные деньги. Параметр носит название address.
3. Последний из параметров носит название method и для создания временного кошелька всегда имеет значение create.

Эти данные отправляются скрипту Blockchain по адресу https://blockchain.info/api/receive, при этом каждый из параметров идет обычным GET параметром, а результат его выполнения обрабатывается вашей системой (результат будет в формате JSON). Обо всем этом говорится в документации Blockchain API .

Проще всего это рассмотреть на примере:
[snippet >

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

И пока мы не перешли к следующему шагу, внесу ряд замечаний:

1. Этот код — максимально прост. В реальной системе я бы советовал использовать грамотно продуманный и написанный класс, а также использовать базу данных для хранения подготовленных платежей (как минимум, важно хранить номер платежа, идентификатор пользователя в системе, проверочную фразу или ее составляющие).
2. Функции file_get_contents будет достаточно. Использование cURL или даже чистых сокетов — дело личное и зависит от реализации получения данных от сервиса.
3. Время на валидацию платежа может быть разным и весьма существенным (доходило до 6 часов у меня). А курс биткоина может поменяться. Так что тут есть два варианта: или хранить курс на момент создания платежа (что может сыграть как в плюс, так и в минус) или же запрашивать его по факту получения подтверждения транзакции. Я использую второй метод для спокойствия. Это если вы конечно будете конвертировать биткоин в какую-нибудь другую валюту. Как конвертировать и получать курс я расскажу в конце.

А теперь — получение подтверждения транзакции (деньги к тому моменту на ваш кошелек уже поступят).

Файл должен именоваться receive_payment.php и лежать в корне сайта, так как при запросе временного кошелька мы указали именно такое именование при формировании $callback_url.

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

Однако, как и в предыдущем шаге внесу ряд замечаний:

1. ВАЖНО! На самом деле скрипт для одного и того же платежа будет вызван не один раз, а по количеству его подтверждений на отдельных нодах. Отсюда следует, что вам следует проверять, а не было ли раньше подтверждения. Иначе получится накрутка.
2. Blockchain отдает гораздо больше параметров, чем я указал в скрипте:
transaction_hash — хэш транзакции (он уникален);
input_transaction_hash — хэш оригинальной транзакции (он уникален);
input_address — кошелек Blockchain, на который придет платеж;
destination_address — ваш кошелек, на который придет платеж;
confirmations — количество подтверждения нодами (рекомендуется принимать подтверждение платежа в случае, если этот параметр имеет значение большее или равное 6).
3. Параметр value отдает значения не в биткоинах, а в satoshi (1 Satoshi = 0.00000001 BTC). Поэтому следует приводить полученное значение к биткоинам (по указаной в примере скрипта формуле выше).
4. Параметры invoice_id и secret являются кастомными, то есть задаются вами еще на этапе получения кошелька от Blockchain. Соответственно их может быть больше, меньше, вообще не быть, а также они могут иметь любые названия.
5. Рекомендую хранить в истории платежей полученное значение в биткоинах, однако конвертировать его в другую валюту (доллары, например), которая используется у вас в системе. Если же ваша система работает только с биткоинами — ничего конвертировать не нужно.


На этом можно было бы завершить статью — получать биткоины вы теперь умеете, однако я не могу не затронуть вопрос конвертации биткоина в другие валюты по курсу биржи Blockchain. По этому вопросу существует отдельная документация: Exchange Rates API.

Этот сервис может ровно две вещи:
1. Дать сводку текущего курса. Вернет JSON. Как этим пользоваться на своем сайте — решать вам. Я приведу только примитивный пример:
[snippet >

Полная распечатка результата есть в документации.
2. Конвертировать для вас из указанной валюты необходимое указанное количество денежных единиц в биткоины. Я б сказал — сервис для ленивых. Пример:
[snippet >

Сервису надо отдать два параметра:
currency — название валюты (список валют есть в документации, а также его можно получить самостоятельно, используя код из предыдущего пункта, просто вызвав там print_r($exchange_data_obj);).
value — сколько меняем.

Все. Вернет только число биткоинов.

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

Moon Labs специально для ForkLog

Подписаться на новости Forklog

Свободное копирование и распространение материалов с сайта ForkLog разрешено только с указанием активной ссылки на ForkLog как на источник. Указание ссылки также является обязательным при копировании материалов в социальные сети или печатные издания.

Журнал ForkLog — информационный ресурс о криптовалютах, блокчейне и децентрализованных технологиях. Мы работаем для вас с 2014 года.
© 2020

Прием платежей в Bitcoin с автоматическим ответом в php скрипт

К странице.
Страница 1 из 2 1 2 >
RealProfit
Посмотреть профиль
Отправить личное сообщение для RealProfit
Найти ещё сообщения от RealProfit / в этой теме
нужно на сервер ставить биткоин клиент и работать с ним через РПЦ.

Что значит РПЦ? Я так знаю, что это «Русская Православная Церковь». Но Вы имели в виду явно что-то другое, хотелось бы знать, что именно.

добавлено через 1 минуту

RealProfit
Посмотреть профиль
Отправить личное сообщение для RealProfit
Найти ещё сообщения от RealProfit / в этой теме

А еще вроде их как через OKPAY принимают

RealProfit
Посмотреть профиль
Отправить личное сообщение для RealProfit
Найти ещё сообщения от RealProfit / в этой теме
RealProfit
Посмотреть профиль
Отправить личное сообщение для RealProfit
Найти ещё сообщения от RealProfit / в этой теме

Многие хайпы скоро перейдут на криптовалюты. Потому что Perfect Money начала политику Rollback. Подробности тут : http://mmgp.ru/showthread.php?t=204965

Поэтому необходимость мерчантов криптовалют начнёт в ближайшем времени резко возрастать.
И как я думаю, разработчики крипто эту волну подхватят.

Alexander Portman
Посмотреть профиль
Отправить личное сообщение для Alexander Portman
Найти ещё сообщения от Alexander Portman / в этой теме

Вам благодарность, dabbad. Именно такие решения и нужны.

Portman, про перфект почитал, это уже грустно.

RealProfit
Посмотреть профиль
Отправить личное сообщение для RealProfit
Найти ещё сообщения от RealProfit / в этой теме

RealProfit, такие моменты лично я считаю сигналом к тому, чтобы потихонечку оттуда начинать выходить. Потому что ранее, 5 или 6 лет платёжка работала и никто там не шевелился и на вопросы в службу поддержки по поводу вернуть деньги всегда отвечали что мол извините, сэр. У нас система безвозвратных платежей. А теперь вон что — пожалуйся на любой хайп и деньги тебе вернут. Приходят они возвратом, и называется эта операция Rollback.

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

Работа с bitcoin из под Node.js (Делаем Online Bitcoin Wallet) habrahabr.ru

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

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

1. Как это будет работать.

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

2. Установка bitcoind.

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

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. Так что продолжим:


Вводим:
server=1
daemon=1
rpcuser=USERNAME
rpcpassword=PASSWORD

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

Вводим:
description «bitcoind»

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

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

3. Подключаем оплату к сайту.

Теперь мы можем работать с биткоином через консоль, список команд клиента можно получить так:
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 >); > >); >);

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

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

Цукерберг рекомендует:  Javascript ... - Фильтр на JS

Для получения аккаунта используем метод 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 транзакции, если все прошло хорошо. Я обычно на всякий случай проверяю, есть ли возможность сделать перевод (просто сравниваю балансы) и т.п., что и вам советую.

Bitcoin API и PHP – Базовое использование

Осторожно! Текст написан как для тупых! :) Аж читать противно :) У моих читателей разный уровень понимания программирования, поэтому чтобы было понятно всем, приходится писать как для тупых.

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

Решил попробовать немного освоить PHP. К тому же как я понял, на PHP бот будет работать быстрее моих на другом языке, там вообще большое изощрение :)

Начну с того, на бирже есть ссылки на примеры кода на разных языках, и среди них есть PHP. Ссылки на примеры кода и документация:
https://btc-e.com/api/documentation

Сразу оговорюсь о проблемах, с которыми можно столкнуться.

Проблема 1. Обычный ПК не понимает PHP.

Т.е. надо качать спец.софт — PHP-сервер, устанавливать разбираться. но это оказалось отнюдь не сложно. Я скачал и установил пакет Денвер (Denwer). Возможно это далеко не лучший выбор, но. для моих целей оказалось более чем достаточно, при этом всё удобно и понятно. Это то меня и подкупило. Установка тоже не супер-удобная, обычным НЕХТованием не ставится, надо читать и даже пару раз подумать. Зато сама установка на русском языке, так что читать не тяжело :) После установки сервер сразу готов, и можно начинать кодить.

Проблема 2. Как начать вообще.

Тут у меня минимальные знания о web-программировании уже были, поэтому я сообразил всё же, что надо сделать.

0) запустить сам Денвер по ярлыку «Start Denwer»
1) зайти в браузере по адресу http://localhost
2) определить где лежит файл, который открылся в браузере
3) положить в ту же папку свой файл, назвать его например test.php
4) теперь можно из браузера открывать свою поделку по адресу http://localhost/test.php


Проблема 3. HTML + PHP

Этот файл test.php нужно еще и правильно оформить, чтобы всё правильно открывалось в браузере. Тут моих начальных знаний тоже оказалось достаточно.

Вот между знаками «» надо писать PHP-код, или точнее скопировать пример кода, и попробовать в нем разобраться, что я и сделал.

Проблема 4. Ошибка в примере! .RU

При первом же запуске примера вылетело с ошибкой. Я сначала паникнул даже «Ну блин, теперь точно ничего не пойму». Но всё же почитал её, в попытках понять что не так. И. btc-e.ru , блин! А не btc-e.com. Т.е. домен не правильный. Куда смотрели админы биржи я не знаю :)

Fatal error: Uncaught exception ‘Exception’ with message ‘Could not get reply: Could not resolve host: btc-e.ru ; Host not found, try again’ in W:\home\localhost\www\1.php:43 Stack trace: #0 W:\home\localhost\www\1.php(48): btce_query(‘getInfo’) #1

thrown in W:\home\localhost\www\1.php on line 43

Я полез в код, нашел .ru и поменял на .com. Это решило проблему. Ошибка больше не появлялась, и я увидел первый ответ от биржи. Но этот ответ тоже был об ошибке.

Проблема 5. Надо прописать свои ключи.

Название ключа значения не имеет. Разрешить нужно два права:
1) info (разрешено получать информацию)
2) trade (разрешено торговать, выставлять ордеры)

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

Получившиеся 2 ключа надо запихнуть в эти строки PHP-бота, сохраняя ковычки:

// API settings
$key = »; // your API-key
$secret = »; // your Secret-key

Проблема 6. invalid nonce parameter

Таким был первый ответ в браузере:

Array
(
[success] => 0
[error] => invalid nonce parameter; 1470750604 1378161073
)

Если ранее подключал уже каких-нибудь ботов (а я подключал), то этот nonce parameter сбился.
Первая цифра — это прошлый нонс.
Вторая цифра — это нонс, который отправил мой код.

Я не очень то хорошо понял что это за хрень, но давно дошло что нонс, который я отправляю должен быть просто больше предыдущего нонса. Причем пофиг насколько больше. +1 вполне сойдет. Т.е. раз уж прошлый нонс 1470750604, значит надо отправить 1470750605 или больше.

Единственная строка в примере, которая содержит слово nonce:
$req[‘nonce’] = $mt[1];

Как она работает я тоже не в курсе :) Поэтому просто заменил её в ручную для проверки теории. Старую строку закомментировал, у меня получилось:
//$req[‘nonce’] = $mt[1];
$req[‘nonce’] = 1470750605;

И о чудо, биржа разродилась ответом :) Честно говоря, я уже тут умудрился полчаса убить на такую мелочь. Там еще символы табуляции были (TAB), но мой блог в ЖЖ их почему то не сохраняет. Ну да ладно.

[transaction_count] => 26752
[open_orders] => 1
[server_time] => 1378161361
)

Это он показывает сколько у меня бабок лежит, это хорошо, это пригодится.

Проблема 7. Как делать правильный nonce parameter

При второй попытке получить инфу (нажал F5), снова проблема.

Array
(
[success] => 0
[error] => invalid nonce parameter; 1470750605 1470750605
)

Как видно, я опять отправить нонс, который уже был. Надо бы опять приплюсовать единичку, но ведь не руками же это делать каждый раз. Я сообразил такое вот кривоватое, но рабочее решение:

$req[‘nonce’] = 1470750605 + $mt[1];

Т.е. я к старому числу прибавляю новые нонсы. После нескольких обновлений страницы, всё работало нормально.

Проблема 8. Как выставить ордер

Оказалось, в конце примера есть строка, как сделать покупку, но она закоментирована, надо просто убрать эти //

//$result = btce_query(«Trade», array(«pair» => «btc_usd», «type» => «buy», «amount» => 1, «rate» => 10)); //buy 1 BTC @ 10 USD

Как видно из комента в конце, это команда купит 1 биткоин за 10 баксов. А точнее не купит, а просто выставит ордер, который никто не закроет :)

Проблема 9. Как и куда вставить логику бота

К сожалению, польза от примера кода на этом заканчивается, дальше все придется додумывать самому. Я решил создать элементарного бота. Вот такая будет логика:

Внимание! Это учебный пример, а не пример для подражания.

Допустим у меня есть лайты, сейчас они стоят $2.35. Я хочу их все продать по $2.4. Для этого бот вовсе не нужен, я просто могу выставить ордер. Но я боюсь что цена может резко полететь вниз пока я сплю. Если цена вдруг достигнет $2.33, то я бы предпочел продать на всякий случай, зафиксировать убыток, а не продолжать рисковать. А это без бота сделать уже не получится. Пока я сплю :)

Логика моего бота:
1) Посмотреть цену лайта в долларах (на LTC/USD)
2) Если цена больше $2.33, тогда ничего не менять.
3) Если цена меньше $2.33, тогда сначала отменить все мои ордеры на этой паре.
4) А потом выставить ордер на $2 на всю сумму моих лайтов (в этом случае продаваться будет по максимальным ценам стакана закупки, а не по $2)

Пункт 1. Получаем цену

Там же в документации была ссылка, где смотреть последние торги:
https://btc-e.com/api/2/ltc_usd/trades


Теперь осталось додуматься, как же оттуда получить цену верхнего ордера стакана покупок. Сначала я открыл документацию по PHP, испугался и закрыл. Чего вам не советую, кстати. Решил попробовать разобраться так. Раньше мне это помогало. Если метод тыка не сработает — тогда лесть в документацию, решил так. Сначала я просто скопировал текст запроса, и по аналогии создал свою функцию «getPrice». Но оказалось 2 строчки были лишние. Почему то :) А почему я не знаю, я PHP-неуч. Я их просто убрал нафиг. Вот что у меня получилось:

function getPrice() <
static $ch = null;
if (is_null($ch)) <
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, ‘Mozilla/4.0 (compatible; BTCE PHP client; ‘.php_uname(‘s’).’; PHP/’.phpversion().’)’);
>
curl_setopt($ch, CURLOPT_URL, ‘https://btc-e.com/api/2/ltc_usd/trades’);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

$res = curl_exec($ch);
$dec = json_decode($res, true);

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

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

Array
(
[0] => Array
(
[date] => 1378163363
[price] => 2.35
[amount] => 2.7844
[tid] => 7255379
[price_currency] => USD
[item] => LTC
[trade_type] => ask
)

[1] => Array
(
[date] => 1378163239
[price] => 2.35
[amount] => 18.6473
[tid] => 7255354
[price_currency] => USD
[item] => LTC
[trade_type] => bid
)
итд. итд. итд

Я открыл снова сайт биржи, и убедился что цифры получены правильные. Вот только я получил много торгов, а мне надо только один последний. Как получить только последний, это моя новая проблема. В документации об этом ничего нет, никаких примеров для BTC-e в сети тоже нет :( Так что вот тут то я впервые встрял надолго. Насколько я понял, ответ приходит в формате, который называется json. Начал гуглить по строке «json PHP программирование», чтобы нарыть примеры кода. Упорно лень читать документацию. Этот json напоминал мне XML, с которым я уже умел работать.

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

Т.е. в конце достаточно дописать нужное количество через слеш. Помог юзер OLX. Еще полчаса потеряно :)

Bitcoin bot php

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

Теперь переходим к самому интересному блоку: Если есть, то нам нужно получить среднюю цену, за которую продают currency1 btc за промежуток времени, который мы указали в avgPricePeriod. Немного лирики: У Exmo есть метод ticker со статистикой и объемами торгов по валютным парам.

В статистике указана средняя цена за последние 24 часа. Однако разница средней цены и той, по которой идут торги сейчас может очень отличатся. Мы возьмем совершенные сделки за интересующий нас avgPricePeriod и из них посчитаем среднюю цену. Если мы выставим ордер по средней цене, он сразу же исполнится по минимальной цене, значащейся в ордерах на продажу.

Итак, обратимся к методу trades и запросим у него статистику по нашей паре currentPair:.

Средняя цена у нас есть, но нам нужно ее немного подправить — вычесть комиссию биржи stockFee и добавить желаемый профит. Таким образом, получив цену ниже средней цены рынка, мы купим чуть больше валюты, так как биржа впоследствии забирает ее часть. Теперь нужно поставить нашу функцию на таймер диапазон — раз в 5 секунду, например и можем запускать. Поздравляю, Вы написали своего первого торгового робота: Это связано bitcoin mining device примитивностью алгоритма, который работает в случае, если цена колеблется в определенном диапазоне а это почти всегда не так на криптобиржах.

За сутки происходит порядка операций при хороших раскладах. Посчитать можете сами. Ещё раз ссылка на гитхаб с полной версией бота и комментариями. Для тех, кто не работал с node, ваш скрипт естественно будет работать, пока отрыта консоль. С помощью этой утилиты скрипт продолжит работу, даже если консоль закрыта.

Войдитепожалуйста. Хабр Geektimes Тостер Мой круг Фрилансим. Войти Регистрация. Простой бот для торговли на криптобирже JavaScriptПрограммированиеNode. Во-вторых, Вы заработаете. Просто. Чем пахнет? HmacSHA message, config. Эта шляпа совсем не шляпа, а Red Hat OpenShift. И прогресс с каждым днем становился заметнее и заметнее. Программа все реже вылетала с ошибками, а потом я и вовсе мог спокойно спать всю ночь, а бот работал без сбоев.

Это была маленькая, но такая ценная победа! При текущих колебаниях курса накапливалось ордеров на продажу, но в течение дня, как правило, они все исполнялись. И баланс ежедневно подрастал на доллар-полтора.

Через некоторое время я осмелел и увеличил стоимость торгуемых ордеров. Прирост баланса возрос уже до долларов в день. В абсолютных цифрах, разумеется, это. К примеру, она вылетала с ошибкой при неправильном ответе от сервера биржи такое случается, когда торги ведутся слишком активно. Шанс подобного совпадения — минимален, но оно случилось, и такие случаи тоже нужно учитывать. Спас вовремя сделанный бэкап. Так ли это плохо? Не думаю. С одной стороны, за время работы бот вывел баланс в полный безубыток, даже если я продам крипту по текущей цене.

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

Bitcoin API и PHP – Базовое использование

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

Цукерберг рекомендует:  Веб-разработка - Тесты на codeaccess.com

Все это. Но это уже совсем другая история. Он не о том, как можно научиться торговать или программировать… Вовсе. Я просто хотел рассказать вам о том, как важно пробовать себя в чем-то новом и не бояться неизвестного, ставить новые цели и не отказываться от старых.

Стоит сделать шаг вперед, чуть-чуть выйти за привычные рамки — и уже понимаешь, что криптовалюта повсюду. Что будущее уже наступило.

Разработка собственного торгового бота для криптовалюты

И вместе с этим первым шагом начинаешь видеть для себя огромное число новых перспектив и возможностей. Хотите зарабатывать на крипте? Подписывайтесь на наши Telegram каналы! Технология блокчейн с каждым днем все больше проникает в нашу жизнь. Биткоины и альткоины прочно обосновались в кошельках интересующихся криптовалютой. Блог BitStat. Top помогает следить за происходящим на крипторынке. Новости криптовалют, курсы обмена и аналитика, обзоры готовящихся ICO, проникновение блокчейн-технологии в новые отрасли.

Вам нужно постоянно следить за всем этим, чтобы грамотно пристроить собственные инвестиции. Цель блога — дать максимум подобной информации о биткоине и перспективных альткоинах, помочь заработать на.

Мы даем собственные уникальные прогнозы и сигналы для покупки криптовалют. С нами заработать может каждый! Litecoin Разработка собственного торгового бота для криптовалюты. Рад приветствовать всех читателей топового блога о крипте!

Как все начиналось Take easy bitcoin типичного фрилансера. Торговые роботы трудятся круглосуточно. Можно вечно смотреть на то, как горит огонь, течет вода и растет в цене биткоин. Бот не умеет думать. Попытка заработать на противостоянии. И действительно, что может пойти не так? Текущая версия бота в действии.

Манипуляции ценами в экосистеме биткоина Биткоин новости. Как топовые биржи накручивают объемы: Как поднять бабла на дневной и долгосрочной торговле?

Психология трейдинга, как не слить свой депозит на панике Криптотрейдинг. Свечи Heiken Ashi и простая стратегия торговли внутри дня Криптотрейдинг. Комментарии постранично целиком. Комментарий удален. BitStat 0. Пишите мне в телеграм. Может у Вас статью получится написать по личному опыту. Смотря что там Непонятно, что. Никто ничего не написал. Я пока удаляю коммент до выяснения, а то как спам сейчас Ra85 0.

Dmitriuze 0. Neta 0. Позитивная статья. Затронута интересная тема. Особо роботами не интересовалась, просто решила, что это дорого. AlexBlack 0. Зависит от бота и потраченных на разработку сил. Для хорошего программиста написать простого бота — дело пары-тройки дней. Даже не подозревал, что есть биржи, которые позволяют торговать ботами и делятся своими API Какое поле для деятельности-то открывается!

Спасибо за статью! Очень многие биржи имеют открытый API для торгов и поддерживают разработку ботов. Им это выгодно. Lenskiy13Rus 1. Бот еще в разработке и требует внимания. Когда появится более стабильная версия, буду готов поделиться: Dimast 3.

Bitcoin/litecoin arbitrage bot

CGAndroid 0. Автору статьи. Посмотрите биржу binance.

Спасибо, посмотрю. С низкими комиссиями можно торговать даже на небольших колебаниях цен. AngryAngel 0. IamBIV 0. Pavel93 0. По идеи, стратегия успешна лишь тогда, когда биткоин растет. Тем временем она приносит небольшую прибыль. Но она похоже на стратегию Мартенгейла — если биток резко упадет и больше не поднимется, то у вас останутся одни ордеры на продажу битка по заоблачным ценам.

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

Аналогия с Мартингейлом и мне приходила в голову. Закупка на высоких ценах — сомнительное удовольствие, но я придумаю какой-нибудь выход из этой ситуации. Implement this project into Live Trading Platform with real money pls check the links below in detail before contacting me:.


An already working example with a current Exchange will be provided to you to edit, file is only 68 lines long as CCXT does most of the work already. Extend the CCXT class with a few abstract methods that your new exchange implementation must provide. However this is not a copy and paste job! Показать больше php bitcoin trading botopensource trading bot bitcoinbitcoin trading bot mxcnowblackbird arbitrage botarbitrage bot githubcryptocurrency arbitrage opportunitiesblackbird arbitrage reviewaltcoin arbitrage botethereum arbitrage botcryptocurrency arbitrage softwarebitcoin arbitrage bot pythonphpsoftware architecturebitcoinapibitcoin trading bot apibitcoin trading bot open sourcebitcoin php trading botroi bitcoin trading botbitcoin margin trading bot.

Thanks for reviewing my proposal. Please review my previous works. Hello, This is Shuchita from the OmSoftware.

I have checked out the description about the project which you have provided. Hi There, Thanks for the invitation. Please let me know if we can discuss your payment terms as you have mentioned that you will only pay for the work bitcoin на кликах does it mean that you will not creat any escrow as well?

Hi, I am Simon from Australia. HTML5 2. JS A Больше. Hello sirwe have understood your requirement, wellknown to the [login to view URL]as we have done the sevral project in the cryptocurrency an blockchian we have the experience in developing the private blockchain b Больше.

Hello Sir, Hope you are fine there. We are having good experience with CorePHP projects and the reason we came across here to give the best output to your project with supreme quality.

[PHP] оплата биткоинами

Тема в разделе «Разработка», создана пользователем zoolos, 6 мар 2014 .

//выводим результат результат
echo «результат: «$bitcoin->status.»
ошибка: «.$bitcoin->error;
?>

zoolos новичок Команда форума

$bitcoin = new Bitcoin(‘username’,’password’,’localhost’,’8332′); —эти данные откуда берем.

данные кошелька что на сервере стоит?

bblizard Космонавт

$bitcoin = new Bitcoin(‘username’,’password’,’localhost’,’8332′); —эти данные откуда берем.

данные кошелька что на сервере стоит?

atlant_is Постоянный пользователь

А вообще, вон апбитовцы мерчант запускают. Оплата ларками и битками. Пока, бета-тестирвоание, но в будущем простое и легкое подключение магазина. http://biz.larkpay.com/

wowan232e новичок

Добрый вечер.Скажите пожалуйста кто-нибудь где можно взять такие штуки-
‘BTC_IPN_PASSWORD’=>’qwerty1234’, // Your IPN password to use a params in notification urls
‘BTC_GUID’=>’9b0e0bf9-28fd-43b7-b743-895f49c594f3’, // GU >

markusgod новичок

Bitaps новичок

Как легко принимать платежи у себя на сайте ?

Что бы создать временный адрес для каждого клиента и принимать биткоины на свой кошелек, используйте интерфейс
Create payment address

где, payout_address — это ваш биткоин адрес куда будут пересылаться деньги (можете сразу в обменник или на биржу отправлять)
callback — это ссылка куда будет отстукиваться наш сервер по подтверждению транзакции. Не забудьте этот параметр сделать urlencoded .

В ответ на этот запрос вы получите JSON с биткоин адресом для клиента, инвойс и пэймент_код. Храните у себя все три переменные.
А адрес для оплаты передайте клиенту.

В файле, который будет принимать колбэки, по нужному количеству подтверждений напишите в ответ данный вам invoice, этого достаточно что бы подтвердить что платёж прошёл.

Если потребуется помощь, смело пишите нам admin@bitaps.com или support@bitaps.com

vladimir6111 новичок

Привет!Есть бот на 16 биткоин кранов.600 руб.Для ознакомления даю бот на фрибиткоин бесплатно.https://yadi.sk/d/3WvRAOdD3jlNdw
Вирусов нет. Дальше сюда
nemecvova1@gmail.com

siamocean новичок

Вопрос, по ограничению доступа посторонних лиц к файлу кошелька, если нода используется для бизнеса.

Сейчас ведется разработка интернет магазина, в котором предусмотрена оплата bitcoin.

Оплачивать btc можно напрямую, каждый раз генерится адрес btc для определенного товара и пользователь оплачивает. Также предусмотрено пополнение внутреннего внутреннего баланса пользователя в магазине, если он зарегистрирован.

Девопс и бек-энд разработчик настроил ноду BTC на отдельном сервере. (сейчас тестово можно совершать покупки, пополнять баланс). На сервере имеется wallet.dat в котором будет множество кошельков пользователей.

1.Где хранится seed фраза кошелька? она одна или для каждого кошелька пользователя разные?

2.Как технически закрыть доступ после всех настроек, чтобы доступ был только у владельца магазина, владелец человек не технический и с командной строкой работать не умеет? Как это происходит например в биржах? неужели ко всем средствам есть у админа, который работает по найму?

3.Как корректно решить этот вопрос с персоналом?

btcpapa Папа Биткоин Проверенный

1. если wallet.dat один, то и кошелек один, сид должен храниться у владельца. Если у каждого пользователя свой кошель, значит свой сид у каждого, и можно либо выдавать им — пусть записывают, либо хранить у себя так, чтобы никто не добрался.

2. Есть куча возможных реализаций, стандартного ничего нет, каждый пилит как умеет. На биржах админы могут любые суммы рисовать в балансах )) хотя тоже у всех наверное по-разному. Тупо доступа не должно быть ни у кого к тому серваку с кошелем. Доступ только к прокладке с интерфейсом рабочим, где возможны только заранее определенные действия. Короче нюансов масса, зависит от вашей реализации, думайте, ничего ж непонятно из вашего вопроса, так только гадать можно.


3. Какой «этот»? Ограничения доступа? Персонал и так должен знать свое место и не лезть грязными руками никуда вообще, кроме выданного участка работы. Вот твой интерфейс, здесь кнопки нажимай и больше ничего не трогай.

Работа с bitcoin из под Node.js (Делаем Online Bitcoin Wallet) habrahabr.ru

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

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

1. Как это будет работать.

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

2. Установка bitcoind.

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

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. Так что продолжим:

Вводим:
server=1
daemon=1
rpcuser=USERNAME
rpcpassword=PASSWORD

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

Вводим:
description «bitcoind»

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

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

3. Подключаем оплату к сайту.

Теперь мы можем работать с биткоином через консоль, список команд клиента можно получить так:
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 >); > >); >);

Мы используем метод 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 транзакции, если все прошло хорошо. Я обычно на всякий случай проверяю, есть ли возможность сделать перевод (просто сравниваю балансы) и т.п., что и вам советую.

Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих