NEO Blockchain C# Center of Excellence
The neo-csharpcoe
project is an "umbrella" project for several initiatives related to providing tools and libraries (code), frameworks, how-to documentation, and best practices for full-stack development using .NET/C# and C#.NEO and the NEO Blockchain software platform.
The neo-csharpcoe
is an independent, free, open source project that is 100% community-supported by people like yourself through your contributions of time, energy, passion, promotion, and donations. To learn more about contributing to the neo-csharpcoe
, click here.
The purpose of this document is capture the knowledge and best practices for C# smart contract development on the NEO Blockchain platform.
This document is specifically targeted at .NET developers and architects.
In addition, when the first version of the document was written (February 2018), you will also need to have an early adopters mind set. It's the early days. You'll be downloading the code for most of the developer tools (aside from Visual Studio) and compiling them yourself. It may not always be fun but I promise it will certainly be rewarding in the end.
- Capture basic as well as advanced knowledge related to developing C# smart contracts across the application lifecyle (ALM)
- Requirements
- NEO C# Language Considerations
- NEO System Fees
- Design Patterns
- Creating Secure Contracts
- Implementation
- Deployment
- Testing
- Maintenance
- Documentation
- Capture recommended best practices for C# smart contract development
- Non-goal: This scope of this document is limited to smart contract development only - not the other components and services of the NEO Blockchain platform.
- Provide reliable documentation: timely, accurate, visual, and complete
- Save as much of a person's time as possible
- Use open source software whenever possible
- Need in the NEO .NET developer community to have concise and easy-to-follow documentation to enable people to get up to speed developing NEO smart contracts in as short a time as possible
- Getting Started
- Blockchain Basic Concepts
- What is NEO?
- NEO Development Tools
- Lab: Writing First C#.NEO Smart Contract: Hello World!
- The C#.NEO Language
- Lab: Using NEO Storage: Meetup Attendee Sign-in #1
- Introduction to Entities
- Using Other Languages
- NEO Architecture
- Lab: Edit-Compile-Debug: Meetup Attendee Sign-in #2
- NEO Persistable Classes Introduction
- Programming with Entities
- Lab: Programming with Entities: Meetup Attendee Sign-in #3
- Off-chain Client Development
- Lab: Off-chain Client Development: Meetup Attendee Sign-in #4
- NEP5 Token Standard
- Lab: NEP5 Tokens: A Meetup Token
- Design Patterns
- Deployment
- Testing
- Maintenance
- Writing Secure Contracts
- Documentation
- Appendix A - NEO Object Model Overview
- Appendix B - Roadmap
- Appendix C - Sample Smart Contracts
- Appendix D - NEO System Fees
-
[MSCODINGGUIDE] Microsoft, C# Coding Conventions (C# Programming Guide) from https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/inside-a-program/coding-conventions
The C# Language Specification does not define a coding standard. However, the guidelines in this topic are used by Microsoft to develop samples and documentation.
Coding conventions serve the following purposes:
- They create a consistent look to the code, so that readers can focus on content, not layout.
- They enable readers to understand the code more quickly by making assumptions based on previous experience.
- They facilitate copying, changing, and maintaining the code.
- They demonstrate C# best practices.
-
[FRAMEWORKGUIDLINES] Microsoft, Framework Design Guidelines from https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/
This section provides guidelines for designing libraries that extend and interact with the .NET Framework. ...
The guidelines are organized as simple recommendations prefixed with the terms Do, Consider, Avoid, and Do not.
These guidelines are excerpted from the book Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition, by Krzysztof Cwalina and Brad Abrams.
-
[ETHCONCENSYSSECURITY] Concensys, Smart Contract Security Best Practices (Ethereum) from https://github.com/ConsenSys/smart-contract-best-practices/blob/master/README.md
-
[ETHSTYLEGUIDE] Solidity project, Style Guide (Ethereum) from http://solidity.readthedocs.io/en/latest/style-guide.html
-
[ETHPATTERNS] Solidity project, Common Patterns from http://solidity.readthedocs.io/en/latest/common-patterns.html
-
[ETHSECURITY] Solidity project, Security Considerations from http://solidity.readthedocs.io/en/latest/security-considerations.html
- TODO