Inteligentne kontrakty Bitcoin vs Ethereum: część 2

Dlaczego Ethereum nigdy nie jest potrzebne Całym powodem istnienia Ethereum jest przezwyciężenie „ograniczeń” języka skryptowego Bitcoin. W białej księdze Ethereum wymieniono cztery ograniczenia. Analizujemy każdą z nich i pokazujemy, że wszelkie twierdzenia o rzekomych ograniczeniach są fałszywe, podważając ich istnienie.

BTC vs ETH

Brak kompletności Turinga chociaż istnieje duży podzbiór obliczeń, który obsługuje język skryptowy Bitcoin, nie obsługuje on prawie wszystkiego. Główną brakującą kategorią są pętle.

Wbrew powszechnemu przekonaniu, Bitcoin jest kompletnym Turingiem. Istnieją nie tylko recenzowane teoretyczne¹ dowody², ale także empirycznie weryfikowane na łańcuchu bloków Bitcoin³. Jednym z powszechnych nieporozumień jest to, że skrypt Bitcoin to zestaw instrukcji niskiego poziomu (czyli kody operacyjne) maszyny wirtualnej. Sam w sobie nie potrzebuje instrukcji zapętlania. Pętle mogą i powinny być konstruowane na wyższym poziomie, tak jak wszystkie współczesne języki programowania. Został zbudowany w języku programowania wysokiego poziomu sCrypt. Jeśli ta sama logika zostanie zastosowana do maszyny wirtualnej Ethereum, jest ona również niekompletna pod względem Turinga, ponieważ w jej kodach operacyjnych nie ma pętli. Podobnie jest z Javą, ponieważ jej wirtualna maszyna JVM również nie ma kodów operacji pętli, co jest oczywiście fałszywe, ponieważ wiadomo, że Java jest kompletna z Turingiem. Inne sposoby zapętlenia w Bitcoin obejmują łączenie transakcji i kanałów płatności.

Ślepota wartości nie ma możliwości, aby skrypt UTXO zapewniał precyzyjną kontrolę nad kwotą, którą można wypłacić. Istnieje sposób, aby skrypt UTXO mógł w pełni kontrolować kwotę, która ma zostać wypłacona na dowolnej szczegółowości, przy użyciu techniki zwanej OP_PUSH_TX. Pozwala skryptowi na dostęp do kwoty w UTXO i określenie, w jaki sposób można ją wydać na różne wyjścia. Istnieją już opracowane skrypty/kontrakty, które umożliwiają wypłatę tylko określonej kwoty, takiej jak ta.

Brak państwa nie ma możliwości na wieloetapowe kontrakty lub skrypty, które utrzymują jakikolwiek inny stan wewnętrzny poza tym. Istnieją sposoby na utrzymanie stanu wewnętrznego w kontrakcie Bitcoin za pomocą OP_PUSH_TX. Istnieje wiele kontraktów wieloetapowych, takich jak kółko i krzyżyk oraz aukcja. Jest to analogiczne do tego, jak programy funkcyjne utrzymują stan. Mimo że wszystkie funkcje są czyste i bezstanowe, stany mutowalne można nadal budować za pomocą abstrakcji, takich jak monada stanów. Bitcoin Script/UTXO, który sam w sobie jest bezstanowy, implementuje stany w podobny sposób.

Ślepota na łańcuch bloków UTXO jest ślepy na dane blockchain, takie jak numer jednorazowy, znacznik czasu i poprzedni hash bloku. Istnieje silny powód, dla którego Bitcoin UTXO/Script nie zezwala na dostęp do danych łańcucha bloków: bezpieczeństwo. Jeśli Script może uzyskać dostęp do informacji zewnętrznych, osoba atakująca może manipulować tymi informacjami, aby uzyskać nieuczciwą przewagę. Jak na ironię, to właśnie tego rodzaju luki umożliwiły wiele ataków na Ethereum, takich jak SWC-116 i SWC-120, co jest niemożliwe w przypadku Bitcoin.

[1] Craig S. Wright: A Proof of Turing Completeness in Bitcoin Script.IntelliSys (1) 2019: 299–313

[2] Craig S. Wright: Bitcoin: A Total Turing Machine.IntelliSys (1) 2019: 237–252

[3] Bitcoin script is Turing Complete: sCrypt’s ‘Game of Life’ is Proof

[4] Play Tic-Tac-Toe on Bitcoin: https://scrypt.io/tic-tac-toe

Autor : BitcoinSV.pl

Źródło : Bitcoin vs Ethereum smart contracts: Part 2 – CoinGeek



Author: BitcoinSV.pl
CEO