BLOG April 7, 2020
Neo Monthly Report - March 2020
It is no secret that the world is facing significant challenges in the face of the COVID-19 pandemic. Neo is a global community with contributors from all over Europe, Asia, North America, South America, and Australia, and everyone's way of life has been touched in some way by our shared adversity.
Neo is lucky in that our work is distributed and remote by nature, and so we are able to continue our mission during this crisis in ways that others are not. However, we are cognizant of the fact that in times of hardship, above all else, taking care of ourselves and our loved ones is the number one priority. We encourage the community to stay safe and follow directions issued by your local governmental authorities so that together we may defeat COVID-19 and return to a sense of normalcy.
Neo3 continued to progress in March with much discussion around its governance mechanism and the ongoing development of oracles and state root features. As a result, Neo3 Preview2 is expected to be deployed soon, which will include new features such as improved Neo CLI commands and performance, updated Akka for better P2P, a refactored plugin engine, and more.
The Neo Foundation completed its financial review for 2019 and expects to release the 2019 Fiscal Year Financial Report in April. The report will detail expenditures and financial positioning of the Neo Foundation up until December 31st, 2019.
March also saw milestone releases from projects within the ecosystem. Incognito completed a privacy bridge between the Incognito Wallet/DEX and the Neo blockchain, offering users in the Neo ecosystem access to anonymous transactions. The NeoLogin team developed the SmartBNB protocol, a cross-chain solution intended to allow tokens on Binance Chain to use Neo smart contracts. And, Moonlight launched its MVP dubbed “Copernicus,” allowing for the creation and sharing of professional profiles, basic analytics tools, examples for attribute verification, and automated self-sovereign identity creation.
The full monthly report can be read below.
During March, Neo core development focused on preparation of the Preview2 release, which is intended to enable developers to begin work on tools and applications that will integrate with Neo3. New features such as the GasLeft syscall are designed to help make Neo3 contracts more flexible, and a C# NEP-5 template for Neo3 will be available in the devpack for testing.
Additionally, priority has been placed on finalizing the Neo3 governance mechanism, which is hoped to be completed by the middle of Q2. As discussions are ongoing, details will be revealed once the initial implementation is finalized. Further, Neo continued to work on the development of the built-in oracle and state root features. During the implementation, new ideas were discovered that could potentially improve these solutions; these directions are currently being researched.
- Renamed OracleResult to OracleResponse
- Updated Akka to 1.4.2
- Added GasLeft syscall
- Send RelayResult to event stream
- Limit the max height for some syscalls
- Replaced THROWIFNOT with ASSERT
- Added system fee burn mechanism
- Adjusted charges for storage writing and added payback for deletes
- Completed Oracle Syscall
- Added Oracle policy native contract
- Removed parallel transaction verification
- Optimized the wallet UT
- Fixed change password function
- Fixed UT for manifest modifications
- Fixed bug in contract update/destroy
- Fixed BigInteger0 storage outputs null
- Fixed ExtendTimerByFactor precision
- Completed 62.12% of PR test coverage in February
- Completed 90.56% of automated test tool development
- Began work on the documentation, the latest version will be published alongside Preview2
- Added tests for KEYS, VALUES instructions
- Added TryPopInterface
- Added ASSERT and ABORT opcodes
- TryPop shouldn't change the state of the stack when it returns false
- Refactored node commands
- Fixed GAS decimals
- Removed GetBlockSysFee
- Deal with contract destroy
- Adapted RpcClient to modules
- Fixed balance not changing for non-transfer tx
- Fixed FASTER plugin
- Added Runtime.GasLeft
- Added Features in Template.CSharp project
- Added support for static string array
- Added type convert
- Updated opcodes
- Disabled warnings
- Created NEP5 Template for Neo3
- Resolved visual studio messages
- Using attributes to fill manifest Extra property
- Updated nugets
- Renamed commands
- Changed -o not required
- Optimizer for NEF scripts
- Fixed a bug about convert func
- Fixed a vb value convert problem
- Fixed template neon format
- Fixed coverage results
- Fixed the number of NEWARR
Governance and economic model
- Finalizing discussions on the Neo3 governance mechanism
- Added system fee burn mechanism
- Discussed free transactions for NEO transfers and voting
- Reverted NEP-3 and NEP-6
- Amended NEP3
- Amended NEP6 for Neo3
- Fixed broken link
- Completed 40% of the built-in oracle: connect OracleCache, oracle service.
- Some new schemes were proposed, more details are available in PR#1513.
Infrastructure and Tools Development
Through March, NGD and Neo's development communities continued to balance their efforts between maintaining existing infrastructure and working on Neo3 integrations. NGD Seattle noted that its toolkit architecture has been made ready for Neo3 integration, which it intends to support alongside Neo2. The toolkit has also been updated with support for Python smart contract development and debugging.
Neo SPCC continued to cover ground on its object storage service NeoFS, improving the node reputation system and releasing the NeoFS CDN. The team also achieved feature parity with the core C# client with its Go node implementation, NeoGo. Development is now underway on the Neo3 version, beginning with contract manifests and native contracts.
With its version 2.4.0 release, neow3j provided an added layer of convenience for Java developers that wish to interact with NEP-5 contracts on the Neo2 network. Work is also underway to integrate the library with Neo3, with several OpCode related updates and automatic network fee calculation now implemented.
Basic core functions have been mostly developed, including wallet, contract, and blockchain data display, ready to follow the Neo3 Preview 2 release.
Development of support for Neo2 access to the cross-chain protocol test network.
Neo Blockchain Toolkit for .NET
- Architecture is ready for Neo3 and will support Neo3 alongside Neo2.
- Added AVM debug info support for Python (i.e. the debug info format used by Neo Blockchain Toolkit Debugger).
- Toolkit now has first-class support for smart contract development in Python.
Neo Visual DevTracker
Added pre-load support and the new Storage Explorer.
Neo Saint Petersburg Competence Centre
- NeoFS ACL (Access Control List) has been designed; basic prototype of NeoFS ACL has been implemented.
- New data replication model and scheduler have been implemented.
- Adaptive queue size for object replication routine has been implemented.
- Sharded index/blob storage for NeoFS preliminary design.
- Billing (in/out) traffic metrics for Object Service have been added.
- Reputation system improvements have been implemented.
- Http-gate and services improvements.
- Mathematical models for behavior assessment of nodes in the NeoFS reputation system have been created and methods for calculating threshold values for a node ban have been received; a node ban procedure has been implemented.
- Object transformers library improvements.
- Inner Ring nodes recovery after failures (or complete data loss) has been implemented.
- Code refactoring of the NeoFS object service for coming v0.6 release and a set of performance improvements and bug fixes.
- Released NeoFS CDN (Content Delivery Network). Now the content uploaded to NeoFS network can be requested via an independent CDN network layer with caching, geo proximity optimizations and other “big CDN” features.
- Neofs-node: v0.5.1, v0.5.2, v0.5.3;
- Neofs-api: v0.4.1, v0.4.2;
- Neofs-gw: v0.4.0.
- neo-go version 0.74.0 (Neo 2.0 track), including:
- C# node compatibility fixes.
- Complete wallet implementation.
- Complete RPC (both client and server) implementation.
- Neo 3.0 development with contract manifest and native contracts mechanism implementation has been started.
St. Petersburg State University student workshop (showcasing Neo smart contract development in Go using neo-go) on 13th of March.
- Addition of Chinese, Portuguese, Arabic, Italian, and Turkish translations.
- Clean up of various small UI bugs stemming from changes.
- Implementation of language settings toggle on the main login screen.
- Updates to circleCI build configuration to fix issues related to electronuserland docker image updates and fixed broken build steps.
- Full npm security audit and updates to core dependencies that Neon relies on - ASLint, Jest, React etc.
- Removal of storybook library and associated dependencies and files.
Various UI enhancements (reviewing/testing pull requests and discussions on slack).
- Patched moto3 library to persist S3 objects in Docker.
- Built custom Lambda router to replace AWS API Gateway service in Docker.
- Created Dockerfile for DynamoDB-local, moto, and Lambda router container.
- Updated the Lambda functions to work with locally emulated S3 service.
- Deployed Docker image to public IP and began indexing of Neo2 TestNet.
- Began research of API documentation platforms.
- Fixed all major vulnerabilities from NPM packages.
- Created a transition method for Neo2 to Neo3 wallets.
- Moved timeout out of headers in RPCClient.
- Provided support to multiple new Neo developers via public chat and DM.
- Manually banned at least 350 spambots raiding the server.
- Researched spambot filtering methods for Discord.
- Built Discord plugin to facilitate mass banning of spambots during a raid.
- Automatically banned/prevented at least 500 more spam bots from joining.
- Built Discord plugin to track known admin imposter accounts' username changes.
- Built Discord plugin to monitor GitHub for new Neo-related malware repositories.
Continued neo-vm extension implementation.
NeoCompiler Eco 3
- Now operational with up-to-date features of Neo3 as of the master branch on March 31st, with online availability for the community planned by the end of Q2/2020.
The MILP model
- The Mixed Integer Linear Programming (MILP) model has been completed and optimized with assistance of a Branch & Cut technique provided by CPLEX.
- Initial results proved the sporks of dBFT 1.0 and also allowed initial studies on scalability. The model has also been extended to cover dBFT 2.0 with additional phases. For the latter, sporks were not found. In addition, a proposal for dBFT 3.0 that contains more than one primary in each consensus round has been formulated.
- Additional research and development is being done on plotting the results provided by the mathematical model in a didactic manner. As soon as this is finished the team will proceed with the writing of a scientific paper with the findings. The current three available models can be found here.
- New version released with updated color scheme and logo to match Neo’s branding style.
- Coin balances are now more reliable and in-sync with the rest of the blockchain.
- Added a new “Ecosystem” page to Neo Tracker that promotes projects and groups working on Neo.
NeoLine Wallet Mobile
- Changed the main UI color.
- Optimized the visual presentation of the transfer page.
- Adjusted the data structure of the message notification.
- Corrected inaccurate expressions in some international languages.
- Added account module.
- Android (Latest version 1.4.4)
- Added Korean and Japanese versions.
- Fixed the issue where the assets on the transfer page showed unknown.
- Fixed the issue where the amount displayed on the transfer details page was incorrect.
- Fixed the problem where the more information data could not be loaded.
- Fixed version update progress bar.
- iOS (Latest version 1.6.6)
- Added Korean and Japanese versions.
- Fixed transfer amount display issues.
- Optimized the transfer code.
- Developed a wallet in-app draw tool,
- Cloud wallet service development, adding Golang SDK.
- Optimized on-chain transfer costs.
- Optimized message push.
- Preparations are underway to migrate neodapp.store to ndapp.org.
- The page style and color system have been re-designed.
- Banner and event promotion positions have been added.
- The Neo dApp page has been filtered and optimized.
- Added the ability to switch networks according to the wallet network and display current network information, including MainNet, TestNet, Neo3. We have built a Neo3 private chain to implement Neo3 contract release and debugging. NeoRay is temporarily connected to the Neo3 private chain and will be connected to the Neo3 TestNet after Neo3 Preview2 is launched.
- The contract deployment page and contract call page have been modified so that the corresponding content can be displayed in different networks.
- Added the Neo3 version of the compiler so developers can compile the Neo3 code. Manifest and NEF files can be downloaded after compilation.
- In the Neo3 version of the compiler, details of code compilation errors have been added.
- The contract deployment function of Neo3 version has been realized.
- Upgraded the transaction assembly method for contract calls.
- The Neo3 node has been upgraded so that it can return to the dumpinfo of the trial contract to later allow developers to debug the contract without sending the transaction.
- Added the ability for NeoRay to deploy contracts on MainNet.
Teemo for Neo3
- The Teemo wallet now supports NeoRay Neo3 private chain.
- Replaced SDK, modified the method of address generation and private key import.
- Updated transfer, invoke, invokeGroup, invokeRead and other methods for Teemo functions such as transaction sending and contract invocation.
- Updated the deployContract interface for the contract deployment function of NeoRay.
- Updated the contract invocation function of the sendScript interface for NeoRay.
- Adapted the process of building and parsing address scripts.
- Updated OpCodes and InteropServiceCodes (e.g. replaced THROWIFNOT with ASSERT or addition of PUSHINTs) and introduction of their GAS prices.
- Updated the ScriptBuilder due to recent OpCode changes.
- Implementation of automatic network fee calculation.
Updates and fixes for Neo 2.x
- Released version 2.4.0.
- Added NEP-5 class, bringing a convenience layer to users for interacting with NEP-5 smart contracts. Resolves #70.
- More unit tests (increased overall test coverage from 67% to 70%), due to issues #70, #34, and others.
- Updated reactive library from rxJava1 to rxJava2. Resolves #35.
- Various code style fixes.
- Currently designing script for API matrix function.
- Analyzing api error logs.
- Drafted new version of product description.
- Fixed time extension module.
- Frontend performance optimization.
- Adding L02 Ch02-Ch10.
- Fixing bugs in previous content.
- Updating L01 Chinese version.
- Adding unit test for L02.
- Adding L02 Ch03&Ch04 script.
Testing all JSON-RPC API in Neo3 and preparing to extend functions of API matrix feature to support Neo3.
Marketing and Operations
In March, the NGD Shanghai marketing team worked on many online campaigns, with Neo Column and Neo Live as main focus areas. Several authors have already begun providing content to the Neo column by publishing articles on a wide range of topics, from macro discussions on DeFi trends to the technical aspects of blockchain development.
Efforts have also continued in fine tuning the format and promotion strategy of the Neo Live Webinar to encourage more community engagement. In addition, the marketing team is also busy preparing to deliver an immersive Neo experience at upcoming blockchain events in the first half of the year as many of them are going virtual.
Another project under development is a Neo3 knowledge contest mini-program on WeChat, aiming to raise awareness of Neo3 within the Chinese community.
- Throughout the month, articles have been regularly published to the new Neo Column Collection page.
- 5th March, Ying Liu, co-founder of NeoFish, and Longfei Wang, full-stack manager at NGD appeared on the Neo Live Webinar to talk about NFTs, the NeoFish game, and NFT in-game economics.
- 12th March, Edson, co-founder of NEXT and creator of NeoLine wallet joined the Chinese community on Neo Live WeChat to share the latest developments of NeoLine and discussed how quality products would enhance community engagement. (English Transcript here)
- 25th March, the Neo Foundation announced that it had completed the financial review for fiscal year 2019 and would release the Neo Foundation FY 2019 Financial Report in early April.
- 30th March, Tyler Adams, co-founder of COZ and Moonlight, and Justin Jin, Senior Engineer from NGD, joined Neo Live to discuss how blockchain empowers digital identity. As a follow up, a Q&A thread was set up on Reddit until the 6th April to collect questions from the community regarding the topic, to be answered by Tyler and Justin.
- 30th March, NGD released a Chinese infographic on recent updates from various projects within the Neo Ecosystem.
- 30th March, NGD community operations, Songping Que, appeared on the Neo News Today Podcast to discuss the effects of the coronavirus on China-based operations and Neo’s global development community.
Several projects within the Neo ecosystem achieved milestones in March. Development within the Neo ecosystem is growing in multiple areas such as privacy, DeFi, identity, and social communications. Many of these ecosystem projects are positioning themselves to contribute to the establishment of the next-gen internet.
- Incognito completed a privacy bridge between Incognito Wallet/DEX and Neo. Users in the Neo ecosystem now have access to anonymous transactions.
- The NeoLogin team has developed a cross-chain solution between BNB and NEO, allowing Binance tokens to use Neo smart contracts.
- Moonlight launched its Copernicus MVP to selected users, allowing for the creation and sharing of professional profiles, basic analytics tools, examples for attribute verification, and automated self-sovereign identity creation..
- STO platform, Liquefy, joined the AWS Partner Network (APN) aiming to provide STO solutions for more quality assets across the world. Liquefy is backed by the Neo Eco Fund.
- Community social response application, Guardian Circle, was updated amid the COVID-19 outbreak with the introduction of a referral program.
- Neo partnered with the University of Zurich to be part of its international summer school program, “Deep Dive into Blockchain.” More details to be announced later.