za
ZKCP

Bezpieczny handel informacją cyfrową w sieci Bitcoin bez pośrednika czyli ZKCP w praktyce

2016-03-03
Techniczne
1,5% dla maluszka

ZKCP (Zero-Knowledge Contingent Payment ) to wielkim skrócie protokół, który umożliwia bezpieczny zakup dowolnego dobra w formie cyfrowej bez pośrednika. Dzięki kryptograficznym „sztuczkom”, możliwe jest takie skonstruowanie transakcji, że do odebrania zapłaty konieczne jest ujawnienie klucza dostępu do informacji (klucza deszyfrującego).

 

 

ZKCP (Zero-Knowledge Contingent Payment ) to wielkim skrócie protokół, który umożliwia bezpieczny zakup dowolnego dobra w formie cyfrowej bez pośrednika. Dzięki kryptograficznym „sztuczkom”, możliwe jest takie skonstruowanie transakcji, że do odebrania zapłaty konieczne jest ujawnienie klucza dostępu do informacji (klucza deszyfrującego)

 

Oto jak wygląda przykładowa transakcja używająca ZKCP do zapłaty za rozwiązanie puzzli sudoku (Alicja płaci Bolkowi za rozwiązanie puzzli):

 

  • Alicja wysyła Bolkowi puzzle (P) oraz swój klucz publiczny (kP)
  • Bolek rozwiązuje puzzle i odsyła Alicji rozwiązanie (R) zaszyfrowaną za pomocą klucza (K)
  • Bolek wysyła również hasz (H) swojego klucza (K) oraz dowód, że R rozwiązuje P
  • Alicja weryfikuje rozwiązanie
  • Alicja płaci Bolkowi z wyjściem w transakcji P2SH:

 

OP_SHA256

h_key

OP_EQUAL

OP_IF

bolek_pubkey

OP_CHECKSIG

OP_ELSE

numer_bloku_w_przyszłości

OP_CHECKLOCKTIMEVERIFY

OP_DROP

alicja_pubkey

OP_CHECKSIGVERIFY

OP_ENDIF

 

  • aby wydać te wyjście (odebrać zapłatę) Bolek musi użyć swojego klucza K.

 

Gdy Bolek odbiera zapłatę Alicja widzi użyty klucz K i używa go do odszyfrowania rozwiązania R. Jeżeli Bolek nie odbierze zapłaty w określonym czasie Alicja może odebrać swoje środki używając własnego klucza.

 

Oczywiście do generowania pytania, odpowiedzi i weryfikacji odpowiedzi, obie strony muszą używać odpowiedniego oprogramowania. Zaletami takiego rozwiązania jest generowanie względnie małej transakcji (a właściwie dwóch) ,które nie obciążają znacznie sieci ani łańcucha. Nikt „z zewnątrz” nie wie też, za co jest zapłata.

 

Zasadniczą wadą jest konieczność użycia zewnętrznych narzędzi do generowania i weryfikacji pytań/odpowiedzi. Unikamy jednak w ten sposób „zaśmiecania” łańcucha zbędnymi informacjami. Musi jednak nastąpić jakiś kontakt pomiędzy kupującym i sprzedającym – nie ma jak całkowicie zautomatyzować całego procesu.

 

Samą ideę ZKCP przedstawił już w 2011 roku Gregory Maxwell. Nie było jednak jeszcze wtedy narzędzi, aby taką operację móc przeprowadzić, protokół Bitcoina nie dawał możliwości warunkowego blokowania wydania środków na określony czas. Aktualnie można wykonywać tego typu transakcje bez wprowadzania żadnych zmian do protokołu.

 

Deweloperzy w ostatnich dniach testują i weryfikują działanie zaproponowanego kodu. Wykonano już pierwsze testowe transakcje:

 

   8e5df5f792ac4e98cca87f10aba7947337684a5a0a7333ab897fb9c9d616ba9e

   200554139d1e3fe6e499f6ffb0b6e01e706eb8c897293a7f6a26d25e39623fae

 

Pierwsza transakcja to zapłata z warunkowym odbiorem, druga transakcja odbiera środki ujawniając klucz niezbędny kupującemu.

 

Dla zainteresowanych udostępniony został działający kod użyty do generowania i weryfikacji odwiedzi w użytym przykładzie zapłaty za rozwiązanie sudoku.

 

Przy użyciu podobnych rozwiązań będzie można handlować dowolną formą informacji cyfrowej np. oprogramowaniem, kluczami SSL, algorytmami, kodem źródłowym, muzyką czy zdjęciami. Bitcoin zyskuje właśnie kolejną wspaniałą funkcjonalność.

 

Fotografia na licencji Creative Commons:Flickr.com

Bitcoina i inne kryptowaluty kupisz w prosty i bezpieczny sposób na giełdzie zondacrypto.

Tagi

Newsletter Bitcoin.pl

Więcej niż bitcoin i kryptowaluty. Najważniejsze newsy i insiderskie informacje prosto na Twój email.

Dbamy o ochronę Twoich danych. Przeczytaj naszą Politykę Prywatności