Transakcje oparte na wykorzystaniu bitcoinów charakteryzują się wysokim bezpieczeństwem, anonimowością danych i jednoczesną przejrzystością. Dla początkujących użytkowników problemy te mogą wydawać się skomplikowane, więc mają prawo budzić wątpliwości. Tymczasem działanie transakcji opiera się na starannie opracowanych programach i algorytmach, które są praktycznie niezawodne i przy bliższej wiedzy całkowicie rozwiewają wszelkie wcześniejsze wątpliwości. Poznajmy zasadę transakcji bitcoinowych.
Proste transakcje bitcoin
Aby wysłać pewną liczbę bitcoinów, tworzymy protokół zapisany w tak zwanym łańcuchu bloków. W ten sposób użytkownik przesyła informacje o chęci przeprowadzenia transakcji i w pewien sposób podkreśla, że wskazana kwota jest w jego posiadaniu i nie była wcześniej wykorzystywana. Sieć Bitcoin opiera się na łańcuchach bloków, na których zapisywane są szczegółowe dane transakcji.
Transakcje Bitcoin w rozbudowanej formie
Transakcje są w prostym sensie tym, co definiuje i potwierdza istnienie bitcoinów (jako waluty) przypisanych do konkretnego portfela zabezpieczonego kluczem prywatnym. Każdy beneficjent kryptowaluty jest także właścicielem swojego portfela, w którym przechowywane są te środki. Właściciele mogą dysponować zgromadzonymi bitcoinami według własnego uznania, dzięki czemu mogą zamówić transakcję i podpisać ją za pomocą klucza prywatnego.
Wysyłając bitcoiny, użytkownik korzysta z adresu odbiorcy i jego indywidualnego klucza prywatnego, który rozpoczyna cały proces i uwierzytelnia go. Specyfika portfeli kryptowalut opiera się na ich samodzielnym wykonywaniu operacji zleceń transakcji, pomagając użytkownikowi, ale kwestia protokołu jest złożoną czynnością składającą się z takich elementów jak:
- dane wejściowe, które zawierają odniesienie do adresu odbiorcy i adresu nadawcy; funkcja umożliwia śledzenie transakcji dla określonej wartości bitcoin od początku ich tworzenia;
- kwota (kwota) – dane pokazujące, ile bitcoinów zostanie przypisanych do transakcji
- dane wyjściowe to informacja o adresie odbiorcy.
Cały proces transakcji można zilustrować wizualnie jako przelew z konta. Różnica polega na tym, że klucz publiczny jest widoczny, a transakcja jest potwierdzana i weryfikowana przez wprowadzenie klucza prywatnego.
Bezpieczeństwo transakcji
Gwarantem bezpieczeństwa transakcji Bitcoin jest podzielenie go na osobne bloki, z których tzw. Blockchain. Taka metoda zwiększa bezpieczeństwo, ale także czyni bitcoin odpornym na wszelkiego rodzaju manipulacje. Po dokonaniu transakcji nie można jej powielić ani zmienić. Innymi słowy, jeśli w danym momencie transakcji zmienimy coś w określonym bloku, całość będzie musiała zostać zmieniona. Rozproszony system pozwala chronić transakcje przed każdą próbą kradzieży lub oszustwa. Mówiąc najprościej, każda transakcja jest „cięta” na mniejsze części i każda z nich trafia w inne miejsce, gdy jest wysyłana. Odbiorca w jakiś sposób ponownie integruje je z łańcuchem bloków i otrzymuje pełną wysłaną wartość.
Wykorzystanie portfela
Opis automatycznego wysyłania (i odbierania) transakcji znajduje się w części dotyczącej przyjmowania płatności. Opisane tam metody nie wymagają działania na surowych transakcjach, ponieważ istnieją zarówno polecenia, które wykonują proste zadania i wykonują całe procesy w sposób zautomatyzowany, i dedykowane do manipulowania strukturą surowej transakcji.
Techniczna struktura transakcji
Treść transakcji jest przedstawiona poniżej w formularzu JSON. Ta metoda reprezentacji generuje polecenie getrawtransaction. Niektóre z widocznych właściwości nie są częścią przesyłanych danych transakcji, ale klient sieci je przedstawia, aby analizator mógł uzyskać jak najwięcej informacji o transakcji. W rzeczywistości transakcje nie są wysyłane w JSON, ale jako seria bitów, w których każde pole ma określoną długość i miejsce w kolejności.
{ "hex" : "", "txid" : "", "version" : 1, "locktime" : 0, "vin" : [ { "txid" : "", "vout" : 0, "scriptSig" : { "asm" : "(...)", "hex" : "(...)" }, "sequence" : 4294967295 } ], "vout" : [ { "value" : 50.00000000, "n" : 0, "scriptPubKey" : { "asm" : "OP_DUP OP_HASH160 (...) OP_EQUALVERIFY OP_CHECKSIG", "hex" : "(...)", "reqSigs" : 1, "type" : "pubkeyhash", "addresses" : [ "(...)" ] } } ] }
- hex – Informacje zawarte w transakcji zapisane szesnastkowo
- txid – Hash danych transakcji, jest też jednocześnie jej identyfikatorem
- version – Wersja struktury transakcji. Na razie tylko jedna jest możliwa.
- locktime – czas lub blok, który musi minąć, aby zatwierdzić transakcję (opóźnione zatwierdzanie)
- vin – tablica zawierająca wejścia transakcji. Każdy element tablicy zawiera następujące właściwości:
- txid – identyfikator (hash) transakcji wejściowej
- vout – numer wyjścia powyżej wspomnianej transakcji
- scriptSig – skrypt będący podpisem pasującym do skryptu podanego w wyjściu tego wejścia
- asm – zapis opcodów w formie czytelnej
- hex – zapis szesnastkowy poleceń
- sequence – numer aktualizacji w opóźnionym zatwierdzaniu
- vout – tablica zawierająca wyjścia transakcji. Każdy element tablicy zawiera następujące właściwości:
- value
- n
- scriptPubKey
- asm – zapis opcodów (poleceń skryptu) w formie czytelnej
- hex – zapis szesnastkowy poleceń
- reqSigs – wymagana liczba podpisów
Wersja transakcji
Numer wersji transakcji opisuje, która wersja standardu transakcji była używana. W przypadku późniejszych modyfikacji protokołu w tym zakresie, tj. Jeśli do transakcji mają zostać włączone nowe typy informacji, liczba ta wzrośnie. Dzięki temu klient sieciowy może wiedzieć, czy transakcja z dodatkowymi polami jest poprawna, czy nie. Bloki są również podzielone na wersje. Od 2016 roku istnieje jedna wersja formatu transakcji i 3 wersje właściwości bloku.
Opóźnione zatwierdzanie transakcji
Możliwe jest określenie minimum, w którym bloku można zatwierdzić transakcję. Więc nie wcześniej niż w bloku X (lub nie wcześniej niż podany czas), ale nie jest również możliwe przyspieszenie zatwierdzenia tą metodą.
Może to mieć na celu umożliwienie nadawcom wycofania transakcji przed ich zatwierdzeniem. W takim przypadku powinieneś wysłać kolejną transakcję, wydając wpisy, dla których ustawiono parametry odpowiedzialne za nią, ale tym razem ze standardowymi.
Właściwości wejściowe transakcji są odpowiedzialne za włączenie tej funkcji:
- locktime – czas uniksowy (jeśli jest większy niż 500 milionów) lub minimalny numer bloku, przed którym transakcja nie zostanie zatwierdzona. Uwaga: jeśli określisz czas, transakcję można potwierdzić już na 2 godziny przed podanym czasem. Należy podać czas bezwzględny, tzn. Nie liczbę sekund na zatwierdzenie, ale ile czasu minie od ery Unixa do minimalnego momentu włączenia do bloku.
- sequence – jeśli wartość jest maksymalną liczbą, jaką można wprowadzić w typie danych int, wyłącza tę funkcję. Musisz wprowadzić dowolny inny numer, aby włączyć. Miał służyć do ustalenia kolejności zmian w podpisywaniu transakcji.