A modern distributed network for the Smart Economy.
Documentation »
·
developers.neo.org
Neo
·
Neo Modules
·
Neo DevPack
- Overview
- Documentation
- Project structure
- Related projects
- Opening a new issue
- Contributing
- Bounty program
- License
This repository is a csharp implementation of the neo blockchain protocol library. It is jointly maintained by the neo core developers and neo global development community.
It is not the program that starts a node. Neo-CLI lives in neo-project/neo-node. The virtual machine lives in neo-project/neo-vm.
If you are new, start here: docs/getting-started.md.
Official N3 developer hub: developers.neo.org. (The older docs.neo.org tutorials still exist; prefer developers.neo.org for current N3 APIs.)
Beginner-friendly guides in this repository (covers neo, neo-node, and neo-vm):
| Guide | Description |
|---|---|
| Documentation hub | Index of all local docs |
| Getting started | What this repo is, what to clone, common mix-ups |
| Architecture | How neo + neo-node + neo-vm fit together |
| Neo core | This library (neo-project/neo) |
| Neo node | Neo-CLI and plugins (neo-project/neo-node) |
| NeoVM | Virtual machine (neo-project/neo-vm) |
| How to: build and test | dotnet test / publish all three repos |
| How to: run a node | Start Neo-CLI, RPC ports, plugins |
| How to: smart contracts | NEF, deploy, invoke |
| How to: contribute | Branches, which repo to PR |
| Glossary | GAS, dBFT, NEF, hardfork, … |
| Persistence architecture | Stores and DataCache |
| Serialization format | Binary layout |
| Official docs notes | What we verified vs stale links |
An overview of the project folders can be seen below.
| Folder | Content |
|---|---|
| /src/neo/Cryptography/ | General cryptography implementation, including ECC. |
| /src/neo/IO/ | Data structures used for caching and collection interaction. |
| /src/neo/Ledger/ | Classes responsible for the state control, including the MemoryPool and Blockchain. |
| /src/neo/Network/ | Peer-to-peer protocol implementation. |
| /src/neo/Persistence/ | Classes used to allow other classes to access application state. |
| /src/neo/Plugins/ | Interfaces used to extend Neo, including the storage interface. |
| /src/neo/SmartContract/ | Native contracts, ApplicationEngine, InteropService and other smart-contract related classes. |
| /src/neo/Wallets/ | Wallet and account implementation. |
| /src/Neo.Extensions/ | Extensions to expand the existing functionality. |
| /src/Neo.Json/ | Neo's JSON specification. |
| /tests/ | All unit tests. |
Code references are provided for all platform building blocks. That includes the base library, the VM, a command line application and the compiler.
- neo: The core libraries for NEO. Guide: docs/neo-core.md.
- neo-node: Neo-CLI and plugins (DBFT, RpcServer, Oracle, ApplicationLogs, storage engines, etc.). Guide: docs/neo-node.md. How to run: docs/how-to/run-a-node.md.
- neo-vm: The Neo Virtual Machine. Guide: docs/neo-vm.md.
- neo-express: A private net optimized for development scenarios.
- neo-devpack-dotnet: These are the official tools used to convert a C# smart-contract into a neo executable file.
- neo-proposals: NEO Enhancement Proposals (NEPs) describe standards for the NEO platform, including core protocol specifications, client APIs, and contract standards.
- neo-non-native-contracts: Includes non-native contracts that live on the blockchain, included but not limited to NeoNameService.
Please feel free to create new issues to suggest features or ask questions.
If you found a security issue, please refer to our security policy.
We welcome contributions to the Neo project! To ensure a smooth collaboration process, please follow these guidelines:
master- The NEO-4 development branch.master-n3- The NEO-3 development branch.
Important: All pull requests must be based on the master or/and master-n3 branch.
-
Fork the repository and create your feature branch from
masteror/andmaster-n3:git checkout master-n3 # or git checkout master git pull origin master-n3 # or git pull origin master git checkout -b feature/your-feature-name # or bugfix/your-bugfix-name
-
Make your changes following the project's coding standards and conventions.
-
Test your changes thoroughly to ensure they don't break existing functionality.
-
Commit your changes with clear, descriptive commit messages:
git commit -m "feature: add new feature description" # or bugfix: fix bug description
-
Push to your fork and create a pull request against the
masteror/andmaster-n3branch:git push origin feature/your-feature-name # or bugfix/your-bugfix-name -
Create a Pull Request targeting the
masteror/andmaster-n3branch with:- Clear title and description
- Reference to any related issues
- Summary of changes made
feature, bugfix, etc. → master or/and master-n3 → release-vX.Y
hotfix → release-vX.Y
- Feature branches are merged into
masteror/andmaster-n3. - Create a release branch from
masteror/andmaster-n3periodically. - Only hotfix branches are merged into release branches.
For more detailed contribution guidelines, please check our documentation or reach out to the maintainers.
You can be rewarded by finding security issues. Please refer to our bounty program page for more information.
The NEO project is licensed under the MIT license.