Postawy teoretyczne

Bo warto wiedzieć o co w tym wszystkim chodzi.

W celu zrozumienia typów transakcji zostaną najpierw przedstawione podstawowe reguły nimi rządzące

  • Każda osoba może mieć wiele portfeli, a każdy portfel może składać się z wielu adresów.
  • Tylko niezerowa liczba bitcoinów może być przesyłana z jednego adresu na drugi.
  • Każda transakcja składa się z dwóch stron: wejściowej i wyjściowej. Strona wejściowa wskazuje skąd pochodzą bitcoiny wchodzące w skład danej transakcji, natomiast strona wyjściowa pokazuje, dokąd są one wysyłane.
  • Adresy znajdujące się po stronie wejściowej muszą posiadać wystarczającą liczbę bitcoinów dla danej transakcji. Nie ma możliwości przesłania z danego adresu większej liczby bitcoinów niż jest w jego posiadaniu.
  • Cała kwota znajdująca się na adresach wejściowym musi zostać wydana w pojedynczej transakcji. Przy czym po stronie wyjściowej może znajdować się ten same adresy co po stronie wejściowej.
  • Większość transakcji znajdująca się w łańcuchu bloków zawierają opłatę transakcyjną.
  • Liczba bitcoinów znajdujących się po stronie wejściowej transakcji musi być równa liczbie bitcoinów znajdujących się po stronie wyjściowej transakcji powiększonej o ewentualną opłatę transakcyjną.
Należy pamiętać, że przeniesienie bitcoinów z jednego adresu na inny nie musi oznaczać przekazania środków do innej osoby. Może mieć miejsce sytuacja, gdy ten sam właściciel przekazuje środki w ramach swojego portfela (z jednego adresu na drugi) lub na swój inny portfel.
Transkacja 1 --> 1
Schemat transakcji 1 --> 1

Transakcja posiadająca jeden adres po stronie wejściowej i jeden adres po stronie wyjściowej. Jest to transakcja stosunkowo rzadko występują w łańcuchu bloków, polega na przekazaniu wszystkich środków znajdujących się pod jednym adresem na inny z uwzględnieniem ewentualnej opłaty transakcyjnej.

Przykładowa transakcja
Tabela transakcji 1 --> 1

Przed transakcją adres A (kończący się ciągiem …KTzy) dysponuje kwotą 0.01098 BTC. Podczas transakcji całość środków, pomniejszona o opłatę transakcyjną w wysokości 0.00000691 BTC, zostaje przekazana na adres B (...JhyS). Po transakcji adres B dysponuje kwotą 0.01097309 BTC.


Transkacja 1 --> 2

Transakcja posiadająca jeden adres po stronie wejściowej i dwa adresy po stronie wyjściowej. Jest to jedna z najczęstszych transakcji występujących w łańcuchu bloków. Polega na przekazaniu wszystkich środków znajdujących się pod jednym adresem na dwa inne adresy z uwzględnieniem ewentualnej opłaty transakcyjnej. Najczęściej jeden z adresów wyjściowych jest adresem na które następuje pewna płatność, drugi adres stanowi natomiast miejsce, na które zwracana jest reszta (ang. change). W zależności od tego czy dany portfel umożliwia przesłanie reszty na adres wejściowy, czy też za każdym razem generowany jest nowy adres na który trafia reszta, mamy do czynienia z dwoma scenariuszami dla tego typu transakcji.

Schemat transakcji 1 --> 2

Scenariusz z przekazaniem reszty na adres wejściowy został zaprezentowany na ninijszym schemacie.

Przykładowa transakcja
Tabela transakcji 1 --> 2

Przed transakcją adres A (..V99F) dysponuje kwotą 0.49299667 BTC. Podczas transakcji część środków w wysokości 0.0416 BTC zostaje przekazana na adres B (…Luo2), natomiast pozostała część w wysokości 0.45089667 BTC powraca na adres wejściowy A. Powstała różnica w wysokości 0.0005 BTC została wydana na opłatę transakcyjną.

Schemat transakcji 1 --> 2

Natomiast scenariusz z przekazaniem reszty na nowy adres został przedstawiony na ninijszym schemacie.

Przykładowa transakcja
Tabela transakcji 1 --> 2

Przed transakcją adres A (…TwUg) dysponuje kwotą 89.5676286 BTC. Podczas transakcji część środków w wysokości 89.38738 BTC zostaje przekazana na adres B (…RsQ8), a druga część w wysokości 0.18 BTC zostaje przekazana na adres C (…jq6j). Kwota w wysokości 0.0002486 BTC została przeznaczona na opłatę transakcyjną.


Transkacja n --> m

Transakcja posiadająca kilka adresów po stronie wejściowej i kilka adresów po stronie wyjściowej. Polega ona na przekazaniu wszystkich środków znajdujących się pod adresami wejściowymi dna dresy wyjśicowe z uwzględnieniem ewentualnej opłaty transakcyjnej.

Schemat transakcji n --> 1

Jako pierwszy przykład transakcji tego typu jest transakcja posiadająca kilka adresów po stronie wejściowej i tylko jeden adres po stronie wyjściowej. Transakcja ta polega na przekazaniu środków z różnych adresów wejściowych na jeden nowy adres wyjściowy. Jest to transakcja konsolidująca i została przedstawiona na niniejszym schemacie.

Przykładowa transakcja
Tabela transakcji n --> m

Przed transakcją adresy wejściowe (..jq6j, …Awzn, …, …3VJf) dysponują sumaryczną kwotą 4.6317288 BTC. Podczas transakcji wszystkie środki z tych adresów zostają przekazane na adres wyjściowy (…R7kR), przy opłacie transakcyjnej w wysokości 0.0017288 BTC.

Schemat transakcji n --> m

Innym przykładem transakcji tego typu jest transakcja posiadająca dwa adresy wyjściowe. Sytuacja ta odpowiada najczęściej scenariuszowi, gdy użytkownik chce dokonać płatności z kilku swoich adresów na adres odbiorcy, a reszta trafia na nowy adres wyjściowy użytkownika.

Przykładowa transakcja
Tabela transakcji n --> m

Przed transakcją adresy wejściowe (...mU70, …8tbn, …, …LUbG) dysponują sumaryczną kwotą 1.41353384 BTC. Podczas transakcji część środków w wysokości 1.40111321 BTC zostaje przekazana na adres wyjściowy X (…nNYG), a część 0.01000463 BTC zostaje przekazana na adres wyjściowy Y (...kvdg) i stanowi resztę transakcji, przy opłacie transakcyjnej w wysokości 0.002416 BTC.

Schemat transakcji n --> m

Jeszcze innym przykładem transakcji tego samego typu jest transakcja posiadająca zarówno wiele adresów po stronie wejściowej i wiele adresów po stronie wyjściowej. Jest to transakcja najczęściej dokonywana nie przez pojedynczych użytkowników, lecz przez serwisy obsługujące znaczne liczby transakcji na przykład giełdy i kantory kryptowalut. Głównym celem przeprowadzania takich transakcji jest oszczędność na opłatach transakcyjnych.

Przykładowa transakcja
Tabela transakcji n --> m

Przed transakcją adresy wejściowe (…WB6o, ...oggM, ..., ...d317X) dysponują sumaryczną kwotą 35.56430611 BTC. Podczas transakcji środki zostają rozdysponowane na adresy wyjściowe (...Hv9d, ...CTCE, ..., ...Z99a), przy opłacie transakcyjnej w wysokości 0.0005 BTC.

Schemat transakcji n --> m

Jeszcze innym przykładem transakcji typu n --> m jest transakcja posiadająca wiele adresów po stronie wyjściowej i tylko jeden adres po stronie wejściowej. Jest to transakcja najczęściej dokonywana przez pojedynczych użytkowników, chcących oszczędzić na opłatach transakcyjnych (wówczas liczba adresów wyjściowych jest relatywnie mała - kilka) lub duże podmioty takie jak giełdy czy kantory przekazujące środki z jednego ze swoich adresów na adresy swoich użytkowników (wówczas liczba adresów wyjściowych jest stosunkowo duża – kilkanaście, kilkadziesiąt).

Przykładowa transakcja
Tabela transakcji n --> m

Przed transakcją adres wejściowy A (…Vzna) dysponuje kwotą 0.77839253 BTC. Podczas transakcji środki zostają przekazane na adresy wyjściowe (...QJwa, ...Dntn, ...R4Yz, ...x9Y2), a resztę stanowi opłata transakcyjna w wysokości 0.00044276 BTC.


Transkacja 0 --> 1

Transakcja posiadająca zero adresów po stronie wejściowej i jeden adres po stronie wyjściowej. Jest to transakcja związana z wydobyciem nowego bloku przez górnika. Jest to zawsze pierwsza transakcja w nowym bloku, a na jej wysokość składają się dwie składowe. Pierwszą jest nagroda za wydobycie danego bloku, której kwota uzależniona jest od aktualne obowiązującego wynagrodzenia za wydobyty blok: pierwotnie było to 50 BTC, od listopada 2012 roku 25 BTC, od lipca 2016 roku 12,5 BTC, itd. Drugą składową stanowi natomiast suma opłat transakcyjnych transakcji zawartych w danym bloku

Schemat transakcji 0 --> 1

Jako przykład wybrano pierwszy blok jaki został kiedykolwiek wydobyty. Operacja ta miała miejsce w styczniu 2009 roku i została zrealizowana przez autora - Satoshi Nakamoto. Na adres A (1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa) została przekazana kwota 50 BTC.

Tabela transakcji 0 --> 1

Innym przykładem niech będzie bardziej współczesny blok, który został zaprezentowany w tabeli 4.2 pokazujący udział opłat transakcyjnych. Ze względu na fakt, iż aktualnie większość górników wydobywa bitcoiny poprzez spółdzielnie (ang. mining pool) łącząc swoje moce obliczeniowe, aktualnie większość transakcji tego typu trafia nie na adresy pojedynczych użytkowników, lecz na adresy spółdzielni wydobywczych. Na adres A (…59rB) została przekazana kwota 12.77401803 BTC, na którą składają się dwa czynniki: 12.5 BTC - nagroda za wydobyty blok oraz 0.27401803 BTC będącą sumą wszystkich opłat transakcyjnych należących do danego bloku.

Tabela transakcji 1 --> 2

Znając typy przeprowadzanych transakcji można przedstawić heurystyki podwalające ustalać które adresy należą do poszczególnych kopalni, kantorów, giełd, a nawet pojedynczych użytkowników. Mając wiedzę o przynależności danego adresu do konkretnego podmiotu zainteresowane organy (na przykład organy ścigania) mogą zwrócić się do zidentyfikowanego podmiotu z żądaniem ujawnienia personaliów właściciela badanego adresu. Wszystkie metody grupujące adresy w klastry (ang. clustering) pozwalają identyfikować dany podmiot gdy choć jeden adres należący do danego klastra zostanie poprawnie przyporządkowany do realnego podmiotu (giełdy, sklepu, itp.). W łańcuchu bloków informacji takowej jednak nie znajdziemy. Na szczęście z pomocą przychodzą nam zasoby Internetu, gdzie w wielu miejscach (fora dyskusyjne związane z kryptowalutami, strony podmiotów ujawniające własne adresy BTC w celu dokonywania darowizn, itp.) możemy znaleźć informacje jednoznacznie wiążącą dany adres z konkretnym podmiotem.


HEURYSTYKA 1

Pierwsza heurystyka polega na grupowaniu adresów wejściowych wchodzących w skład pojedynczej transakcji. Jeśli dwa lub większa liczba adresów wejściowych wchodzi w skład pojedynczej transakcji to zakładamy, że są one kontrolowane przez ten sam podmiot. Heurystykę tą zawęzimy tylko do adresów wejściowych wymagających tylko jednego klucza prywatnego i zdefiniujemy ją następująco: Jeśli dwa lub większa liczba adresów wejściowych wymagających użycia pojedynczego klucza prywatnego wchodzi w skład pojedynczej transakcji to są one kontrolowane przez ten sam podmiot.


HEURYSTYKA 2

Druga heurystyka polega na grupowaniu jednego z adresów wyjściowych (tak zwanego adresu reszty) z adresami wejściowymi wchodzącymi w skład pojedynczej transakcji. Jeśli transakcja zawiera dwa adresy wyjściowe to zakładamy, że jeden z nich kontrolowany jest przez ten sam podmiot co adresy wejściowe. Heurystyke można zdefiniowac następująco: Jeśli transakcja składa się z dwóch adresów wyjściowych to jeden z nich kontrolowany jest przez ten sam podmiot co adresy wejściowe. Główną trudnością jest tutaj poprawne zidentyfikowanie adresu reszty z pośród dwóch adresów wyjściowych. Jednym w podejść jest sprawdzenie czy jeden z adresów nigdy wcześniej nie występował z łańcuchu bloków. Jeśli tak, to można z dużym prawdopodobieństwem założyć, iż jest to właśnie adres reszty, gdyż wiele portfeli bitcoinowych działa właśnie w ten sposób – tworzy nowy adres dla kwoty stanowiącej resztę transakcji. Przy heurystyce tej bazuje się dodatkowo na założeniu, że użytkownicy rzadko przekazują środki do dwóch różnych odbiorców podczas jednej pojedynczej transakcji.


HEURYSTYKA 3

Ostatnia heurystyka polega na identyfikowaniu właścicieli pojedynczych adresów. Informacje te można pozyskiwać z wielu źródeł: wycieków, z istniejących serwisów internetowych poświęconych deanonimizacji, z list dyskusyjnych poświęconych kryptowalutom, w tym w szczególności bitcoinowi (użytkownicy często publikują adresy), z różnorodnych stron internetowych (część autorów, programistów, a nawet firm zachęca do oferowania im darowizn właśnie poprzez publikacje własnych adresów), pozyskanych w trakcie realizacji ekspertyz na potrzeby organów procesowych.

Monografia autorska

Bo zawsze warto poszerzać swoją wiedzę.

Kryptowaluty z perspektywy informatyki śledczej
Przemysław RODWALD Kryptowaluty z perspektywy informatyki śledczej