INTEGRITY Dokumentace

Nouzové vypínače

Při psaní kontraktů buďte obzvláště opatrní a pište zabezpečený kód, včetně nouzového vypínače, aby bylo možné případné chyby v kódu odstranit. Pokud nouzový vypínač nezahrnete a v chytrém kontraktu se vyskytnou zranitelnosti, které lze zneužít, může to vést ke krádeži prostředků z chytrého kontraktu nebo od jiných osob.

Toto se výrazně projevilo během nechvalně proslulý incident DAO ↗. Smart kontrakt DAO fungoval jako komplexní decentralizovaný rizikový kapitálový fond a na svém vrcholu držel Ether v hodnotě $250 milionů, který získal od skupiny investorů. Hackeři zneužili zranitelnosti ve smart kontraktu a ukradli Ether v hodnotě $50 milionů.

Protože v Etheru neexistuje způsob, jak transakce vrátit zpět, došlo k velmi kontroverznímu „hard forku“, při němž se většina komunity dohodla, že přijme blok obsahující neobvyklá změna stavu která v podstatě převedla všechny prostředky DAO do speciálního záchranného kontraktu „WithdrawDAO“. Tím, že přesvědčila dostatek těžařů, aby tento nestandardní blok přijali jako platný, se DAO podařilo vrátit prostředky investorům. Ne všichni se s tímto řešením ztotožnili a ti, kteří nesouhlasili, nestandardní blok odmítli a vytvořili síť Ethereum Classic, přičemž obě blockchainy se dál vyvíjely nezávisle na sobě.

Omezení

Nouzové vypínače mohou způsobovat vlastní problémy. Například pokud se aktivuje nouzový vypínač u kontraktu, který slouží jako knihovna, přestanou všechny kontrakty závislé na tomto kontraktu fungovat podle očekávání, i když je samotný kód knihovny neměnný. Nedávno útočník aktivoval nouzový vypínač ve funkci podkladové knihovny, což způsobilo, že přes 500 000 Ether zůstalo uvízlé v peněženkách s více podpisy ↗. Uživatelé knihovny multi-signature předpokládali, že neměnnost kódu znamená, že knihovna bude vždy fungovat podle očekávání, a blok přijali. V důsledku toho dnes existuje mnoho nástrojů, které kontrolují smart kontrakty na chyby nebo umožňují bug bounty programy.

Chytré smlouvy komunikující s blockchainem jsou deterministické pouze tehdy, pokud zohledňují aktuální stav blockchainu.

V čem se to liší?

Jde o radikálně odlišný přístup k zajištění transparentnosti a odpovědnosti. Všechny smlouvy a transakce jsou veřejné a ověřované prostřednictvím konsenzus, je důvěra rozložena mezi lidi, místo aby byla soustředěna v několika velkých institucích.

Důvěra vkládaná do institucí má historický základ. Tato historie buduje důvěryhodnost.

Důvěra vkládaná do algoritmů založených na konsenzu vychází z předpokladu, že většina lidí je čestná, přesněji řečeno že žádná dostatečně velká skupina lidí se nemůže spojit za účelem dosažení škodlivého výsledku. Toto je demokratizace důvěry. Při útoku na DAO se většina uzlů dohodla, že přijme nestandardní přechod stavu. Tím se škody způsobené útokem fakticky odstranily, což ukazuje, že přinejmenším ve světě blockchainu je vnímání realitou. Protože většina lidí tento nestandardní blok „uvěřila“, tedy přijala, stal se z něj „skutečný“, tedy platný blok.