GithubHelp home page GithubHelp logo

NVM Extension Proposals about neo-vm HOT 7 CLOSED

neo-project avatar neo-project commented on June 12, 2024
NVM Extension Proposals

from neo-vm.

Comments (7)

shargon avatar shargon commented on June 12, 2024 1

what is the difference with syscalls?

from neo-vm.

igormcoelho avatar igormcoelho commented on June 12, 2024 1

Erik, Interop layer is meant for interoperability with the blockchain level (for any other Neo-based blockchain). In this sense, System will be useful for basic cross-chain/multi-chain information, such as System.GetPlatform. This is part of Neo basic protocol. What we are discussing here is having cryptography on computation level for NeoVM even on scenarios where a blockchain core (ledger) is not directly involved, as we may use it for computing on lightweight IoT devices (please see our recently published paper at IEEE, discussing Home Ledger situations).

Extensions is meant to allow disabling unsupported features (on lightweight devices or even other Neo chains), but MainNet will have common accepted extensions (this extension number should be perhaps added to block itself, or after voting). What I propose here is a NeoVM mask, that may initially occupy an int (32 bits):

Extensions mask: 00000111 00000000 00000000 00000000 . What does it mean (number 0x07 in little-endian)? We have three extensions activated, 0, 1 and 2.
MSBit will be reserved for future mask extensions, if in a near future we reach 31 extensions (this will take some time).
So, Neo 3 block should have an int field that indicates NeoVM extensions version, accepted by 2f+1 CN. In the future, we could add more extensions, or even disable some (if some futurely added crypto is then considered insecure).

We need a strong NeoVM, focused on deterministic/verifiable and cryptographic computation, this is not the role of an Interop layer. This is very important for Neo, we need to defend its VM. I don't think this is clear for everyone, why NeoVM is so important for Neo, and for blockchain ecosystem itself. NeoVM is far superior to WASM or any other general-purpose computing VM that I know, as all of these technologies can be implemented directly on NeoVM.

from neo-vm.

igormcoelho avatar igormcoelho commented on June 12, 2024

@erikzhang I think NVM was dettached from Neo, at the moment IScriptContainer was removed. This was a great step indeed. However, I think a blockchain-inspired vm should be able to perform elaborate blockchain-related computation.
CheckWitness won't fit here, because Witness is a Neo Blockchain concept. But checking a digital signature, of any kind, is a very interesting thing to have here.

from neo-vm.

igormcoelho avatar igormcoelho commented on June 12, 2024

Good question Shargon. I think that syscalls are meant for interoperability with upper levels, not covered by NeoVM itself. On Neo Blockchain, this represents access to transactions, blocks, etc. On our neoresearch.io/nvm-learn tutorial,it allows to plot on browser canvas, emit javascript alerts, etc. So NeoVM is not affected by.choices on syscall.
Extensions are meant to be documented here, officially, and for all platforms that use NeoVM they will be available. It is a possibility to extend neovm in a controlled way, and allow upper platforms to keep certain control too (by disabling unwanted extensions, for example). For me, its perhaps native contracts, but for NEOVM.

from neo-vm.

erikzhang avatar erikzhang commented on June 12, 2024

I think we should use SYSCALL. The SYSCALLs with namespace System should be implemented by all blockchains that use NeoVM.

from neo-vm.

igormcoelho avatar igormcoelho commented on June 12, 2024

Useful for Industry Standards: neo-project/neo#972

from neo-vm.

igormcoelho avatar igormcoelho commented on June 12, 2024

Erik, another practical way to implement this, is to separate all opcodes from 0xaa - 0xbf as extension opcodes. These can be easily disabled, and this way, we can take back CHECKSIG and CHECKMULTISIG for an Unified Entry Point, fully compatible to Neo2.

from neo-vm.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.