Dlaczego prywatne łańcuchy bloków nie powinny być chętne do uruchamiania kodu
Nie jestem fanem terminu „inteligentne kontrakty”. Po pierwsze, był używany przez tak wielu ludzi do tak wielu różnych rzeczy, że prawdopodobnie powinniśmy go całkowicie zakazać. Na przykład, pierwsze znane odniesienie pochodzi z 1997 r., Kiedy to Nick Szabo użył go do opisania takich obiektów fizycznych zmienić swoje zachowanie na podstawie niektórych danych. Niedawno termin ten został użyty do dokładnego odwrotności: do opisania obliczeń w łańcuchu bloków który jest pod wpływem przez zdarzenia zewnętrzne, takie jak pogoda. Na razie odłóżmy na bok oba te znaczenia.
Chcę się tutaj skupić na „inteligentnych kontraktach” w sensie obliczeń ogólnego przeznaczenia, które mają miejsce w łańcuchu bloków. To znaczenie zostało spopularyzowane przez Ethereum, którego biały papier ma podtytuł „Inteligentny kontrakt nowej generacji i zdecentralizowana platforma aplikacji”. W wyniku uwagi, jaką otrzymało Ethereum, znaczenie to stało się dominujące, a banki (i inne) pracują nad potwierdzeniem koncepcji inteligentnych kontraktów. Oczywiście, ponieważ mówimy o regulowanych instytucjach finansowych, dzieje się to głównie w kontekście prywatnych lub dozwolonych łańcuchów bloków, które mają ograniczony zestaw zidentyfikowanych uczestników. Z powodów, które są teraz dobrze zrozumianepubliczne łańcuchy bloków, mimo całego swojego geniuszu, nie są jeszcze przystosowane do celów korporacyjnych.
Czy zatem przyszłość inteligentnych kontraktów w prywatnych łańcuchach bloków jest jasna? Cóż, trochę, ale nie do końca. Widzisz, problem jest taki:
W prywatnych łańcuchach bloków inteligentne kontrakty łączą cztery dobre pomysły z jednym złym.
Więc jakie są dobre pomysły? (a) wyrażanie logiki biznesowej jako programu komputerowego, (b) reprezentowanie zdarzeń, które wyzwalają tę logikę jako komunikaty do programu, (c) używanie podpisów cyfrowych w celu udowodnienia, kto wysłał te wiadomości, oraz (d) umieszczanie wszystkich powyższych informacji na blockchain.
A ten zły? Wykonywanie każdego programu dla każdej wiadomości w każdym węźle łańcucha bloków. Innymi słowy, tworzenie egzekucja wszystkich programów jest zadaniem łańcucha blokowego, zamiast używać go jako przechowywanie dla programów i wiadomości. A jednak ta globalna realizacja jest głównym powodem, dla którego opracowano Ethereum.
Jeśli wiesz, że deterministyczny charakter obliczeń, dowiedz się o problem z zatrzymaniemi zrozum, jak to zrobić zależności danych zapobiec współbieżności, możesz już być przekonany. Ale jeśli nie, zrób sobie kawę, weź głęboki oddech i idź za mną w dół króliczej nory…
Zrozumieć Ethereum
Aby zrozumieć inteligentne kontrakty w stylu Ethereum, musimy zacząć od bitcoina, pierwszego (i nadal najpopularniejszego) publicznego łańcucha blokowego. Blockchain bitcoin został pierwotnie zaprojektowany tylko do jednego: przenoszenia waluty bitcoin od jednego właściciela do drugiego. Ale kiedy już się uruchomiło, ludzie zaczęli osadzać „metadane” w transakcjach, aby służyć innym celom, takim jak aktywa cyfrowe i notarialność dokumentu. Podczas gdy niektórzy bitcoinery walczył te aplikacje, plik oficjalny mechanizm dla metadanych została wprowadzona w marcu 2014 r. przy użyciu rośnie wykładniczo odkąd.
Oprócz projektów opartych na łańcuchu bloków bitcoin, opracowano i uruchomiono wiele publicznych łańcuchów bloków nowej generacji, takich jak NXT, Bitshares, Marszczyć i Gwiezdny. Zostały one zaprojektowane od podstaw, aby wspierać szerszy zakres działań, takich jak aktywa tworzone przez użytkowników, zdecentralizowana wymiana i zabezpieczone pożyczki. Każdy z tych łańcuchów bloków ma inny zestaw funkcji, zgodnie z decyzją jego twórców, i każdy z nich musi zostać zaktualizowany przez wszystkich użytkowników po dodaniu nowej funkcji. Zaczęło się robić raczej bałagan.
Będąc zaangażowanym w niektóre z tych projektów, Vitalik Buterin zadał proste, ale genialne pytanie: zamiast wielu łańcuchów bloków specyficznych dla aplikacji, dlaczego nie mieć jednego publicznego łańcucha bloków, który można zaprogramować do wykonania cokolwiek byśmy chcieli? Ten über-blockchain byłby nieskończenie rozszerzalny, ograniczony jedynie wyobraźnią korzystających z niego. Świat krypto-entuzjastów był niemal jednogłośnie przekonany do tego potężnego pomysłu. A więc z 18 milionów dolarów finansowania społecznościowego i ku wielkiemu podekscytowaniu narodził się Ethereum.
Ethereum to nowy publiczny łańcuch bloków z powiązaną kryptowalutą zwaną „eterem” setki które było wcześniej. Ale w przeciwieństwie do innych blockchainów, Ethereum umożliwia każdemu stworzenie „kontraktu” wewnątrz łańcucha bloków. Umowa to program komputerowy z powiązaną miniaturową bazą danych, która może być modyfikowany tylko przez program, który jest jego właścicielem. Jeśli użytkownik łańcucha bloków chce zmienić bazę danych, musi wysłać podpisaną cyfrowo wiadomość do swojej umowy. Kod w kontrakcie analizuje tę wiadomość, aby zdecydować, czy i jak zareagować. (To „hermetyzacja”Kodu i danych jest również podstawą obiektowy programowanie.)
Kontrakty Ethereum można pisać w jednym z kilku nowych języków programowania, takich jak Solidność i Wąż. Jak większość języków programowania, są to pliki Turing zakończony, co oznacza, że mogą wyrażać dowolne obliczenia ogólnego przeznaczenia. Kluczową cechą kompletnych języków Turinga jest struktura pętli, który wykonuje operację wielokrotnie, aż do spełnienia jakiegoś warunku. Na przykład pętla może zostać użyta do wydrukowania liczb od jednego do miliona, bez konieczności stosowania miliona linii kodu. Ze względu na wydajność programy napisane dla Ethereum są skompilowany (tj. przekonwertowany) na bardziej zwarty kod bajtowy przed umieszczeniem na łańcuchu. Węzły Ethereum wykonują następnie ten kod bajtowy w pliku Maszyna wirtualna, który jest w zasadzie symulowanym komputerem działającym w prawdziwym komputerze.
Kiedy kontrakt Ethereum jest tworzony w łańcuchu bloków, ustawia początkowy stan swojej bazy danych. Potem zatrzymuje się, czekając grzecznie, aż zostanie wezwany. Kiedy użytkownik łańcucha bloków (lub innej umowy) wysyła mu wiadomość w transakcji, umowa wkracza do akcji. W zależności od zawartego w nim kodu może zidentyfikować źródło wiadomości, wyzwolić inne kontrakty, zmodyfikować swoją bazę danych i / lub odesłać odpowiedź do dzwoniącego. Wszystkie te kroki są wykonywane niezależnie na każdym węźle w sieci, z identycznymi wynikami.
Na przykład prosty Ethereum umowa subwalutowa utrzymuje bazę danych sald użytkowników dla określonego środka trwałego. Jeśli otrzyma wiadomość o przesłaniu środków od Alicji do Boba, (a) sprawdzi, czy wiadomość została podpisana przez Alicję, (b) sprawdzi, czy Alicja ma wystarczające środki, (c) przeleje środki z konta Alicji na konto Boba w bazie danych i d) odpowiedzieć, że operacja się powiodła. Oczywiście nie potrzebujemy do tego Ethereum, ponieważ prosty blockchain w stylu bitcoin z natywne wsparcie zasobów może zrobić to samo. Ethereum naprawdę sprawdza się w przypadku złożonej wieloetapowej logiki biznesowej, takiej jak finansowanie społecznościowe, zdecentralizowane giełdy i hierarchiczne struktury zarządzania. A przynajmniej tak obietnica idzie.
Jego rozbijania
Teraz, gdy wiemy, jak działają inteligentne kontrakty Ethereum, możemy podzielić je na pięć części składowych:
- Wyrażanie logiki biznesowej jako programów komputerowych.
- Reprezentowanie zdarzeń, które wyzwalają tę logikę, jako komunikaty do programów.
- Używanie podpisów cyfrowych do udowodnienia, kto wysłał wiadomości.
- Umieszczanie programów, wiadomości i podpisów na łańcuchu bloków.
- Wykonywanie każdego programu dla każdej wiadomości w każdym węźle.
Powtarzając to, co powiedziałem na początku, uważam, że części od 1 do 4 to bardzo dobre pomysły. Zacznijmy od pierwszych dwóch (które, nawiasem mówiąc, nie są nowe). W przeciwieństwie do umów prawnych, które mogą mieć różnice w interpretacji, programy komputerowe są jednoznaczne. W przypadku dowolnego programu w dobrze zdefiniowanym języku programowania to samo wejście zawsze prowadzi do tego samego wyjścia. Jeśli więc jakaś logika biznesowa jest wyrażona jako program komputerowy, a zdarzenia są przedstawiane jako komunikaty do tego programu, to wynik biznesowy jest niezbity. Rzeczywiście, ta deterministyczna właściwość obliczeń sprawia przypadkowość trudny problem w informatyce i nawet maniacy w Google potrafią zrozumieć to źle.
A co z podpisami cyfrowymi i łańcuchami bloków? Dzięki temu organ centralny nie musi określać, które komunikaty zostały wysłane, w jakiej kolejności i przez kogo. Zamiast tego każdy uczestnik tworzy parę plików klucze prywatne i publicznei rozprowadza swój klucz publiczny pewnego razu innym uczestnikom. Następnie oni znak każdą wiadomość wraz z kluczem prywatnym przed jej rozpowszechnieniem w sieci. Pozostali uczestnicy mogą następnie zweryfikować źródło wiadomości, używając wyłącznie klucza publicznego nadawcy. To sprytne rozwiązanie kryptograficzne. Wreszcie, umieszczając program i podpisane wiadomości na blockchainie, możemy zapewnić, że każdy uczestnik ma identyczny pogląd na to, kto co zrobił i kiedy. W połączeniu z obliczeniami deterministycznymi oznacza to uczestnicy nie mogą nie zgadzać się co do końcowego wyniku biznesowego.
Ale co z ostatnim pomysłem, że każdy węzeł wykonuje każdy program dla każdej wiadomości? Tutaj dochodzimy do spornej części. Ponieważ chociaż ta globalna realizacja może być przyjemna, nie jest też konieczna. Ponieważ obliczenia są deterministyczne, nie ma znaczenia, czy program jest wykonywany przez jeden węzeł, każdy węzeł, czy jakiś proces zewnętrzny. Nie ma również znaczenia, czy dzieje się to w czasie rzeczywistym, na żądanie, czy 10 lat później. Wynik obliczeń będzie zawsze taki sam. A jeśli z jakiegoś powodu tak nie jest, może to być spowodowane tylko rozszerzeniem problem w oprogramowaniu lub sieci blockchain.
Problem z obliczeniami
Jeśli nie ma znaczenia, gdzie odbywa się obliczenie, dlaczego nie robić to wszędzie? Okazuje się, że programy komputerowe są nieprzewidywalne. Choć mogą wyglądać niewinnie, ich bieg może zająć dużo czasu. Czasami ciągną się w nieskończoność. Rozważmy następujący klasyczny przykład (znany jako LCG):
- Zestaw x na wybraną jednocyfrową liczbę
- Zestaw y do 123 * x + 567
- Zestaw x do ostatnich dwóch cyfr y, tj y moduł 100
- If x wiecej niż 2 następnie wróć do kroku 2
- W przeciwnym razie zatrzymaj i wyprowadź wartość x
Wystarczająco proste, prawda? Oto pytanie do Ciebie: czy ten program kiedykolwiek się zakończy? A może utknie w pliku nieskończona pętla? Nie tak pewny? Cóż, pozwól mi wyprowadzić cię z twojej nędzy: To zależy od początkowej wartości x.
If x is 0, 1, 2, 5, 6, 7 or 8program zatrzymuje się dość szybko. Ale jeśli x is 3, 4 or 9, trwa w nieskończoność. Nie wierzysz mi? Otwórz program Excel i spróbuj sam (będziesz potrzebować funkcji „MOD”).
Jeśli nie możesz tego przewidzieć, patrząc na kod, nie czuj się tak źle. Ponieważ jest to trudne nie tylko dla ludzi, to niemożliwe dla komputerów. Problem z określeniem, czy dany program zakończy wykonywanie, nazywa się problem z zatrzymaniem. W 1936 roku Alan Turing, z „Turing complete” i Gra tajemnic sława udowodniła, że nie da się go rozwiązać w ogólnym przypadku. Z wyjątkiem trywialnych wyjątków, jedyny sposób, aby dowiedzieć się, czy program zakończy działanie to działać tak długo, jak potrzebai to może trwać na zawsze.
Dla tych z nas, którzy woleliby żyć bez niebieskie ekrany śmierci i wirujące piłki plażowe, to wszystko jest raczej niewygodne. Ale żyjemy z tym, co robimy i, co niezwykłe, większość programów przez większość czasu działa płynnie. A jeśli nie, nowoczesne systemy operacyjne, takie jak Windows, chronią nas przed niekontrolowanym kodem, pozwalając nam ręcznie przerywać programy. Jednak tego samego nie można zrobić na blockchainie takim jak Ethereum. Gdybyśmy pozwolili poszczególnym węzłom na dowolne kończenie obliczeń, różne węzły miałyby różne opinie na temat wyniku tych obliczeń. Innymi słowy, plik konsensus sieci się załamał. Więc co ma zrobić blockchain?
Odpowiedź Ethereum opiera się na opłatach transakcyjnych, znanych również jako gaz. Nadawca każdej transakcji kraj za obliczenia, które wyzwala, a płatność ta jest pobierana przez górnika, który potwierdza ją w bloku. Mówiąc dokładniej, każda transakcja Ethereum określa z góry, ile „eteru” nadawcy można wydać na jej przetworzenie. Opłata jest stopniowo wydawana w miarę wykonywania umowy, krok po kroku, w maszynie wirtualnej Ethereum. Jeśli transakcja zabraknie opłat przed zakończeniem wykonywania, wszelkie zmiany w bazie danych są cofane, a opłata nie jest zwracana. Jeśli transakcja zakończy się pomyślnie, pozostała opłata jest zwracana nadawcy. W ten sposób transakcje mogą obciążać sieć tylko w takim stopniu, w jakim są skłonni za to zapłacić. To niewątpliwie zgrabne rozwiązanie ekonomiczne, ale do działania wymaga natywnej waluty blockchain.
Inteligentne kontrakty a współbieżność
Jeśli gaz może zapobiec niekontrolowanym obliczeniom, czy inteligentne kontrakty otrzymują zielone światło? Cóż, nie tak szybko, ponieważ jest inny problem z inteligentnymi kontraktami, o którym musimy porozmawiać:
Inteligentne kontrakty działają słabo przy dużej przepustowości transakcji.
Konkurencja jest jednym z najbardziej fundamentalnych problemów w architekturze komputerów. System ma dobrą współbieżność, jeśli pozwala na jednoczesne wykonywanie kilku procesów w dowolnej kolejności. Współbieżne systemy zmniejszają opóźnienia i umożliwiają ogólnie znacznie wyższą przepustowość dzięki optymalnemu wykorzystaniu technologii, takich jak planowanie procesu, przetwarzanie równoległe i partycjonowanie danych. Tak wyszukuje Google 30 bilionów prawie strony internetowe 100,000 czasy na sekundę.
W każdym systemie komputerowym zbiór transakcji może być przetwarzany jednocześnie tylko wtedy, gdy nie są od siebie zależne ani nie kolidują ze sobą. W przeciwnym razie różne zamówienia przetwarzania mogą prowadzić do zupełnie innych wyników. Przypomnijmy teraz, że inteligentny kontrakt ma powiązaną bazę danych i wykonuje obliczenia ogólnego przeznaczenia, w tym pętle. Oznacza to, że w odpowiedzi na konkretną wiadomość inteligentny kontrakt może odczytać lub zapisać każdą informację w swojej bazie danych. Na przykład, jeśli zarządza subwalutą, może zdecydować o zapłaceniu odsetek każdemu posiadaczowi tej waluty. Oczywiście nie zawsze tak będzie. Ale problem polega na tym, że przed uruchomieniem programu umowy dla określonej wiadomości węzeł blockchain nie mogę przewidzieć który podzbiór bazy danych kontraktu będzie używany. Nie jest też w stanie stwierdzić, czy ten podzbiór mógł być inny w różnych okolicznościach. A jeśli jedna umowa może wywołać inną, problem dotyczy również domeny cała zawartość każdej bazy danych każdej umowy. Dlatego każdą transakcję należy traktować tak, jakby mogła kolidować ze wszystkimi innymi. W kategoriach baz danych każda transakcja wymaga blokady globalnej.
Teraz pomyśl o świecie, w którym żyje węzeł blockchain. Transakcje przychodzą od różnych partnerów, w dowolnej kolejności, ponieważ nie ma centralnie zarządzanej kolejki. Ponadto w średnich odstępach czasu od 12 sekund (Ethereum) do 10 minut (bitcoin) pojawia się nowy blok, potwierdzający zestaw transakcji w określonej kolejności. Węzeł prawdopodobnie już widział większość transakcji bloku, ale niektóre mogą być nowe. Tak czy inaczej, kolejność transakcji w bloku prawdopodobnie nie odzwierciedla kolejności, w jakiej przybyły one indywidualnie. A ponieważ kolejność transakcji może wpływać na wynik, oznacza to transakcje nie mogą być przetwarzane do momentu potwierdzenia ich kolejności w łańcuchu bloków.
Prawdą jest, że niepotwierdzona transakcja bitcoin może wymagać cofnięcia z powodu pliku podwójne wydatki. Ale niepotwierdzona transakcja Ethereum nie ma żadnego przewidywalnego wyniku. Rzeczywiście, obecne implementacje Ethereum nawet nie przetwarzają transakcji bez ograniczeń. Ale jeśli węzeł Ethereum była aby natychmiast przetworzyć transakcje, nadal musiałby przewijać je i odtwarzać we właściwej kolejności po nadejściu bloku. To ponowne przetwarzanie jest ogromną stratą pracy i zapobiega procesom zewnętrznym jednocześnie czytanie bazy danych Ethereum w trakcie jej trwania. (Aby być uczciwym, należy zauważyć, że bitcoiny wdrożenie referencyjne również przewija i odtwarza transakcje, gdy pojawia się blok, ale jest to spowodowane tylko brakiem optymalizacji).
Więc co takiego jest w modelu transakcji Bitcoin, który umożliwia realizację poza zamówieniem? W bitcoinie każda transakcja wyraźnie stwierdza jej związek z innymi transakcjami. Posiada zestaw wejść i wyjść, w których każde wejście jest połączone z wyjściem z poprzedniej transakcji, którą „wydaje”. Nie ma innych zależności, o które trzeba się martwić. Dopóki (a) dwie transakcje bitcoin nie próbują wydać tego samego wyjścia i (b) wyjście jednej nie prowadzi do wejścia innej, węzeł bitcoin może być pewien, że transakcje są niezależne, i może przetwarzać je w dowolnej kolejności. Ich ostateczna pozycja w łańcuchu bloków nie ma żadnego znaczenia.
Aby użyć formalnej terminologii informatycznej, transakcje Ethereum muszą być ściśle uporządkowane, co oznacza, że należy zdefiniować względną kolejność między każdą parą transakcji. Z kolei transakcje bitcoin tworzą plik skierowany wykres acykliczny który jest tylko częściowo zamówiony, co oznacza, że dopuszczalna jest pewna niejednoznaczność w zlecaniu transakcji. Jeśli chodzi o współbieżność, to robi różnicę na świecie.
Aby spojrzeć na to w praktyce, dużo mówi się o prywatnych łańcuchach bloków w przedsiębiorstwie. Ale prywatny blockchain to tylko plik rozproszona baza danych z kilkoma dodatkowymi funkcjami. A jeśli próbowałeś dziś sprzedać bazę danych klasy korporacyjnej, która nie obsługuje współbieżności, wyśmiałbyś się z pokoju. Równie absurdalna byłaby sugestia, że pojedynczy węzeł musi czekać 12 sekund, zanim zobaczy wyniki swoich własnych transakcji. Jako sam Vitalik ostatnio tweetowałem:
Kluczowy punkt na temat Dapp dev, którego nie doceniałem: głównym problemem nie jest koszt tx; ppl może obsłużyć 0.001 USD. Prob to opóźnienie; ppl chcą 500ms, a nie 17s.
- Vitalik Buterin (@VitalikButerin) 27 września 2015 r.
Dla nas w Coin Sciences to nie tylko kwestia akademicka, ponieważ musimy zdecydować, czy i jak włączyć inteligentne kontrakty do MultiChain. O dziwo, pomimo setek żądań funkcji i pytania do tej pory tylko dwa były związane z inteligentnymi kontraktami, a nawet wtedy w słabszej formie niż zapewnia Ethereum. Tak więc, zachowując otwarty umysł, może się okazać, że inteligentne kontrakty nie rozwiązują żadnych rzeczywistych problemów naszych użytkowników.
Na korzyść Ethereum
Jeśli interesuje Cię tylko jedna strona sporu, możesz przestać czytać tutaj. Ale możesz się zastanawiać: czy twórcy Ethereum są głupi? Dlaczego, u licha, miałyby wymagać globalnego wykonania w publicznej rozproszonej bazie danych, skoro każdy węzeł mógł po prostu wybrać programy, na których mu zależy? Czy są jakieś dobre powody, dla których warto wybrać Ethereum?
Właściwie, jeśli mówimy o publicznych łańcuchach bloków, wydaje mi się, że są. Aby jednak zrozumieć te powody, musimy pomyśleć o dynamice samej sieci Ethereum.
Zapobieganie spamowi transakcyjnemu
Łańcuch bloków jest utrzymywany przez sieć peer-to-peer, w której każdy węzeł jest połączony z losowym podzbiorem innych węzłów. Kiedy nowa transakcja jest tworzona w jednym węźle, rozprzestrzenia się szybko i przypadkowo na inne poprzez proces zwany „przekazywaniem”. W otwartej sieci publicznej każdy może tworzyć transakcje, dlatego potrzebujemy sposobu, aby się przed nimi zabezpieczyć spam transakcyjny co może przytłoczyć system. Ponieważ sieć jest zdecentralizowana, można to osiągnąć tylko przez indywidualne węzły oceniające nowe transakcje w momencie ich nadejścia i decydujące o ich przekazaniu. Chociaż ten mechanizm nie może zapobiec spamerowi przed przytłaczający pojedynczego węzła, chroni całą sieć.
W sieci publicznej, gdy węzeł decyduje, czy przekazać nową transakcję, jednym z kluczowych kryteriów jest stosunek jego opłaty do kosztu sieci. W przypadku bitcoina koszt ten jest oparty głównie na surowym rozmiarze transakcji w bajtach. W Ethereum a bardziej złożona formuła jest używany na podstawie wysiłku obliczeniowego, jaki zajmie transakcja. Tak czy inaczej, opłaty działają jak rynkowy mechanizm zapobiegania spamowi transakcyjnemu.
Ale skąd węzeł wie, czy nadawca ma wystarczające środki na pokrycie oferowanej opłaty? W przypadku Ethereum na saldo „eteru” każdego użytkownika ma wpływ wynik poprzednich transakcji kontrakty mogą zarówno wydawać, jak i wypłacać eter. Tak więc bez faktycznego wykonywania wszystkich programów dla wszystkich poprzednich komunikatów węzeł Ethereum nie ma możliwości poznania aktualnego salda użytkownika. Dlatego nie może ocenić, czy transakcja powinna zostać przekazana do innych węzłów. A bez tego otwartą sieć można by trywialnie zniszczyć.
Kompaktowe dowody danych
W blockchain bloki są wypełniane głównie przez transakcje, które potwierdzają. Jednak każdy blok ma również zwarty „nagłówek”, który zawiera ważne informacje, takie jak znacznik czasu i łącze do poprzedniego bloku. W przypadku publicznych łańcuchów bloków opartych na dowód pracy haszowania, wejście dla algorytmu haszującego to sam nagłówek bloku. Oznacza to, że autorytet łańcucha może zostać oceniony przez „lekkiego klienta” bez pobierania większości jego zawartości. Na przykład od listopada 2015 r. Pełny zestaw nagłówków bitcoin ma rozmiar 30 MB w porównaniu z 45 GB dla całego łańcucha. To stosunek 1500: 1, co stanowi zasadniczą różnicę w porównaniu z urządzeniami mobilnymi o ograniczonej przepustowości i pamięci masowej.
Nagłówek każdego bloku Ethereum zawiera „korzeń stanu”, który stanowi odcisk palca stanu łańcucha po przetworzeniu transakcji w tym bloku. Stan ten obejmuje między innymi zawartość bazy danych każdej umowy, z wydajnym obliczeniem odcisku palca za pomocą pliku drzewo jednokierunkowych funkcji skrótu. Najmniejsza zmiana w bazie danych dowolnego kontraktu prowadziłaby do zupełnie innego stanu głównego, więc katalog główny „wiąże” zawartość bazy danych. (Równoważnym pojęciem „zobowiązań UTXO” dla bitcoina było omówione ale jeszcze nie zaimplementowane.)
Drzewiasta metoda obliczania korzeni stanu ma ważną właściwość: Mając znany katalog główny stanu, wartość określonego wpisu w bazie danych kontraktów można skutecznie udowodnić. Rozmiar tego dowodu jest proporcjonalny do głębokości a drzewo binarne których liście to indywidualne wpisy w bazie danych, tj. log2 całkowity rozmiar bazy danych. Oznacza to, że w przypadku indywidualnego wpisu jest to tylko dowód debel długości, gdy rozmiar bazy danych wynosi do kwadratu - rodzaj skalowalności, za którą zabijają informatycy. Teraz pamiętaj, że katalog główny stanu każdego bloku znajduje się w jego nagłówku, co może zweryfikować lekki klient. W rezultacie lekcy klienci mogą bezpiecznie i wydajnie wysyłać zapytania do dowolnego pełnego węzła w sieci w celu uzyskania indywidualnych wpisów w bazie danych oraz pełne węzły nie mogą kłamać.
Ale jeśli nasze nagłówki łańcucha bloków zawierają katalog główny stanu, a katalog główny stanu zależy od zawartości bazy danych, to każdy węzeł musi aktualizować bazę danych łańcucha bloków. To z kolei oznacza uruchamianie każdego kontraktu dla każdej otrzymanej do tej pory wiadomości. Bez tego węzeł wydobywczy nie znałby katalogu głównego stanu, który należy umieścić w nagłówku bloku, ani inne węzły nie mogłyby zweryfikować bloków, które otrzymują. Najważniejsze jest to, że jeśli chcemy, aby lekcy klienci bezpiecznie otrzymywali zwarte dowody danych z sieci, pełne węzły muszą wykonywać wszystkie obliczenia opisane przez dane w łańcuchu.
Werdykt dla prywatnych łańcuchów bloków
Wróćmy do tych dwóch argumentów w kontekście prywatnych łańcuchów bloków. Pierwszą rzeczą, na którą należy zwrócić uwagę w przypadku prywatnych sieci, jest to, że zazwyczaj nie mają one natywnego tokena ani kryptowaluty. Dzieje się tak z kilku powodów:
- Podmioty zainteresowane prywatnymi sieciami nie chcą mieć do czynienia z nową klasą aktywów.
- Model konsensusu dla prywatnych sieci opiera się na porozumieniu między zbiorem zamkniętych górników, a nie na dowodzie pracy. Tak więc koszt wydobycia jest minimalny, a górnicy nie potrzebują dużej nagrody.
- Ponieważ wszyscy uczestnicy prywatnej sieci są poddawani weryfikacji, istnieje mniejsze obawy dotyczące spamu i nadużyć.
Przypomnijmy, że pierwszym argumentem przemawiającym za globalną realizacją było umożliwienie każdemu węzłowi Ethereum podjęcia decyzji o przekazaniu przychodzącej transakcji na podstawie oferowanej opłaty. Cóż, brak natywnego tokena sprawia, że ten powód jest nieistotny, ponieważ jeśli blockchain nie ma natywnego tokena, transakcje nie mogą wnosić opłat. Jeśli z jakiegoś powodu spam nadal stanowi problem, należy go kontrolować w inny sposób, np. Cofając uprawnienia nadawcy.
Rozważmy teraz drugi argument, aby włączyć kompaktowe dowody danych. Publiczny łańcuch bloków może mieć użytkowników końcowych na urządzeniach mobilnych lub innych lekkich portfelach. Ale jest to mniej prawdopodobne w przypadku sieci prywatnych, których podstawową funkcją jest udostępnianie bazy danych między większymi firmami. A jeśli blockchain is użytkownik ma dostęp z urządzenia mobilnego, prawdopodobnie jest klientem jednej z tych firm i może ufać temu, co powie im ta firma.
Zamiast tego w prywatnych łańcuchach bloków problemy globalnych egzekucji są szczególnie dotkliwe. Jeśli prywatny łańcuch bloków nie ma natywnego tokena, nie mamy podobnego do gazu mechanizmu rynkowego do zapobiegania niekontrolowanemu kodowi. Zamiast tego musielibyśmy wprowadzić pewnego rodzaju ustalony limit liczby kroków obliczeniowych na transakcję. Aby jednak transakcje mogły celowo wykonywać wiele operacji, ten limit musiałby być wysoki. W rezultacie sieć może nadal marnować dużo energii na niezamierzone pętle, zanim ostatecznie je wyłączy.
Jeśli chodzi o współbieżność, w prywatnych łańcuchach bloków o wiele bardziej prawdopodobne jest, że będą one zawierać rodzaje transakcji, dla których współbieżność jest niezbędna. Pojemność publicznych blockchainów jest ograniczona faktem, że aby być w znaczący sposób zdecentralizowanym, potrzebują tysięcy węzłów obsługiwanych przez entuzjastów o ograniczonych budżetach. Z kolei prywatne sieci znacznie częściej łączą ze sobą zaledwie kilkadziesiąt przedsiębiorstw, w którym to przypadku przepustowość i szybkość są kluczowe.
Podwójne łańcuchy bloków
Jeśli więc wszystko, co dotyczy inteligentnych kontraktów, ma sens w prywatnych sieciach, oprócz globalnej realizacji, gdzie to nas prowadzi? Jaki typ łańcucha bloków zapewni nam potrzebną wydajność i elastyczność? Szczerze mówiąc, wciąż o tym myślę. Ale jedna odpowiedź może brzmieć: blockchain z dwoma poziomami.
Niższy poziom zostałby zbudowany na transakcjach typu bitcoin, które są przetwarzane natychmiast i jednocześnie i nie muszą czekać na potwierdzenia bloków. Transakcje te mogą wykonywać proste ruchy aktywów, w tym bezpieczne wymiany atomowebez uciekania się do inteligentnych kontraktów. Ale ten niższy poziom byłby również używany jako plik ślepa warstwa magazynująca dla programów i komunikatów, które reprezentują bardziej złożone procesy biznesowe, osadzone jako metadane transakcji.
Jeśli chodzi o wyższy poziom, każdy uczestnik sieci wybrałby które programy chcą uruchamiać. Niektórzy mogą zdecydować się w ogóle nie prowadzić, ponieważ są zainteresowani tylko prostymi ruchami aktywów. Inni mogą uruchamiać niewielką grupę programów, które są istotne dla ich wewnętrznych procesów (wiedząc, że ta grupa nie wymienia żadnych komunikatów z programami na zewnątrz). Niektórzy mogą nawet zdecydować się na globalne wykonanie, przetwarzając każdą wiadomość dla każdego programu, tak jak Ethereum. Ale najważniejsze byłoby to każdy węzeł uruchamia tylko kod, którego potrzebuje. W informatyce technika ta nazywa się leniwa ocena, ponieważ wymaga wykonania jak najmniejszej ilości pracy, nie pomijając niczego kluczowego. W przypadku leniwej oceny, jeśli obliczenia w łańcuchu bloków pójdą nie tak, tylko te węzły, które faktycznie wykonują ten program, zauważą. Sama sieć nic nie odczuje.
Jeśli chodzi o MultiChain, jeśli w końcu będziemy wspierać pełne obliczenia Turinga, wątpię, czy wdrożymy globalne wykonanie. Być może pójdziemy na takie leniwe, dwupoziomowe podejście, a może wymyślimy coś lepszego.
Inteligentne kontrakty w publicznych łańcuchach bloków
Jak argumentowałem wcześniej, w publiczny Tam są kompletne łańcuchy bloków, takie jak Ethereum jest dobre powody do globalnej realizacji. Ale oto inne pytanie: co to jest przedsiębiorstwo przypadek użycia dla tych łańcuchów? Wyobraźmy sobie czas w przyszłości, kiedy przedsiębiorstwa będą miały wystarczające zaufanie do publicznych łańcuchów bloków, aby używać ich w rzeczywistych procesach biznesowych. Jeśli grupa firm chce osadzić jakąś logikę obliczeniową w publicznym łańcuchu bloków, ma dwie możliwości: (1) użycie łańcucha blokowego w stylu Ethereum z globalnym wykonaniem lub (2) użycie każdy blockchain jako prosta warstwa pamięci i samodzielne wykonywanie kodu. Biorąc pod uwagę te opcje, dlaczego mieliby wybrać (1)?
Racjonalnym wyborem byłby publiczny blockchain z (a) najniższą ceną za bajt pamięci i / lub (b) najwyższym poziomem bezpieczeństwa opartym na całkowitej mocy wydobywczej. Ponieważ obliczenia są deterministyczne, firmy muszą płacić tylko sieci sklep ich umowa i wiadomości, a nie w rzeczywistości wygląda tak im. Ponadto, używając łańcucha bloków tylko do przechowywania, mogą używać dowolny język programowania. Może to być kod bajtowy Ethereum, JavaScript / ECMAScript dla czytelności, a nawet kod maszynowy dla wysokiej wydajności. W rzeczywistości Ethereum kontraktuje można już przechowywać używając metadanych w łańcuchu bloków bitcoin. To jest dokładnie to dwupoziomowe podejście, które zasugerowałem.
Ta dyskusja jest związana z pojęciem warstwy abstrakcji, rozsławiony przez Model sieciowy OSI. Aby zapewnić optymalną niezawodność i elastyczność, każda warstwa systemu powinna być jak najbardziej oderwana (tj. Niezależna) od innych warstw. Na przykład nie chcielibyśmy, aby nasze kontrolery dysków twardych zawierały kod do renderowania obrazów JPEG. Dlaczego więc mielibyśmy chcieć, aby łańcuch bloków wykonywał programy, które przechowuje? W większości przypadków użycia nie odnosimy z tego żadnych korzyści i wiąże się to ze znacznymi kosztami.
Epilog
Jeśli globalne wykonywanie nie ma sensu w prywatnych łańcuchach bloków, dlaczego wszyscy nad tym pracują? Myślę, że można to wytłumaczyć, przynajmniej częściowo, nieporozumieniem co do tego, co mogą zrobić łańcuchy bloków w prawdziwym świecie. Widzisz, publiczne blockchainy, takie jak bitcoin bezpośrednio przenieść rzeczywisty majątek (a mianowicie ich rodzima waluta), ponieważ blockchain definiuje własność tej waluty. Łączy to dwa aspekty aktywów, które są zwykle odrębne: (a) księga, w której rejestruje się właściciel aktywów, oraz (b) jego faktyczna fizyczna lokalizacja. To sprawia, że kryptowaluty są ostateczne instrument na okaziciela, tworząc nowy wspaniały świat lub raj dla praczy pieniędzy, w zależności od tego, kogo zapytasz.
Ale w przypadku innych zasobów, które istnieją niezależnie od łańcucha bloków, jedyne, co może zrobić łańcuch, to posiadać plik rekord kogo oni powinien należeć do. Pozostanie tak, dopóki nie zobaczymy pierwotna emisja aktywów na blockchain, z prawnym prawem własności tego zasobu zdefiniowanym na podstawie bazy danych łańcucha. Uważam, że dla sektora finansów instytucjonalnych ten dzień jest jeszcze odległy, nie tylko ze względu na wymagane zmiany regulacyjne. Dopóki, zawsze będzie dodatkowy krok, umowne i proceduralne, między tym, co mówi blockchain, a tym, co dzieje się w prawdziwym świecie. Ten krok może równie dobrze zawierać kompletny kod Turinga, leniwie wykonywany w ostatniej możliwej chwili.
Na ten problem zwraca uwagę przypadek „inteligentnych obligacji”, o którym tyle słyszeliśmy. Inteligentna obligacja jest emitowana bezpośrednio na blockchain, a blockchain zapewnia, że płatności kuponowe są dokonywane na rzecz posiadaczy obligacji w odpowiednich momentach. Wszystko dobrze i dobrze. Ale co się stanie, jeśli emitent obligacji nie ma wystarczających środków na koncie blockchain, aby pokryć należną płatność? Blockchain z pewnością może ustawić flagę, aby powiedzieć, że coś jest nie tak, ale nie może zrobić nic innego. Nadal potrzebujemy armii prawników i księgowych, aby uporządkować cały bałagan, czy to poprzez redukcję wartości, restrukturyzację zadłużenia, konfiskatę, czy całkowite bankructwo. W skrócie:
Jeśli inteligentne kontrakty nie mogą spełnić ich obietnicy, dlaczego płacimy ich cenę?
Dziękuję za przeczytanie tego bloga z roznymi moimi bledami ortograficznymi i skladniowymi.
- Dystrybucja treści i PR oparta na SEO. Uzyskaj wzmocnienie już dziś.
- PlatoData.Network Pionowe generatywne AI. Wzmocnij się. Dostęp tutaj.
- PlatoAiStream. Inteligencja Web3. Wiedza wzmocniona. Dostęp tutaj.
- PlatonESG. Węgiel Czysta technologia, Energia, Środowisko, Słoneczny, Gospodarowanie odpadami. Dostęp tutaj.
- Platon Zdrowie. Inteligencja w zakresie biotechnologii i badań klinicznych. Dostęp tutaj.
- Źródło: https://www.multichain.com/blog/2015/11/smart-contracts-good-bad-lazy/
- :ma
- :Jest
- :nie
- :Gdzie
- $W GÓRĘ
- 000
- 001
- 1
- 10
- 12
- 2014
- 2015
- 27
- 30
- a
- O nas
- o tym
- powyżej
- roztargniony
- nadużycie
- akademicki
- dostęp
- Konto
- osiągnięty
- w poprzek
- działać
- Działania
- zajęcia
- rzeczywisty
- faktycznie
- ostry
- acykliczny
- w dodatku
- dodatek
- Dodatkowy
- oddziaływać
- Po
- przed
- Umowa
- algorytm
- alicja
- Wszystkie kategorie
- dopuszczać
- dozwolony
- pozwala
- prawie
- sam
- już
- również
- zawsze
- Dwuznaczność
- wśród
- an
- i
- Inne
- odpowiedź
- każdy
- ktoś
- wszystko
- osobno
- Zastosowanie
- aplikacje
- podejście
- właściwy
- architektura
- SĄ
- argumentował
- argument
- Armia
- przybył
- AS
- na bok
- zapytać
- aspekty
- oszacować
- oceniać
- kapitał
- klasa aktywów
- Aktywa
- powiązany
- At
- próba
- Uwaga
- władza
- średni
- uniknąć
- świadomy
- z dala
- b
- z powrotem
- Łazienka
- Bilans
- salda
- Zakaz
- przepustowość
- Bankructwo
- Banki
- na podstawie
- BE
- Plaża
- bo
- stają się
- być
- zanim
- rozpocząć
- jest
- uwierzyć
- korzyści
- BEST
- Ulepsz Swój
- pomiędzy
- Bitcoin
- Blokowy bitcoin
- węzeł bitcoin
- Transakcja bitcoinowa
- transakcje bitcoin
- bitcoinery
- Blokować
- blockchain
- blockchains
- Bloki
- bob
- obligacja
- urodzony
- Pożyczanie
- obie
- Dolny
- odważny
- przerwa
- Oddech
- Jasny
- szerszy
- Budżety
- wybudowany
- ciężar
- biznes
- procesów biznesowych
- ale
- Buterin
- by
- obliczony
- obliczenie
- nazywa
- Gość
- oprawa ołowiana witrażu
- CAN
- nie może
- Pojemność
- walizka
- Etui
- centralny
- Główny autorytet
- na pewno
- łańcuch
- więzy
- zmiana
- Zmiany
- najtańsze
- ZOBACZ
- wybór
- wybory
- Dodaj
- okoliczności
- klasa
- klasyczny
- klient
- klientów
- zamknięte
- kod
- Kawa
- Moneta
- Coindesk
- zabezpieczony
- połączyć
- połączony
- jak
- byliśmy spójni, od początku
- kompaktowy
- Firmy
- w porównaniu
- kompletny
- całkowicie
- Ukończył
- kompleks
- obliczenia
- obliczeniowy
- obliczenia
- komputer
- Computer Science
- computing
- Troska
- równoległy
- warunek
- pewność siebie
- Potwierdzać
- potwierdzenia
- połączony
- Zgoda
- Rozważać
- składnik
- konsumować
- zawierać
- zawiera
- zawartość
- treść
- kontekst
- ciągły
- umowa
- umowy
- kontrast
- kontrolowanych
- przeliczone
- przekonany
- skorygowania
- Koszty:
- mógłby
- kupon
- kurs
- pokrywa
- obejmuje
- Stwórz
- stworzony
- tworzy
- Tworzenie
- tłum
- Crowdfunding
- istotny
- kryptowaluta
- kryptograficzny
- Waluta
- Aktualny
- klient
- Dapp
- dane
- Baza danych
- dzień
- sprawa
- Dług
- Zdecentralizowane
- Zdecentralizowana wymiana
- zdecentralizowane-wymiany
- zdecydować
- postanowiła
- Decydowanie
- głęboko
- zdefiniowane
- opóźnienia
- Kreowanie
- zależeć
- W zależności
- zależy
- głębokość
- czerpać
- opisać
- opisane
- zaprojektowany
- Mimo
- zniszczony
- Ustalać
- określaniu
- dev
- rozwinięty
- deweloperzy
- urządzenie
- urządzenia
- ZROBIŁ
- różnica
- różne
- cyfrowy
- cyfrowo
- cyfry
- dyskusja
- odrębny
- dystrybuowane
- rozdzielczy
- do
- robi
- Nie
- dominujący
- zrobić
- nie
- wątpić
- na dół
- tuzin
- z powodu
- dynamika
- e
- każdy
- Wcześniej
- Ziemia
- Gospodarczy
- efektywność
- skutecznie
- wysiłek
- bądź
- osadzać
- osadzone
- umożliwiać
- Umożliwia
- zakończenia
- energia
- dość
- zapewnić
- zapewnienie
- Enterprise
- przedsiębiorstwa
- Miłośnicy
- Cały
- podmioty
- wejście
- Równie
- Równoważny
- niezbędny
- istotnie
- ethereum
- sieć ethereum
- Węzły Ethereum
- transakcje ethereum
- maszyna wirtualna ethereum
- ewaluację
- Parzyste
- wydarzenia
- EVER
- Każdy
- wszyscy
- wszystko
- wszędzie
- dokładnie
- Bada
- przykład
- przewyższać
- wymiana
- Wymiana
- Podniecenie
- wykonać
- wykonany
- Wykonuje
- wykonywania
- egzekucja
- istnieć
- wyjaśnione
- ekspresowy
- wyrażone
- rozciąga się
- stopień
- zewnętrzny
- dodatkowy
- fakt
- sprawiedliwy
- dość
- SŁAWA
- sławny
- wentylator
- daleko
- FAST
- faworyzować
- Cecha
- Korzyści
- opłata
- czuć
- Opłaty
- kilka
- wypełniony
- finał
- W końcu
- finansować
- budżetowy
- Instytucje finansowe
- Znajdź
- odcisk palca
- koniec
- i terminów, a
- pięć
- ustalony
- Elastyczność
- Skupiać
- obserwuj
- następujący
- W razie zamówieenia projektu
- na zawsze
- przepadek
- Nasz formularz
- formalny
- Fundacja
- cztery
- od
- z przodu
- pełny
- Pełny węzeł
- funkcjonować
- fundamentalny
- fundusze
- przyszłość
- GAS
- Ogólne
- ogólny cel
- geniusz
- otrzymać
- Dać
- dany
- Globalne
- Go
- Goes
- będzie
- dobry
- zarządzanie
- wspaniały
- Zielony
- zielone światło
- Ziemia
- Zarządzanie
- uchwyt
- zdarzyć
- dzieje
- Ciężko
- haszysz
- mieszanie
- Have
- headers
- wysłuchany
- tutaj
- hierarchiczny
- Wysoki
- wyższy
- Najwyższa
- Podświetlony
- przytrzymaj
- posiadacz
- posiadacze
- uczciwy
- W jaki sposób
- How To
- Jednak
- HTML
- http
- HTTPS
- olbrzymi
- Setki
- i
- pomysł
- pomysły
- identiques
- zidentyfikowane
- zidentyfikować
- if
- zdjęcia
- wyobraźnia
- obraz
- natychmiast
- wdrożenia
- wdrożenia
- realizowane
- ważny
- niemożliwy
- in
- W innych
- zawierać
- Włącznie z
- Przybywający
- niezależny
- niezależnie
- indywidualny
- Indywidualnie
- Informacja
- początkowy
- niewinny
- wkład
- Wejścia
- natychmiast
- zamiast
- instytucjonalny
- instytucje
- odsetki
- zainteresowany
- ingerować
- wewnętrzny
- najnowszych
- przedstawiać
- wprowadzono
- zaangażowany
- problem
- Wydany
- problemy
- IT
- JEGO
- samo
- Praca
- właśnie
- Trzymać
- konserwacja
- Klawisz
- Zabić
- Uprzejmy
- Wiedzieć
- Wiedząc
- znany
- Brak
- język
- Języki
- większe
- Nazwisko
- Utajenie
- później
- uruchomiona
- Prawnicy
- warstwa
- nioski
- prowadzić
- Wyprowadzenia
- skoki
- najmniej
- Pozostawiać
- Księga główna
- Regulamin
- Długość
- mniej
- niech
- najmu
- poziom
- lekki
- lekki
- lubić
- Prawdopodobnie
- LIMIT
- Ograniczony
- Linia
- linie
- LINK
- mało
- relacja na żywo
- Zyje
- lokalizacja
- zablokować
- logika
- długo
- długi czas
- Popatrz
- poszukuje
- Partia
- dużo
- niższy
- maszyna
- zrobiony
- Główny
- głównie
- utrzymuje
- Większość
- robić
- WYKONUJE
- Dokonywanie
- zarządzane
- zarządzający
- ręcznie
- wiele
- wielu ludzi
- March
- rynek
- Materia
- Może..
- me
- znaczenie
- znaczenia
- znaczy
- mechanizm
- wiadomość
- wiadomości
- Metadane
- metoda
- może
- milion
- nic
- górnik
- Górniczy
- minimalny
- Górnictwo
- nieporozumienie
- Aplikacje mobilne
- urządzenie przenośne
- urządzenia mobilne
- model
- Nowoczesne technologie
- zmodyfikowano
- modyfikować
- moment
- pieniądze
- jeszcze
- większość
- Najbardziej popularne posty
- przeważnie
- ruch
- Ruchy
- dużo
- wielołańcuchowy
- musi
- mianowicie
- rodzimy
- Natywny token
- Natura
- Schludny
- niezbędny
- Potrzebować
- wymagania
- sieć
- sieci
- Nowości
- Nowa cecha
- następna generacja
- miło
- nacięcie
- Nie
- węzeł
- węzły
- żaden
- ani
- noty
- zauważyć
- Zauważyć..
- Pojęcie
- już dziś
- numer
- z naszej
- obiekty
- of
- poza
- oferuje
- Oferty
- on
- Na łańcuchu
- pewnego razu
- ONE
- tylko
- koncepcja
- operacyjny
- system operacyjny
- działanie
- Opinie
- naprzeciwko
- Optymalny
- optymalizacja
- Opcje
- or
- zamówienie
- Zlecenia
- pierwotnie
- Inne
- Inni uczestnicy
- Pozostałe
- Inaczej
- ludzkiej,
- sobie
- na zewnątrz
- Wynik
- wyniki
- wydajność
- Wyjścia
- wprost
- zewnętrzne
- koniec
- ogólny
- własny
- właściciel
- własność
- posiada
- stron
- đôi
- Raj
- część
- uczestnik
- Uczestnicy
- szczególny
- strony
- Zapłacić
- płatność
- płatności
- peer to peer
- Tracker
- Ludzie
- dla
- wykonać
- jest gwarancją najlepszej jakości, które mogą dostarczyć Ci Twoje monitory,
- wykonywane
- wykonuje
- może
- Zezwolono
- uprawnienia
- fizyczny
- kawałek
- Miejsce
- plato
- Analiza danych Platona
- PlatoDane
- Popularny
- stwarzane
- Pozycje
- możliwy
- power
- mocny
- Praktyczny
- precyzyjny
- przewidzieć
- Możliwy do przewidzenia
- woleć
- zapobiec
- Zapobieganie
- zapobiega
- poprzedni
- Cena
- pierwotny
- prywatny
- Prywatne łańcuchy bloków
- Klucz prywatny
- prawdopodobnie
- Problem
- problemy
- wygląda tak
- obrobiony
- procesów
- przetwarzanie
- Program
- zaprogramowany
- Programowanie
- języki programowania
- Programy
- projektowanie
- obietnica
- dowód
- dowody
- własność
- chronić
- Udowodnij
- okazały
- Sprawdzony
- zapewnia
- publiczny
- publiczny blockchain
- Klucz publiczny
- cel
- cele
- położyć
- Putting
- pytanie
- szybko
- królik
- przypadkowy
- zasięg
- szybko
- raczej
- stosunek
- Surowy
- React
- Czytaj
- Czytający
- real
- Prawdziwy świat
- w czasie rzeczywistym
- naprawdę
- powód
- Przyczyny
- otrzymać
- Odebrane
- otrzymuje
- niedawno
- dokumentacja
- zmniejszyć
- odniesienie
- odzwierciedlić
- regulowane
- regulacyjne
- związane z
- związek
- względny
- Przekaźnik
- niezawodność
- pozostawać
- pozostały
- szczątki
- renderuje
- powtarzać
- WIELOKROTNIE
- reprezentować
- reprezentowane
- reprezentowanie
- wywołań
- wymagany
- Wymaga
- Odpowiadać
- odpowiedź
- Restrukturyzacja
- dalsze
- Efekt
- Nagradzać
- Rewind
- prawo
- korzeń
- run
- bieganie
- działa
- bezpiecznie
- Powiedział
- wzgląd
- taki sam
- powiedzieć
- mówią
- Skalowalność
- nauka
- NAUKI
- Naukowcy
- Ekrany
- druga
- sekund
- sektor
- bezpieczeństwo
- widzieć
- widzenie
- widziany
- wysłać
- nadawca
- wysyła
- rozsądek
- wysłany
- służyć
- zestaw
- Zestawy
- w panelu ustawień
- kilka
- Short
- powinien
- bok
- Podpisy
- podpisana
- znaczący
- Prosty
- po prostu
- jednocześnie
- ponieważ
- pojedynczy
- Rozmiar
- mały
- mądry
- inteligentna umowa
- Inteligentne kontrakty
- płynnie
- So
- dotychczas
- Tworzenie
- rozwiązanie
- ROZWIĄZANIA
- rozwiązany
- kilka
- coś
- czasami
- Źródło
- spam
- specyficzny
- prędkość
- wydać
- spędził
- Spready
- początek
- rozpoczęty
- Stan
- Zjednoczone
- Gwiezdny
- Ewolucja krok po kroku
- Cel
- lepki
- Nadal
- STONE
- Stop
- Zatrzymuje
- przechowywanie
- przechowywany
- sklep
- Struktury
- udany
- Z powodzeniem
- taki
- wystarczający
- wsparcie
- pewnie
- system
- systemy
- Brać
- trwa
- Mówić
- rozmawiać
- technika
- Technologies
- powiedzieć
- mówi
- Tendencję
- semestr
- terminologia
- REGULAMIN
- niż
- że
- Połączenia
- Blok
- Przyszłość
- Źródło
- Państwo
- świat
- ich
- Im
- sami
- następnie
- Tam.
- w związku z tym
- Te
- one
- rzecz
- rzeczy
- myśleć
- Myślący
- to
- tych
- tysiące
- Przez
- wydajność
- poziom
- czas
- czasy
- znak czasu
- do
- już dziś
- razem
- żeton
- także
- Kwota produktów:
- CAŁKOWICIE
- transakcja
- Opłaty transakcyjne
- transakcje
- przenieść
- leczony
- wyzwalać
- kłopot
- Zaufaj
- próbować
- Turinga
- SKRĘCAĆ
- włącza
- drugiej
- TX
- rodzaj
- jednogłośnie
- dla
- zrozumieć
- niewątpliwie
- w odróżnieniu
- mało prawdopodobne,
- aż do
- nowomodny
- zmodernizowane
- na
- us
- Stosowanie
- posługiwać się
- przypadek użycia
- używany
- Użytkownik
- Użytkownicy
- za pomocą
- zazwyczaj
- wartość
- Werdykt
- zweryfikować
- początku.
- sprawdzone
- Zobacz i wysłuchaj
- Wirtualny
- Maszyna wirtualna
- vitalik
- vitalik buterin
- vs
- czekać
- Czekanie
- Portfele
- chcieć
- chce
- była
- Marnotrawstwo
- Droga..
- we
- słabszy
- Pogoda
- sieć
- DOBRZE
- dobrze zdefiniowane
- były
- Co
- Co to jest
- jeśli chodzi o komunikację i motywację
- czy
- który
- Podczas
- KIM
- cały
- kogo
- którego
- dlaczego
- Wikipedia
- będzie
- skłonny
- okna
- w
- w ciągu
- bez
- pełen zdumienia
- słowa
- Praca
- pracujący
- działa
- świat
- martwić się
- by
- napisać
- napisany
- lat
- jeszcze
- ty
- Twój
- siebie
- zefirnet