🇵🇱 IOHK - Marlowe: kontrakty finansowe w blockchainie

Polskie tłumaczenie artykułu Marlowe: financial contracts on blockchain - IOHK Blog z bloga IOHK opublikowanego przez prof. Simona Thompsona 11 grudnia 2018

image

Marlowe: kontrakty finansowe w blockchainie

Pierwsze komputery zostały zaprogramowane w „kodzie maszynowym”. Każdy rodzaj systemu miał inny kod, a kody te były niskopoziomowe i niewyrażalne; programy były długimi sekwencjami bardzo prostych instrukcji, niemożliwych do skompresowania dla wszystkich oprócz tego, kto je napisał. Obecnie do programowania systemów możemy używać języków wyższego poziomu, takich jak C, Java i Haskell. Te same języki mogą być używane na bardzo różnych maszynach, a struktura programów odzwierciedla to, co robią. W blockchainie ich odpowiednikami są języki takie jak Solidity i Simplicity. Te nowoczesne języki wyższego poziomu są ogólnego przeznaczenia – mogą być używane do pokonywania różnego rodzaju problemów, ale rozwiązania, które wyrażają, są nadal programami i nadal wymagają umiejętności programowania, aby skutecznie z nich korzystać. W przeciwieństwie do nich, Marlowe jest językiem specyficznym dla domeny (DSL), który jest przeznaczony do użytku przez kogoś, kto jest ekspertem w określonej dziedzinie (w przypadku Marlowe’a tą dziedziną są kontrakty finansowe), a nie posiada umiejętności programowania.

Korzystanie z DSL ma wiele zalet poza korzystaniem z niego przez osoby nie będące programistami:

Możemy zapewnić, że niektórych rodzajów złych programów nie da się nawet napisać, ponieważ rozwiązania potrzebne do ich stworzenia nie są nawet częścią języka. Tym sposobem możemy dążyć do uniknięcia niektórych nieoczekiwanych exploitów, które były problemem dla istniejących blockchainów.

Możemy również łatwiej sprawdzić czy programy realizują zastosowania, na których nam zależy. Na przykład w przypadku umowy finansowej możemy zagwarantować, że kontrakt nigdy nie zaniecha płatności, którą powinien wykonać.

Ponieważ jest to DSL, możemy tworzyć narzędzia specjalnego przeznaczenia, które pomogą ludziom pisać programy w tym języku. W przypadku języka Marlowe możemy emulować zachowanie kontraktu, zanim zostanie on faktycznie uruchomiony w systemie - pomaga to upewnić się, że napisany przez nas kontrakt spełnia swoje zadanie.

Marlowe jest wzorowany na DSL kontraktów finansowych, spopularyzowanym w ciągu ostatniej dekady przez naukowców i przedsiębiorstwa takie jak LexiFi, które dostarcza oprogramowanie kontraktowe w sektorze finansowym. Tworząc Marlowe, dostosowaliśmy go do pracy na blockchainie. Marlowe jest zaimplementowany w warstwie rozliczeniowej (SL) blockchainu Cardano, ale równie dobrze może być zaimplementowany na Ethereum/Solidity lub innych platformach blockchain. Pod tym względem jest „niezależny od platformy”, podobnie jak współczesne języki programowania, takie jak Java i C++. Emulator online Meadow umożliwia eksperymentowanie, rozwijanie i interakcję z umowami Marlowe’a w przeglądarce internetowej bez konieczności samodzielnego instalowania jakiegokolwiek oprogramowania.

Jak wygląda kontrakt napisany w Marlowe? Powstaje on z połączenia niewielkiej liczby elementów, które opisują dokonywanie płatności, obserwację czegoś w „rzeczywistym świecie”, czekanie na spełnienie określonego warunku i tak dalej. Różni się to od wcześniej stosowanych rozwiązań tym w jaki sposób upewniamy się, że umowa jest przestrzegana. Weryfikujemy czy nie wystąpią sytuacje gdy instrukcje zawarte w kontrakcie nie są realizowane, ale upewniamy się też żeby uczestnicy nie rezygnowali z udziału zbyt wcześnie pozostawiając pieniądze na zawsze zamknięte w kontrakcie.

Realizujemy to za pomocą dwóch narzędzi: zobowiązań i limitów czasu. Zobowiązanie wymaga od uczestnika „wyłożenia pieniędzy na stół”, a poprzez stosowanie limitów czasowych, upewniamy się, że stanie się to w odpowiednich ramach czasowych. W przeciwnym razie musimy zastosować środki zaradcze. Łącząc te metody jesteśmy w stanie zachęcić uczestników do kontynuowania kontraktu, gdy już się do niego zobowiążą.

Pracujemy nad wypuszczeniem pełnej wersji Marlowe’a w połowie 2019 roku. Wtedy też język zostanie udostępniony na Cardano SL. Od dziś możesz samodzielnie odkrywać Marlowe za pomocą Meadow i dowiedzieć się więcej szczegółów z naszego internetowego artykułu. W ciągu najbliższych sześciu miesięcy będziemy dopracowywać sam projekt języka i opracowywać zestaw szablonów dla popularnych zastosowań finansowych, a także wykorzystywać narzędzia logiki formalnej do udowodnienia właściwości kontraktów napisanych w Marlowe dając użytkownikom najwyższy poziom pewności, że ich kontrakty działają jak powinny.