Følgende artikel hjælper dig med: Midler fra GemholicECO’s 921ETH Token Sale sidder fast i zkSyncs smarte kontrakt på grund af brug af overførselsfunktion

GemholicECO, en multiproduktplatform, har rejst 921 ETH til en værdi af cirka 1,7 millioner dollars i et token-salg. Imidlertid har midlerne siddet fast i den smarte kontrakt på grund af et problem med brugen af .transfer()-funktionen, som virker på Ethereum og andre EVM-kæder, men ikke på zkSync.
zkSync Era er en Layer-2-protokol, der skalerer Ethereum med Zero Knowledge-teknologi. Alpha-versionen af protokollen åbnede på mainnet den 24. marts.
For at afklare problemet tweetede zkSync en opdatering torsdag, der gav dens fællesskabskontekst. Ifølge zkSync installerede GemholicECO sin kontrakt på hovednettet uden at prøve det på testnettet eller den lokale node, hvilket ville have fanget problemet.
“Enhver smart kontrakt, der bruger transfer() eller send() tager en hård afhængighed af gasomkostninger, fordi denne fungerer videresender en hårdkodet mængde på 2300 gas,” forklarede zkSync. Mens funktionen bruger en hårdkodet gasmængde, kan gasomkostningerne ændre sig, hvilket får den smarte kontrakt til at bryde.
Ved de nuværende gasprisniveauer for Era mainnet vil ETH-overførsler koste mere end 2300 gas. Derfor vil ethvert .transfer()-kald uden eksplicit gasstipendium i øjeblikket mislykkes.
— zkSync ∎ (@zksync) 7. april 2023
Udviklere blev advaret om at bruge overførselsfunktionen tre år siden, men det lader til, at GemholicECO ikke fulgte rådet. I forventning om, at problemet ville opstå, tilføjede zkSync en advarsel om brug af overførselsfunktionen direkte i compileren.
Udviklere af protokollen foretog et bevidst designvalg med at gøre zkSync ikke EVM-ækvivalent. zkSync hævder, at dens dynamiske gasmåling tillader nogle transaktioner at være op til 1.000 gange billigere end på nogen anden EVM-rollup.
Ydermere kontrollerede zkSync tidligere kildekoden for snesevis af populære kryptoprojekter og fandt ikke et eneste, der ikke fulgte den tre år gamle advarsel om ikke at bruge .transfer(), hvilket førte den til at konkludere, at udviklerfællesskabet havde løst dette problem.
For at forhindre dette problem i at dukke op igen i fremtiden, har zkSync identificeret en løsning, der kan løse en bredere klasse af gasrelaterede problemer, frigøre den smarte kontrakt og genvinde GemholicECOs midler fuldt ud. Protokollen vil snart offentliggøre flere detaljer.
Læs mere: