
Dzisiaj post o smart contraktach i o tym, czym są i do czego są używane wyrocznie (oracle). Temat z newslettera
Powiedzmy, że chcesz przygotować ubezpieczenie. Sprawa wydaje się dosyć prosta: zainteresowani wpłacają składki na kontrakt, a gdy zdarzy się wypadek, część składek przelewamy na konta poszkodowanych.
Jak by to mogło wyglądać od strony praktycznej?
Jako przykładem posłużę się ubezpieczeniem od powodzi. Podczas rejestracji użytkownicy wpłacają na konto kontraktu środki i podają geolokację nieruchomości, którą chcą ubezpieczyć. Wysokość składek jest uzależniona od wysokości odszkodowania, które chcą w razie zalania otrzymać. Dodatkowo składka rośnie, jeżeli ubezpieczone miejsce jest bardzo narażone na powódź.
Teraz przydałby się jeszcze jakiś sposób na poinformowanie kontraktu, że doszło do wypadku i że ktoś musi dostać pieniądze z odszkodowania.
Tutaj zaczynają się schody. Smart contrakt nie może się o te dane ot tak zapytać, nie ma takiej opcji (w Ethereum). Kontrakt otrzymuje informacje z naszego świata wyłącznie przez transakcje. To znaczy, że ktoś musi transakcją wysłać dane do smart contraktu.
No to załatwione, prawda? No nie do końca.
Informację może przesłać sam poszkodowany, to jednak może prowadzić to do wyłudzeń, mamy przecież konflikt interesów. Może to zrobić zewnętrzna aplikacja, która będzie monitorować ubezpieczone lokalizacje, ale to znowu centralizacja. Poza tym zhakowanie pojedynczej aplikacji też umożliwi wyłudzenie.
Dwa pomysły powyżej to przykłady wyroczni (oracle), czyli źródeł prawdy dla kontraktu. Jedno złe — pojedynczy użytkownik, drugie troszkę lepsze — aplikacja.
Pomijając, czy to źle, czy dobrze, informację do kontraktu, muszą być zapakowane w transakcję, a tę musi ktoś wysłać (użytkownik albo automat). Tym samym ktoś musi za wysłaną transakcję zapłacić (transaction fee). I co najważniejsze, trzeba to zaprojektować tak, żeby można było uznać odebraną informację za wiarygodną.
Czy da się zrobić wyrocznię lepiej?
Można zrobić wyrocznię opierającą się na większej liczbie użytkowników. Poszkodowany zgłasza zalanie danej lokalizacji, ale żeby środki zostały wypłacone, przynajmniej 80% uczestników ubezpieczenia musi potwierdzić, że teren rzeczywiście został zalany. Takie podejście również daje pole do nadużyć, ale jeżeli uczestnicy polisy są w większości uczciwi, to powinno działać.
Żeby się uodpornić na ataki w przypadku aplikacji, możemy napisać/uruchomić kilka aplikacji. Każda z nich wysyła informacje do smart contraktu, który odrzuca te wyglądające na fałszywe. Np. zgłaszane tylko przez dwie z dziesięciu wyroczni.
Jest jeszcze wiele sposobów implementacji wyroczni (oracle), ale dzisiaj kończę na tych.
Zaprojektowanie dobrego kontraktu i sposobu jego wdrożenia nie jest proste. Trzeba znać ograniczenia, które niesie ze sobą technologia blockchain.
Zarazem dobry smart contrakt pozwala dużo zaoszczędzić. Praktycznie wszystkie wpłacone pieniądze idą na odszkodowanie, nie trzeba wydawać nic na utrzymanie firmy ubezpieczeniowej, która normalnie tym wszystkim zarządza. Dodatkowo nie trzeba czekać na decyzję wspomnianej firmy — bo jej przecież nie ma.
W przypadku aplikacji monitorującej zalanie nie będzie trzeba niczego zgłaszać, wszystko zadziała automatycznie.
Chcesz nauczyć się podstaw smart contraktów i blockchaina?
Pobierz e-book.