Как торговля работает двигатель?

Как криптовалют торговля двигатель работает? Существуют ли проект с открытым исходным кодом других, чем buttercoin. Я хочу построить простой двигатель торговли в Ruby на Rails для криптовалют. каковы существенные детали, необходимые, кроме API?

+230
Stuart Beard 20 апр. 2018 г., 2:49:02
34 ответов

Да. Шахтеры-это те, кто генерирует новые блоки на Blockchain. Но в вашем примере, Алиса и Боб выступать в качестве отправителя и получателя, не является Шахтером.

Когда Алиса посылает Бобу $1 (0.0002384 БТЦ), их сделки добавляется в блокчейн пула памяти или mempool еще до операции. Оттуда шахтеры соревнуются, кто сможет найти правильное решение извращенец , чтобы решить математическую задачу, проверять блок из mempool сделки, и получать 12.5 BTC горной награды.

После того, как Алиса и Боб сделки проверяется Шахтера считается подтвержденным. 6 подтверждений (оригинал, плюс следующие 5 блоков) считается необратимым и безопасным классифицировать как полный.

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


Шахтером может стать любой, кто работает полный биткойн-узел (с флагом). Однако, так как трудно решить математическую задачу, большинство майнеры объединяют свои ресурсы в пул. Пула участников, то в совокупности долю на 12,5 БТЦ вознаграждение пропорционально тому, сколько работать (Читай вычислительной мощности) каждого шахтера способствует поиску решения.

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

Из Википедии

Применение конкретных интегральных схем (СБИС) /ˈeɪsɪk/, является интегральная схема (ИС), настроенные для конкретных целей, а не предназначены для общего назначения.

Процессоры предназначены для повышения эффективности процесса решения проблемы и в основном ЦП и ГПУ майнинг биткоин бессмысленно. Однако, добыча ГПУ до сих пор чрезвычайно популярен с нескольких альткоинов, которые были специально разработаны, чтобы помешать Asics и выровнять игровое поле.

Взгляните на этот Реддит нить дополнительные сведения о том, какие монеты можно еще ГПУ Mine эффективно.

+995
Muhammad Annaqeeb 03 февр. '09 в 4:24

Я заметил, что есть все виды карт, лопастей и других частей ASIC добыча буровые установки для продажи на eBay. Это возможно, я мог бы купить некоторые карты и лезвия и построить свой собственный высокого класса горно поимейте без необходимости платить за что-то фирменное наименование или создать свой собственный дизайн (который мы все знаем, не бывает)?.

+979
theblackveil 2 мар. 2010 г., 22:56:26
Другие ответы

Связанные вопросы


Похожие вопросы

32-байтовую двойной SHA256 со сделки (TxID) не то, что получает подпись.

На будущее Примечание: приведенное здесь описание операций, TxID расчет, подписей и подписей скрипты и т. д. не применяются к сегрегации свидетеля.

Давайте посмотрим на пример с транзакцией я создал ранее. Я позвонил:

createrawtransaction '[{"txid":"0c71ea829dfb117442c1c0d0c492725794d890bbcbcd8234b1108d1b1d4ca2e9","Uвых":1}]' '{"1PkCAVKjPz1YK7iJwT8xTLxBXR1av8dL98":0.004}'

который создал (неподписанные) сделки:

0100000001e9a24c1d1b8d10b13482cdcbbb90d894577292c4d0c0c1427411fb9d82ea710c0100000000ffffffff01801a0600000000001976a914f97df8f593e0056d337c274fd81a163f47a17d3788ac00000000

И тогда я спросил биткоин-RPC, чтобы подписать сделку, и получил:

0100000001e9a24c1d1b8d10b13482cdcbbb90d894577292c4d0c0c1427411fb9d82ea710c010000006b483045022100d9a5433c1381b39b7e02b0b0f042990e7c16cfea252b05ccfef2e85c2dab2a6f022057c7def782fe3b0d7e5e0eae277d2a5890844da7d72309817a2dac22a6307c6001210390d78cb0c1d34d4417db7e0a9a9f125a689dc29dc2197a01a5f827a20f870f62ffffffff01801a0600000000001976a914f97df8f593e0056d337c274fd81a163f47a17d3788ac00000000

Вот что подписанные транзакции данных, с подписью и данными, относящимися сценарий жирным шрифтом: 0100000001e9a24c1d1b8d10b13482cdcbbb90d894577292c4d0c0c1427411fb9d82ea710c010000006b483045022100d9a5433c1381b39b7e02b0b0f042990e7c16cfea252b05ccfef2e85c2dab2a6f022057c7def782fe3b0d7e5e0eae277d2a5890844da7d72309817a2dac22a6307c6001210390d78cb0c1d34d4417db7e0a9a9f125a689dc29dc2197a01a5f827a20f870f62ffffffff01801a0600000000001976a914f97df8f593e0056d337c274fd81a163f47a17d3788ac00000000

Если вы посмотрите на неподписанных транзакций, весь материал до и после этого выделенная часть идентична (кроме прокладки байт, который отвернулся от 0x00 до 0x62), потому что только одна подпись (и связанный с ним сценарий) требуется, чтобы успешно провести ввода.

Вот визуальная разница между расшифрованной версии без знака операции (слева) и подписанной сделки (справа):

Difference between decoded unsigned and signed simple Bitcoin transactions

Вы увидите, что неподписанные сделка имеет разные txid (потому что TxID-хеш полностью, подпись транзакций). Кроме того, вы увидите, что без операции не имеет scriptSig, в то время как подписана транзакция. В scriptSig есть вставлен раздел жирным шрифтом ранее.

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

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

Сказать вам распространить транзакцию в сеть, которая посылает Боб 2 БТЦ. Любой участник (в том числе заблокированных шахтеров) может манипулировать подписи сценария выглядят по-разному, в то время как до сих пор достоверно подписания сделки. Хотя это не позволит им перенаправить эти 2 БТЦ от Боб никому другому, эта модификация не меняет TxID сделки. Если кто-то ждет оригинальная TxID распространяться по сети, то окажется, что сделка никогда не исполняется, если измененные сделки, а не включены в блок.

+955
regisbsb 24 апр. 2012 г., 10:09:47

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

Вот это одна из сделок, и вот другая.

Вот это ужасный код, который их сделал:

ВАР утверждать = требуют('утверждать'),
 биткоин = требуют('bitcoinjs-Либ'),
 блокчейн = новый (требуют('КБ-helloblock'))('тестовом режиме'),
dynamicKey,
dynamicChangeKey,
 операции = [],
 точек данных = [],
 dataScripts = [];

подключения = функция (обратного вызова) {
 dynamicKey = биткоин.Эке.makeRandom();
 dynamicChangeKey = биткоин.Эке.makeRandom();

 buildTransaction(dynamicKey, dynamicChangeKey, 
 "Подключение к блокчейн...", обратного вызова);
};

функция Сообщения = (обратного вызова) {
 dynamicKey = dynamicChangeKey; //биткоин.Эке.makeRandom();
 dynamicChangeKey = биткоин.Эке.makeRandom();

 buildTransaction(dynamicKey, dynamicChangeKey "размещены в блокчейн.", 
обратного вызова);
};

buildTransaction = функция (ключ, changeKey, arbitraryData, обратного вызова) {
 ВАР-адрес = ключ.паб.getAddress(биткоин.сетей.тестовом режиме).
метод toString();

 блокчейн.адреса.__faucetWithdraw(адрес, 2e4, функция (ошибаться) {

 если (энр) возврат вызова(ошибаться);

 блокчейн.адреса.unspents(адрес, функция (ошибаться, unspents) {
 ВАР ТХ,
сведения,
dataScript,
нерастраченной,
txBuilt;

 если (энр) возврат вызова(ошибаться);

 ТХ = новый биткоин.TransactionBuilder();
 данные = новый буфер(arbitraryData.метод toString());
 dataScript = биткоин.сценарии.nullDataOutput(данные);
 неизрасходованные = unspents.поп();

 Техас.addInput(неизрасходованные.txId, нерастраченная.Uвых);
 Техас.addOutput(dataScript, 1000);
Техас.addOutput(changeKey.паб.getAddress(биткоин.сетей.
 тестовом режиме).метод toString(), 1000);
 Техас.знак(0, ключ);
 txBuilt = ТХ.создать();

точек данных.толчок(данные);
dataScripts.толчок(dataScript);
сделки.толчок(txBuilt);

обратного вызова();
});
});
};

propogateTransaction = функция (данные, dataScript, txBuilt, обратного вызова) {

 блокчейн.сделки.распространение(txBuilt.toHex(), функция (ошибаться) {

 если (энр) возврат вызова(ошибаться);

 // проверить, что сообщение было распространено
 блокчейн.сделки.вам(txBuilt.getId(), функция (ошибаться, 
 сделки) {
 ВАР фактическое,
dataScript2,
данные2;

 если (энр) возврат вызова(ошибаться);

 фактическое = биткоин.Сделки.fromHex(транзакция.txHex);
 dataScript2 = фактическое.выходы[0].сценарий;
 данные2 = dataScript2.чанки[1];

 утверждаю.deepEqual(dataScript, dataScript2);
 утверждаю.deepEqual(сведения, данные2);

обратного вызова();
});
});
};

propogateBothTransactions = функция () {
 propogateTransaction(точек данных[0], dataScripts[0], операции[0], 
 propogateTransaction.персонализация(неопределено, информационные точки[1], dataScripts[1], 
 операций[1], отчет));
};


функция log = (значение) {
консоль.журнала(значение);
};

подключение(сообщение.персонализация(неопределено, propogateBothTransactions));
+943
adamsss 10 янв. 2018 г., 7:29:53

Я не хочу, чтобы запустить весь узел в моем ноутбуке. Я хочу установить биткоин-только CLI и настроить его для подключения к внешнему полный узел. Это возможно?

Если это так, то два вопроса:

  1. где я могу получить список полных узлов?
  2. где я могу записать полный узел из выше шаг в мой биткоин-Кинк

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

+906
WantsToLearn 5 июн. 2018 г., 1:40:01

Если контракты уже встроены в код, что остановит кого-то от создания сценария сделки, что является очень процессор для проверки, так что некоторые компьютеры примите блок С, а другие нет?

+866
MatthieuTnsc 13 авг. 2016 г., 3:16:37

Я имел биткоин в течение некоторого времени, но относительно неопытна. У меня есть клиент для Mac, а вчера прислал 95BTC к нему от моего МТ.Добро бумажник, но он никогда не прибыл. Я послал МТ.Добро послание с просьбой о помощи они сказали мне, что он приедет, когда я добрался до блока 160319 и мой клиент просто в 124667 и не подключается вообще! Я не могу получить его, чтобы подключиться, пробовали различные предложения от форумов, но не могу заставить его работать, пожалуйста, помогите! спасибо

+851
MNGwinn 25 окт. 2013 г., 23:36:24

Я хочу создать биткоин кошелек бумаги тестовом режиме.
Бумажный кошелек является QR-код закрытого ключа и QR-код биткоин-адрес Testnet,
Я предполагаю, что это можно создать Жюст, как эта ссылка : https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=privateKeyOrBtcAddress

Но когда я пытаюсь прочитать его через Testnet3 Android-приложение, денежные средства не признал.
Когда я читаю QR-код с QR-Reader приложение, я вижу правильное содержание (закрытый ключ например).
Я должен сделать вывод, что приложение имеет проблемы с этой функцией, или я что-то пропустил ?

+846
Lixxz 21 мар. 2017 г., 11:46:12

Можно ли выяснить, что некоторые адреса принадлежат к одному кошельку? Скажем, у меня есть 2 или 3 адреса, которые я знаю, были созданы детерминированный кошелек, как Арсенал. Есть ли способ, чтобы найти все остальные адреса, которые были использованы кошелек? Я имею в виду, что экземпляр бумажник, не все адреса, созданные с помощью программного обеспечения Оружейной.

+768
Mrinmay Dhar 10 окт. 2019 г., 16:10:00

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

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

+765
20kostia21 21 янв. 2017 г., 8:24:04

Мой любимый сегодня mapofcoins.com

Вы можете просмотреть альт-монеты список здесь: coinwik.org

Вы можете сравнить монеты здесь: coinplorer.com/Hardware/CurrenciesComparison

Есть форум, cryptocointalk

Видите, здесь coingen.bluematt.мне и +10 скрытые места с конструкторами.

Вы не можете найти полный список всех альт-монеты. Его не существует.

Количество альт-монет растет очень быстро. Наверное, каждый день там появляются 10-20 альт-монеты. Это неуклонная тенденция. В января 2015 года будет более 1000 альт-монеты в сто процентов.


Редактировать:

Видите, еще один конструктор монета нюк | монета создание службы | +все для вас монета +сделки +инструменты

+737
adamnsd 20 авг. 2018 г., 9:11:23

Вы можете поблагодарить китайского правительства и цензуры в интернете в последние вопросов блокчейн рассматривает две крупнейшие биткойн-майнеры в Китае.

У меня платежи со вчерашнего дня почти 18 часов, что не оформили, так что вы не одиноки.

Это начало конца для биткоин лучше братан начать обучение Монер!

+688
vaminos 31 дек. 2014 г., 16:23:22

Я был взглянуть на количество сделок в Bitcoin-адрес bitcoin.org.

Я пошел blockchain.org проводник. Он говорит https://blockchain.info/address/1GwV7fPX97hmavc6iNrUZUogmjpLPrPFoE

Нет. Операции 354

Я экспортировал в CSV, и отсортировали его по "Х" это число каждый раз, когда они получили какие-то средства. Выходной у меня будет 365.

Я смущен об этих цифрах. Не исключено, что общая сумма полученных средств выше в CSV, чем в Техас.

Не уверен, что я здесь отсутствует.

Кстати, я хотел заставить людей пожертвовать больше.

+687
awang farezz 11 нояб. 2016 г., 13:25:59

Я работаю с биткоин кошелек приложение, используя Java и BitcoinJ. Приложение имеет пользовательские функции, такие как отображение баланса, проводок, адрес и вариант отправки. Он работал нормально, и вдруг, я получаю blockChainDownloadLocked игнорируя повторяющиеся просьбы об ошибке в приложении.

орг.bitcoinj.ядро.Пэр: 06/19/2017 16:26:28 - blockChainDownloadLocked(00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206): игнорирование дублируются запросу: 00000000076d710f40120e2f6693371bf6a7c4a9d149fb665664272a91dccf5a
орг.bitcoinj.ядро.Сверстников: 06/19/2017 16:26:28 - Ява.яз.Перекидным
 в орг.bitcoinj.ядро.Сверстников.blockChainDownloadLocked(сверстников.Ява:1446)
 в орг.bitcoinj.ядро.Сверстников.processInv(сверстников.Ява:1247)
 в орг.bitcoinj.ядро.Сверстников.метода processmessage(сверстников.Ява:489)
 в орг.bitcoinj.ядро.PeerSocketHandler.receiveBytes(PeerSocketHandler.Ява:182)
 в орг.bitcoinj.чистая.BlockingClient.runReadLoop(BlockingClient.Ява:122)
 в орг.bitcoinj.чистая.BlockingClient$1.запустить(BlockingClient.Ява:81)

Я использую IntellIJ и очистил кэш (аннулировать кэш/ перезагрузить ...) и удалил целевую папку, чтобы решить ее. Это не помогло. Позже, ввести в кэш папки в ОС Mac и удалить все внутри папки.

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

В чем проблема и как ее решить?

+680
Luke James 17 нояб. 2017 г., 2:13:05

Вы можете добавить часы-только адреса для вашего "онлайн создан холодные адреса" (который вы, вероятно, может считывать иронию в моей фразе).

биткоин-Кинк importaddress <myaddress> (это позволит произвести повторную проверку и, следовательно, занять несколько минут/часов)

После этого вы можете проверить свой баланс, как вы могли бы сделать с "нормального" адреса.

Чтобы потратить, вы могли бы использовать rawtransaction команду (это немного сложнее, см. здесь). С signrawtransaction вы можете использовать закрытый ключ (в формате, который создали его более bitaddress.org) в знак вашей сделки.

+659
netou 20 мая 2017 г., 5:44:13

От Лайткоин Вики:

Искривление времени ошибка[14]: биткоин сложность расчета по одному блоку, поэтому злоумышленник может повторно попытаться создать последний блок каждого перенацелить окно, и использование готовых метка 2 часа в будущее, чтобы разница во времени с первого блока в перенацеливать окна высоко, тем самым снижая сложность на 0,5%. Потому, что ошибка, фиктивные метки времени не используются в качестве первого блока в следующем окне перенацелить, и поэтому 2 лишних часа не компенсировали в следующем расчете сложности. Еще трудность заключается в низком, злоумышленник может добыть много быстрых монеты, или в случае небольшого цепочку, злоумышленник с 51% хэш-мощности может уменьшить трудности в 1 моя новая вилка от генезис блока. Это не осуществимо атаку на биткоин, потому что вероятность генерации последнего блока раз в 2 недели на таком высоком трудностей незначителен. Хотя устранить эту проблему в Bitcoin можно, это должно быть сделано тщательно (путем добавления правил, которые поощряют узлы для модернизации с течением времени), поэтому, чтобы избежать цепной вилки, т. е. старым клиентам, кто не может работать с другой сложностью, и, следовательно, не согласен в отношении того, какие блоки являются допустимыми. В Лайткоин эта ошибка исправлена

"Не-на-один" или деформация времени ошибка вызвана тем, что алгоритм расчета сложности не используя перекрывающиеся периоды, в течение первых пересчета он использует блоки 1 до 2016 года, а второй его использует блоки 2017 году-до 4032.

Только это не проблема вовсе, но как протокол имеет некоторые надбавки за разницы во времени между узлами это дает возможность понизить сложность ковки блоков с временным разрешением в будущем.

Алгоритм использует t(2016) - Т(1) для расчета скорости сети, если заблокировать 2016 создана с меткой времени 2 часа в будущем (максимальный допустимый протокол), то трудности будут на 0,5% ниже того, каким он должен быть.

Если потом заблокировать 2017 найден и времени реального (Т(2017) может быть меньше, чем T(2016)) после дополнительного времени добавлены в блок 2016 не будет компенсировано в следующем перерасчет, как если бы для блока 2 Б / Т(4032) - Т(2016) чтобы найти скорость.

Более подробная схема атаки может быть найден в: https://bitcointalk.org/index.php?topic=43692.msg521772#msg521772

+612
Papa Solo 23 окт. 2011 г., 14:53:39
  1. Установщик Windows будет установить исполняемый файл в "программные файлы", создавать ярлыки и другие записи в реестре. Исполняемого точно, что просто исполняемый файл, чтобы запустить программу Электрум.
  2. Преимущества установщик Windows будет простота использования для тех, кто наиболее знакомы с установленными программами, плюс он будет доступен нескольким пользователям (независимо от того, что желаемое или нет, это другой вопрос). Преимущество Standalone-это не создать разделы реестра (уборщика), и не требуют, поднятые привилегии (а не установке в глобальном масштабе).

В любом случае - пользовательские данные будут сохранены в C:\Users\USERNAME\AppData\Roaming\Electrum

Есть некоторые подробности в этом блоге

+587
EMF 29 апр. 2019 г., 15:55:51

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

Что я сделал? Я просто использовать мой Трезор для генерации случайных чисел?

Я спрашиваю, потому что я потеряла свой ПИН-код, и я оставил свое семя восстановления на самом видном месте, так что я могу судить кого-то, возможно, видели его.

Это нормально, если я просто сотри мой Трезор; капля моего семени восстановления, PIN-код и пароль, и начать все сначала? Или, я потеряю больше (от начальной настройки), чем просто случайное число (и устройстве)?

+581
Kuashe 22 мая 2011 г., 8:00:52

Я сделал blockchain.info бумажник и я хочу получить личные ключи для моего адреса.

В моей старой blockchain.info бумажник, я мог бы найти секретные ключи, но в новом частном ключей не существует.

Можете ли вы помочь мне, пожалуйста ?

+556
TravisEz13 27 сент. 2017 г., 7:58:24

От биткоин Вики - спецификация протокола страница:

метода GetData

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

Грузоподъемность (максимальная длина полезных данных: 1,8 Мб или 50000 записей)

Я вижу смысл в коде, где клиент осуществляет 50000 ограничить запись. Но где же предел, как большая нагрузка? Это не предел отправки, это 1 Мб. (по умолчанию) это не предел, получаем, что 5 Мб.

Это Вики не так?

+526
gcharita 30 авг. 2015 г., 3:02:05

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

  • Получите: 10BTC
  • Для пользователя: 5BTC
  • Чтобы пользователь Б: 5BTC

Очевидно, я не могу отправить через "sendfrom" точно 5BTC, потому что он будет проводить что-то вроде 5.0005.

Мое первое решение было жестко .0005 плата и отправить сумму с вычтены плата. Но его далеко от совершенства и не отражают плата алго будущих изменений.

Так что лучшая практика для обработки такого рода сделок в данный момент?

Есть ли способ, чтобы спросить bitcoind, что плата будет за точную сделкой или сказать bitcoind, чтобы вычесть плату за отправку суммы?

+501
ELLIOTTCABLE 4 мая 2016 г., 15:31:53

Приобретая Данные

Здесь у вас есть два варианта:

  1. Ознакомьтесь с одним из поставщиков данных онлайн. Quandl предлагает (в основном) бесплатно, представлены исторические данные для различных пар и бирж. Кроме того, если у вас есть баксы, чтобы сэкономить, Coinigy предлагает высококачественные наборы данных для каждого месяца ценовая модель.
  2. Свернуть свой собственный агент данных, используя язык программирования на ваш выбор и различные API, доступных для обмена.

Я буду обсуждать два варианта ниже.


Получение данных от поставщика данных

Очевидно, этот вариант является наиболее удобным, однако также, возможно, самых дорогих, в зависимости от требуемого качества данных. также нет никакой гарантии, что обмен, пара и/или промежуток времени вы почувствуете настоящее время в базе данных.

Подведем итоги:

Про:

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

Минусы:

  • Заплатили данных является дорогостоящим для любителей (рыночных данных по coinigy на 30$ / месяц, на момент написания статьи)
  • Бесплатные данные часто предоставляются "как есть", оставляя вам очистить долга и пост-обработку
  • Если данные очищены, артефакты могут происходить без вашего ведома, отпуск с вашими результатами исследований.

Свертывать ваши собственные данные обходчика

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

  1. Выбрать обмен
  2. Выбрать API-интерфейс
  3. Крючок в API с помощью магии код
  4. Начать загрузку данных

Я буду ходить вас через необходимые шаги (без кода - мне кажется, это тема для другой клиент StackExchange; я, однако, связать вас с библиотеками, которые помогут вам начать работу).

1. Выбрать обмен

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

  • Убедитесь, что они имеют стабильные сервера и подключения (бирж в Азии, добраться из, например, Европы, то есть заведомо неустойчивое соединение). В противном случае вы будете иметь выбоины на всем протяжении вашего сведения, возможно, даже делает его бесполезным.
    • если вы совершенно требуется данные, рассмотреть аренду сервер ближе к месту расположения центра сервера Exchange.
  • Убедитесь, что они имеют значительный объем. Если есть только маленький объем смены владельцев в течение определенного периода времени (как правило, объем 24ч метрика всегда в наличии), в обмен, вероятно, не очень хороший выбор. Это исказить картину рынка.
  • Проверить свои поддержки клиентов первый. Если вам случится, чтобы потребовать свою помощь спустя некоторое время во время ползания, многие сотрудники службы поддержки могут сделать все различие. Кроме того, это дает вам небольшое представление о качестве обменного инфраструктуры.

2. Выберите API-интерфейс

Выбирая правильный интерфейс прикладного программирования (API-интерфейс) зависит от 2 вещей:

  1. Как зернистое вам нужны ваши данные,

и

  1. что с APIс биржи предлагают (очевидно).

API-интерфейс RESTс

Если ты не против, скажем, 1 минуту моментальные снимки данных (т. е. тикеры, order_books, торги и т. д.), запрашивает данные с помощью передачи репрезентативного состояния (REST) для API-интерфейса вполне достаточно. Это позволяет отправить в HTTP - запрос на определенный URL-адрес, и получите ответ, содержащий запрашиваемые данные (обычно в формате JSON-формате).

Удобная вещь, про остальные интерфейсы API заключается в том, что они функционируют в основном одинаковы для всех бирж - запросы отправляются, ответы, полученные данные и оценивать вас. Некоторые биржи требуют, чтобы вы использовать различные методы запроса (например, пост) вместо обычных сделать запросы; однако, это обычно требуется только для частных конечные точки (частная означая, что вы должны авторизовать себя, во-первых, до получения данных вашего счета, и т. д.), Так что если вы сразу после данных по рынку вы не сталкиваетесь с ними часто.

Ограничение остальные интерфейсы API заключается в том, что они обычно отличаются запросу предел. Наиболее часто встречаются ограничение составляет 60 запросов в минуту, но может быть более строгим (или более свободно биржами позволяет неограниченное количество запросов в минуту). Некоторые биржи также используют запросу счетчик - это означает, что определенные запросы увеличить свой ИС-подключен счетчик на определенную величину. В зависимости от вашего состояния на бирже этот счетчик уменьшается с течением времени по заранее определенной стоимости.

В дополнение к этому (если ты думаешь 'Ну, привет! Почему бы не получать данные каждую секунду, то?'), рыночные данные часто кэшируются. Снимок конечную точку API хранится на определенный промежуток времени, прежде чем на самом деле обновляется на сервере. Таким образом, вы можете отправить запрос каждую секунду, но тем не менее получают одинаковые данные до тех пор, пока кэш-сервера обновляется.

В WS API-интерфейсс

С WebSocket (протокол WS) и WebSocketSecure (ВСС) API для полнодуплексных соединений, которые позволяют пользователю получать близком к реальному времени обновления одного или нескольких API для конечных точек, на которые они подписались. Полный дуплекс означает, что вы можете не только получать, но и отправлять данные через WebSocket - соединение. Это преимущественно полезно, когда работает бот, который должен торговать от вашего имени, в качестве обратной связи, как правило, быстрее.

В принципе, вы открываете подключение к спецификации WS API, а также подписаться на конечных точек, данные по. Как правило, это отделяется точка и пара, но не забудьте проконсультироваться с API и документация - некоторые биржи не используют канал подписка модель, и сведения всплывают без всяких дополнительных настроек.

Реализация вебсокетовs колебается от тривиальных до сложных, поэтому стоит ожидать, чтобы сделать некоторые исследования о том, как получить доступ к некоторым из бирж в WS API-интерфейсы. Хотя принцип остается одинаков для всех из них, многие биржи используют разные протоколы и/или услуг, чтобы предоставить свои данные - например, ПУВР протокола и толкателя, которые добавляют дополнительный уровень сложности, поскольку они требуют определенного клиента для подключения.

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

API исправлениес

В обмен финансовой информацией (фиксировать) протокол - это стандарт началась в 1992 году, и сейчас широко используются институты и брокеры на финансовых рынках. Это гораздо менее доступен API-интерфейс на биржах, с даже меньше на самом деле отправка данных о рынке. Это наиболее часто используется на месте или отменить заказы (например, на CoinbasePro). Однако, некоторые биржи предлагают рыночные данные в реальном времени через Fix.

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

3. Подключиться к API, используя код

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

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

Есть много других библиотек там, вероятно, для любого языка (например BitEx для Python 3.х (впадая в некоторый стыд-меньше саморекламы), которая объединяет основных методов в различных остальных API иС, а также некоторые с WebSocket API ВС).

Будучи разработчиком на Python, я могу только рекомендовать его. Особенно если вы не привязаны к среде. С помощью запросов библиотеки, например, вы можете запросить обмен с легкостью:

запросы на импорт 

# Получить список всех пар активов в Kraken.com 
печати(запросы.вам('https://api.kraken.com/0/public/AssetPairs').формат JSON())

4.Начать загрузку данных

Как только вы создали ваши подлецы данных, вы должны освободить их! Я лично запускать остальные обходчик через хрон рабочих мест, и с WebSocket подлецы, как демоны. Но это зависит от вас.

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

Полезные Ссылки

Справочники по API

Источники Данных

Не стесняйтесь добавлять, исправлять или обновлять их содержание в комментариях ниже! Спасибо.

+465
attar 4 дек. 2011 г., 14:34:15

Могу ли я использовать кошелек, который я создал в blockchain.info с моим местным биткоин основной программы ?

Или другими словами, я могу передать Онлайн создан кошелек локально ? (при экспорте или что-то подобное)

+393
catrine19 1 авг. 2010 г., 12:15:59

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

  1. Сервер
    • Где еще можно разместить свой обмен? Ваш ноутбук?
  2. Специализированное устройство для хранения холодной

    • Каждый обмен должен холодном кошелька для хранения, чтобы гарантировать, что если вас взломают, вы не потеряете все ваши средства. -Холодный кошелька для хранения в основном специальное устройство, которое никогда не коснулся интернет. Это очень эффективное средство против вредоносных программ, поскольку нет никакого способа для вредоносных программ получить доступ к вашему компьютеру, если только хакер имеет доступ к вашему устройству.
  3. Специализированное устройство для вашего собственного узла

    • Вы определенно не хотите этого парня, который свой узел, чтобы поддельные входящий сделку и получить вам кредит им свободных денежных средств! Разместить свой собственный узел, который не будет tamlered с.
+247
jjjjj 20 нояб. 2011 г., 17:21:26

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

+233
AlyonaA 1 июл. 2010 г., 19:42:45

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

Что такое анализировать сделки? Какая защита от прослушивания делать?

+158
qoqosz 19 янв. 2011 г., 7:00:49

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

Например, если порог 0000 1000, пул может дать каждому пользователю порог 0100 0000, с 1000 раз меньше сложности. Затем каждый ОАС 1000 добывают акции дадут один блок.

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

Каждое Шахтер дал те же трудности?

Это мощность майнинга клиента учитывается при назначении на работу?

+132
Ooopss 1 февр. 2013 г., 4:20:28

Я имею в виду что-то, где просто участие в децентрализованной сети дает вам почему-то монеты, и вы ничего не можете сделать последующий период (за исключением большего участия, конечно, при наличии нескольких компьютеров и IP-адресов, например), чтобы увеличить скорость достижения этих монет. На данный момент у меня совершенно нет мотивации чтобы оставить свой Bitcoin или Litecoin клиента, потому что он не дает мне ничего взамен за использование меня в качестве узла в этой сети хардкор шахтеров. Я предпочел бы найти некоторые способы, чтобы использовать его иногда только, когда мне нужно сделать некоторые операции (несколько раз в месяц, например). Я новичок в этой теме, но не навредить сети, когда много людей стали использовать его таким образом?

+126
daylan123 23 мар. 2010 г., 3:56:29

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

Почему Сатоши Накамото выбрать для супер-дорогих (в циклах электричество и процессора) доказательства работы?

Я думаю, что этих причин:

  • Доказательства работы занимает много времени, что означает, что блоки занимают время. (Но в наше время это недостаток?)
  • Шахтерам выплачиваются по Пау. (Но это не может работать в мульти-Паксос среде, где в основном все шахтеры хочу стать лидером для следующего раунда?)
  • Для проверки работы цепи по-прежнему будет работать, если сеть netsplits на две части. Это позволит создать отдельные блоки в каждом тайме по сети, по сути, является проблемой, когда две половинки снова вместе (потому что тогда одна из двух цепей отбрасывается, что, если netsplit потребовалось несколько минут, прежде чем исцеление, означает, что люди и внешних систем, возможно, действовала исходя из их сейчас-неверный баланс.)

Очевидно, что эти мотивы не достаточно хороши. Так что реальных причин не существует, чтобы использовать доказательства работы над многосторонним Паксос или другой "классический" решение проблемы византийских генералов?

+109
Nina Ambrose 25 окт. 2013 г., 23:33:21

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

Это не действует. Что сайт ничего не проверить. Он просто проверил, есть ли что-то в поле scriptWitness, и если бы был, он был отмечен как подписанный. Что галочка не означает, что она действует.

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

64: неимперативные-скрипт-проверить-флаг (подписи должны быть равны нулю для не удалось проверить(мульти)сиг операции)

обычная ошибка: неверная подпись.

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

+102
Regish 4 июн. 2015 г., 4:44:38

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

Вы не указываете, какие именно приложения вы беспокоитесь об ускорении. В нижнем блоке задержки приема можно подключиться к общественной сети волокна Мэтта. См http://bitcoinfibre.org/public-network.html

+86
jfedick 20 сент. 2019 г., 9:01:08

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

+66
Najib jamshidi 29 дек. 2015 г., 16:30:30

"Работа" горно состоит из поиска "выход" в список операций. Шахтеры бросают в "бонус" сделки платить себе в качестве вознаграждения за решение проблемы. Но только если они решают свои задачи "достаточно быстро" они на самом деле платят. (Другие люди решают свои собственные проблемы, и есть только один глобальный победитель в блок. Как только будет определен победитель, все начинается снова на следующий блок)

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

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

С другой стороны, "Соло Шахтер" не имеет "присвоен блоки". Он создает свою собственную проблему (дает выигрыш к себе). Если он перестает работать над этой проблемой, он не платит. Только человек, который решит проблему (достаточно быстро) могут получить зарплату.

+52
Vayama 18 мая 2014 г., 1:30:41

Я провожу исследование о сравнении между Bitcoin, Litecoin и пульсации (я думаю о смене его на догикоины). Одним из критериев сравнения конфиденциальности. Мне нужна информация о том, что, например, об алгоритмах шифрования, которые используются в каждой валюте, любая помощь, пожалуйста?

+22
Aly Sutherlin 23 мая 2017 г., 13:41:36

Показать вопросы с тегом

$200 cialis coupon 10 mg tadalafil generic 5 mg cialis over the counter at walmart best price for tadalafil 20 mg buy cialis buy cialis generic tadalafil buy cialis online buy cialis online without script buy tadalafil buy tadalafil online canadian cialis online pharmacy canadian pharmacy cialis cheap cialis cheap cialis generic cialis cialis 20 mg best price cialis 20mg cialis 30 day sample cialis 30 day trial coupon cialis and alcohol cialis before and after cialis canada cialis canada pharmacy online cialis cost cialis coupon cialis coupons cialis coupons printable cialis dosage cialis dosage information cialis for daily use cialis for sale cialis free trial cialis free trial voucher for cialis cialis generic cialis generic release date cialis generic tadalafil cialis lowest price cialis online cialis online pharmacy cialis over the counter cialis over the counter at walmart cialis patent expiration date extended cialis picture testimonials cialis pills cialis price cialis prices cialis reviews cialis side effects cialis tadalafil cialis tadalafil 20 mg cialis vs viagra cialis vs viagra which is better cialis without a doctor's prescription cialis without doctor prescription cost of cialis cost of tadalafil generic at walgreens coupon for cialis by manufacturer does cialis lower blood pressure generic cialis generic cialis at walmart generic cialis canada generic cialis canada pharmacy generic cialis from india generic cialis tadalafil generic tadalafil generic tadalafil 20 mg is there a generic for cialis online cialis purchasing cialis on the internet side effects for cialis side effects for tadalafil side effects of cialis tadalafil tadalafil 20 mg tadalafil 20 mg canadian drug stores tadalafil 20mg tadalafil 20mg lowest price tadalafil 5 mg tadalafil 5mg tadalafil cost at walmart tadalafil dosage tadalafil generic tadalafil generic at walgreens tadalafil generic best prices tadalafil online tadalafil price tadalafil side effects tadalafil tablets tadalafil without a doctor's prescription viagra vs cialis viagra vs cialis vs levitra warnings for tadalafil $200 cialis coupon 10 mg tadalafil generic 5 mg cialis over the counter at walmart best price for tadalafil 20 mg buy cialis buy cialis generic tadalafil buy cialis online buy cialis online without script buy tadalafil buy tadalafil online canadian cialis online pharmacy canadian pharmacy cialis cheap cialis cheap cialis generic cialis cialis 20 mg best price cialis 20mg cialis 30 day sample cialis 30 day trial coupon cialis and alcohol cialis before and after cialis canada cialis canada pharmacy online cialis cost cialis coupon cialis coupons cialis coupons printable cialis dosage cialis dosage information cialis for daily use cialis for sale cialis free trial cialis free trial voucher for cialis cialis generic cialis generic release date cialis generic tadalafil cialis lowest price cialis online cialis online pharmacy cialis over the counter cialis over the counter at walmart cialis patent expiration date extended cialis picture testimonials cialis pills cialis price cialis prices cialis reviews cialis side effects cialis tadalafil cialis tadalafil 20 mg cialis vs viagra cialis vs viagra which is better cialis without a doctor's prescription cialis without doctor prescription cost of cialis cost of tadalafil generic at walgreens coupon for cialis by manufacturer does cialis lower blood pressure generic cialis generic cialis at walmart generic cialis canada generic cialis canada pharmacy generic cialis from india generic cialis tadalafil generic tadalafil generic tadalafil 20 mg is there a generic for cialis online cialis purchasing cialis on the internet side effects for cialis side effects for tadalafil side effects of cialis tadalafil tadalafil 20 mg tadalafil 20 mg canadian drug stores tadalafil 20mg tadalafil 20mg lowest price tadalafil 5 mg tadalafil 5mg tadalafil cost at walmart tadalafil dosage tadalafil generic tadalafil generic at walgreens tadalafil generic best prices tadalafil online tadalafil price tadalafil side effects tadalafil tablets tadalafil without a doctor's prescription viagra vs cialis viagra vs cialis vs levitra warnings for tadalafil blue chew viagra scam buy viagra buy viagra online buy viagra online canada pharmacy buy viagra online without script canada pharmacy viagra generic canadian pharcharmy online viagra canadian viagra canadian viagra without a doctor prescription cheap viagra cialis vs viagra cost of viagra female viagra female viagra pills free viagra free viagra samples generic viagra generic viagra 100mg generic viagra available generic viagra canada price generic viagra online pharmacy generic viagra sildenafil citrate generic viagra without a doctor prescription herbal viagra how does viagra work how long does viagra last how much does viagra cost how to take viagra for maximum effect i took viagra mom levitra vs viagra mom gives son viagra natural viagra natural viagra alternatives that work natural viagra substitute nizagara 100 mg vs viagra online viagra online viagra without subscription over the counter viagra real life viagra demonstration revatio vs viagra side effects of viagra sildenafil sildenafil 100mg sildenafil 20 mg sildenafil 20 mg tablet sildenafil 20 mg tablet vs viagra sildenafil citrate sildenafil citrate 100mg sildenafil citrate 20 mg sildenafil coupons sildenafil dosage sildenafil dosage recommendations sildenafil generic sildenafil side effects sophia viagra sophia viagra bikini sophia viagra hot stendra vs viagra stepmom gives son viagra viagra viagra 100mg viagra before after photo actual viagra boner viagra canada online pharmacy viagra coupon viagra coupons viagra coupons from pfizer viagra dosage viagra dosage recommendations viagra erection viagra erection after ejaculation viagra for men viagra for sale viagra for sale on amazon viagra for women viagra generic viagra generic availability viagra generic release date viagra in action viagra on line viagra online viagra online canada pharmacy viagra online pharmacy viagra patent expiration viagra pill viagra pills viagra porn viagra prank viagra prices viagra samples viagra sex viagra side effects viagra substitute viagra vs cialis viagra without a doctor prescription viagra without doctor prescription what is viagra when will generic viagra be available blue chew viagra scam buy viagra buy viagra online buy viagra online canada pharmacy buy viagra online without script canada pharmacy viagra generic canadian pharcharmy online viagra canadian viagra canadian viagra without a doctor prescription cheap viagra cialis vs viagra cost of viagra female viagra female viagra pills free viagra free viagra samples generic viagra generic viagra 100mg generic viagra available generic viagra canada price generic viagra online pharmacy generic viagra sildenafil citrate generic viagra without a doctor prescription herbal viagra how does viagra work how long does viagra last how much does viagra cost how to take viagra for maximum effect i took viagra mom levitra vs viagra mom gives son viagra natural viagra natural viagra alternatives that work natural viagra substitute nizagara 100 mg vs viagra online viagra online viagra without subscription over the counter viagra real life viagra demonstration revatio vs viagra side effects of viagra sildenafil sildenafil 100mg sildenafil 20 mg sildenafil 20 mg tablet sildenafil 20 mg tablet vs viagra sildenafil citrate sildenafil citrate 100mg sildenafil citrate 20 mg sildenafil coupons sildenafil dosage sildenafil dosage recommendations sildenafil generic sildenafil side effects sophia viagra sophia viagra bikini sophia viagra hot stendra vs viagra stepmom gives son viagra viagra viagra 100mg viagra before after photo actual viagra boner viagra canada online pharmacy viagra coupon viagra coupons viagra coupons from pfizer viagra dosage viagra dosage recommendations viagra erection viagra erection after ejaculation viagra for men viagra for sale viagra for sale on amazon viagra for women viagra generic viagra generic availability viagra generic release date viagra in action viagra on line viagra online viagra online canada pharmacy viagra online pharmacy viagra patent expiration viagra pill viagra pills viagra porn viagra prank viagra prices viagra samples viagra sex viagra side effects viagra substitute viagra vs cialis viagra without a doctor prescription viagra without doctor prescription what is viagra when will generic viagra be available $200 cialis coupon 10 mg tadalafil generic 5 mg cialis over the counter at walmart best price for tadalafil 20 mg buy cialis buy cialis generic tadalafil buy cialis online buy cialis online without script buy tadalafil buy tadalafil online canadian cialis online pharmacy canadian pharmacy cialis cheap cialis cheap cialis generic cialis cialis 20 mg best price cialis 20mg cialis 30 day sample cialis 30 day trial coupon cialis and alcohol cialis before and after cialis canada cialis canada pharmacy online cialis cost cialis coupon cialis coupons cialis coupons printable cialis dosage cialis dosage information cialis for daily use cialis for sale cialis free trial cialis free trial voucher for cialis cialis generic cialis generic release date cialis generic tadalafil cialis lowest price cialis online cialis online pharmacy cialis over the counter cialis over the counter at walmart cialis patent expiration date extended cialis picture testimonials cialis pills cialis price cialis prices cialis reviews cialis side effects cialis tadalafil cialis tadalafil 20 mg cialis vs viagra cialis vs viagra which is better cialis without a doctor's prescription cialis without doctor prescription cost of cialis cost of tadalafil generic at walgreens coupon for cialis by manufacturer does cialis lower blood pressure generic cialis generic cialis at walmart generic cialis canada generic cialis canada pharmacy generic cialis from india generic cialis tadalafil generic tadalafil generic tadalafil 20 mg is there a generic for cialis online cialis purchasing cialis on the internet side effects for cialis side effects for tadalafil side effects of cialis tadalafil tadalafil 20 mg tadalafil 20 mg canadian drug stores tadalafil 20mg tadalafil 20mg lowest price tadalafil 5 mg tadalafil 5mg tadalafil cost at walmart tadalafil dosage tadalafil generic tadalafil generic at walgreens tadalafil generic best prices tadalafil online tadalafil price tadalafil side effects tadalafil tablets tadalafil without a doctor's prescription viagra vs cialis viagra vs cialis vs levitra warnings for tadalafil