Tölvusnápur stal 31 milljón dali af Ether - hvernig það gerðist og hvað það þýðir fyrir Ethereum

Í gær dró tölvusnápur af sér næststærsta heist í sögu stafrænna gjaldmiðla.

Um klukkan 12:00 PST nýtti óþekktur árásarmaður gagnrýninn galla í Parity maríu-undirskrift veskinu á Ethereum netinu og tæmdi þrjú gríðarleg veski að andvirði $ 31.000.000 virði af Ether á nokkrum mínútum. Miðað við nokkrar klukkustundir í viðbót hefði tölvusnápurinn getað komist upp með yfir $ 180.000.000 úr viðkvæmum veskjum.

En einhver stoppaði þá.

Eftir að hafa hringt í vekjaraklukkunum skipulagði hópur góðviljaðra hvít hattahakkara úr Ethereum samfélaginu hratt. Þeir greindu árásina og komust að því að engin leið var til að snúa þjófnaðinum við, en samt voru mörg fleiri veski viðkvæm. Tíminn var kjarninn, svo þeir sáu aðeins einn tiltækan valkost: hakka veskin sem eftir voru áður en árásarmaðurinn gerði það.

Með því að nýta sömu varnarleysið hakkuðu hvíthetturnar allar veskin sem eftir voru í hættu og tæmdu reikninga sína og hindruðu í raun árásarmanninn í að ná einhverri af $ 150.000.000 sem eftir var.

Já, þú lest það rétt.

Til að koma í veg fyrir að spjallþráðinn rændi fleiri bönkum skrifuðu hvíthetturnar hugbúnað til að ræna öllum þeim bönkum sem eftir eru í heiminum. Þegar peningunum var örugglega stolið hófu þeir ferlið við að skila féð til viðkomandi reikningshafa. Fólkið sem átti peningana sína sparað með þessari hetjulegu frammistöðu er nú í því að sækja fé sitt.

Það er óvenjuleg saga og hún hefur verulegar afleiðingar fyrir heim cryptocururrency.

Það er mikilvægt að skilja að þessi nýting var ekki varnarleysi í Ethereum eða í Parity sjálfu. Frekar, það var varnarleysi í sjálfgefnu snjallsamningakóðanum sem Parity viðskiptavinurinn gefur notandanum til að dreifa veskjum með mörgum undirskriftum.

Þetta er allt frekar flókið, svo til að gera smáatriði um þetta skýrt fyrir alla, þá er þessari færslu skipt í þrjá hluta:

  1. Hvað gerðist nákvæmlega? Skýring á Ethereum, snjöllum samningum og marskáma veski.
  2. Hvernig gerðu þeir það? Tæknileg skýring á árásinni (sérstaklega fyrir forritara).
  3. Hvað nú? Afleiðingar árásarinnar um framtíð og öryggi snjalla samninga.

Ef þú þekkir Ethereum og dulmálsheiminn geturðu sleppt yfir í seinni hlutann.

1. Hvað gerðist nákvæmlega?

Það eru þrjár byggingareiningar við þessa sögu: Ethereum, snjallir samningar og stafræn veski.

Ethereum er stafrænn gjaldmiðill sem fundinn var upp árið 2013 - heil 4 árum eftir útgáfu Bitcoin. Síðan hefur það vaxið að vera næststærsti stafræni gjaldmiðill í heimi með markaðsvirði - 20 milljarðar dollara, samanborið við 40 milljarða dala Bitcoin.

Eins og allir cryptocururrency, er Ethereum afkomandi Bitcoin samskiptareglnanna og bætir hönnun Bitcoin. En ekki láta blekkjast: þó að það sé stafrænn gjaldmiðill eins og Bitcoin, þá er Ethereum miklu öflugri.

Þó Bitcoin noti blockchain sinn til að innleiða bókhald peningalegra viðskipta, notar Ethereum blockchain þess til að skrá ríkisbreytingar í risa dreifðri tölvu. Samsvarandi stafræn gjaldmiðill Ethereum, eter, er í meginatriðum aukaverkun þess að knýja þessa gríðarlegu tölvu.

Til að orða það á annan hátt, er Ethereum bókstaflega tölva sem spannar allan heiminn. Allir sem reka Ethereum hugbúnaðinn á tölvunni sinni taka þátt í rekstri þessarar heims tölvu, Ethereum Virtual Machine (EVM). Vegna þess að EVM var hannað til að vera Turing-heill (hunsa bensínmörk) getur það gert nánast hvað sem er sem hægt er að koma fram í tölvuforriti.

Leyfðu mér að vera eindregið: þetta er brjálað efni. Dulmálsheimurinn lýtur vel að möguleikum Ethereum, sem hefur séð gildi hans aukast mikið á síðustu 6 mánuðum.

Framkvæmdaraðilasamfélagið hefur staðið saman að baki og það er mikil spenna yfir því sem hægt er að byggja ofan á EVM - og þetta færir okkur til snjalla samninga.

Snjallir samningar eru einfaldlega tölvuforrit sem keyra á EVM. Að mörgu leyti eru þeir eins og venjulegir samningar, nema þeir þurfa ekki lögfræðinga eða dómara til að túlka þá. Í staðinn eru þau tekin saman við kóðann og túlkuð af ótvíræðu af EVM. Með þessum forritum geturðu (meðal annars) framselt stafrænan gjaldeyri daglega miðað við reglur samningskóðans.

Auðvitað, það eru hlutir sem venjulegir samningar gera sem snjallir samningar geta ekki - snjallir samningar geta ekki auðveldlega haft samskipti við hluti sem eru ekki á blockchain. En snjallir samningar geta líka gert hluti sem venjulegir samningar geta ekki, svo sem að framfylgja mengi reglna algjörlega með óbrjótandi dulritun.

Þetta leiðir okkur til hugmyndar um veski. Í heimi stafrænna gjaldmiðla eru veski hvernig þú geymir eignir þínar. Þú færð aðgang að veskinu þínu með því að nota í meginatriðum leyndarmál lykilorð, einnig þekkt sem einkalykillinn þinn (einfaldaður aðeins).

Það eru til margar mismunandi gerðir af veskjum sem veita mismunandi öryggiseiginleika, svo sem afturköllunarmörk. Ein vinsælasta gerðin er fjölliða veskið.

Í multi-undirskrift veski eru nokkrir einkalyklar sem geta opnað veskið, en bara einn lykill er ekki nægur til að opna hann. Ef margra undirskriftar veskið þitt er með 3 lykla, til dæmis, getur þú tilgreint að að minnsta kosti 2 af 3 lyklunum verði að vera til staðar til að opna það með góðum árangri.

Þetta þýðir að ef þú, faðir þinn og móðir þín eruð hvort sem er undirritað í þessu veski, jafnvel þó að glæpamaður hafi hakkað móður þína og stolið einkalykli hennar, gætu þeir samt ekki fengið aðgang að fjármunum þínum. Þetta leiðir til miklu sterkari öryggisábyrgða, ​​þannig að multi-sigs eru staðalbúnaður í veskisöryggi.

Þetta er gerð veskisins sem tölvusnápur réðst á.

Svo hvað fór úrskeiðis? Brustu þeir einkalyklana? Notuðu þeir skammtatölvu eða einhvers konar nýjunga reiknirit?

Nei, öll dulmál voru hljóð. Hagnýtingin var næstum hlægileg: þau fundu villu í forritaranum í kóðanum sem lét þá endurræsa veskið, næstum því eins og að endurheimta það í verksmiðjustillingar. Þegar þeir gerðu það var þeim frjálst að setja sig sem nýju eigendur og ganga síðan út með allt.

2. Hvernig gerðist þetta?

Eftirfarandi er tæknileg skýring á nákvæmlega því sem gerðist. Ef þú ert ekki verktaki skaltu ekki hika við að fara í næsta hluta þar sem þetta er að verða forritunarþungt.

Ethereum er með nokkuð einstakt forritunarlíkan. Á Ethereum skrifar þú kóða með því að birta samninga (sem þú getur hugsað sem hluti) og viðskipti eru framkvæmd með því að kalla aðferðir á þessa hluti til að stökkbreyta stöðu þeirra.

Til þess að keyra kóða á Ethereum þarftu fyrst að dreifa samningnum (dreifingin er sjálf viðskipti) sem kostar lítið magn af Ether. Þú þarft þá að hringja í aðferðir á samningnum til að hafa samskipti við hann, sem kostar meira Ether. Eins og þú getur ímyndað þér, þetta hvetur forritara til að hámarka kóðann sinn, bæði til að lágmarka viðskipti og lágmarka útreikningskostnað.

Ein leið til að draga úr kostnaði er að nota bókasöfn. Með því að hringja í samning þinn á sameiginlegt bókasafn sem var sent frá á fyrri tíma þarftu ekki að dreifa neinum sameiginlegum kóða. Með því að halda kóðanum þínum DRY muntu spara peninga með því að halda kóða þínum.

Sjálfgefna multi-sig veskið í Parity gerði nákvæmlega þetta. Það hélt tilvísun í sameiginlegt utanaðkomandi bókasafn sem innihélt ræsingu veskis. Þessu sameiginlegu bókasafni er vísað til með opinberum lykli bókasafnsins.

// FIELDS heimilisfang stöðugt _walletLibrary = 0xa657491c1e7f16adb39b9b60e87bbb8d93988bc3;

Bókasafnið er kallað á nokkrum stöðum, í gegnum EVM leiðbeiningar sem kallast DELEGATECALL, sem gerir eftirfarandi: fyrir hvaða aðferð sem kallar DELEGATECALL, þá mun það kalla á sömu aðferð á samningnum sem þú ert að framselja til, en nota samhengi núverandi samnings . Það er í meginatriðum eins og ofurkall, nema án erfðarhlutans. (Jafngildið í JavaScript væri OtherClass.functionName.apply (þetta, rök).)

Hérna er dæmi um þetta í multi-sig veskinu: isOwner aðferðin sendir bara til isOwner aðferð sameiginlegu veskjasafnsins með því að nota ástand núverandi samnings:

virka erOwner (heimilisfang _addr) stöðugt skilar (bool) {return _walletLibrary.delegatecall (msg.data); }

Þetta er allt saman saklaust. Marg-sig veskið innihélt öll rétt leyfiseftirlit og þeir voru vissir um að knýja fram strangar heimildir fyrir öllum viðkvæmum aðgerðum sem tengjast stöðu veskisins.

En þau gerðu ein afgerandi mistök.

Styrkleiki gerir þér kleift að skilgreina „fallback aðferð“. Þetta er aðferðin sem kallast þegar engin aðferð er sem samsvarar nafni aðferðar. Þú skilgreinir það með því að gefa það ekki nafn:

fall () {// gera efni hér fyrir allar óþekktar aðferðir}

Parity teymið ákvað að láta allar óþekktar aðferðir sem sendu Ether til samningsins vera sjálfgefnar að afhenda sendan Ether.

fall () sem greiðist {// greiðist er bara lykilorð sem þýðir að þessi aðferð getur fengið / borgað Ether
ef (msg.value> 0) {// bara verið að fá smá pening? Innborgun (msg.sender, msg.value); } annars {kasta; }}

En þeir tóku þetta skrefi lengra og hér voru mikilvæg mistök þeirra. Hér að neðan er raunverulegur kóði sem ráðist var á.

virka () sem þarf að greiða {// bara að fá smá pening? ef (msg.value> 0) Innborgun (msg.sender, msg.value); annars ef (msg.data.length> 0) _walletLibrary.delegatecall (msg.data); }

Í grundvallaratriðum:

  • Ef heiti aðferðarinnar er ekki skilgreint á þessum samningi ...
  • Og það er enginn eter sendur í viðskiptunum ...
  • Og það eru nokkur gögn í álagi skilaboðanna…

Þá mun það kalla nákvæmlega sömu aðferð ef hún er skilgreind í _walletLibrary, en í tengslum við þennan samning.

Með því að nota þetta kallaði árásarmaðurinn aðferð sem kallast initWallet (), sem var ekki skilgreind á multisig samningnum en var skilgreind í sameiginlegu veskjasafninu:

virka initWallet (heimilisfang [] _ ​​eigendur, uint _ krafist, uint _daylimit) {initDaylimit (_daylimit); initMultiowned (_ eigendur, _ krafist); }

Sem kallar initMultiowned aðferðina ...

fall initMultiowned (heimilisfang [] _ ​​eigendur, uint _ krafist) {m_numOwners = _owners.length + 1; m_owners [1] = uint (msg.sender); m_ownerIndex [uint (msg.sender)] = 1; fyrir (uint i = 0; i <_owners.length; ++ i) {m_owners [2 + i] = uint (_owners [i]); m_ownerIndex [uint (_owners [i])] = 2 + i; } m_required = _ krafist; }

Sérðu hvað gerðist þarna? Árásarmaðurinn byrjaði í meginatriðum frumkvæðið að samningnum með því að framselja með bókasafnsaðferðinni og skrifa yfir eigendur á upphaflega samningnum. Þeir og hvaða fylking eigenda sem þeir leggja fram sem rök verða nýju eigendurnir.

Í ljósi þess að þeir stjórna nú öllu veskinu geta þeir dregið út það sem eftir er af jafnvæginu. Og það var einmitt það sem þeir gerðu.

InitWallet: https://etherscan.io/tx/0x707aabc2f24d756480330b75fb4890ef6b8a26ce0554ec80e3d8ab105e63db07

Flutningurinn: https://etherscan.io/tx/0x9654a93939e98ce84f09038b9855b099da38863b3c2e0e04fd59a540de1cb1e5

Svo hvað var að lokum varnarleysið? Þú gætir haldið því fram að það væru tveir. Í fyrsta lagi voru initWallet og initMultiowned í veskjasafninu ekki merktir sem innri (þetta er eins og einkaaðferð, sem myndi koma í veg fyrir þetta úthlutað símtal) og þessar aðferðir gáfu ekki úr skugga um að veskið væri ekki þegar byrjað. Annað hvort athuga hefði gert þetta hakk ómögulegt.

Önnur varnarleysið var hráa sendinefndin. Þú getur hugsað um þetta sem jafngildir hráu matsyfirlýsingu, sem keyrir á streng sem notandi fylgir. Til að reyna að vera ítarlegri notaði þessi samningur aðferðaforritun til að gera mögulega aðferð til að hringja í undirliggjandi bókasafn. Öruggari aðferðin hér væri að hvítlista tilteknar aðferðir sem notandanum er heimilt að hringja í.

Vandræðin eru auðvitað sú að þetta er dýrara í gaskostnaði (þar sem það þarf að meta fleiri hárnæring). En þegar kemur að öryggi verðum við líklega að komast yfir þetta áhyggjuefni þegar við skrifum snjalla samninga sem flytja gríðarlegar fjárhæðir.

Svo það var árásin.

Þetta var snjall afli, en þegar þú bendir á það, þá virðist hann nánast grunnskortur. Árásarmaðurinn stökk síðan á þessa varnarleysi fyrir þremur stærstu veskjum sem þeir gátu fundið - en miðað við viðskiptatímann voru þeir að gera þetta alveg handvirkt.

Hvíta hattahópurinn var að gera þetta í stærðargráðu með því að nota skriftir og þess vegna gátu þeir slegið árásarmanninn í kýlið. Í ljósi þessa er ólíklegt að árásarmaðurinn hafi verið mjög fágaður í því hvernig þeir skipulögðu árásina.

Þú gætir spurt spurninguna þó - af hverju rúlla þeir ekki bara þessu hakk aftur, eins og þeir gerðu með DAO hakkið?

Því miður er það ekki raunverulega mögulegt. DAO-hakkið var einstakt að því leyti að þegar árásarmaðurinn tæmdi DAO í DAO barni voru sjóðirnir frystir í marga daga í snjallum samningi áður en hægt var að sleppa þeim fyrir árásarmanninum.

Þetta kom í veg fyrir að eitthvað af stolnu fjármunum færi í dreifingu, þannig að stolnum Ether var þaggað niður. Þetta gaf Ethereum samfélaginu nægan tíma til að stjórna opinberri sveit um hvernig eigi að bregðast við árásinni.

Í þessari árás stal árásarmaðurinn féð strax og gat farið að eyða þeim. Erfitt gaffal væri óframkvæmanlegt - hvað gerir þú við öll viðskipti sem eiga sér stað downstream? Hvað með fólkið sem saklaust verslaði eignir með árásarmanninum? Þegar eterinn sem þeir hafa stolið verður þveginn og fer í almenna umferð er það eins og fölsuð víxlar sem dreifast í hagkerfinu - það er auðvelt að stoppa þegar það er allt í einum skjalatösku, en þegar allir eru hugsanlega með fölsuð reikning geturðu ekki snúið aftur klukkuna lengur.

Þannig að viðskiptunum verður ekki snúið við. 31 milljón dala tapið stendur. Þetta er dýr en nauðsynleg kennslustund.

Svo hvað ættum við að taka frá þessu?

3. Hvað þýðir þessi árás fyrir Ethereum?

Hér eru nokkrir mikilvægir takeaways.

Mundu fyrst að þetta var ekki galli í Ethereum eða snjöllum samningum almennt. Frekar, þetta var villur framkvæmdaraðila í tilteknum samningi.

Svo hver voru crackpot verktaki sem skrifaði þetta? Þeir hefðu átt að vita betur, ekki satt?

Verktakarnir hér voru krosssamstarf milli Ethereum-stofnunarinnar (bókstaflega höfundar Ethereum), kjarnateymis Parity og meðlima samfélagsins sem var opinn. Það fór í gegnum víðtæka ritrýni. Þetta er í grundvallaratriðum hæsti staðall fyrir forritun sem er til í Ethereum vistkerfinu.

Þessir verktaki voru mannlegir. Þeir gerðu mistök. Og það gerðu gagnrýnendur sem skoðuðu þennan kóða.

Ég hef lesið nokkrar athugasemdir við Reddit og HackerNews á eftirfarandi hátt: „Hvaða augljós mistök! Hvernig var það jafnvel mögulegt að þeir hafi misst af þessu? “ (Með því að líta framhjá því að „augljósa“ varnarleysið var kynnt í janúar og aðeins nú uppgötvað.)

Þegar ég sé svör eins og þetta, þá veit ég að þeir sem tjá sig eru ekki faglegir verktaki. Fyrir alvarlegan verktaki eru viðbrögðin í staðinn: fjandinn, þetta voru heimsk mistök. Ég er feginn að ég var ekki sá sem bjó til það.

Mistök af þessu tagi eru reglulega gerð við forritun. Öll forrit eru í hættu á villum hjá forriturum. Við verðum að kasta frá okkur hugarfari „ef þeir væru bara varkárri hefði þetta ekki gerst.“ Í ákveðnum mælikvarða dugar ekki varfærni.

Þar sem forrit eru í stærðargráðu en ekki léttvæg flækjustig verður þú að byrja á því að taka það í ljós að forrit eru líklega ekki rétt. Ekkert magn af dugnaði eða prófun manna dugar til að koma í veg fyrir allar mögulegar villur. Jafnvel stofnanir eins og Google eða NASA gera mistök við forritun, þrátt fyrir mikla hörku sem þeir beita gagnrýninn kóða.

Okkur væri gott að taka síðu frá áreiðanleika venja hjá fyrirtækjum eins og Google og Airbnb. Hvenær sem það er framleiðslugalla eða straumleysi, gera þeir greiningu eftir fæðingu og dreifa þeim innan fyrirtækisins. Í þessum postmortems, það er alltaf meginregla að aldrei kenna einstaklingum.

Að kenna mistökum á einstaklinga er tilgangslaust, því allir forritarar, sama hversu reynslumiklir þeir eru, hafa líkurnar á því að gera mistök. Í staðinn er tilgangur fóstureyðinga að greina hvað í ferlinu leyfði þeim mistökum að koma á vettvang.

Vandamálið var ekki það að verktaki gleymdi að bæta innra við veskjasafnið, eða að þeir gerðu hráa sendifulltrúa án þess að athuga hvaða aðferð væri kallað.

Vandinn er sá að forritunartækið þeirra leyfði þeim að gera þessi mistök.

Þegar lífríki snjallra samninga þróast verður það að þróast í þá átt að gera þessi mistök erfiðari, og það þýðir að gera samninga sjálfgefna.

Þetta leiðir mig til næsta atriðis míns.

Styrkur er veikleiki þegar kemur að forritunarmálum. Því sterkari og meira svipmikill forritunarmál, því flóknari verður kóðinn hans. Styrkleiki er mjög flókið tungumál, fyrirmynd að líkjast Java.

Flækjan er óvinur öryggisins. Erfitt er að rökstyðja flókin forrit og erfiðara að bera kennsl á brúnatilfelli fyrir. Ég held að tungumál eins og Viper (viðhaldið af Vitalik Buterin) séu lofandi skref í þessa átt. Viper inniheldur sjálfgefið grunnöryggisbúnað, svo sem afmarkaðar lykkjubyggingar, ekkert heiltala yfirfall og kemur í veg fyrir aðrar grunngalla sem verktaki ætti ekki að þurfa að rökstyðja.

Því minna sem tungumálið gerir þér kleift, því auðveldara er að greina og sanna eiginleika samnings. Öryggi er erfitt vegna þess að eina leiðin til að sanna jákvæða yfirlýsingu eins og „þessi samningur er öruggur“ ​​er að afsanna alla mögulega árásarvektara: „Ekki er hægt að frumstilla þennan samning,“ „Ekki er hægt að nálgast fjármuni hans nema af eigendum,“ osfrv. Því færri sem mögulegt er að ráðast á árásina, því auðveldara er að þróa öruggan samning.

Einfaldara forritunarlíkan leyfir einnig hluti eins og formlega sannprófun og sjálfvirka prófun. Þetta eru svæði undir virkar rannsóknir, en rétt eins og snjallir samningar hafa tekið upp nýjungar dulmáls, ættu þeir einnig að byrja að fella fremstu röð forritunarmála.

Það er stærri kennslustund hérna líka.

Flestir forritararnir sem eru að komast inn í þetta rými, ég meðtaldir, koma frá bakgrunnsþróun á vefnum og blockchain tækjabúnaðurinn er hannaður til að vera þekki fyrir vefur verktaki. Traustleiki hefur náð gríðarlegri ættleiðingu í forritarasamfélaginu vegna þekkingar sinnar á annars konar forritun. Á vissan hátt gæti þetta endað sem fall hans.

Vandamálið er að forritun blockchain er í grundvallaratriðum frábrugðin þróun vefsins.

Leyfðu mér að útskýra.

Fyrir aldur viðskiptavinamiðlara veflíkansins var mest forritun unnin fyrir pakkaðan neytendahugbúnað eða innbyggð kerfi. Þetta var fyrir daginn sjálfvirkar hugbúnaðaruppfærslur. Í þessum forritum var afhent vara endanleg - þú gafst út eitt form af hugbúnaðinum þínum á 6 mánaða fresti, og ef það var villur, þá þyrfti sá galla að standa þar til næsta útgáfa. Vegna þessa lengri þróunarferlis voru allar hugbúnaðarútgáfur prófaðar strangt við allar hugsanlegar kringumstæður.

Vefur þróun er miklu meira fyrirgefandi. Þegar þú ýtir við slæmum kóða á netþjóninn er það ekki mikið mál ef það eru mikilvæg mistök - þú getur bara snúið kóðanum til baka eða rúllað áfram með lagfæringu, og allt gengur vel vegna þess að þú stjórnar netþjóninum. Eða ef það versta gerist og það er virkt brot eða gagnaleki, geturðu alltaf stöðvað blæðinguna með því að slökkva á netþjónum þínum og aftengja sjálfan þig frá netinu.

Þessi tvö þróunarlíkön eru í grundvallaratriðum ólík. Það er aðeins af einhverju eins og þróun á vefnum sem þú getur fengið mottóið „farið hratt og brotið hluti.“

Flestir forritarar í dag eru þjálfaðir í vefþróunarlíkaninu. Því miður er blockchain öryggislíkanið meira í ætt við eldra líkanið.

Í blockchain er kóða í eðli sínu óbreytanlegt. Þegar þú hefur sent slæman snjallan samning er öllum frjálst að ráðast á hann eins lengi og erfitt og þeir geta og það er engin leið að taka hann aftur ef þeir komast fyrst að því. Nema þú byggir snjalla öryggisbúnað inn í samninga þína, ef það er villur eða árangursrík árás, þá er engin leið að slökkva á netþjónum þínum og laga mistökin. Að vera á Ethereum samkvæmt skilgreiningu þýðir að allir eiga netþjóninn þinn.

Algeng orðatiltæki í netöryggi er „árás er alltaf auðveldari en varnir.“ Blockchain margfaldar þetta ójafnvægi verulega. Það er miklu auðveldara að ráðast á þig vegna þess að þú hefur aðgang að kóða hvers samnings, veist hversu mikið fé er í honum og getur tekið eins langan tíma og þú vilt reyna að ráðast á hann. Og þegar árásin þín hefur náð árangri geturðu mögulega stolið öllum peningunum í samningnum.

Ímyndaðu þér að þú hafir sent hugbúnað fyrir sjálfsalar. En í stað þess að galla leyfir þér að einfaldlega stela nammi úr einni vél leyfði gellunni þér samtímis að stela nammi úr hverri vél í heiminum sem notaði þennan hugbúnað. Já, svona virkar blockchain.

Ef um er að ræða árangursríka árás er vörn afar erfið. Hvítu hattarnir í Parity hakkinu sýndu fram á hve takmarkaðir varnarvalkostir þeirra voru - það var engin leið til að tryggja eða taka í sundur samningana, eða jafnvel til að hakka stolna peninga til baka; allt sem þeir gátu gert var að hakka viðvarandi samninga sem eftir voru áður en árásarmaðurinn gerði það.

Þetta virðist geta stafað af myrkri framtíð.

En ég held að þetta sé ekki dauðafæri fyrir blockchain forritun. Frekar, það staðfestir það sem allir vita nú þegar: þetta vistkerfi er ungt og óþroskað. Það mun taka mikla vinnu að þróa þjálfun og aga til að meðhöndla snjalla samninga á þann hátt sem bankar meðhöndla hraðbanka hugbúnað sinn. En við verðum að komast þangað til að blockchain nái árangri þegar til langs tíma er litið.

Þetta þýðir ekki bara forritarar sem þroskast og fá meiri þjálfun. Það þýðir líka að þróa verkfæri og tungumál sem auðvelda allt þetta og veita okkur strangar ábyrgðir varðandi kóðann okkar.

Það er enn snemma. Ethereum er verk í vinnslu og það breytist hratt. Þú ættir ekki að meðhöndla Ethereum sem banka eða í staðinn fyrir fjárhagslega innviði. Og vissulega ættir þú ekki að geyma peninga í heitu veski sem þú ert ekki sáttur við að tapa.

En þrátt fyrir allt þá held ég að Ethereum muni vinna þegar til langs tíma er litið. Og það er þess vegna: verktaki samfélagið í Ethereum er það sem gerir það svo öflugt.

Ethereum mun ekki lifa eða deyja vegna peninganna sem í því eru. Það mun lifa eða deyja út frá hönnuðunum sem berjast fyrir því.

Deildin á hvítum hatta sem kom saman og varði viðkvæmu veskin gerði það ekki fyrir peninga. Þeir gerðu það vegna þess að þeir trúa á þetta vistkerfi. Þeir vilja að Ethereum þrífist. Þeir vilja sjá framtíðarsýn sína rætast. Og eftir allar vangaveltur og hagnað, þá er það að lokum þetta fólk sem ætlar að koma samfélaginu inn í framtíð þess. Þeir eru grundvallaratriðum ástæðan fyrir því að Ethereum mun sigra þegar til langs tíma er litið - eða ef þeir yfirgefa Ethereum verður brottför þeirra ástæða þess að það tapar.

Þessi árás er mikilvæg. Það mun hrista fólk upp. Það mun neyða samfélagið til að taka langa og harða skoðun á bestu starfsvenjum í öryggismálum. Það mun neyða verktaki til að meðhöndla snjalla samninga forritun með miklu meiri hörku en nú er.

En þessi árás hefur ekki hrakið styrk smiðanna sem eru að vinna í þessu efni. Svo í þeim skilningi er það tímabundið áföll.

Í lokin eru árásir sem þessar góðar fyrir samfélagið að vaxa úr grasi. Þeir kalla þig til vitundar og neyða þig til að hafa augun opin. Það er sárt og pressan mun líklega klúðra sögunni. En hvert sár gerir samfélagið sterkara og færir okkur nær því að skilja djúpt skilning á tækni blockchain - bæði hættum þess og ótrúlegum möguleikum.

PS Ef þú ert dev og þú vilt læra meira um snjallt samningsöryggi, þá er þetta mjög góð úrræði.

Errata: Þessi grein sagði upphaflega að Gavin Wood væri verktaki samningsins, sem er rangur. Gavin er stofnandi Parity og ýtti lagfæringunni á samninginn, en var ekki upphaflega verktaki. Það hélt einnig upphaflega að 77 milljónir dollara til viðbótar væru viðkvæmir, en þetta telur ekki öll ERC20 (ICO) tákn sem voru viðkvæm. Heildarupphæðin er í raun $ 150.000.000 + ef þú tekur öll ERC20 tákn inn. Frá því að þetta var skrifað (21. júlí kl. 16:00 EST) var heildarverðmæti þeirra eigna sem hvíthetturnar spöruðu $ 179.704.659.