Opierając się na fundamentach przedstawionych w poprzednich częściach serii, pokazaliśmy, jak zaimplementować względny czas blokady w Bitcoin bez nowego kodu OP_CheckSequenceVerify.
Blokada czasowa
Blokada czasowa ogranicza wydawanie niektórych bitcoinów do określonego czasu w przyszłości lub wysokości bloku. Istnieją dwa rodzaje blokad czasowych:
Absolutnie: na przykład można udowodnić, że można zablokować 1 100 000 bitcoinów do wysokości bloku 800 000 lub do 1 stycznia 2025 r.
Względny: na przykład można zablokować 21 bitcoinów, które można wydać dopiero po 100 blokach lub 3 dniach.
Aby włączyć bezwzględne i względne blokady czasowe, w BIP65 i BIP68/112/113 wprowadzono nowe kody operacji OP_CheckLockTimeVerify/OP_CLTV i OP_CheckSequenceVerify/OP_CSV.
Względny czas blokady bez OP_CSV
Przywracając oryginalny protokół Bitcoin, Bitcoin SV cofnął wyżej wymienione zmiany. Okazuje się, że OP_CSV można zaimplementować za pomocą oryginalnego protokołu.
W części 1 pokazaliśmy, jak uzyskać dostęp do bloku zawierającego dany kontrakt UTXO. Łącząc ten nagłówek bloku z określoną względną blokadą czasową, możemy poznać najwcześniejszy blok, w którym można wykorzystać UTXO. Żądamy, aby każdy blok po terminie był dostępny do odblokowania UTXO, zasadniczo umieszczając na nim względną blokadę czasową, tak jak robi to OP_CSV. Pełny kod znajduje się poniżej.
Linia 11 pokazuje odblokowanie na podstawie czasu uniksowego (np. w sekundach). Funkcja validateHelper() w wierszu 33. sprawdza poprawność zarówno bloku zawierającego UTXO, jak i ostatniego bloku (wiersz 41–42). Sprawdza również, czy poprzedni blok faktycznie zawiera UTXO (linia 34–38) przy użyciu tej samej techniki, co w części 1. Linia 15 zapewnia, że upłynął wymagany czas od wydobycia UTXO.
Linia 19 pokazuje odblokowanie na podstawie wysokości bloku (np. liczba bloków). Wiersze 24–25 otrzymują wysokości dwóch bloków jak w części 3. Wiersz 27 sprawdza, czy określona liczba bloków została wydobyta po UTXO.
Streszczenie
Oprócz OP_CSV wdrożyliśmy wcześniej OP_CLTV bez żadnych zmian w oryginalnym protokole Bitcoin. Są dwie implikacje:
Oba kody operacyjne nie są konieczne do włączenia blokad czasowych na poziomie UTXO, jak wcześniej sądzono.
Wszystkie przypadki użycia włączone przez OP_CSV/CLTV, takie jak sieci błyskawic, łańcuchy boczne i kanały płatności w stylu CLTV, można w razie potrzeby zbudować bezpośrednio na oryginalnym Bitcoinie.
Obejrzyj: Panel CoinGeek w Nowym Jorku, Bitcoin i Blockchain – czy prawdziwa wartość może pochodzić z rzeczywistej użyteczności?
Autor : BitcoinSV.pl
Źródło : Access blockchain data from Bitcoin smart contracts: Part 5 – CoinGeek