neo-logo

CSharp implementation of the neo blockchain protocol.

A modern distributed network for the Smart Economy.
Documentation » · developers.neo.org

Neo · Neo Modules · Neo DevPack

               

Current neo version. Coverage Status Ask DeepWiki. License.

Open in GitHub Codespaces.

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