397 / 736TODD

Peter Todd

Programista blokad czasowych i dowodów czasu

Środki mogą czekać na spełnienie warunku czasowego, płatność — na potwierdzenie, a dokument może wymagać dowodu, że istniał już wcześniej. Peter Todd współtworzył narzędzia do każdej z tych sytuacji. Te konkretne problemy pomagają zrozumieć jego pracę.

Peter Todd jest programistą Bitcoina, autorem propozycji blokady czasowej BIP 65, współautorem zasad zastępowania niepotwierdzonych transakcji BIP 125 oraz programistą OpenTimestamps. Chodzi o różne rodzaje pewności: warunki wydania środków, stan płatności i udokumentowane istnienie danych. Żaden z nich sam nie zapewnia pozostałych.

Wyobraź sobie, że musisz wykazać, iż określona wersja umowy istniała przed rozpoczęciem sporu. Temu służy OpenTimestamps, projekt związany z Peterem Toddem. Historyczne ogłoszenie z 2016 roku przedstawiało publiczną wersję testową i zawierało podziękowania dla Riccardo Casatta za rozwój i testy. Dokumentuje ówczesną współpracę; nie oznacza, że projekt nadal jest eksperymentem. Todd pracował też nad warunkami przyszłego wydawania środków oraz płatnościami oczekującymi na potwierdzenie. Zacznijmy od tych dwóch obszarów. [1]

BIP 65 autorstwa Todda wprowadził OP_CHECKLOCKTIMEVERIFY, czyli CLTV. Ta instrukcja pozwala uzależnić konkretną ścieżkę wydania bitcoinów od osiągnięcia wysokości bloku lub granicy czasowej. Pomyśl o awaryjnym dostępie do wspólnych oszczędności, z którego odbiorca może skorzystać dopiero później. Do tego momentu warunek czasowy blokuje tę ścieżkę. Potem monety nie wysyłają się same: nadal trzeba utworzyć prawidłową transakcję i spełnić inne wymagania, na przykład dostarczyć podpis. Jeśli istnieje inna ścieżka wydania, obowiązują ją własne warunki; blokada nie musi obejmować wszystkich możliwości użycia środków. [2]

Blokada nie kieruje się po prostu zegarem wyświetlanym w portfelu. BIP 65 sprawdza zależność między skryptem, czyli instrukcjami określającymi warunki wydania, a polem nLockTime transakcji. Oba muszą posługiwać się tym samym rodzajem granicy: wysokością bloku albo czasem. Pole nSequence wejścia nie może też mieć wartości oznaczającej ostateczność, która uniemożliwiłaby tę kontrolę. To granica bezwzględna, a nie względny wiek wyjścia od jego potwierdzenia. Jej osiągnięcie nie gwarantuje włączenia transakcji do bloku w konkretnej sekundzie; górnik musi nadal umieścić ją w prawidłowym bloku. [2]

Rozgłoszona transakcja może czekać w mempoolu, zbiorze niepotwierdzonych transakcji danego węzła. Gdy opłaty rosną, nadawca może chcieć zaproponować więcej przez transakcję zastępującą. David A. Harding i Peter Todd opisali w BIP 125 pierwotne zasady zastępowania opt-in. Możliwość zastąpienia sygnalizowało pole nSequence; mogła być też dziedziczona po niepotwierdzonym przodku, czyli wcześniejszej transakcji, której wyjście wydaje płatność. Liczyły się więc także zależności między transakcjami. Wyższa opłata może pomóc, ale nie gwarantuje natychmiastowego potwierdzenia. [3]

Zastąpienie w mempoolu zmienia transakcję, którą węzeł przechowuje jako kandydatkę do potwierdzenia. Nie przepisuje potwierdzonej historii. BIP 125 opisuje ponadto historyczną politykę opt-in, a nie niezmienną regułę wszystkich programów. Późniejsze wersje Bitcoin Core przyjęły jako standard zastępowanie bez tego sygnału, nadal stawiając warunki przyjęcia zamiennika. Dla odbiorcy wniosek jest prosty: brak sygnału nie dowodzi ostateczności płatności. Również komunikat „wysłano” w portfelu nie oznacza, że transakcja trafiła do potwierdzonego bloku. [3] [6]

Wróćmy do umowy. OpenTimestamps tworzy weryfikowalny dowód, że określone dane istniały przed udokumentowaną granicą czasową. Używa hasha, krótkiego cyfrowego odcisku treści, oraz dowodu powiązanego z Bitcoinem. Zmiana dokumentu daje przy sprawdzaniu inny odcisk. Znacznik czasu nie dowodzi jednak autorstwa, prawdziwości treści ani dokładnej chwili utworzenia pliku. Ktoś mógł odpowiednio wcześnie oznaczyć także fałszywy opis. Dowód ogranicza najpóźniejszy możliwy moment powstania danych, ale nie mówi, jak długo istniały wcześniej. [1] [4]

Klient OpenTimestamps nie wysyła dokumentu do serwerów kalendarzowych. Przetwarza jego odcisk wraz z losową wartością, aby serwer nie mógł wywnioskować treści z otrzymanych danych. Kalendarz oznacza tu usługę zbierającą zgłoszenia i pomagającą zakotwiczyć je w Bitcoinie. Ochrona treści nie daje jednak pełnej anonimowości: bliskość czasowa lub wspólnie utworzone dowody mogą ujawnić powiązania. Plik .ots nie jest kopią zapasową dokumentu. Zachowaj go razem z dokładnym oryginałem; odcisk nie odtworzy utraconego tekstu, a zmieniona kopia oznacza już inne dane. [5]

Nowy znacznik czasu może nie być jeszcze zakotwiczony w potwierdzonym bloku. Sam plik .ots nie oznacza więc zakończenia procesu. Klient OpenTimestamps odróżnia dowód oczekujący od kompletnego, zawierającego ścieżkę aż do bloku. Polecenie ots upgrade może pobrać i zapisać uzupełnienie, gdy będzie dostępne; nie wymusza jednak wydobycia bloku. Następnie dowód należy zweryfikować względem oryginalnych danych i łańcucha Bitcoina. Tak jak przy płatności oczekującej, ważny jest rzeczywisty stan, a nie samo pojawienie się pliku lub komunikatu. [5]

Pełniejszy obraz uzyskasz, czytając to hasło razem z Luke Dashjr, Mara van der Laan, Satoshi Nakamoto. Do tego hasła prowadzą również odsyłacze z Luke Dashjr, Mara van der Laan.

DOC · 001Peter Todd — OpenTimestamps announcement (2016)Dokumentacja DOC · 002BIP 65 — OP_CHECKLOCKTIMEVERIFYDokumentacja DOC · 003BIP 125 — opt-in replacementDokumentacja DOC · 004OpenTimestamps — timestamp proofsDokumentacja DOC · 005OpenTimestamps client — documentationDokumentacja DOC · 006Bitcoin Core 29.0 — release notesDokumentacja
Zaktualizowano: Najpierw źródła · To nie jest porada inwestycyjna