NEO Global Monthly Report

November 2019

NEO Global Monthly Report


Through November, entities in the Neo ecosystem helped expand the global reach of the platform. Neo brought several ecosystem projects with it to BlockShow Asia 2019 for a dedicated Neo Eco Zone exhibit, and NGD announced that St. Petersburg State University would offer a Neo-based computer science course.

Other teams in the ecosystem contributed to the ongoing outreach, with NGD Seattle presenting at the Live! 360 conference in Orlando, Florida, and neow3j hosted a workshop and a lecture respectively at the University of Basel and University of Geneva in Switzerland.

On the development front, work has begun on the Oracle implementation, which will also include a new URL scheme to allow content stored on NeoFS to be accessed. Design work has also begun on a new and improved user interface for neo-gui.

The full Neo Global Monthly Report can be found below.




This month, Neo core developers were actively working on Oracles, the NeoGUI, and the Neo blockchain itself. Additionally, test cases were documented in November to help developers to test and fix PRs, and work started on replacing Travis with the new GitHub actions system.

NeoGUI for Neo 3
A new user interface is being designed for Neo GUI. The technology used for the implementation is still under discussion, however following tests and discussions on the Github, the proposed solution should be built using Electron.

Coding the Oracles
The team has now started to code the Oracle functionality. Efforts have been led by core developers Shargon and Belane, who have divided this feature into smaller tasks to make the implementation process more efficient.

NeoFS through Oracles
A new URL scheme is being added to enable NeoFS content to be accessed using the Oracle API.

Documented tests
Test cases are being created and saved on an external tool. These tests are designed to ensure PRs are properly evaluated, and to help developers to identify and fix problems faster. Test cases were created for 23 pull requests.

Travis is being replaced
NeoVM and NeoCLI are the first repositories to replace Travis with GitHub Actions. This change is planned to occur in all projects using Travis.

Primitive and Compound Type
Two new classes were added to the NeoVM. These classes are used to differentiate the primitive types boolean, integers, and byte arrays from compound types, maps, and arrays.

Adoption of .Net Standard 2.1 and .Net Core 3.0
The Neo target framework was updated to target .NET Standard 2.1 and refactored to use the Span<T> class. Dependent applications were also updated to use .NET Core 3.0.

Replacing LINQ with helper methods
Tests made by core developer, Shargon, indicated that LINQ had performance impacts on Neo’s code. Replacing LINQ in the ECDSA and UInt classes demonstrated a performance increase of 216%.


Merged PRs


#1280 Optimize BigInteger
#1269 Move projects into folders
#1267 Remove Travis and use Github Actions
#1262 Improve p2p message deserialization
#1254 apply strict enum checking
#1249 Storage abstract
#1248 Fix 1244 Mempool.ReverifyTransactions
#1242 Update oracles branch
#1240 Adding neo version to feature suggestion
#1233 Decrease the block time threshold (3x)
#1229 Prevent XXE (3x)
#1227 Prevent remove storage flag when there are something stored
#1224 Fix Base58 issues (3x)
#1220 Ensure that the block is valid before relay it on CheckCommits
#1216 Remove unnecessary logic from Mempool
#1215 Small optimizations using cached VM Script
#1214 Using problem description
#1203 Optimize MerkleTree (3x)
#1202 Added more verbosity to CN logs
#1201 Remove the case of GetData in ProtocolHandlerMailbox#ShallDrop
#1199 Use base64 in JsonSerializer

#487 Remove Travis and use Github Actions
#477 Upgrade dependencies and target frameworks

Neo VM
#231 Fill new arrays with null by default
#228 Remove Travis and use Github Actions
#226 Little optimizations in constructors
#225 TryPop
#222 Add PrimitiveType and CompoundType
#221 Allow to cache script
#219 Use `ReadOnlySpan<byte>`
#218 Use ReadOnlySpan and ReadOnlyMemory for reducing memory copy

Neo Plugins
#142 Fix cell on maxNBlocksPerDay (3.X)

Neo DevPack Dotnet
#140 Dotnet Format
#139 Fix format
#138 Replace some regex
#137 Update SYSCALLS
#135 Change branch
#131 Allow neon to compile from the source
#130 NEF to AVM
#129 Write manifest file with storage and payable according the contract needs
#124 Prevent events with return (3x)

Neo 2.X

#1204 master-2.x: Replace function exceptwith and unionwith with faster functions
#1239 Fix Base58 issues (2x)
#1235 Fix PublishTransaction deserialization (2x)
#1230 Prevent XXE (2x)
#1207 Optimize MerkleTree (2x)

Neo VM
#121 add unittest framework for neo-devpack-dotnet branch 2.x.
#122 fix abi bug for 2.x

Neo Plugins
#141 Fix/memory (#135) (master-2x)

Neo DevPack Dotnet
#136 Prevent events with return 2x
#134 Travis for 2x




During November, community development groups covered major ground with new releases and feature exploration. The Russia-based NeoSPCC published several notable updates for the NeoFS TestNet and NeoGO client, including the implementation of support for dBFT consensus.

NeoResearch released two academic papers on Neo technology, began exploring new phases and incentives for the third version of dBFT, and started research into potential privacy mechanisms for Neo smart contracts.

Contract development tools have also seen improvements in November, with NGD Seattle launching an updated version of its Neo Blockchain Toolkit for VS Code. A video introduction to the toolkit was released, presented by development lead Harry Pierson. Additionally, NEO-ONE added NEO Tracker instances for private development networks and continued its efforts in making its development tools compatible with Neo3.

More progress from around the ecosystem can be found below.



  • Released v0.9 of Neo Toolkit for .NET on Visual Studio Marketplace (and launched at the Visual Studio Live keynote).
  • Released NEO-FX P2P early preview.


  • Implemented preview support for Neo3 into the Neo Blockchain Toolkit for VS Code. Full support expected in the December release.


NeoSPCC has been focused on new releases of NeoFS and NeoGO. Work on the NeoFS Testnet has continued, with the storage system receiving an upgrade and a new significant feature – reputation system. NeoGO has also been updated: it now supports dBFT consensus, and collects and visually displays important network metrics using Prometheus and Grafana.


  • BLS signatures proof-of-concept for dBFT
  • State and TX verification proposal
  • Contributed to Oracle protocol proposal


  • Released neofs-proto.
  • Released neofs-cli.
  • Released web application for automatic distribution of tokens for testing NeoFS.
  • Released NeoFS TestNet.
  • Released NeoFS Neo TestNet web wallet for public testing.
  • Implemented verification signature chain in NeoFS requests.
  • Implemented reputation system in the NeoFS implementation.
  • Released set of new NeoFS versions, the latest version being v0.2.3.


  • Implemented consensus node support
  • Implemented contract deployment functionality
  • Implemented Invoke* RPC methods
  • Implemented Prometheus monitoring support
  • Brought neo-go VM into full compliance with neo-vm unit tests
  • Released set of new NeoGO versions, the latest version being v0.70.0

Events and Publications

  • Held NeoGo meetup at Saint Petersburg State University
  • Participated in an interview on
  • Published two scientific papers for MICSECS-2019 conference (SCOPUS): “Data migration rate of the CRUSH-based distributed storage with dynamic topology” and “The probability of timely redundant service of requests by sequence of servers in multi-level cluster.”



  • Added interactive manifest and notification breakdown components to the tracker.
  • Iterated on and completed mobile friendly implementation.
  • Created CircleCI automated deployment and testing pipeline for the application.
  • Polished the search UI/UX.
  • Added out of focus elements to landing page carousel and other design enhancements/polish.


  • Updated the node list and associated logic to remove unhealthy/dead RPC nodes.
  • Tweaked and polished the layout of new dashboard components.
  • Completed work on designing and implementing a dedicated network configuration page and “popover” component to display network info.


  • [NEO3] Added TransactionSigner class.
  • [NEO2/3] Ignore pattern for unused vars.
  • [NEO2/3] Only lint changed files.
  • [NEO2/3] Updated to Typescript 3.7.2.
  • [NEO2/3] New NeonObject interface.


  • Created deployment instructions.
  • Initialized repo under CoZ organization.


  • Added DynamoDBPublisher plugin with installation/configuration instructions.


  • Migrated into CoZ organization
  • Generated vanity TestNet address for wallet screenshots


  • Implemented the support for a C# P2P PR to simplify syncing into neo3-python. Added new syncing logic based on this new functionality and wrote tests for it
  • Implemented leveldb, postgresql and in-memory backends for the storage layer (including all necessary auxiliary classes). Wrote generic tests that can be re-used by all backend implementations to validate correct behaviour.
  • Expanded core.serialization package with extra functionality and test coverage for this functionality. Improved some existing tests.
  • Added a global (3rd party expandable) configuration class and updated existing code to make use of it. This allows external control for the database configurations, network settings etc.
  • Added various tests on the network side and improvements as a result of testing, including:
    • Added node capabilities with coverage.
    • Added the remaining 50% of tests to nodemanager and resolved issues that were discovered up because of it.
    • Cleaned up Node class to be more developer friendly. Included disconnect reason feedback and additional utility functions. Added a lot of test coverage.
    • Added required TrimmedBlock class and test coverage.
    • Added missing tests for Message class.
  • Created PR to NEO C# to enforce strict Enum checking.
  • Background maintenance and support for neo-python 2.x.


The team focused on dBFT 3.0: Designing the cancel phase and incentives as well as new insights for privacy for Neo smart contracts.

Neo 2.x

  • Additional mathematical and theoretical proofs for dBFT 1.0 and 2.0.


  • Advances on UT for current consensus.

Events and Partnerships

  • NeoResearch gave two presentations at the Universidade Federal de São João del Rey and Universidade Federal de Ouro Preto, both in the state of Minas Gerais, Brazil. The presentations were done together with NGD researcher Wang YongQiang.
  • Integrated wallet providers on NeoCompiler-Eco, partnered with the NeoLogin team (@corollari), which also pushed the standard that works for invokes and deploy with O3 or NeoLine.


NEOLine mobile

The NEOLine mobile wallet was officially released in global beta.

Android (latest version 1.1.5)

  • Added private key QR code.
  • Added asset balance hiding function.
  • Simplified display of transaction history list.
  • Simplified transfer codes.
  • Optimized import and export wallet functions.
  • Fixed query of transaction details.
  • Fixed issues related to page jumps on wallet browsing pages.
  • Added user-defined function to modify wallet avatar and wallet name.

iOS (latest version 1.3.1)

  • Added private key QR code.
  • Added asset balance hiding function.
  • Added slide bar for import wallet.
  • Simplified display of transaction history list.
  • Updated the transfer processing logic.
  • Updated wallet UI.
  • Fixed the problem of incomplete display of a small part of the wallet.
  • Fixed the problem of wallet asset transfer value verification error.
  • Fixed the issue of digital accuracy of wallet assets.
  • Added user-defined function to modify wallet avatar and wallet name.

NEOLine wallet plugin

  • Improved deployment contract dAPI.
  • Fixed the bug of loss of accuracy.
  • Connected to the interface of the new exchange rate.

NEOLine official website

  • Completed the upgrade and revision of the official website.
  • Provided download channels for mobile wallets and browser wallet plugins.

NeoTube browser

  • Completed the upgrade and revision of the official website with a new and simple UI style, provide users with the most convenient Neo blockchain information query.

Forpay asset custody system

  • The development of various functional sections is completed, including third-party access to API interfaces, asynchronous notification of asset changes, etc.
  • Supports the escrow of NEP-5 type assets. The next step will be to support Neo native assets (NEO, GAS).


NEL updated the basic functions for TK-SDK and completed Neo3 adaptation for basic features of Teemo wallet including inquiry, transfer, fee settings, and dApp calls.

Fixed a bug in the browser where the total amount of NEP5 asset is displayed incorrectly.

Neo3 Neo-SDK-ts

  • Created a Contract utility class to reconstruct the contract calling method.
  • Created token tool classes with commonly used calling methods.
  • Wrote Long type to store data such as transaction fee, network fee, etc., and add Long to bytes, Bytes to Long, add, sub, mul, div. Method.
  • Modified the transaction witness part to solve the problem where nodes reject transactions.


  • Teemo-neo3.0 has replaced sdk, and removed the conflicting sdk in 2.0.
  • Fixed NEP-6 import and export compatibility issues.
  • Reconstructed the Teemo transaction construction class to complete the transfer and transaction function.
  • Modified the data storage format of the asset list.
  • Upgraded the API to Neo3 version, completed functions such as asset list query, asset information (balance) display.
  • Upgraded transfer operation on the Teemo home page, transaction fees are now added by default, with fast / slow stalls.


The NEO•ONE CLI now starts a configurable NEO Tracker instance alongside the NEO•ONE node by default when deploying contracts to a private network in development with NEO•ONE.

The NEO Tracker instance that runs locally will read and display the state of the private NEO network, including its deployed smart contracts, which is useful for seeing how a project will appear in a blockchain explorer like NEO Tracker.

Additionally, the NEO•ONE CLI allows developers to easily start, stop, and reset an instance of NEO Tracker with a single command without needing to use a private network started with NEO•ONE, providing more flexibility to developers who want to use a local NEO Tracker instance to view their private network.

NEO•ONE now has three engineers working full-time to bring NEO•ONE up-to-date with Neo3. NEO•ONE aims to be completely compatible with Neo3 when Neo3 launches.


  • Completed Cryptographic audit.
  • Development of fuzzing tools for managed code.
  • Several NEO2 classes were fuzzed.
  • NEO2 CORE audit at 95%.
  • New network monitoring has been deployed during November.
  • Work has been done to adapt neo-resilience to NEO3 development.
  • Pull Request source code security reviewed.
  • November security pentest and open vulnerabilities review.




Neo3 is the focus at NGD Shanghai. The team continued discussion and design of the Neo’s governance model, Oracles, and worked on optimizing network performance through various ways:

  • Continued discussion and design of Neo3 governance model.
  • Discussed the consensus mechanism of built-in Oracles for Neo3.
  • Optimizing Neo3: Addressed the issue of inv message loss, optimized mempool sorting, cached transaction fields, and proposed parallel signature verification.
  • Worked on porting RPC modules, creating GraphQL and Restful plugins – completed 80%.
  • Completed the development of Neo2.x GO SDK.
  • Worked on developing Neo-Celer SDK – completed 80%.
  • Selected the front-end development framework of Neo3-GUI, and preliminarily formulated the product design details.
  • Wrote Neo3 documentation – neo-cli and RPC API close to completion.
  • Classified automated test frameworks by business, refactoring test cases, and fixed Neo-Plugin bugs.
  • Tested ecosystem wallets.
  • Promoted and developed the DAPI standards with wallet-plugin project parties.
  • Continued maintenance of the official website, with additional blog section and search functions for technical documentation.




November was an extremely busy month for Neo in terms of marketing events. The highlight of the month was Neo’s presence at BlockShow Asia 2019 in Singapore, where attendees and the local community were able to experience Neo and Neo’s ecosystem from various aspects. Besides BlockShow Asia, Da Hongfei and other teammates also travelled to various parts of the world to meet international communities and introduce Neo and projects within Neo’s ecosystem to a wider crowd.


Offline Events


Nov 7, Da Hongfei was invited to speak on the panel “The Future of Blockchain” at FORTUNE Global Tech Forum 2019 in Guangzhou, China.


Neo held its first meetup in Kiev, Ukraine and introduced Neo to the local community.


Da Hongfei was invited to World Blockchain Conference 2019 in Wuzhen, China. Da delivered a keynote speech on “Decoding the Next-gen Internet” and shared insights with the panel about the future of blockchains in China.


Longfei Wang, Neo staff engineer, participated in the China .NET Conf 2019 in Shanghai, China, and gave a speech on exploring blockchain technologies with Neo using .NET.


Neo hosted its second meetup in St. Petersburg, Russia, joined by ecosystem partners Neo St. Petersburg Competence Center, MyWish, and 0xGames.

14th - 15th

Neo participated in BlockShow Asia 2019 in Singapore. As the first keynote speaker, Da Hongfei addressed the crowd on how blockchain technologies of the Next-gen Internet would solve the imperfections of today’s internet. Neo also set up a Neo Eco Zone at the conference to showcase eight projects within the ecosystem.


Neo held NeoFest Meetup 2019 during BlockShow Asia in Singapore to update the local community about Neo and Neo’s ecosystem.


John deVadoss, head of NGD Seattle, and Harry Pierson, lead architect, presented a keynote speech at the Live! 360 conference in Orlando, Florida on the topic “Programming Smart Contracts in C# and .NET.”


Neo launched a new course titled “Software Development Using Neo Blockchain Technology” at the St Petersburg State University in St Petersburg, Russia, to provide insights into distributed ledger in general and Neo technology in particular, and to help students build skills in developing with core components of Neo technology.


Online Events