Биткойн API (ы) - как соединить (или получить) ОБА адреса отправителя и получателя с идентификатором транзакции (хэшем)

Существуют различные обозреватели блоков, которые предлагают REST API. До сих пор использовал blockchain.info и btc.com

Вот что у нас есть:
- Список биткойн-адресов

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

Теперь вот что нам нужно получить :
- ДРУГОЙ (от/до) адрес!

Итак:
как вы можете использовать идентификатор транзакции для получения ОБА адреса кошелька отправителя и получателя - желательно с помощью какого-либо REST API?

(... зная, что иногда идентификаторы транзакций связаны с несколькими входами и несколькими выходами)

Ссылки на конечные точки :
https://blockchain.info/q
https://btc.com/api-doc

Ответы (3)

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

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

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

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

На BTC : поле сценария подписи --- "script_hex", поле сценария публичного ключа --- адреса:
ЭТО НЕ АДРЕС ОТПРАВИТЕЛЯ! Предположим, что Алиса вносит биткойны на биржу, а затем Билл просит биржу заплатить Чарли. Если биржа использует монеты, депонированные Алисой, «адрес отправителя» будет адресом депозита Алисы, даже если Билл является отправителем. При отправке на этот адрес будет указана Алиса, а не Билл.
Что вы имеете в виду под словом "ЭТО"?
Адрес, который вы получите, если выполните описанную выше процедуру. На самом деле это адрес получателя транзакции, которая финансировала кошелек, совершивший платеж, который не всегда является адресом отправителя. См. мой пример выше.
Спасибо за понимание: «Вы можете получить адрес кошелька отправителя из открытого ключа» - какой-либо предлагаемый метод или пример?
@Maz Bitcoin не имеет понятия «адрес отправителя». Если вы хотите знать, кто вам заплатил, указывайте разные адреса для каждого счета/ожидаемого платежа. Если вы хотите иметь возможность возвращать деньги людям, попросите их указать адрес для возврата, прежде чем они заплатят вам. Не угадывайте адрес отправителя на основе транзакции; информации там нет.

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

и чтобы узнать адрес отправителя, вам нужно просканировать Vin txid и сопоставить адрес Vout с параметрами «vout» и «n» необработанной транзакции , которая будет вашим адресом отправителя. Вы можете проверить ссылку , которая покажет вам, как это делается в python 2.7.