Dažu pēdējo nedēļu laikā EOS bloku ķēdes protokola lietotājiem ir periodiskas problēmas ar piekļuvi tīklam. Nesen rakstu raksta pseidonīms viedo līgumu izstrādātājs un drošības inženieris Deksarans aprakstīja problēmas acīmredzamo sakni: lēta metode, kas ļauj hakeriem “pārslogot” tīklu – vai ievietot to zemas efektivitātes režīmā – ar tikai dažu dolāru vērtu EOS.
Šķiet, ka šī izmantošana ļāva hakerim agrāk septembra sākumā no EOS azartspēļu lietojumprogrammas EOSPlay nozagt vairāk nekā 110 000 USD kriptovalūtā. Tomēr EOS mātesuzņēmuma Block.one vadītāji, nav fazed, apgalvojot, ka tīkls darbojas “pareizi”.
EOS pamati: Pārvaldība, miets un pārslodzes režīms
EOS.io ir bloka ķēdē darbināms viedo līgumu protokols decentralizētu lietojumprogrammu (DApps) izstrādei un mitināšanai. Tas izmanto vienprātības modeli, ko sauc par deleģēto likmju pierādīšanu (DPoS), un to pārvalda saskaņā ar EOS lietotāja līgumu (EUA).
Saskaņā ar līgumu izmaiņas tīklā var tikt veiktas, ja ir vienprātība starp vismaz 15 no 21 bloku ražotāja – t.i., neatkarīgām vienībām, kas ir atbildīgas par bloku apstrādi EOS bloku ķēdē..
Protokolu atbalsta tā identiskā vietējā kriptonauda, kas pēc tirgus kopējās kapitalizācijas pašlaik ir septītais lielākais aktīvs. Šie marķieri ir iebūvētā resursu izmantošanas mehānisma pamatā, kas ir viena no EOS atšķirīgajām iezīmēm. Ikreiz, kad darījums tiek iesniegts EOS tīklā, bloķētajiem ražotājiem tas ir jāapstrādā.
Laika ilgums (mērīts mikrosekundēs), kas bloku ražotājam nepieciešams darījuma apstiprināšanai, tiek saukts par CPU. Vienkāršāk sakot, EOS lietotāji un izstrādātāji var piekļūt ķēdes procesora un joslas platuma resursiem, ievietojot savus žetonus. Bloki tiek ražoti ik pēc 500 milisekundēm. Katram bloka ražotājam ir 200 milisekundes, lai validētu bloku. Atlikušās 300 milisekundes tiek atstātas izplatīšanai tīklā.
Proti, 200 milisekunžu robežās ir arī procentuālais slieksnis, pie kura visā tīklā sākas ātruma ierobežošana. Citiem vārdiem sakot, kad bloks sasniedz 10% robežu no kopējā 200 milisekunžu CPU atļautā bloka, tas izraisa centrālā procesora piešķiršanas algoritmu, lai pārietu uz “pārslodzes” režīmu.
“Pirms šī ierobežojuma sasniegšanas visi lietotāji var brīvi veikt darījumus tīklā, jo tas nav” pārslodzes režīmā “,” raksta autore paskaidroja. “Kad šis ierobežojums ir pārsniegts, lietotāji atkal tiek pārsniegti proporcionālajai daļai no kopējā CPU par katru iesaistīto EOS sadalījumu.”
Kā norādīts cits raksts rakstīja EOS Canada, kas ir lielākais bloku ražotājs EOS bloku ķēdes tīklā, ja noteiktā brīdī procesoram būtu piesaistīti 1000 marķieri un vienā kontā būtu iesaistīti 20 marķieri, tad šim kontam tiktu garantēti 2% no kopējā CPU tīkla jaudu.
Tomēr, ja tīkls nav sasniedzis slieksni, kurā tiek aktivizēts ātruma ierobežojums (nevis pārslodzes režīmā), tas ļauj šim kontam pārskaitīt darījumus virs garantētā 2% apjoma. Kad šis slieksnis ir pārsniegts, konts nevar pārsniegt piešķīrumu. Turklāt laikā "sastrēgumi" fāzē katra lietotāja CPU apjoms sāk samazināties, līdz katrai pārslogotajai pusei beidzas CPU un pārtrauc veikt procesoru patērējošas darbības.
Daniels Larimers, EOS līdzdibinātājs un Block.one tehnoloģiju vadītājs, atsaucas šim mehānismam kā tīkla “bezmaksas ieguvumam”:
“Īpašnieks un īpašnieks #eos lietotājiem piešķir proporcionālu pieejamā joslas platuma daļu. Ja cilvēki neizmanto savu daļu, tā tiek proporcionāli novirzīta citiem. Lielas lietošanas laikā lietotāji vairs nesaņem šo bezmaksas priekšrocību. ”
Problēma: pārslodzes režīmu ir pārāk viegli iedarbināt
Deksarans iebilda, ka problēma ir tā, ka pārslodzes režīmu ir pārāk viegli iedarbināt. Pēc analīzes viedo līgumu izstrādātājs katras stundas sākumā pamanīja ievērojamus CPU izmantošanas pieaugumus, ko, iespējams, izraisīja derības ar DApp, ko sauc par EOSBetDice. Pēc tam Deksarans nolēma novērtēt, cik daudz procesora nepieciešams, lai tīkls nonāktu sastrēgumos.
Eksperimentam izstrādātājs CPU piesaistīja 7156 EOS. Šo EOS summu var aizņemties no resursu apmaiņas par zemām divām EOS izmaksām mēnesī (mazāk nekā 6 ASV dolāri), uzsvēra Deksarans. Lai redzētu, kā tests ietekmēs vidējos EOS tīkla lietotājus, drošības inženieris iepriekš izvēlējās trīs nejaušus lietotāju kontus, kuri tiešsaistē spēlēja EOSKnights DApp tieši pirms sesijas sākuma.
Pēc tam izstrādātājs izpildīja līgumu, kas radīja daudz atliktu darījumu ar vienas sekundes kavēšanos, un katrs darījums patērēja “25–27 ms centrālā procesora”. Pēc CPU izmantošanas monopolizācijas uz visu minūti līgums noslēdza EOS tīklu pārslodzes režīmā. Rezultātā visi trīs paraugkonti bija ārpus centrālā procesora un tāpēc “pilnībā iesaldēti” – būtībā tas nozīmē, ka visi gadījuma EOS lietotāji tajā laikā nevarēja sazināties ar kādu DApps tīklā.
Divas minūtes vēlāk iepriekšminētais EOSBetDice DApp, kas neatkarīgi no eksperimenta katru stundu izraisīja regulārus centrālā procesora kāpumus, sāka darboties saskaņā ar grafiku. Patērējot no tīkla vēl vairāk centrālā procesora laikā, kad tas jau bija pārslogots, tas neviļus veicināja Dexaran ierosināto pārslodzi. “Jo vairāk CPU patērē pēc kārtas, jo” dziļāks “būs pārslodzes režīms, un jo ilgāk būs vajadzīgs, lai tīkls atjaunotos normālā režīmā,” atzīmēja izstrādātājs.
Rezultātā EOS tīkls nonāca vēl “dziļākā” sastrēgumā, un tiek ziņots, ka CPU pieejamība visiem EOS lietotājiem saruka 35 reizes. “Neatkarīgi no tā, cik daudz EOS esat piesaistījis procesoram – ja esat izmantojis vairāk nekā 3%, jūs būtu iesaldēts,” novēroja Deksarans.
Pēc tam, kad Deksarana līgums un EOSBetDice uzsvēra tīklu kopumā piecas minūtes, šķiet, ka nākamās 10 minūtes tīkls palika paralizēts. Pēc vēl sešām minūtēm tas bija lielā mērā atguvies, taču EOS aizdevuma cena resursu apmaiņā joprojām bija aptuveni trīs reizes augstāka nekā parasti, kas norāda, ka stresa testa dēļ tīklam tajā laikā bija nepieciešams liels CPU piešķirto marķieru daudzums..
Tīkls pilnībā atjaunots tikai 30 minūtes pēc pēdējās "ļaunprātīgs" darbība. Tas lietotājiem dod “25 minūšu logu līdz nākamajai pārslodzes sesijai”, atzīmēja Deksarans, jo uzbrukumu var veikt katru stundu, saskaņā ar izstrādātāja aplēsēm. “Pietiek ar 7000 EOS, lai uz pienācīgu laiku EOS tīklu pārslēgtu pārslodzes režīmā,” secināja pētnieks, piebilstot:
“Aprakstītā pārslodzes sesija radīs problēmas tikai (1) lietotājiem, kuri iztērēja noteiktu daļu no sava procesora joslas platuma, (2) lietotājiem, kuriem ir piesaistīts ļoti zems procesora joslas platums. Aprakstītā pārslodzes sesija neietekmē (1) DApps, kuriem ir pieejams daudz CPU, (2) lietotājus, kuri neveic nekādas darbības un kuru CPU ir pilnībā pieejams (pieņemot, ka šiem lietotājiem ir pietiekami daudz CPU, lai izveidotu vienu tx ). ”
Turklāt Deksarans uzsvēra, ka, lai gan daži EOS lietotāji varētu viņu saukt par a "hakeris" tīša tīkla pārslodzes dēļ: “Es rīkojos tieši pretēji: es aizsargāju savus un jūsu ieguldījumus.”
Dažas dienas pirms Dexaran ieraksta publicēšanas par EOS sastrēgumiem publicēja izstrādātājs Christoph Michel uzrakstīju bloga ierakstu saistot neseno EOSPlay kazino uzlaušanu ar tīkla pārslodzi, tādējādi parādot, kā tīkla problēmu varētu izmantot peļņas nolūkos.
Pēc Mišela teiktā, uzbrucējs īrēja EOS žetonus no REX, kas ir CPU un NET resursu nomas tirgus, un pēc tam tos sakrauj, lai palielinātu gan viņa, gan EOSPlay procesoru, lai nodrošinātu, ka kazino darbosies funkcionāli – tāpēc joprojām varēs maksāt savas likmes. Pēc tam hakeris surogātpasta tīklā veica darījumus, līdzīgi kā Dexaran, un spēlēja vairākas kauliņu spēles vietnē EOSPlay, derot uz rezultātu 50/50. Ņemot vērā to, ka EOSPlay skatās uz rezultāta bloka jaukto jaucienu un uzņem kauliņus pirmajās divās rakstzīmēs – sākot no labās puses un no nulles līdz deviņām -, lai uzvarētu spēlē, jāparedz rezultāta bloka bloka jaukums.
“Vienīgie nezināmie prognozē ir blokos iekļautie darījumi,” paskaidroja Mišels. “Bet kā būtu, ja varētu vienkārši surogātpastu un pārslogot tīklu, lai neviens cits nevarētu nosūtīt darījumus?”
Pēc izstrādātāja domām, tieši tāpēc uzbrucējs aizņēmās EOS, lai surogātpastu nosūtītu tīklam: lai kontrolētu tīklu un tādējādi spētu paredzēt bloķēšanas jaukumus un uzvarēt lielāko daļu savu likmju. Nepareizas prognozes gadījumā uzbrucējs varētu nosūtīt blokam vēl vienu nejaušu darījumu un tādējādi iegūt papildu “monētas pārsegu”, kas ievērojami uzlabo izredzes.
Galu galā hakeris izmantoja tikai 300 EOS, kuru vērtība bija nedaudz virs 1000 USD un kurus viņš vai viņa varēja iznomāt par pāris dolāriem. Apmaiņā ar fiksēto laimestu bagātība ienesa vairāk nekā 30 000 EOS jeb aptuveni 110 000 USD.
EOS izstrādātāji nodrošina tīkla pareizu darbību, ne visi tam piekrīt
Dexaran sastrēgumu eksperimenti nav palikuši bez ievērības, jo daudzi lietotāji ir ziņojuši, ka viņiem ir “CPU problēmas” Twitter un Reddit. Viedo līgumu izstrādātāju komandas Graphene Lab izpilddirektors Deniss Bredihins apstiprināja Cointelegraph, ka arī pēdējās nedēļās tās pokera EOS derību DApp lietotājiem ir bijušas problēmas, lai gan pati lietojumprogramma netika apdraudēta. Bredihins teica:
“Spam laikā pīķa spēlētāji, pat ja CPU tika piešķirti 8-10 tūkstoši EOS, nevarēja veikt nekādas darbības.”
Pēc viņa teiktā, sākot ar 1. oktobri, spēlētājiem CPU ir jāpiešķir “līdz 10 000 EOS”, lai spēle viņiem neapstātos surogātpasta sesiju laikā. Tikmēr Block.one’s Larimer ir nonācis vietnē Twitter, lai pārliecinātu sabiedrību, ka EOS “darbojas pareizi”. Viņš rakstīja:
“Tas neatšķiras no gadījumiem, kad uzbrucēji pārpludina eth vai bitcoin ar lielu maksu darījumu surogātpastu. Marķieru īpašniekiem tīkls nesasaldēja, bezmaksas lietošanai vienkārši nebija pieejams papildu joslas platums. ”
Daži kopienas locekļi tomēr prasa atšķirības. “Atšķirība starp šo uzbrukumu EOS un augstas maksas surogātpastu BTC vai ETH ir tā, ka jūs joprojām varat maksāt vairāk, lai nosūtītu darījumu ar BTC vai ETH,” iebilda Robs Finčs, ASV bāzētā EOS Block Producer CypherGlass izpilddirektors. Viņš pievienoja:
“Daudziem EOS lietotājiem nebija pietiekami daudz centrālā procesora, lai īrētu vairāk procesoru, tāpēc tas viņiem iesaldēja. Pareiza darbība nav SJO vislabākā atbilde. ”
Vēl viens EOS lietotājs, blokķēdes uzņēmējs Džareds Mūrs, apstiprināja ka tīkls nebija izmantojams DApps vai viņa makam. Viņš arī domāja, vai Block.one “palīdzēs EOS kopienai un publicēs vadlīnijas, kā novērst REX uzbrukumus”.
Cointelegraph ir sazinājies ar Block.one, lai saņemtu papildu komentārus, un atjauninās rakstu, tiklīdz būs iegūta papildu informācija.