Neo Global Monthly Report - Sviluppo

maggio 2022

Neo Global Monthly Report - Sviluppo

Punti salienti

Molti degli aggiornamenti del team di sviluppo principale di questo mese si sono concentrati sulla manutenibilità e sulla stabilità a lungo termine per Neo, sia come protocollo che come piattaforma di sviluppo. L’implementazione del supporto hard fork consente di introdurre in modo sicuro modifiche incompatibili con le versioni precedenti, le prime delle quali sono le modifiche ai prezzi syscall che allevierebbero le preoccupazioni DoS.

L’isolamento snapshot è stato un altro esempio, che impedisce la persistenza di modifiche indesiderate all’archiviazione dei contratti tra le chiamate contrattuali in cui si verificano eccezioni. L’esperienza di sviluppo del contratto per lo sviluppatore C# è stata migliorata tramite la compilazione condizionale, eliminando la necessità di riscritture del codice tra le compilazioni di debug e di produzione.

I gruppi di sviluppo della comunità sponsorizzati da Neo hanno rilasciato i propri aggiornamenti al passo con il nucleo, adattandosi alle modifiche e trapiantando i nuovi pezzi di funzionalità. NEXT ha completato i preparativi per un importante aggiornamento del portafoglio di estensione NeoLine, portando il supporto Ledger e il supporto di rete personalizzato per rendere il portafoglio più versatile sia per gli utenti che per gli sviluppatori.

Nel frattempo, Neo SPCC ha esplorato nuove ottimizzazioni NeoFS sotto forma di servizio Object tree e NGD Enterprise ha continuato a coprire il terreno nello sviluppo del suo nuovo compilatore per i contratti intelligenti TypeScript.

Il rapporto completo sullo sviluppo mensile globale di Neo per maggio può essere trovato di seguito.

SVILUPPO DEL PROTOCOLLO

SVILUPPO DEL PROTOCOLLO

Neo Core

Miglioramenti alla gestione delle eccezioni implementati per le chiamate tra contratti

L’aggiunta dell’isolamento snapshot nel nucleo Neo è stato uno degli aggiornamenti più importanti che Neo ha ricevuto a maggio. Dopo l’aggiornamento, le modifiche di stato causate dalle chiamate al contratto vengono mantenute separate tra ogni chiamata al contratto.

Se una determinata chiamata genera un’eccezione, le modifiche di stato nel contratto chiamato vengono automaticamente ripristinate, evitando conseguenze indesiderate che potrebbero verificarsi quando le eccezioni vengono gestite dal contratto che esegue la chiamata.


Supporto per hardfork a livello di protocollo e adeguamenti dei prezzi syscall

Il team di sviluppo principale ha lavorato per il rilascio della pietra miliare neo v3.3.0 a maggio, che sarebbe diventata la prima versione a includere il supporto per hard fork a livello di protocollo. Ciò consente alla piattaforma di apportare modifiche ai prezzi syscall hardcoded senza interrompere le transazioni nei blocchi passati. Nel primo fork, le commissioni per getRandom e createMultisigAccount sono state adeguate per mitigare le preoccupazioni DoS e altri problemi.


NeoVM potenziato con nuovi opcode e copie deep come immutabile per StackItems

MODMUL e MODPOW sono arrivati in NeoVM, aprendo nuove opportunità per applicazioni on-chain relative alla crittografia e alle prove a conoscenza zero. Un altro cambiamento a livello neoVM è stata la possibilità di copiare in profondità gli elementi dello stack come immutabili. Ciò consente di migliorare le prestazioni in situazioni che coinvolgono Notify e GetNotifications, evitando al contempo la possibilità per un contratto di modificare le notifiche ricevute.


La compilazione condizionale e i nuovi metodi sbarcano nel neo-devpack-dotnet

Il compilatore di contratti C# ha ricevuto una serie di aggiornamenti a maggio, tra cui nuovi metodi matematici per la restituzione di valori assoluti, ottimizzazioni per le mappe di archiviazione e la possibilità di concatenare bytestrings.

È stato inoltre implementato il supporto per la compilazione condizionale tramite #if DEBUG, migliorando il flusso di lavoro di sviluppo dei contratti per gli sviluppatori C#. In particolare, può essere utilizzato per disabilitare temporaneamente l’attributo safe sui metodi di sola lettura, consentendo l’utilizzo di Runtime.Log() durante lo sviluppo senza compromettere il codice di rilascio.

INFRASTRUTTURA E SVILUPPO STRUMENTI

INFRASTRUTTURA E SVILUPPO STRUMENTI

Punti salienti

INFRASTRUTTURA E SVILUPPO STRUMENTI

Attività cardine del progetto

Nodo

NeoGo di Neo SPCC

Neo SPCC ha completato la sua solita montagna di aggiornamenti NeoGo questo mese. Come nei mesi scorsi, le modifiche sono state suddivise tra modifiche al protocollo nell’implementazione di riferimento e ottimizzazioni specifiche del nodo Go e correzioni di bug.

Monitorando il core e la sua recente versione v3.3.0, il team ha implementato tutte le modifiche necessarie per mantenere la piena compatibilità con C#. Questi includevano limiti comparabili bytearray, elementi di stack immutabili e nuovi opcode nella VM, nonché supporto per hard fork e vari refactoring/mitigazioni DOS.

Una lunga lista di aggiornamenti specifici di NeoGo è stata implementata a maggio. Gli esempi includono miglioramenti del reindirizzamento del sistema Oracle, incompatibilità di stato, gestione delle password con tty, correzioni per i problemi dei contatori di riferimento e l’ambito di controllo delle regole e vari miglioramenti al pacchetto RPC.

Il team ha anche migliorato la documentazione e i commenti sul codice con una revisione grammaticale approfondita. Quasi 300 file hanno ricevuto miglioramenti, consolidando NeoGo come uno dei progetti più accuratamente documentati nell’ecosistema.

https://github.com/nspcc-dev/neo-go

Sdk

neow3j di AxLabs

Axlabs ha rilasciato la v3.17.1 di neow3j a maggio, un aggiornamento minore che ha apportato modifiche all’SDK e al devpack. Nel primo, la versione ha apportato una modifica che consente di creare transazioni che termineranno in uno stato FAULT in NeoVM. Originariamente potevano essere trasmesse solo le transazioni eseguite con successo; una nuova opzione consentirà alle transazioni difettose di procedere ai fini del test del contratto.

Nel devpack sono stati aggiunti nuovi metodi di convenienza per semplificare il recupero di Hash160 e Hash256 dalle classi Storage e StorageMap senza la necessità di istanze manuali.

https://github.com/neow3j/neow3j

SMART CONTRACT & DAPP FRAMEWORK

Neo Blockchain Toolkit di NGD Enterprise

Il Neo Blockchain Toolkit ha ricevuto una serie di modifiche a seguito degli aggiornamenti Neo core v3.3. Le pre-release sono state pubblicate e sono in fase di test, in attesa di aggiornamenti dei plugin richiesti prima della versione finale. Anche la progettazione dello schema di archiviazione che è stata presentata in anteprima dal team il mese scorso ha ricevuto modifiche in seguito al feedback e alla revisione degli sviluppatori.

Il team ha anche continuato il suo sforzo per sviluppare un nuovo compilatore di contratti intelligenti per TypeScript, attualmente nelle prime fasi di sviluppo. Una volta completato, il linguaggio diventerà il quinto linguaggio di contratto intelligente Neo N3 supportato, presentando un’importante opportunità di onboarding per gli sviluppatori tradizionali (in particolare web) alla blockchain.

https://marketplace.visualstudio.com/items?itemName=ngd-seattle.neo-blockchain-toolkit

Portafoglio

NeoLine di NEXT

Importanti miglioramenti sono stati completati per il portafoglio di estensione NeoLine Chrome a maggio. Supporto per dispositivi di portafoglio hardware Ledger, reti personalizzate e server RPC e miglioramenti UX come la ricerca del portafoglio e un indicatore di portafoglio attivo. NEXT ha anche ridisegnato l’interfaccia utente per la sua pagina dei dettagli del portafoglio, riscrivendo la logica sottostante per tenere conto delle nuove funzionalità e migliorando il design della revisione.

https://neoline.io/

NEOFS

NeoFS di Neo SPCC

Fino a maggio, lo sviluppo di NeoFS si è concentrato sui miglioramenti delle prestazioni e della manutenibilità. Il cambiamento più significativo è arrivato sotto forma di servizio Albero oggetti, che gestisce il controllo degli accessi, la replica e porta con sé una serie di ottimizzazioni. Nel core NeoFS sono stati implementati anche un refactoring dell’interfaccia della riga di comando, un aggiornamento dell’SDK e miglioramenti dell’API.

Anche i servizi NeoFS sono stati adattati per adottare il servizio tree, migliorando le prestazioni nel gateway S3 sotto carico elevato. Il team si è anche preparato per il rilascio pubblico del servizio CDN NeoFS e ha creato uno strumento di test di carico universale per il benchmarking di soluzioni compatibili con S3.

https://fs.neo.org/

revisione

Controllo tramite Red4Sec

Red4Sec ha continuato il suo auditing dei progetti ecosistemici a maggio, tra cui la revisione delle correzioni e la consegna finale dei contratti intelligenti GrantShares, le revisioni delle richieste pull per PayProxy e un nuovo problema rilevato nel progetto FlamingoSwapPair. A giugno è stato inoltre programmato un audit per Saffron Finance per giugno e sono state rilevate e segnalate due vulnerabilità nella piattaforma principale Neo.

https://red4sec.com/en