-
Notifications
You must be signed in to change notification settings - Fork 1k
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
[Core MD] Clarify repo scope: C# implementation ≠ Neo Core protocol #3706
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you have a definition of "Neo blockchain protocol"? If not, then what are we implementing here? Until we have this solved this repository is the protocol definition, unfortunately. You can't write an implementation against some standard definition now, you have to follow what is done here.
@@ -6,7 +6,7 @@ | |||
</a> | |||
</p> | |||
|
|||
<h3 align="center">Neo Blockchain</h3> | |||
<h3 align="center">CSharp implementation of the neo blockchain protocol.</h3> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
And it's Neo
, btw. NEO coin, Neo blockchain.
Neo blockchain protocol is another topic either tc can decide or neo foundation can decide. I don't think that can be of any issue for 'csharp implementation'. Similar question can go to any blockchain project, what is ethereum protocol, what is bitcoin protocol, what is sui protocol. |
https://ethereum.github.io/yellowpaper/paper.pdf + EIPs It's not that I prefer to have an implementation be the definition of the protocol, it's just that we don't have anything else at the moment and we can't ignore this fact. |
I thought about it for a while, neo blockchain protocol should be combination of a few subprotocols: neo-gas economy protocol, dbft consensus protocol, neo vm contract/execution protocol. This should be in side of a neo white paper, then extended and detailed in many many NEPs. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agreed with @roman-khimov
Neo whitepaper: allcryptowhitepapers.com/neo-whitepaper/ Neo NEPs: https://github.com/neo-project/proposals protocols are system ruls, it can be verified, analyized, proved. This repo implements neo protocol, but it also implements other things that are not part of the protocol. I understand that the csharp implementation used to be the main place where the design is done, but fact is neo repo also contains many things that should not be considered part of neo protocol, the GUI, the CLI, the plugins. Implementation is implementation, it can have features and tools that is not part of the neo protocol and other implementations do not need to follow. You guys also wrote many NEPs, so you definately know where the protocols should be. |
I agree, @Jim8y But the time has not come yet for that. We need a better protocol specification document that is strictly connected to the NEPS (proposals repository). After that, I believe that the change in this PR will be more suitable. |
@vncoelho i am not saying of any big change to any code, just a few lines of specification to this repo..... take a look at those few words change, you will find that nothing actually need to be done for real. Just explicitly tell people that this repo is a csharp implementation of neo protocol. |
@Jim8y is right! NEPs are for the defining the protocol for I am sick of moving forward 1 step to just go backwards 10 steps. By |
Not a good example for you. There is #1573. And there are numerous links there. You just can't say it was not proposed and explained in a proper manner. The fact that it's not a NEP proper doesn't change much, it's not some randomly coded thing out of nowhere.
Take a look at what @roman-khimov really does in the repo. Things like https://github.com/neo-project/neo/issues?q=is%3Aissue%20state%3Aclosed%20author%3Aroman-khimov. Then check it against https://github.com/neo-project/neo/issues?q=is%3Apr+author%3Aroman-khimov.
That's for sure. That's why @roman-khimov spends time writing texts from time to time. To communicate problems, intentions, ideas, get feedback, opinions, get on the same page with other people involved basically. Sometimes it works, sometimes it doesn't, communication is hard and reaching consensus among people is much more complex than dBFT. Just to reiterate, I'm not trying to tell you that we don't need any real specification. I'd be happy to have one, then I wouldn't be touching this repository at all probably. But the fact the we don't have "Neo protocol" defined in any abstract manner makes changes like proposed here just misleading. |
roman is doing a great job, lets only focus on changing the repo statement. As a p2p team, we will always find that we dont agree with someone on something, lets try to find the 'grestest common divisor'. i understand roman is saying that currently we need csharp impl to play a role for the core since neps are not complete, that is ok, we just need to not consider the cli gui plugins as the core part. still nothing will be changed, no code need to be updated. |
And sometimes we even have a specification, but no implementation for it: https://github.com/neo-project/proposals/blob/f329e8740cb5e19d1d0fba8896d5bd8eb8031b73/nep-25.mediawiki. What's the value of specification in this case? Not a lot of value, no one can use it. Regarding "non-essential components", yeah, CLI/GUI do not define any of the core protocol, but that's rather understandable. There are less obvious parts like RPC though, in some way it's not core, but just take a look at nspcc-dev/neo-go#2869 or nspcc-dev/neo-go#2863 or nspcc-dev/neo-go#3370 or many many others. Most of them are semantically correct either way, but we have to follow whatever specific choice C# code makes to be 100% compatible. |
@roman-khimov I wasn't picking on you. Just using you as an example. I know we all play a part. It very hard for me to understand the All sounds good to me, I'm down for any improvements. |
@roman-khimov Your concern is totally understandable, yet consider CSharp repo as an implementation will not cause any real trouble at all, since what you consider as the core part will still be the core part, you are still here to review prs, ensuring compatiablility, won't you? so there will not be any problem at all, we still wont change the so called |
Well, it's
vs.
I do not agree it's more clear this way, it's misleading. |
I am sorry, i totally understand your concern, but i still think we need to update it. misleading if for real, then let it be. problem is problem, and we are here to fix it. If we dont take action, problems will stop each other, A stops B, B stops A.
We must change the mindset. Specification and NEPs are more important than implementations. Otherwise the paradox of |
The current state of this repo is lost. If we are to innovate |
Specification repo should be re-activated strongly. Not only proposals.
Description
This PR formally redefines this repository as an implementation of the Neo Protocol (akin to NeoGo), not the Neo Core itself. It addresses historical conflation between implementation details and protocol authority that has hindered maintenance.
Problem Statement
Since we merged repos into a mono repo, we've conflated the C# implementation with the Neo Core protocol due to:
This has caused:
⚠️ Maintenance Paralysis: Resistance to modify "core"-labeled non-protocol components
⚠️ Unrealistic Expectations: Assumption that all repo code is protocol-mandated and bug-free
⚠️ Innovation Bottleneck: Difficulty introducing non-protocol improvements
Why This Matters Now
As Neo matures, we must:
Type of change
Checklist: