Transakcje Bitcoin

682

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.