NEAR әзірлеушілер тобы блокчейн тарихындағы ең техникалық күрделі әрі сонымен бірге байқалмайтын жаңартулардың бірін жүзеге асырды. Негізгі желінің белсенді жұмысы кезінде олар смарт-келісімшарттарды орындау қозғалтқышын толығымен ауыстырды — және пайдаланушылардың басым көпшілігі мұны тіпті байқамады. Бұл жай ғана нұсқаны өзгерту емес, терең инженерлік жұмыс, ол «бомба»-келісімшарттармен стресстік сынақтарды және желінің ықтимал бөліну қаупін болдырмауды қамтыды.
NearVM неге «салыққа» айналды
Ұзақ уақыт бойы NEAR Wasmer қозғалтқышының форкінде құрылған өзінің NearVM виртуалды машинасын пайдаланды. NEAR ядросының бұрынғы әзірлеушісі Вадимнің түсіндіруінше, бұл «жеке» компилятор топ үшін бір түрлі салық болды. Rust-тың әрбір жаңартуы, әрбір жаңа қауіпсіздік функциясы тек ішкі топтың мойнына түсті, олар кодты қолмен синхрондап, жөндеуге мәжбүр болды. Бірде жобаға тіпті сәттілік жүзді: ол бастапқы Wasmer-ден кездейсоқ бөлініп кетті, дәл сол Wasmer-де сыни осалдық табылғанға дейін.
Стандарттау және төрт есе жылдамдату
Таңдау Wasmtime-ге түсті — Bytecode Alliance альянсы қолдайтын салалық стандарт. Ауысу қауіпсіздігін дәлелдеу үшін желі түйіндері нақты трафикті екі виртуалды машина арқылы параллель өткізіп, әр нәтижені салыстырды. Нәтижелер әсерлі болды: нәтижелер 99,998% сәйкес келді, ал комиссиялардағы айырмашылық 0,002%-дан аз болды. Сонымен қатар, орындау жылдамдығы шамамен төрт есе өсті.
Тыйым салынған аймақ: консенсус мәселесі
Дегенмен, басты қиындық өнімділікте емес, консенсуста болды. NEAR желісінде келісімшартты компиляциялау ұзақтығы небәрі 600 миллисекунд болатын блок ішінде жүреді. Оңтайландырушы компилятордың жұмыс уақытының жоғарғы шегі жоқ, бұл шабуылға жол ашты: шамамен 7 секунд компиляцияланатын 128 КБ көлеміндегі келісімшарт блоктан «өтіп кетіп», бүкіл желіні баяулатуы мүмкін еді.
Компиляцияға қатаң уақыт шегін белгілеу — айқын шешім сияқты көрінгенімен, ол тыйым салынған болып шықты. Вадимнің түсіндіруінше, әртүрлі валидаторлар компиляцияға әртүрлі уақыт жұмсайды. Егер шекара белгіленсе, түйіндердің бір бөлігі келісімшартты қабылдап, бір бөлігі қабылдамайды, бұл тек компилятор параметріне байланысты желінің бөлінуіне әкеледі. Консенсус тіпті құрастыру уақыты деңгейінде де толық болжамдылықты талап етеді.
Тамаша шешім: Winch
Қатаң шектеудің орнына топ Wasmtime-нің бір өтпелі бэкенді Winch-ті енгізді. Жетіспейтін функцияларды жетілдіргеннен кейін «компиляцияның ең нашар жағдайы» 7,6 секундтан 36 миллисекундқа дейін қысқарды. Блокчейннен тыс жұмыс «протоколға қол жетпейтін сән-салтанатты» берді: компиляцияны орындаушы түйіндермен байланысты емес, өңдеушілердің бөлек түріне шығарды.
Аналитик пікірі: Бұл жаңарту — жетілген инфрақұрылым қандай болуы керектігінің тамаша үлгісі. NEAR қауіпсіздік пен өнімділікті арттырып қана қоймай, валидаторлардың гетерогенді жабдығы жағдайында детерминизмнің іргелі мәселесін де шешті. Нарық үшін бұл сигнал: топ пайдаланушы тәжірибесіне зиян келтірмей, ең күрделі техникалық операцияларды жүргізуге қабілетті, бұл ұзақ мерзімді перспективада протоколға деген сенімді нығайтады.