April delivered another concrete step on the road to Neo3 with the release of Preview2. The new version brings with it many enhancements, including upgrades to the NeoVM with an instruction performance increase of up to 16x.
The smart contract system also received upgrades, such as new contract IDs that remove the need for data migration during contract updates, permission controls at the manifest and contract levels, and new utilities such as JSON parsing and GAS balance requests.
The release of Neo3 Preview2 is hoped to accelerate the development of Neo3 tools and allow the community to begin the migration of existing tools.
As communities all over the world continue to adjust to life in a world with COVID-19, many traditional offline and networking events have moved towards online virtual events. This was the case for BlockDown 2020, at which Neo founder, Da Hongfei, delivered a presentation.
During his talk, entitled Blockchain in a Post-Pandemic World, Hongfei focused on how blockchain may solve potential long-term problems that result from the coronavirus pandemic. He also discussed new features in Neo3, and gave an update on the progress of Neo’s cross-chain interoperability protocol.
The full Neo global monthly report can be found below.
In April, Neo delivered major improvements in architecture, performance, and security to Neo3 with the Preview2 release. This milestone provides a comprehensive Neo3 development framework for Neo developer communities as well as for early Neo3 adopters.
In addition, work is underway to finalize the implementation of the new governance mechanism, and most of the built-in Oracle service development work has now been completed. Members of the Neo ecosystem are also helping determine a new economic model, aiming to provide more incentives to encourage increased participation in on-chain activities.
- Added GetCallFlags
- Added GetLeft syscall
- Added Stateless to CallFlags
- Added StackItem.ToJson
- Call _initialize() automatically added vote for committee
- Added burn syscall fee
- Sync try-catch opcodes
- Updated akka to 1.4.2
- Send RelayResult to event stream
- Limited the max block height for some syscalls
- Optimized the wallet UT
- Cache the most recent block
- Replaced THROWIFNOT with ASSERT
- Removed grouping
- Fixed plugin configuration failure
- Fixed change NEP-6 wallet password
- Fixed Datacache
- Fixed CallFlags
- Fixed UT for manifest modifications
- Fixed bug in contract update/destroy
- Fixed BigInteger0 storage outputs null
- PR test coverage reached 62.5%
- Iterated the automation tool to neo-cli v3.0.0-preview2, with an execution time optimization of 33%
- Added public LoadClonedContext
- Added tests for KEYS, VALUES instructions
- Added TryPopInterface
- Added ASSERT and ABORT opcodes
- TryPop shouldn't change the state of stack upon false return
- Added Oracle service
- Added JSON test
- Optimized the filter payment
- Allowed to define allowed content types in policy
- Allowed filtering in the same contract
- Improved filters with argument
- Improved user experience
- Renamed OracleResult to OracleResponse
- Moved Oracle syscall to Oracle native contract
- Removed snapshot from mempool iterator
- Created UT certificate
- Added Oracle invoke
- Added version number in pool
- Updated syscall
- Output log errors
- Fixed wallet bug
- Fixed filter hash
- Added state P2P messages
- Added MPT
- Added 2.x workflow
- Added version type
- Stored current root hash
- Removed value limit
- Applied MPT to storages and persist roots
- Fixed MPT and longer key
- Neo3: Completed the development and current phase is in the final testing
- Added StackItem ToJson
- Adapted dockerfile to recent code changes
- Refactored node commands
- Fixed bugs in contract destroy
- Adapted RpcClient to modules
- Updated to latest nugets
- Removed GetBlockSysFee from RPC
- Fixed systemlog
- Added Runtime.GasLeft()
- Added support for static string array
- Added features in template.csharp project
- Ensured combined rules
- Optimizer: optimized EQUAL
- Released neon v3.0.0-preivew2
- Updated opcodes
- Updated nugets
- Removed hard coded scripts
- Disabled warning
- Added NEP-5 Template for Neo3
- Resolved Visual Studio messages
- Using C# attributes to fill manifest extra property
- Fixed the number of NEWARR
- Fixed UT
Infrastructure and Tools Development
Since the release of Neo3 Preview2, community development groups that focus on providing vital tools and infrastructure for the network have been empowered to work on the next stage of Neo's evolution. During April, teams continued to move forward in updating existing tools to work with Neo3, with notable examples being COZ's popular neon-js and neo-python libraries and NEL's NeoRay contract debugger.
Through April, NGD Seattle worked closely with the Azure Blockchain team at Microsoft while building the Visual Token Designer, which it will unveil alongside the new time-travel debugger at Consensus Distributed 2020. The team also went to great lengths to improve the Neo Blockchain Toolkit, working on its Neo3 adaptation and on better facilitating Neo's polyglot community with support for the Go, Python, and TypeScript languages.
Neo St Petersburg also reported notable progress in April. The team has closely followed the core development of Neo3 and the core C# node implementation, porting changes and new features to NeoGo including native contracts, the new P2P format, and new VM opcodes. Neo SPCC's consistent progress on the Neo3 version of its Go node opens the potential for the Neo3 MainNet to launch as a multi-client network for improved resilience.
Full details on April’s infrastructure and tools development can be found below.
Released Neo-CLI v3.0.0-preview2 and updated the test network.
Published a new Neo3-GUI version with Neo3 Preview2, including basic functionalities.
Published a development guide on Neo3 Preview2 for developers who want to develop with Neo3.
Developer Experience Product Development
- Development in progress for Time-Travel Debugger, a pioneer product.
- Development in progress for Visual Token Designer, a work in partnership with the Azure Blockchain team at Microsoft.
- Neo3 adaptation for Neo Express (privatenet), Neo Toolkit for .NET, and Visual DevTracker.
Events and Partnership
- Joined the Cloud Credential Council for a session on blockchain leadership.
- Working with the Azure Blockchain team and IEEE Blockchain organization. More details will be shared at Consensus Distributed 2020.
- Participated in Reimagine2020 and shared Neo's latest progress on developer experience.
- Enabled the correct exit of storage nodes from the network map at the request of their owner.
- Made changes in the C# API to support NeoFS node 0.7.x release.
- NeoFS API releases: v0.5.0, v0.6.0, v0.6.1, v0.7.0, v0.7.1, v0.7.2, v0.7.3.
- NeoFS Golang API releases: v0.6.0, v0.6.1, v0.6.2, v0.7.0, v0.7.1.
- NeoFS API for C# has been released on a public GitHub repository.
- Finished Object service status codes (error codes).
- NeoFS HTTP Gate Refactoring.
- A new concept of NeoFS Inner Ring nodes, deep-integrated with Neo blockchain, and functions based onNeo smart contracts.
- Preparation for the transition of NeoFS Inner Ring functions to Neo smart contracts. (Analytics for contracts: network map contract, epoch contract, and container contract).
- Detailed design for session token usage in the object service of NeoFS.
- Implemented InnerRingUpdate smart-contract caller through neo-go RPC client in Inner Ring reputation system.
- Added support for the fast PUT object operation with fewer copies than declared in the storage policy by the request of the user.
- Implemented payment receipts to store in DHT instead of Outer Ring local storage.
- NeoFS Web Services refactoring (added NeoFS deposit functions, removed neo-scan and neon-js dependency).
- Modified nodes reputation system.
- Neo3 Native contracts implementation.
- Neo-debugger support.
- Started implementing the new P2P format (new transaction format) for Neo3.
- Changed block format to Neo.
- Moved crypto from VM to interops for Neo3.
- Added native interops initialization into the genesis block.
- Implemented a lot of Neo3 VM opcodes; completed parts: PUSH opcodes, flow-control opcodes (JMPs), Array/Struct/Map opcodes, CONVERT, updated arithmetic/bitwise operation, old hashing opcodes were also removed.
- Changed verification scripts to use new syscalls instead of instructions.
- Notification in Neo3 is in progress; the transport part (WebSockets) has been done.
- Added partial consensus message decoding.
- Used 4-byte ID for syscall instead of string.
Participated in Binance Online Super Meetup and presented on NeoFS’s progress.
- Ported C# BigInteger and tests to C++ for usage in the VM.
- Created Python bindings for the BigInteger port.
- Finalization of design/product prototypes.
- Continued work on foundational elements.
- Implementation of logic / HTTP layer.
- Created OpenAPI3 documentation for all available endpoints.
- Updated DynamoDBPublisher neo-node plugin to handle Preview2 SDK changes.
- Created new AWS DynamoDB tables for Preview2 explorer API.
- Configured new Preview2 node on AWS EC2 instance.
- Deployed new REST endpoints on AWS for Preview2 TestNet.
- Neo2.x/Neo3: Removed camelcase rule from linter configuration.
- Neo3: Updated RPC to 3.0.0-preview2-00.
- Neo3: Added JSON interfaces for blockchain objects.
- Neo3: Updated single sig account.
- Generated ABI file.
- Researched Python type hinting support.
- Tested the debug map file generation.
- Began to implement a list of smart contract methods and variables.
- Researched implementation of Python AST.
- Created the initial structure of neo3-boa project.
- Implemented translation of Python functions.
- Began research on how to use the official Neo VM for the neo-boa integration tests.
- Began to implement translation of local variables, declarations, and attributions.
- Began to generate the Neo3 file format and metadata.
- Manual QA and regression testing of release candidate.
- Release of version 2.5.0.
- Addition of Russian language.
- Improved Discord plugin to facilitate mass banning of spambots.
- Banned/prevented 4740 spambots from joining the Neo Discord.
- Improved Discord plugin to track known admin imposter accounts' username changes.
- Created MongoDB database to facilitate spammer/scammer detection efforts.
- Devised several helper scripts to aid in detection of new imposter accounts.
- Improved Discord plugin to monitor Github for new Neo-related malware repositories.
NeoLine Wallet Mobile
- Updated Android (latest version 2.1.3).
- Updated iOS (latest version 2.1.0).
- Added AMA tool.
- Added lottery tools.
- Improved international language content.
- Updated transfer reminder.
- Optimized local network requests.
- Bug fixes.
- Optimized the SQL statement, increased the data cache, and reused the query results.
- Updated the node configuration.
Neo ecological developments
- Open-sourced the squirrel block analysis and storage program for Neo2.x.
- NFT asset support is under development and will be launched soon.
- Neo full node deployment adjustments: new US and Hong Kong seed nodes.
- The number of asset types supported on the MainNet increased to 153.
- The number of asset types supported on the TestNet increased to 1992.
- Added import template contract function, new developers can learn contract writing specifications by quickly loading contract templates.
- Added compiler language and version selections for contract compilation. Added a compilation details page, you can view the relevant information of the contract after compilation (AVM, ABI, manifest, NEF...).
- The deployment status of the contract will now be checked after the contract is compiled. If the current compiled contract has been deployed on the network, the deploy contract button will display "Contract has been deployed." If not deployed, the button will display "Deploy this contract."
- There are now two calling methods: adding ABI parameters and manually filling in parameters when calling a contract. NeoRAY will evaluate whether the contract code meets the Neo-recommended writing specifications. If it meets the specifications, you can use the ABI parameters to quickly call, and contracts that do not meet the specifications can only be filled in manually.
- Unified file management methods and removed the deployed and imported categories. Newly created or imported contract codes are locally saved, and users can view their import history when importing contracts using hash.
- Distinguished the contract files of Neo3 and Neo2, and the code files are no longer shared.
- Refactored and organized the neow3j documentation, splitting Neo2 from Neo3 sections.
- Adapted wallet model for Neo3 (NEP-6).
- Unified interface for contract interaction is finalized (NeoToken class).
- In progress: Implementation of NEP-9.
- In progress: JSON-RPC unit/integration tests for Neo3.
- Participated in discussions on Neo3 governance model, weighing on its pros and cons.
- Officially added support for Kotlin-based applications.
- Tested the neow3j library with Kotlin projects.
- Created and published some examples of neow3j in a Kotlin project in GitHub.
neow3j-compiler and neow3j-devpack
- Modules created on the neow3j code structure (develop-3.x branch).
- Started to map required classes for the devpack (to annotate smart contracts using Java).
- Added rawmempool broadcast module based on signalr core.
- Added and updated Nswagger.
- Added RawMemPoolDataCache module.
- Reconstructed NodeSynchronizer & other code based on it.
- Updated block controller&service and filter service.
- Added redis package and helper tool.
- Added auxiliary methods for testing.
- Updated ChartFilterViewModel.
- Fixed frontend building error.
- Translated all C# lessons.
- Updated Ch04&05&07&08 according to the review.
- Translated all typescript lessons.
- Updated L01&L02 script and content.
- Fixed course content according to the review.
- Refactored state module by using redis.
- Made adjustments to transaction types according to Neo3.
Marketing and Operations
In April, the majority of Neo’s marketing activities were focused around the release of Neo3 Preview2. Marking yet another milestone, Neo took the opportunity to reach out to the entire community and communicate with them regarding features and improvements, so that both current and new developers could get up to speed with the infrastructure development.
Neo also made its first public speaking appearance of the year at the BlockDown 2020 virtual conference, where Da Hongfei shared his insights on what blockchain could do for the world following the coronavirus pandemic.
- 9th April, Neo Foundation released its Financial Report for 2019.
- 13th April, Da Hongfei was invited by CoinTelegraph to deliver the feature video on “How have crypto businesses reacted to the outbreak of COVID-19 and how is the pandemic reshaping the industry?”
- 16th April, Da Hongfei was invited to speak at BlockDown 2020 and delivered an online presentation about how blockchain may solve potential long term problems that result from the coronavirus pandemic.
- 21st April, Neo released Neo3 Preview2 to further empower its developers with a set of optimized features and capabilities.
- 23rd April, Luchuan, NGD Proposal Group manager joined Neo Live on WeChat to share the performance highlights of Neo3 Preview2.
- 23rd April, John deVadoss, head of NGD Seattle, joined Neo Live Webinar to share some insider tips about Neo3 Preview2.
- Throughout the month, articles have been regularly published to the new Neo Column Collection page.
The Neo ecosystem continued to grow in various aspects. On the DeFi front, Switcheo and Liquefy made milestones in improving their DEX and STO services. Other entities looked towards improving the range of services available in the ecosystem, with NeoLine adding NFT browsing capabilities, and Archon and Incognito providing privacy and cloud services. Moreover, a new blockchain game is planning on integrating services from Higgs Network and NeoFS to deliver an optimal user experience.
- 8th April, Neo and University of Zurich, the largest university in Switzerland, established a long-term partnership to promote blockchain technology education, research, and usage throughout Europe.
- Switcheo released Switcheo Chain TestNet and opened market making permissions to third parties.
- Switcheo officially announced the Switcheo Tradehub. Switcheo Tradehub is an open-source dPOS order matching engine built on Tendermint Core. The number of potential attacks is minimized because it only allows specific execution paths. Switcheo TradeHub aims to achieve true decentralization without affecting scalability and security.
- Liquefy released a consortium document with Sidley Austin, KPMG and Colliers International. The document covers the life cycle, supervision, valuation and tax implications of real estate-backed tokenized securities, in addition to case studies, challenges, and opportunities. Its purpose is to promote real estate tokenization towards greater institutional adoption.
- Archon, backed by Neo EcoFund, released the basic functions of the centralized product Archon Cloud Service - a cloud storage platform with a usage cost of only 1/5 of Amazon.
- Incognito has implemented Neo-based Layer 2 privacy transactions and is planning to integrate with O3 wallet to provide Neo privacy transaction functions to O3 users.
- The blockchain game "Tian Tian You Yu" will be tested on the Neo network in Q2. In the future, Higgs Network and NeoFS technologies will be integrated to provide users with a smoother blockchain game.
- NeoLine Wallet will start the development of its NFT browser, which aims to help NFT projects within the Neo ecosystem establish a more convenient trading platform.