BLOG December 9, 2019
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 our core developers were actively involved in working on Oracles, the Neo GUI, and the Neo blockchain itself. Additionally, test cases were documented in November to help developers to test and fix PRs, and started replacing Travis with the new GitHub actions system.
- Neo GUI for Neo3
- A new user interface is being designed for Neo GUI. This technology used for the implementation is still under discussion. The proposed solution should be built using Electron, according to tests and discussions on GitHub.
- Coding the Oracles
- The team has now started to code the Oracles functionality. Core developers, Shargon and Belane, did a great job drawing diagrams and dividing this feature into smaller tasks, making the discussion more productive.
- NeoFS through Oracles
- We are initially adding a new URL scheme 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 aimed at testing PRs properly and helping developers to identify and fix problems faster. Test cases were created for 23 pull requests.
- Travis is being replaced
- Neo VM and Neo CLI were 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 Neo VM. 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
- 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 our code. Replacing LINQ in ECDSA and UInt classes demonstrated a performance increase of 216%.
NGD Shanghai Development
Neo3 is still 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.
NGD Seattle Development
- V0.9 of Neo Toolkit for .NET released on Visual Studio Marketplace (and launched at the Visual Studio Live keynote)
- NEO-FX P2P early release preview
- Neo Toolkit for .NET preview support for Neo3. Full support in the December release.
- Neo Keynote - Programming Smart Contracts in C# at Visual Studio Live (sponsored by Microsoft) in Orlando, Florida, 17-22 Nov.
- Programming Smart Contracts in C# - in the Microsoft Developer Network (November)
How blockchain can save A.I. - in Forkast (21, Nov 2019)
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.
Neo Saint Petersburg Competence Centre
NeoSPCC has been focused on new releases of NeoFS and NeoGO. Work on NeoFS Testnet has continued, with the storage system receiving an upgrade and a new significant feature - reputation system. NeoGO has also been upgraded: 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 BasicBlockRadio.com
- Published two scientific papers for MICSECS-2019 conference (SCOPUS):
- "Data migration rate of the CRUSH-based distributed storage with dynamic topology"
- "The probability of timely redundant service of requests by sequence of servers in multi-level cluster"
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.
- 11 '@neo-one' packages have been published to include the new updates to NEO•ONE, mentioned above.
- 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 + 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 externally controlling 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.
- 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 is now officially open for global beta.
- NEOLine for 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.
- NEOLine for 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.
- 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).
We have updated the basic functions for TK-SDK, 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 wrongly.
- 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.
- 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.
- Progress on Turing Machine
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.
- Nov 7, Hao Yang, chief product officer at OnTrade, joined Neo Live on Telegram and introduced OnTrade products and features.
- Nov 14, Longfei Wang, Neo staff engineer joined Neo Live on Wechat to talk about how Neo is continuously improving its developer-friendliness.
- Nov 21, Veronica Wong, CEO of SafePal, joined Neo Live on Telegram and introduced features of SafePal’s hardware wallet and future plans for development.
- Nov 7, Da Hongfei was invited to speak on the panel “The Future of Blockchain" at FORTUNE Global Tech Forum 2019 in Guangzhou, China.
- Nov 7, Neo held its first meetup in Kiev, Ukraine and introduced Neo to the local community.
- Nov 9, 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.
- Nov 9, 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.
- Nov 11, Neo hosted its second meetup in St. Petersburg, Russia, joined by ecosystem partners Neo St. Petersburg Competence Center, MyWish, and 0xGames.
- 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 help students building skills in developing with core components of Neo technology. The course is available for the Sep-Dec semester.
- Nov 14-15, 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 Zone at the conference to showcase 8 projects within the ecosystem.
- Nov 14, Neo held NeoFest Meetup 2019 during BlockShow Asia in Singapore to update the local community about Neo and Neo’s ecosystem.
- Nov 19, 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.”