Behind PR 149: a bright future for NeoVM and Neo 3

Igor Machado
Neo Smart Economy

--

Newer advances on the next generation of Neo blockchain, called Neo 3, also brought a direct impact on its Virtual Machine, the NeoVM. One of these fundamental NeoVM changes was performed on May 2019, the PR 149. These changes removed CHECKSIG and CHECKMULTISIG opcodes from NeoVM, moving them to Neo Interoperability layer, but it may have passed unnoticed another fundamental change: NeoVM was finally detached from Neo.

How did this happen? On line 59 of this same PR, we note that “IScriptContainer ScriptContainer” field has vanished from VM execution engine. This was used to implicitly pass current Transaction of Neo Blockchain, which contained the execution script, to the script itself. When verifying a signature, a common pattern is to verify it against the signed hash of Transaction header (also happens on Bitcoin network), but this tightly couples the relation of NeoVM with Neo Blockchain. NeoVM is not meant to be exclusive part of Neo, but an independent Virtual Machine that can execute outside the scope of Neo Blockchain, or even inside other blockchains. So, PR 149 brightly fixed this issue, at the expense of moving these two important opcodes, but opening an independent development future for both projects.

Removed opcode CHECKSIG and IScriptContainer that handled blockchain Transaction to NeoVM execution engine. On Neo 3, NeoVM is fully independent (detached) from Neo blockchain.

After this important change, many others succeeded in the cleanup of NeoVM, at the same time simplifying it and making it much more efficient, with wider test coverage and much less error-prone. Neo Community strongly believes in the architecture and role that NeoVM plays on Neo blockchain ecosystem, as it represents an unified computing architecture for smart contracts written in many consolidated programming languages, such as C#, Python, Golang, Java and Typescript (with existing drafts for C++ support and many others). So, it’s important for Neo that its virtual machine is well-designed, supporting newer state-of-the-art technologies.

Some community members have enforced this in past months, the importance of supporting recent cryptographic standards on Neo, besides current SHA256 and ECC secp256r1. Some believe that an Extensions proposal can benefit NeoVM of embeding (again) all these cryptographic operations, and much more (see open discussion: https://github.com/neo-project/neo-vm/issues/176 and Neo proposal for Industry Standards https://github.com/neo-project/neo/issues/972). So, for those to defend it on Neo community, cryptography can be back to NeoVM before Neo 3, and perhaps bringing interesting new implementations, such as Schnorr signatures, new important elliptic curve and quantum-resistant operations.

--

--