Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

In NEO 3, have at least one consensus node using NeoPT (C++ VM) #976

Closed
lock9 opened this issue Jul 31, 2019 · 8 comments
Closed

In NEO 3, have at least one consensus node using NeoPT (C++ VM) #976

lock9 opened this issue Jul 31, 2019 · 8 comments
Labels
discussion Initial issue state - proposed but not yet accepted feature Type: Large changes or new features house-keeping Small enhancements that need to be done in order to keep the project organised vm New features that affect the Neo Virtual Machine or the Interop layer

Comments

@lock9
Copy link
Contributor

lock9 commented Jul 31, 2019

To have a more diversified environment, I suggest we use a C++ in at least one of the consensus nodes (while we have this option).
This will also encourage communities to use this VM, if they know that its being 'maintained'.

I consider this a subject of high importance, although this is something we can do in the 'distant future'.

What is your opinion @neo-project/core ?

@lock9 lock9 added the discussion Initial issue state - proposed but not yet accepted label Jul 31, 2019
@shargon
Copy link
Member

shargon commented Aug 1, 2019

Do we have a complete c++ node?

1- We need to test first in testnet the future implementations
2- We need to finish the specifications first

Very distant future for me

@igormcoelho
Copy link
Contributor

It's very easy to use a C++ VM on existing python (or perhaps go) implementations of Neo, but the VM is just a small part of the project @lock9 .
neopt is targetting building specific components for Neo, example: people are already using its Transaction system to build C++ wallets; other people may use its numeric BigInteger system; others may use its c++ VM; others may use its C++ crypto system; others may use its libbft consensus system; etc.
Like @shargon said, it's still a distant future to be fully running a complete node on C++. It could be accelerated, of course, but it's not even on current 2019 plan for NeoResearch or any other group I know. Before getting there, I'd love to see P2P State Relay proposal, so that we make it viable for other projects to safely enter their alternative nodes on P2P, and then, one day, to consensus.

@igormcoelho
Copy link
Contributor

igormcoelho commented Aug 1, 2019

But one thing I agree with you @lock9, if someone manages to package a complete node for consensus (perhaps Python), and if it uses C++ VM, then surely we will be able to keep it updated much faster. I don't think it's much work to do on the VM side, as C++ VM is a complete mimic of C# one, and changes are not very common on VM.
If there's enough interest, it's also quite easy to package existing C# VM for usage on other projects, such as Python, but through C++ VM Layer. This simplifies usage on other projects, since a simple library will be loaded, not full dotnet cross-language linking, and personally you can count me if people want that (I've already done it for BigInteger, so it's not much work now).

@lock9
Copy link
Contributor Author

lock9 commented Aug 5, 2019

We don't need a full node in c++, just the VM.
How far are we from having this implemented?

@lock9 lock9 added house-keeping Small enhancements that need to be done in order to keep the project organised feature Type: Large changes or new features vm New features that affect the Neo Virtual Machine or the Interop layer labels Aug 9, 2019
@igormcoelho
Copy link
Contributor

igormcoelho commented Aug 10, 2019

Not far, I would say 95% complete (1 day work). Major decision missing is how to handle smart pointers on stack efficiently... and the reason I haven't decided it yet, it's related to an open discussion on neo-vm regarding the possible abolishion of Struct vmtype... as soon as this is decided, I can move on with the best possible structure. Depending on the result, I will have to use other pointer structure on C++ (tricky situation ;) )

@igormcoelho
Copy link
Contributor

Can we close this @lock9? I think this doesn't relate to core development.. any alternative group can propose C++/Go/Python/Rust implementations independently, and run nodes when it's ready.

@lock9 lock9 reopened this Aug 14, 2019
@lock9
Copy link
Contributor Author

lock9 commented Aug 14, 2019

Sorry @igormcoelho, the thing here is that we need to have this version officially supported by our C# code. It won't matter if we have a c++ vm if it is not used in a C# version (consensus).
This is a top priority for communities. We need to add support to the C++ VM in C# code and use it in production.
I have to reinforce that communities don't want to implement a Neo VM. This is just extra work for them. The lack of a single shareable VM is the cause of a lot of issues that communities need help with.

Communities are working in relay nodes, there is no security increase in having multiple VM implementations (at this stage). All that can happen is they wrongly confirm or deny a transaction, and you can imagine the problems caused by confirming an invalid transaction. Please, do not close this. I've been messaged several times about this issue. This is of great importance for multiple people and projects.
Thanks!

@igormcoelho
Copy link
Contributor

igormcoelho commented Aug 16, 2019

NeoVM++ is already there for communities to help improve and use: https://github.com/neoresearch/nvmpp

Thacryba pushed a commit to simplitech/neo that referenced this issue Feb 17, 2020
* update cli

* update English

* update rpc
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion Initial issue state - proposed but not yet accepted feature Type: Large changes or new features house-keeping Small enhancements that need to be done in order to keep the project organised vm New features that affect the Neo Virtual Machine or the Interop layer
Projects
None yet
Development

No branches or pull requests

4 participants