CSharp implementation of the neo blockchain protocol.
A modern distributed network for the Smart Economy.
Documentation »
·
developers.neo.org
Neo
·
Neo Modules
·
Neo DevPack
## 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).