NEAR әзірлеушілері қазіргі блокчейндегі ең тәуекелді және техникалық күрделі операциялардың бірін жүзеге асырды: олар барлық смарт-келісімшарттарды орындайтын виртуалды машинаны жұмыс істеп тұрған негізгі желіде ауыстырды. Ең таңғаларлығы — пайдаланушылар мен әзірлеушілердің басым көпшілігі мұны тіпті байқамады.

Ұзақ уақыт бойы NEAR-дың жүрегі NearVM жеке виртуалды машинасы — Wasmer қозғалтқышының форкі болды. Бұл «жеке компилятор» инновацияларға нақты «салық» болды: Rust-тың әрбір жаңартуы, әрбір жаңа қауіпсіздік функциясы тек жоба командасының мойнына түсті. Бірде жобаға керемет сәттілік жолықты: ол бастапқы Wasmer-де сыни осалдық табылғанға дейін upstream-пен синхрондауды кездейсоқ өткізіп жіберді. Бірақ блокчейнде сәттілікке сену — рұқсат етілмейтін сән-салтанат.

Таңдау Wasmtime-ге түсті — Bytecode Alliance қолдайтын индустриялық стандарт. Ауысудың қауіпсіздігін дәлелдеу үшін желі түйіндері нақты трафикті екі виртуалды машина арқылы параллель өткізіп, әрбір нәтижені салыстырды. Нәтижелер әсерлі болды: нәтижелердің толық сәйкестігі, комиссиялардағы айырмашылық 0,002%-дан аз, ал орындау жылдамдығы шамамен төрт есе өсті.

Тыйым салынған шешім және инженерлік тапқырлық

Дегенмен, басты қиындық орындауда емес еді. NEAR желісінде келісімшартты орналастыру 600 миллисекундтық блок ішінде компиляцияланады. Оңтайландырушы компилятордың жұмыс уақытының жоғарғы шегі жоқ, бұл шабуылға жол ашты. Команда көлемі 128 КБ сынақ келісімшартын жасады, оны компиляциялау шамамен 7 секундқа созылды — бұл блоктан «өтіп кетуге» және бүкіл желіні баяулатуға жеткілікті еді.

Компиляцияға қатаң уақыт шегін қою айқын шешім сияқты көрінді. Бірақ бұл тыйым салынған болып шықты: әртүрлі валидаторлар компиляцияға әртүрлі уақыт жұмсайды, ал шекаралық келісімшартты кейбір түйіндер қабылдап, басқалары қабылдамайды, бұл желінің бөлінуіне әкеледі. Консенсус тіпті құрастыру уақыты деңгейінде де толық болжамдылықты талап етеді.

Команда талғампаз шығу жолын тапты. Олар Winch — Wasmtime-ның бір өтпелі бэкендін енгізіп, оған жетіспейтін функцияларды қосты. Нәтиже күткеннен асып түсті: «компиляцияның ең нашар жағдайы» 7,6 секундтан 36 миллисекундқа дейін қысқарды. Блокчейннен тыс жұмыс «протоколға қолжетімсіз сән-салтанатты» берді: компиляцияны орындаушы түйіндермен байланысты емес өңдеушілердің жеке түріне шығаруға болады.

Nearcore 2.12 шығарылымы NEAR орындау ортасын NearVM-ден Wasmtime-ге ауыстырды. Әзірлеушілер мен пайдаланушылар үшін ештеңе өзгерген жоқ — және мәні осында. Команда ештеңені бұзбай, сыни техникалық қарызды жапты. Бұл сирек тақырыпқа ілігетін, бірақ дәл осы жетілген блокчейн желілерін эксперименталды жобалардан ажырататын инженерлік мәдениет деңгейі.

Аналитик пікірі: Wasmtime-ге көшу — бұл жай ғана жаңарту емес. Бұл NEAR командасынан форкті қолдау жүгін алып тастап, жобаны салалық қауіпсіздік стандарттарына қосатын стратегиялық қадам. 4 есе жылдамдату — жағымды бонус, бірақ бастысы — «компиляцияны баяулату» арқылы шабуыл векторын жою және желінің ұзақ мерзімді тұрақтылығын қамтамасыз ету. Бұл «тыныш» жұмыс жобаның жетілуі туралы кез келген дауысты мәлімдемеден гөрі қаттырақ айтатын жағдай.