Chialisp – post wprowadzający

Wyjaśnienie czym jest i jak działa Chialisp znajdziesz w n/w poście wprowadzającym od Brama Cohena z dnia 27.11.2019r.


Właśnie uruchomiliśmy naszą pierwszą wersję języka Chialisp i środowiska programowania on-chain, które wprowadza nowe i znacznie lepsze podejście do budowania inteligentnych transakcji. Ten post zawiera przegląd tego, czym są nowe innowacje i jak są lepsze.

Dwa ogólne podejścia do inteligentnych środowisk transakcyjnych do tej pory pochodzą z Bitcoin i Ethereum, które będę nazywać „modelem UTXO” i „modelem Solidity”. W modelu UTXO jedyne dane, które muszą być przechowywane przez serwery, to aktualny zestaw niewydanych monet (i ich dat urodzenia, ale to drobny dodatek), a transakcje wydają tylko niektóre monety i tworzą inne i nie mogą zależeć od jakichkolwiek zewnętrznych danych, więc jedynym sposobem, aby przejść od dobrego do złego, jest wydanie wkładu (lub przekształcenie go w nigdy nie istniejący lub mający inną datę urodzenia, znowu drobna wpadka). Natomiast model Solidity ma ogromne ilości stanów w łańcuchu, w tym uruchomionych programów, a skutki transakcji nie zawsze można określić przed jej faktycznym uruchomieniem. Podejście UTXO jest znacznie prostsze, łatwiejsze do wdrożenia, ma mniejsze obciążenie na pełnych węzłach i skutkuje znacznie bardziej niezawodnymi, bezpiecznymi i zwięzłymi inteligentnymi transakcjami. Model Solidity jest znacznie bardziej niebezpieczny, droższy i zawodny, ale ma większą siłę wyrazu.

W przypadku Chialisp (i otaczającego go CLVM) odkryliśmy, jak zachować model UTXO, ale dodać ogólną moc Solidity. Odbywa się to za pomocą zestawu prostych porządków, które pojedynczo nie robią wiele, ale połączone razem tworzą coś bardzo potężnego:

  • Monety są obiektami pierwszej klasy, a transakcje są efemerycznymi uzasadnieniami niszczenia niektórych z nich i tworzenia innych, w przeciwieństwie do Bitcoin, gdzie transakcje są obiektami pierwszej klasy, a monety (UTXO) są reprezentowane jako identyfikator transakcji i numer wyjściowy.
  • Format monet (UTXO) został znacznie uproszczony. To tylko podstawowe dane wejściowe, hash puzzli i kwota.
  • Transakcje odbywają się jednocześnie, a nie sekwencyjnie.
  • Podpisy są wykonywane przy użyciu BLS , który jest formatem nieinteraktywnym, który można agregować, a agregacja jest zawsze wykonywana.
  • Użyty język nie ma skutków ubocznych. Pozwala to na delegację i częściową delegację w znacznie bardziej ogólny i skuteczny sposób, niż jest to dodawane przez obecną propozycję Bitcoins.
  • Wymagania wszystkich rozwiązań typu puzzle ( scriptpubkey w języku Bitcoin) (scriptsigs) są wyrażone poprzez ich zwracaną wartość.
  • Język jest kompletny. To dodaje o wiele mniej złożoności niż ludzie to sobie wyobrażają, ponieważ egzekucja jest efemeryczna. Jest to złożony, trwały stan, który powoduje złożoność w Solidity.
  • Język ma niezbędne prymitywy do obliczania identyfikatorów monet, a monety są w stanie zapewnić własne identyfikatory, co pozwala na jawne odniesienie się do siebie i pozwala uniknąć konieczności stosowania quinów .

Oprócz rozszerzeń języka i środowiska istnieją również sztuczki programistyczne, które zapewniają znacznie większą funkcjonalność, niż można by się spodziewać:

  • Przymierza można wdrożyć, składając oświadczenia dotyczące skrótów łamigłówki wyników, które są stosowane rekurencyjnie. Wskazano, że w zasadzie można to zrobić w skrypcie Bitcoin, ale brakuje mu wystarczających możliwości manipulowania ciągami znaków i „ sprawdzania podpisu ze stosu ”, co było inspiracją do użycia go tutaj.
  • Zdolności można zaimplementować za pomocą przymierzy wskazujących wstecz, które mówią raczej o przodkach niż o potomkach.
  • Monety mogą komunikować się ze sobą za pomocą efemerycznych monet, które są zużywane w tej samej transakcji, w której zostały stworzone, i są zadeklarowane jako wejścia przez otrzymującą monetę.
  • Stan może być przechowywany w niedostępnych częściach kodu układanki, do których można uzyskać dostęp, uzyskując ujawnienie w rozwiązaniu i potwierdzając identyfikator monety, który jest obliczany na podstawie skrótu układanki.

Razem te techniki pozwalają na dowolnie złożoną funkcjonalność bez konieczności stosowania nowych rozkazów. Nową funkcjonalność można po prostu napisać i wdrożyć.

Aby spróbować tego, co można z tym zrobić, udostępniamy kilka referencyjnych inteligentnych transakcji i portfeli, które z nich korzystają, w tym:

  • Portfel, który może wysyłać swoje środki tylko do autoryzowanych odbiorców.
  • Portfel, który może wydawać pieniądze tylko po ustalonym kursie, w tym może przesyłać do niego płatności w sposób nieinteraktywny. Okazuje się, że wymaga to możliwości lub oprogramowanie portfela mogłoby generować wiele monet przechowujących fundusze i wydawać je wszystkie jednocześnie.
  • Portfel z informacjami do odzyskiwania depozytów, taki jak portfel papierowy, ale z mniejszą powierzchnią ataku. Można go użyć do odzyskania środków z portfela, którego zabezpieczony sprzęt zawiódł, ale w przeciwieństwie do zwykłego portfela papierowego, zamiast pobieżnego uzyskiwania kontroli nad monetami, informacje dotyczące odzyskiwania depozytów można wykorzystać do zainicjowania procesu uzyskiwania kontroli, który zajmuje trochę czasu w trakcie który portfel sprzętowy (jeśli nadal jest online) może odzyskać środki. Może również obsługiwać wymaganie depozytu w celu rozpoczęcia procesu odzyskiwania, który osoba atakowana może „ukraść”.

Dokonaliśmy również implementacji niektórych podstawowych funkcji, które już istnieją w Bitcoin, ale są ważne:

  • Multisig. Zaczynamy od najprostszego podejścia, które jest takie samo jak w Bitcoin i będziemy wdrażać alternatywne podejścia, które dobrze wykorzystają agregację sygnatur w przyszłości.
  • Atomowe swapy. Mamy inteligentny portfel, który zamienia i obsługuje wszystkie skrajne etui na łańcuchu.

W przyszłości będziemy budować więcej referencyjnych inteligentnych transakcji, a funkcjonalność Chialisp zostanie dodana do naszej sieci testowej, a następnie do naszej sieci głównej. Przed ostatecznym uruchomieniem sieci głównej pojawią się niekompatybilne zmiany, ale podstawowe koncepcje się nie zmienią. Mamy kilka dodatkowych ekscytujących transakcji referencyjnych, które dodamy do tej listy w nadchodzących miesiącach, w tym lekkie, weryfikowalne kolorowe monety klienta, które dziedziczą pełną funkcjonalność Chialisp i rozproszone portfele tożsamości z wyrafinowanymi opcjami odzyskiwania.

Dokumentacja i symulator księgi są dostępne w naszym repozytorium Github .

Pytania dotyczące instalacji, LedgerSim, inteligentnych portfeli i naszych inteligentnych transakcji należy kierować do naszego kanału bazy kluczy #dev.


źródło: https://www.chia.net/2019/11/27/chialisp.en.html