Solana pasirašymo neprisijungus pasiūlymas: patvirtinimai išlieka nesėkmingi
Solanos planas panaikinti ilgalaikius nesąžiningus sandorius, leidžiančius pasirašyti sandorius neprisijungus ir vėliau transliuoti, išsaugos šaltojo klavišo patvirtinimą, keičiant, kurie adresai valdo paveiktą turtą. Biržams, saugotojams ir iždo operatoriams, naudojantiems tą pasirašymo metodą, siūlomas pakeitimas prideda programą tarp šaltojo rakto patvirtinimo ir vykdymo.
„Solana Foundation“ spalio mėnesio naudojimo nutraukimo planas nurodo „onchain“ pasirašymo programas, kurios patikrina parašą neprisijungus ir vykdo patvirtintas instrukcijas. Programos gautas adresas arba PDA valdytų paveiktas paskyras. Pradinis raktas vis tiek leidžia atlikti veiksmus, o atskiras internetinis operatorius juos pateikia ir sumoka tinklo mokestį.
Pakeitus sukuriama kitokia saugojimo architektūra: operatoriai turi perkelti atitinkamą turtą arba leidimus, programos turi priimti veiksmus, gaunamus per kitą programą, o rizikos grupės turi patvirtinti naują pasirašymo kelią.
Ilgaamžiai nešvarumai išlieka tinkami naudoti. Fondas nenustatė pašalinimo datos arba nepadarė galutinio pasirinkimo tarp Anza’s Programmatic Signer ir Blueshift’s Vector. Maždaug šešių mėnesių perėjimo langas priklauso nuo to, ar tinkamas pakaitalas bus paruoštas, patikrintas ir veiks tinkle.
Raktas vis patvirtinamas, bet paskyra keičiasi
Ilgaamžiai nusikaltimai išsprendžia laiko problemą. Užuot pasirašęs operaciją, susietą su naujausia bloko maiša, kurios galiojimas greitai baigsis, neprisijungęs pasirašantis asmuo gali ją patvirtinti naudodamas saugomą „nonce“. Tai leidžia patvirtinti ir transliuoti skirtingu laiku.
Atskiras Solana 200 ms lizdo atnaujinimas pasiekė paskutinę tinklo etapą spalio 9 d. Greitesnė blokų gamyba palieka mažiau sieninio laikrodžio laiko įprastiems blokų pagrindais pagrįstiems patvirtinimams, nors galiojimo laikas priklauso nuo bloko gamybos, o ne nuo garantuoto laikmačio. Ankstesnė „CryptoSlate“ aprėptis išnagrinėjo tą laiko pasikeitimą; pasiūlymas nonce yra susijęs su architektūra, naudojama siekiant išvengti trumpo patvirtinimo lango.
Dalyje Programinis pasirašytojas šaltuoju klavišu pasirašo įgaliojimo pranešimą, o ne į tinklą siunčiamą operaciją. Perdavimo priemonė pateikia šį patvirtinimą į „fresh-blockhash“ operaciją. Pasirašančioji programa patikrina įgaliojimą ir vykdo patvirtintas instrukcijas naudodama išvestinį rakto adresą kaip pasirašančioji.
PDA neturi savo privataus rakto. Jo gebėjimą veikti suteikia pasirašančioji programa, tikrinanti pirminio rakto patvirtinimą. Gavus adresą, joks turtas ar leidimai neperkeliami: jie turi būti perduoti atskirai.
Perkėlimo vadove aprašomas vietinio SOL perkėlimas į išvestinį adresą, žetonų likučių perkėlimas į jo valdomas sąskaitas ir leidimų perkėlimas į jį arba įšaldymas. Priklausomai nuo perkeliamo leidimo, suteiktos sąskaitos gali perkelti įstaigą, panaikinti įgaliojimus arba abu. Tai yra atskiri valdikliai, o ne vienas universalus piniginės jungiklis.
Fondas siūlo užbaigti šiuos perkėlimus, kol vis dar veikia senos patvarios priemonės. Todėl nukentėjusiam iždui naujos pasirašymo programinės įrangos patvirtinimas yra tik dalis darbo. Jos paskyros inventorius ir leidimai, kuriuos šiuo metu turi kiekvienas raktas, nustato, kas turi būti pakeista.
Dviejų projektų kandidatai taip pat skirtingai apdoroja vietinį SOL. Programinio pasirašytojo išvestinė SOL paskyra priklauso sistemai ir gali siųsti SOL patvirtintu įprastu pervedimu. „Vector“ inicijuoja programai priklausančią paskyrą ir išleidžia SOL per savo įgaliotą išėmimo arba uždarymo operaciją.
Ką šaltas parašas leidžia relayer
Diegimo pasirinkimas turi įtakos tam, kaip tvirtai patvirtinimas riboja su juo susijusią operaciją.
Programinio pasirašymo pranešimo dokumentacijoje teigiama, kad šaltieji parašai susieja vykdytoją, nonce paskyrą ir įterptąjį vykdymo pranešimą. Perdavimo priemonė negali pakeisti tų įgaliotų baitų, išsaugodama galiojančius parašus. Tačiau ji gali pasirinkti išorinį mokesčio mokėtoją ir bloką bei pridėti instrukcijas prieš arba po pateikimo.
Vektorius įsipareigoja naudoti aukščiausio lygio instrukcijų buferį, įskaitant duomenis ir paskyras, naudojamas patvirtintiems veiksmams perduoti kitoms programoms. Instrukcijos, susijusios su šiais veiksmais, jau turi būti įtrauktos, kai pasirodo šaltasis klavišas. Relayer negali jų įterpti, pašalinti ar pertvarkyti vėliau, nepanaikinus patvirtinimo.
Programinė pasirašymo priemonė leidžia sudaryti vykdymo kontekstą aplink patvirtintą veiksmą; Vektorius reikalauja, kad aplinkinė instrukcijų seka būtų patvirtinta iš anksto. Abiem atvejais mokėjimas už transliaciją nesuteikia leidimo perrašyti pasirašyto veiksmo.
| Kontrolė | Programinis pasirašytojas | Vektorius |
|---|---|---|
| Šalti patvirtinimo dangteliai | Įgaliojimo ir įterpto vykdymo pranešimas | Paskirtas aukščiausio lygio instrukcijų buferis |
| Papildomos aplinkinės instrukcijos | Relayer gali juos pridėti už prieigos ribų | Turi būti įtraukta prieš pasirašant |
| Pakartojimo būsena | Atskira programa nonce sąskaita | Nonce saugoma Vector paskyroje |
| Išvestinio adreso nustatymas | Nėra pasirašančiojo adreso registracijos | Paskyra inicijuota pagal Vector programą |
Nesėkmingas vykdymo bandymas vėliau gali palikti šaltą patvirtinimo vykdomąjį failą. Dabartinė ilgalaikė ir nepatvirtinta operacija, kuri praeina patvirtinimo, bet nepavyksta vykdant, vis tiek sunaudoja savo neįvykdymą. Programinės pasirašymo priemonės architektūra įpareigoja nenumatytus veiksmus ir taikomosios programos pakeitimus kartu arba grąžina juos kartu. Vektorius dokumentuoja tą pačią galimybę pakartoti nepavykusį veiksmą.
Operatoriams galimybė pakartotinai bandyti reiškia, kad nesėkmingas pateikimas patvirtinimą nebūtinai padarė negaliojančiu. Be priverstinio termino, jis gali likti prieinamas vėlesniam įvykdymui, kol jo nekeičiamas terminas.
Vektorius aiškiai įspėja, kad perdavėjas gali sulaikyti operaciją, kol sąlygos nepasikeis, arba kad parašas, atskleistas nesėkmingo bandymo metu, gali būti įvykdytas vėliau. Pasirašytuose nurodymuose esantis skirtasis laikas gali atmesti vykdymą pasibaigus terminui. Atšaukimui reikalingas atskirai patvirtintas avansinis avansas į žemę. Pats termino atmetimas nesunaudoja nieko, kurių pakeitimai atšaukiami dėl nepavykusios operacijos.
Prieiga prie programos yra atskiras globos testas
Fondo loginis tikslas yra supaprastinti tikrinimo priemonės tvarkymą. Ilgalaikiams nusikaltimams reikalingos specialios atkūrimo prevencijos taisyklės, jos apsunkina asinchroninį vykdymą ir apsunkina netinkamų operacijų filtravimą. Perkeliant patvirtinimo ir atkūrimo būseną į įprastas programas, tikrintuvai apdoroja įprastas „blockhash“ operacijas.
Tada programos gauna patvirtintus veiksmus per kryžminį programų iškvietimą arba CPI: viena programa iškviečia kitą. Tai gali prieštarauti programos taisyklei, kad veiksmas turi būti pateiktas tiesiogiai kaip aukščiausio lygio nurodymas. Patikros, kurios tikrina tik aukščiausio lygio grąžinimo arba parašo patvirtinimo instrukcijas, taip pat gali praleisti pasirašančiojo programoje įdėtą veiksmą.
Didesnis skambučio gylis neišsprendžia taisyklės, kuri atmeta skambučio padėtį arba negali patikrinti įdėtųjų instrukcijų. Fondas siūlo remti žinomas pasirašiusiųjų programas arba pasiūlyti kitą vykdymo kelią. Todėl tai, ar programa priima PDA parašą, skiriasi nuo to, ar patvirtinimas neprisijungus yra kriptografiškai galiojantis.
Token-2022 CPI Guard parodo, kodėl suderinamumą reikia tiksliai įvertinti paskyros lygiu. Kai apsauga įjungta, VKI perkėlimui ir sudeginimui reikia įgaliotojo įgaliojimo; patvirtinimai per VKI yra draudžiami, o keisti savininką draudžiama net už CPI ribų. Nuolatiniams atstovams taikomos perkėlimo ir įrašymo išimtys.
Šios taisyklės yra konkretesnės nei visiškas kiekvieno PDA veiksmo draudimas. Gali egzistuoti delegatu pagrįstas perdavimo maršrutas, tačiau nustatant ar naudojant šią instituciją nustatomas jo paties leidimas ir globos politikos sprendimas.
Kovo mėn. iškeltos institucinės problemos buvo susijusios su prieiga prie paraiškų ir kontrolės, pagal kurią gali būti perkeliamos lėšos. Kovo 4 d. vykusioje diskusijoje dalyvis, prisistatęs Michaelu iš „Fireblocks“, palaikė visišką nusidėvėjimą, o prieštaravo CPI Passthrough perkėlimui, priklausomybei nuo sutarties ir DeFi suderinamumo naštai. Jis pirmenybę teikė operacijų vokams, kaip alternatyvą suteikdamas Sudo, o ne pasiūlytam VKI pagrindu pasirašytam pasirašymo būdui.
Grantas, kuris prisistatė esantis 410 skyriuje, tą pačią dieną pasakė, kad nedidelė, tikrinama pasirašiusiųjų programa gali padaryti valdžios perkėlimą priimtinu. Jis atmetė sprendimą, pagal kurį turtas laikinai perkeliamas į karštą signatarą, net ir atominei operacijai, nes lėšos turi likti susijusios su šaldymu pagal neglobos modelį.
Išbandomam dizainui vis tiek reikia gamybos perkėlimo kelio
Dabartinėje „Programmatic Signer“ dokumentacijoje pranešama apie „Developer“ diegimą ir vykdomus auditus, o prieš 1 v1 išleidimą ir bet kokį pagrindinio tinklo diegimą reikia atlikti pataisymą. Jo sąsajos gali keistis. Naudojimo dokumentacijoje vis dar nurodoma, kad modeliavimas ir perdavimo pateikimas bus greitai, o kelios perkėlimo operacijos vadove taip pat nebaigtos.
Vektorius skelbia diegimo kodą ir programos ID; jo README nenurodo audito ar pagrindinio tinklo diegimo būsenos.
Tuo tarpu dabartiniame „Fireblocks“ protokolo įdiegimo rinkinyje vis dar aprašomas automatinis ilgalaikis ir vienkartinis įpurškimas tam tikroms „WalletConnect“ integracijoms, įskaitant Jupiterį ir Kamino, su numatytuoju teikėjo valdomu 15 minučių galiojimo langu. Tai apibūdina esamą patvirtinimo darbo eigą, kurią turi atitikti pakeitimas.
Operaciniam perkėlimui reikalingas audituotas pagrindinio tinklo pakeitimas, tinkami įrankiai ir taikomųjų programų keliai, kuriuose būtų išlaikytos kiekvieno operatoriaus patvirtinimo valdikliai.
