Каков наилучший способ получения исходного адреса биткойн-транзакции?

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

  1. Найдите входную транзакцию и прочитайте там соответствующий выходной адрес (например: Как узнать отправителя транзакции )
  2. Преобразование открытого ключа в scriptSig в адрес (например: Почему gettransaction сообщает мне только адрес получения? )

Является ли один из них предпочтительнее другого?

Обычно отправители даже не знают, какие адреса они могут использовать для отправки. Некоторое программное обеспечение кошелька может позволять опытным пользователям специально выбирать, какой адрес отправки использовать, но это ненормально. Какую информацию вы надеетесь обнаружить, используя адрес отправки?
@GregHewgill Я думаю об онлайн-сервисах, которые возвращают биткойны на исходный адрес, например SatoshiDice.

Ответы (2)

«Исходный адрес» не является допустимой концепцией в биткойнах.

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

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

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

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

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

scriptSig содержит открытый ключ, который принадлежит исполнителю выходной транзакции и доказывает, что создателю разрешено выкупать выходное значение.

Итак, вы хотите проверить указанный вывод, если ищете исходный адрес.