Отслеживание потоков биткойн-фондов при наличии нескольких входных и выходных адресов

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

Например, данные транзакции выглядят так

      Hash        Input_Addresses        Output_Addresses      Input_Amounts      Output_Amounts
a77c56410e71...  [Address1, Address2]   [Address3, Address4]  [0.5BTC, 1.5BTC]  [1.1BTC,  0.9BTC]

В этой транзакции было два входа и два выхода. Address1 заплатил 0,5 BTC и Address2 заплатил 1,5 BTC. Address3 получил 1,1 BTC, а Address4 получил 0,9 BTC.

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

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

Соответствующий bitcoin.stackexchange.com/questions/450/…

Ответы (2)

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

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

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

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

Между входами и выходами нет однозначной связи.

«Биткойны перерабатываются с каждой тратой».

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

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