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

Я использовал данные, которые поступают от https://github.com/bitcoin/bips/blob/master/bip-0143.mediawiki#p2sh-p2wpkh. Это легко узнать, как получить sigHash. Но когда я пытаюсь восстановить открытый ключ, все от меня ожидали.

И мой вопрос

  1. Сообщение должно быть подписано не 64f3b0f4dd2bb3aa1ce8566d220cc74dda9df97d8490cc81d89d735c92e59fb6?
  2. Если сообщение 64f3b0f4dd2bb3a...59fb6, ничего плохого в моем коде?

Мой код

импорт уровнем

из алгоритма ECDSA.импорт уровнем int_to_string, string_to_int
от импорта binascii hexlify

прик = "eb696a065ef48a2192da5b28b694f87544b30fae8327c4510137a922f32c6dcf"
прик = байт.fromhex(прик)

pubk = "03ad1d8e89212f0b92c74d23bb710c00662ad1470198ac48c43f7d6f93a2a26873"

сиг = '3044022047ac8e878352d3ebbde1c94ce3a10d057c24175747116f8288e5d794d12d482f0220217f36a485cae903c713331d877c1f64677e3622ad4010726870540656fe9dcb'
сиг = байт.fromhex(сиг)

raw_msg = "64f3b0f4dd2bb3aa1ce8566d220cc74dda9df97d8490cc81d89d735c92e59fb6"
raw_msg = байт.fromhex(raw_msg)

попробуйте:
 по умолчанию = по алгоритму ECDSA.VerifyingKey.from_public_key_recovery(
 подпись=сиг данных=raw_msg, кривой=уровнем.кривые.Кривая secp256k1, sigdecode=уровнем.утиль.sigdecode_der)
 печати([hexlify(паб.to_string()) для паба в умолчанию])

за исключением исключений, как е:
 поднять е

деф check_recovery(паб):

 padx = (б'\0'*32 + int_to_string(паб.умолчанию.точка.х()))[-32:]
 если паб.умолчанию.точка.г() & 1:
 УП = Б'\3'+padx
другое:
 УП = Б'\2'+padx

 возвращение hexlify(СК)

список = [check_recovery(P) для P в умолчанию]
печать(списки)
печати([л == pubk для L в списки])

То, что я получил, был: ['519e33c6b146628b4010ae2b56aa9127ae9b795c82df021979436296daf4cceac17eb495101c3c15011e9d5a08163122054ad375730ee2e219504540eb658211 b', 'd28ba1b718b542f52fe42b51635850b5900f111affbbdcbb63465e9a3dd79ffb80251268ba8d5b5ba4aaec8a682145af51b87bd7c7ab9e956895d31db24c4d4b b'] [б'03519e33c6b146628b4010ae2b56aa9127ae9b795c82df021979436296daf4ccea', '03d28ba1b718b542f52fe42b51635850b5900f111affbbdcbb63465e9a3dd79ffb б'] [Ложное, Ложное]

Что я пропустил?

+395
jayfer 29 мая 2010 г., 18:47:52
15 ответов

Рассмотрим сценарий, в котором 5 держателей криптовалют хотим создать партнерство. Их все добавить деньги в бумажник, чтобы финансировать идею. Кошелек делится между всеми партнерами для просмотра и пополнения, но для того чтобы вывести, все 5 (или, возможно, большинство 4/5) должен посмотреть предлагаемая сделка даст какое-то разрешение. Есть криптовалюты, которые могли бы соответствовать описанному выше сценарию?

+988
Dr Anonymous 03 февр. '09 в 4:24

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

Это условие проверяется каждый одноранговой P2P-сети для ретрансляции транзакций и блоков, содержащих операции не соблюдая это условие будет отклонена в рамках правил консенсуса.

Поэтому невозможно, чтобы "сорить деньгами" создавая больше денег, чем у вас ; но там была одна пресловутая ошибка, когда это не было доказано: значение переполнения инцидента.

+943
thgie 12 мая 2011 г., 15:20:29
Другие ответы

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


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

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

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

+829
n8d 26 июн. 2011 г., 12:30:34

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

+671
Reny C Martina 4 сент. 2017 г., 14:17:33

У меня есть исследования на молнии сети, и хотя я понимаю концепцию, я не понял следующее: Предположим, что сетевой канал открыт между сторонами и все операции были завершены успешно (никаких отмен). Для баланса сделки "убежать" сетевой канал, будет подтверждение от сети (то есть сети как сейчас) все-таки необходимо?

В качестве примера: Джон дает Нейтан 0.20 БТЦ (транзакции внутри сети освещения) - никаких комиссий:идеальное - Натан хочет отправить 0.20 BTC на бирже - подтверждение от сети потребуется, верно?

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

+630
Timothy Johnson 3 нояб. 2016 г., 20:52:04

Как использовать Bitcoin API в мой код или как интегрировать его в мой код ? это требуется какой-то заряд ?

+599
Joker BRO 19 июл. 2010 г., 23:15:28

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

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

+544
Olly Campbell 5 сент. 2013 г., 10:08:00

В библиотеке есть папка документация, а также примеры загрузки! Вы всегда должны проверить эти первые :-)

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

Во-первых, при регистрации, вы всегда нужны TransactionOutput доступен.

Поскольку вы предоставили scriptPubKey ненароком, я написал следующее, которые должны работать, если вы замените свой закрытый ключ. Как правило, эти запросы делаются с использованием API/экземпляр bitcoind и т. д.

Для non-segwit сделках, вы можете просто хранить в scriptPubKey (заметьте, я просто использовать 0 на сумму в TxOut), но для segwit, вы должны заполнить правильно количество.

использовать BitWasp\биткоин\скрипт\ScriptFactory;
использовать BitWasp\биткоин ключ\PrivateKeyFactory\;
использовать BitWasp\биткоин\операции\TransactionFactory;
использовать BitWasp\биткоин\операции\Фабрика\подписанта;
использовать BitWasp\биткоин\операции\минус;
использовать BitWasp\биткоин\Utxo\Utxo;
использовать BitWasp буфера\Buffertools\;
использовать BitWasp\биткоин\операции\TransactionOutput;

/** @VAR в Utxo[] $utxos */
$utxos = использование array_map(функция (массив $utxo) {
 список ($txid, $Uвых, $scriptPubKey) = $utxo;
 возврат новый Utxo(новый минус(буфер::ведьма($txid, 32), $Uвых), новый TransactionOutput(0, ScriptFactory::fromHex($scriptPubKey)));
}, [
 ['459eee043d30b29c4f9e9b3b55af78f5b4fe4bd818bee49a4b75becd6422ae14', 0, '76a91458b6e991b45487df810f4d96d5315da739637f1788ac'],
 ['621c6b92cc2c68b18fef3a90a3284d1263ea43e0cbce21d9ef6f51747bd215ec', 0, '76a91458b6e991b45487df810f4d96d5315da739637f1788ac'],
 ['92a271c568aea34c3e2661db9b8fc7f0d82d90065db1b6eed1c124146ef77898', 0, '76a91458b6e991b45487df810f4d96d5315da739637f1788ac'],
 ['99c43b144adb6d114180c11f26bc08264c806b355d96a824891ab0831c7facfd', 0, '76a91458b6e991b45487df810f4d96d5315da739637f1788ac'],
]);

$прив = PrivateKeyFactory::fromWif('yourprivkeyhere');
$Хекс = '010000000414ae2264cdbe754b9ae4be18d84bfeb4f578af553b9b9e4f9cb2303d04ee9e45000000001976a91458b6e991b45487df810f4d96d5315da739637f1788acffffffffec15d27b74516fefd921cecbe043ea63124d28a3903aef8fb1682ccc926b1c62000000001976a91458b6e991b45487df810f4d96d5315da739637f1788acffffffff9878f76e1424c1d1eeb6b15d06902dd8f0c78f9bdb61263e4ca3ae68c571a292000000001976a91458b6e991b45487df810f4d96d5315da739637f1788acfffffffffdac7f1c83b01a8924a8965d356b804c2608bc261fc18041116ddb4a143bc499000000001976a91458b6e991b45487df810f4d96d5315da739637f1788acffffffff0336150000000000001976a9141485d9d03b41aaa9dca7d70d7f63ff4a0826100e88ac00000000000000001e6a1c246698efc5d81b78ceadf3179316b5eb6cc5c2c347c0b7b42121a94e92180000000000001976a91458b6e991b45487df810f4d96d5315da739637f1788ac00000000';
$ТХ = TransactionFactory::fromHex($шестигранные);
$подписанта = новый подписанта($Техас);
по каждому элементу ($utxos как $я => $utxo) {
 $синьора->знак($Я, $з, $utxo->то getoutput());
}

$подпись = $синьора->получить();

Эхо $подпись->getHex() . PHP_EOL;
+476
redbella 3 мая 2017 г., 14:23:19

Да.

Если ваш кошелек не поддерживает это, вы можете использовать https://cashaddr.bitcoincash.org для преобразования старых адресов на новые адреса, и отправить по новым адресам.

+398
statenjason 11 мар. 2017 г., 13:49:24

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

Я купил биткойны в банкомате и платить 10% премии. Я скачал бумажник мицелия на моем iPhone и я заметил, что сборы с ума. В настоящее время минимальная плата составляет 12,68$, и если я хочу, чтобы отправить больше суммы взноса составляет 15%! Я думаю, эти сборы просто чистое безумие. Я в настоящее время смотрю разные сайты, но я не знаю, какой из них лучший. Есть так много там.

Не могли бы вы помочь новичкам купить биткойны?

+318
Jorgefilemon 26 мая 2015 г., 8:32:59

Закрытый ключ-это число, и вспомнил, как такового. Он может быть создан думала, что различных средств (как HD-кошельки, детерминированные поколение, от BIP39 семян, или случайно). Он обычно хранится как 32-байтовый массив.

Закрытым ключом, затем преобразуется в публичный ключ. Это требует сложной математической операции, и результаты в пару координат на эллиптической кривой. Это обычно хранится в 33-байт или 65-байтовый массив.

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

Закрытый ключ никогда не покидает ваш компьютер/бумажник/приложение. Адрес общественности.

+310
Kalyan 20 дек. 2018 г., 8:47:48

Не без помощи ВСН Шахтер. В принципе нет никакого способа, чтобы претендовать на эти монеты под Биткоин деньги, так как они спороть все изменения SegWit до разветвления.

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

+146
Mohammad Yousuf 19 мая 2015 г., 18:22:16

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

Почему бы вам когда-нибудь купить биткоин выше цена добычи?

Я слышал разные оценки, сколько стоит моя биткоин.

Один ответ по этой теме на quoara предполагает затраты на электричество около 400$ (это с конца августа 2017 года).

Источник: https://www.quora.com/How-much-does-it-cost-to-mine-1-Bitcoin-in-the-US

Скажем, с инвестиций в оборудование и повышенной трудности он сейчас стоит 1000$ или даже 2000$ помоему биткоин.

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

Не стоит цена на биткоин будет очень тесно привязана к цене производства биткоин?

+136
Cordon Green 30 окт. 2019 г., 13:46:51

Я где-то читал, что биткоин может обрабатывать только 7 транзакций в секунду. Это работает для операций 604,800 в день. В настоящее время визовые процессы около 1700 операций в секунду (и может обрабатывать гораздо большее количество, чем это). Это означает, что система Bitcoin может обрабатывать менее 1/200 токового выхода обработку.

Это правильно? Мне трудно поверить, что так много людей будут покупать в систему, которая настолько неэффективна / отрогам.

Кроме того, если мое предположение верно, то предположим, что есть (в среднем) 700 транзакций в секунду в течение определенного периода 10 мин (я.е, в 70 раз максимальная выходная частота) это значит нам придется подождать 70 * 10 мин. Для всех этих операций должны быть подтверждены? Если да, то почему не может какой-то злой актер завалят (я.е отложить) система отправляя тысячи мелких операций в сети?

Спасибо заранее

+111
user45978 3 авг. 2012 г., 15:36:01

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

Предположим, Давид посылает Алисе сумма в виде двух выходов, output0: 10 биткоинов и выход1: 20 биткоинов в той же транзакции. Теперь Алиса хочет передать 5 биткоина к Еве. Элис нужно потратить всего 30 биткоинов, путем перечисления 5 в Еву и оставшиеся 25 сама?

Или она может выбрать любого из выходных например output0: 10, передача 5 биткоинов в Еву и изменения 5 биткоинов для себя? Если это так, как это отслеживается, так как хэш транзакции Давида могут быть использованы, чтобы провести выход1: 20 биткоинов.

+80
Irina 15 февр. 2016 г., 2:56: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