XRPL ištaiso svarbią išankstinio tinklo trūkumą, tačiau klientų programoms išlieka pavojus
XRP Ledger (XRPL) tikrintojai nustatė, kad BatchV1_1 suaktyvinamas rugsėjo 29 d. 14:06:41 UTC, paversdamas beveik neįvykusią apsaugą tiesioginiu tinklo keitimo proceso ir jį supančios programinės įrangos testu.
Rugsėjo 22 d. xrpldashboard parodė, kad 30 iš 35 patikimų patvirtintojų, palaikančių pataisą, viršijo rodomą 28 balsų slenkstį. Dauguma pirmą kartą pasirodė knygoje rugsėjo 15 d.
Pagal XRPL pakeitimo taisykles palaikymas turi išlikti didesnis nei 80 % dvi savaites. Sumažėjus iki 80% ar mažiau, baigiasi daugumos laikotarpis, todėl aktyvinimo data lieka sąlyginė.
Rugsėjo 29 d. yra pirmasis gamybinis bandymas, siekiant nustatyti, ar XRPL patvirtinimo procesas, nuorodų diegimas ir kliento ekosistema pavertė pavojingą iki pagrindinio tinklo trūkumą tinkama atominių operacijų infrastruktūra.
Validatoriaus ugniasienė veikė prieš mainnet
Pradinis paketo pakeitimas niekada nebuvo aktyvuotas XRP Ledger pagrindiniame tinkle. Vasario mėn. mokslininkai aptiko kritinį autorizavimo trūkumą, kol pataisa vis dar buvo balsavimo fazėje, ir tvirtintojams buvo patarta jį atmesti.
„XRPL Labs“ oficialiame pažeidžiamumo atskleidimo pranešime teigiama, kad jokioms lėšoms pavojus negresia.
Trūkumas atsidūrė cikle, kuris patikrino sąskaitas, leidžiančias paketą. Jei kodas aptiko pasirašiusį naujai sukurtą paskyrą, kurio raktas atitiko tą paskyrą, jis iš karto grąžino sėkmę, o ne tęsė likusius pasirašiusius.
Užpuolikas gali pirmiausia įdėti tą galiojantį signatarą, o tada pridėti suklastotą įrašą, neva įgaliojantį aukos paskyrą. Jei pataisa būtų įsigaliojusi, nepatikrintas nukentėjusiojo sandoris būtų buvęs įvykdytas be aukos raktų.
XRPL atsakymas buvo atliktas dviem etapais. 3.1.1 versija pažymėjo, kad originalūs Batch ir fixBatchInnerSigs pakeitimai yra nepalaikomi, blokuojant jų aktyvavimą. Vėliau BatchV1_1 juos pakeitė perrašytu leidimo keliu ir papildomomis apsaugos priemonėmis.
Epizodas buvo gedimas, užfiksuotas ties riba tarp programinės įrangos išleidimo ir protokolo aktyvinimo.
Galutinėje XRPL Foundation XLS-56 specifikacijoje dabar reikalaujama, kad kelių paskyrų paketas būtų tikslus, visas BatchSigners, kurių įgaliojimas paprastai reikalingas vidinėms operacijoms, rinkinys, išskyrus paskyrą, kurios įprastas parašas leidžia atlikti išorinę operaciją.
Trūkstamų, papildomų, pasikartojančių arba neteisingai išdėstytų įrašų atmetimas.
Kiekvienas BatchSigner taip pat pasirašo daugiau nei laisvą vidinių operacijų rinkinį. Naudingoji apkrova susieja parašą su išorine sąskaita, jos eilės numeriu arba bilietu, pasirinktu paketiniu režimu, užsakytomis kiekvienos vidinės operacijos maišomis ir „BatchSigner“ paskyra.
Kelių parašų įrašas taip pat susieja kiekvieną įdėtą pasirašančiojo paskyrą. Tai neleidžia galiojančio parašo perkelti į kitą išorinę operaciją arba perskirstyti kitam dalyviui.
Sujungtas nuorodos diegimas prideda vykdymo, susijusio su šiuo dizainu, įskaitant pasirašančiojo užsakymo ir unikalumo patikras, operacijų skaičiaus ribas, tiesiogiai pateiktų vidinių operacijų atmetimą ir knygos pakartojimo apsaugą.
Kartu šie pakeitimai sprendžia tiek atskleistą ankstyvos sėkmės klaidą, tiek gretimus būdus, dėl kurių netinkamai suformuoti arba pakartotinai atkurti paketiniai duomenys gali peržengti įgaliojimų ribas.
Paketą sudaro nuo dviejų iki aštuonių vidinių operacijų. Kiekviena vidinė operacija yra be parašo ar mokesčio ir yra pažymėta, todėl negali būti pateikta atskirai. Išorinė partija pasirenka tiksliai vieną iš keturių režimų:
- VISKAS: kiekvienas vidinis sandoris turi būti sėkmingas arba joks jų būsenos pasikeitimas neįsipareigoja.
- TIK VIENAS: taikomas tik pirmasis sėkmingas vidinis sandoris.
- IKI NESUTEIKIMO: Sandoriai taikomi eilės tvarka, kol nepavyksta.
- NEPRIKLAUSOMAS: kiekvienas vidinis sandoris bandomas nepaisant kitų rezultatų.
BatchV1_1 gali palaikyti atominius „viskas arba nieko“ srautus, tačiau ne kiekviena partija yra atominė ta siaurąja prasme. Kūrėjai taip pat gali naudoti jį užsakytiems atsarginiams arba nepriklausomiems paketams.
Aktyvinimas perkelia riziką į įgyvendinimą
Greičiausias integracijos spąstai yra tai, kad išorinė partija gali grįžti tesSUCCESS net tada, kai vienas ar keli vidiniai sandoriai nepavyksta. Klientai turi patikrinti kiekvienos vidinės operacijos metaduomenis ir rezultato kodą, kad nustatytų, kas atsitiko.
Šis skirtumas yra svarbus už VISKO NIEKO režimo ribų, kai dalinis arba nepriklausomas vykdymas yra tyčinis.
BatchV1_1 palaikymas pristatytas xrpld 3.3.0 rugpjūčio 6 d. Suaktyvinus pataisą, serveris, kuris nesupranta naujų taisyklių, bus užblokuotas. Jis nebegali patikimai patvirtinti knygos arba dalyvauti susitarime, kol nebus atnaujintas.
Dėl xrpl.js pateiktos problemos buvo užfiksuota, kad 5.0.0 versija sukūrė paketinius parašus naudojant senesnę naudingąją apkrovą, praleidžiant išorinę paskyrą, seką ir dalyvių susiejimą. BatchV1_1 įgalinti mazgai atmetė tuos parašus su temBAD_SIGNATURE.
Xrpl.js leidimų istorija įrašo suderinamą 5.1.0 versijos palaikymą.
| Komponentas | Pasirengimo taškas | Rizika, jei pasenusi |
|---|---|---|
| xrpld | BatchV1_1 palaikymas pristatytas 3.3.0 | Po aktyvinimo nesuderinamas serveris gali būti užblokuotas |
| xrpl.js | 5.1.0 versija papildė pataisytą pasirašymo formatą | 5.0.0 versija gali sukurti parašus, kuriuos atmetė BatchV1_1 mazgai |
| Piniginės | Rodyti kiekvieną vidinį veiksmą ir pasirinktą režimą | Naudotojas gali patvirtinti rinkinį nesuprasdamas viso jo poveikio |
| Tyrinėtojai ir indeksuotojai | Išsaugokite ryšį tarp išorinių ir vidinių sandorių | Sąsajos gali klaidingai pranešti arba suskaidyti paketo rezultatą |
Piniginės ir rodyklės eilutės atspindi išsamiose XLS-56 taisyklėse pateiktus integravimo nurodymus. Protokolas gali atmesti netinkamai suformuotą parašą, bet negali priversti piniginės aiškiai paaiškinti sudėtingą paketą arba tyrinėtojo pateikti kiekvieno vidinio rezultato kontekste.
Specifikacija taip pat žymi pirmaujančią sritį kaip vis dar tiriama sritis. Didesnis įgaliojimas neleidžia šaliai suklastoti kitos paskyros patvirtinimo, bet nepašalina visos rizikos, kylančios supakavus kelis su rinka susijusius veiksmus į vieną užsakytą pateikimą.
Ką įrodys rugsėjo 29 d
Jei dauguma tinka, suaktyvinimas parodys, kad XRPL tikrinimo procesas gali sustabdyti pavojingą pataisą, nukreipti operatorius į išjungtą leidimą ir vėliau perkelti pataisytą pakaitalą per tą patį valdymo mechanizmą.
Taip pat bus pradėtas realus bandymas, ar serveriai, pasirašymo bibliotekos, piniginės ir duomenų infrastruktūra sutaria dėl naujo sandorio formato ir jo rezultatų.
Tai neįrodys, kad programos priėmė BatchV1_1, kad vartotojai nori šios funkcijos arba kad padidės tinklo operacijų paklausa. Balsavimas dėl pataisų ir programinės įrangos leidimai nustato protokolo prieinamumą, tačiau jie nepateikia papildomo XRP pirkimo įrodymų.
Po aktyvinimo gausite naudingų signalų: ar pasenę mazgai bus užblokuoti, ar pasirašymo gedimai susikaupia aplink senas klientų versijas, ar piniginės suprantamai pateikia kelių paskyrų paketus ir ar tyrinėtojai praneša apie vidinius rezultatus, nesupainiodami išorinės sėkmės ir visiško vykdymo.
XRPL tikrintuvai išlaikė pirmąjį testą, neleisdami pradiniam partijos trūkumui pasiekti pagrindinį tinklą. Sąlyginis aktyvinimas rugsėjo 29 d. klausia, ar ekosistema pakankamai pasimokė iš to, kas įvyko, kad pakaitalą veiktų saugiai.
