BLOG June 9, 2020
Neo Monthly Report - May 2020
Neo had much to talk about in May, participating in a range of virtual events such as Consensus: Distributed, the Crypto Asia Summit, REIMAGINE 2020, BlockConf Digital, and the IEEE International Conference on Blockchain and Cryptocurrency 2020. With plenty of new developments to share, Da Hongfei, John deVadoss, and others from within NGD and the Neo community delivered a range of presentations and workshops.
Neo took the opportunity during its hour long block at Consensus: Distributed to unveil progress in the areas of governance and developer tooling.
Da offered a preview of the new voting and economic model planned for Neo3, which will feature 21 committee members who will be elected to make decisions regarding the platform. Under the new model, GAS distributions would be influenced by voting participation, incentivizing NEO holders to vote responsibly.
deVadoss revealed two new developments to come out of NGD Seattle - time travel debugging and the Visual Token Designer.
Time travel debugging is a technique that was pioneered by Microsoft that allows developers to step both forwards and backwards through code, observing storage changes or any unexpected behaviour to help isolate and troubleshoot issues. It has been included in the most recent version of NGD Seattle’s Neo Blockchain Toolkit for VS Code.
Further, the new Visual Token Designer is a new “standards-based approach to realizing our vision of the smart economy.” It builds upon work done by the Token Taxonomy Framework to create token classifications and definitions intended to bridge the gap between blockchain developers, business executives, and regulators, and packages them into an easy to use extension for building tokens.
In other major developments, the Neo2 TestNet was readied for an upgrade to the latest version of neo-cli, v2.10.3-neox-preview1, which includes a new state root feature, and support for the Secp256k1 curve in Neo’s cryptography module. Together, these two features provide the functionality required for the first implementation of the cross-chain protocol that is designed to allow the transfer of assets between different blockchains, such as Bitcoin and Ethereum.
The full Neo Global Monthly Report for May can be found below:
In May, Neo completed the development of the state root feature for Neo2. Through the use of MPT, a storage state root is determined and persisted which nodes can use to check their correctness by verifying the state root with consensus nodes through the P2P mechanism. This is an important feature for supporting lightweight clients and SPV, and together with the addition of the secp256k1 curve is used to enable the initial cross-chain operations on Neo.
State root will soon be ported to Neo3, where it can be used to assist with the migration from Neo2 along with enabling future interoperability. Additionally, Neo also completed the development of its exception handling mechanism for smart contracts, which is expected to greatly benefit the development of dApps.
Discussions regarding the Neo3 economic model are still underway with the community, with a final implementation expected to be decided upon in the near future.
- Added secp256k1
- Added relay-block-filter
- Added a change list to optimize datacache commit
- Added NotFound command
- Optimized the GetPrice() mechanism of SYSCALLs
- Decoupled NativeContract from InteropService
- Subscribed to RelayResult messages in ConsensusService
- Modified iterators to public
- Moved cosigners to transaction attributes
- Made NEP6Wallet.path public
- Unified unhandled exceptions
- Removed FromJson
- Unified akka logs with neo logs
- Updated neo-vm package
- Fixed LocalNode
- Fixed VerifyWitness
- Fixed MemPoolTaskHash
- Fixed the way to get the directory path of assembly
- PR test coverage reached 62.5%
- Completed the naming refactoring of the automation tool
- Added OnStateChanged
- Changed ExecutionContext.Clone to public
- Changed PUSHA to be relative
- Fixed typo
- Optimized mempool
- Unified relay cache
- Cleaned changes and add some UT
- Moved oracle Flag to an attribute
- Completed UTs
- Added new UT
- Added NEP-5 commands
- Added vote commands
- Displayed address in list key command
- Moved SystemLog plugin into neo-cli as a native logger with on/off functionalities
- Filled default settings
- Parsed vote commands' result
- Updated cosigner
- Added Backup Wallet upon changing password
- Displayed ScriptHash in list address
- Removed log logic
- Allowed to share logs in read mode
- Added StackItem ToJson
- Added multi-sig-transfer
- Updated nugets
- Overrode RpcServerPlugin's name
- Fixed RpcServer RegisterMethods
- Added UT for delete-dead-code
- Added try-catch failure ut
- Added ABI offset
- Added entrypoint for optimizer
- Added trycatch support
- Added try-finally UT
- Created and called pointers
- Skippedemitting debug info for methods w/o body_Codes
- Updated crypto API
- Optimized const executions
Infrastructure and Tools Development
Throughout May, infrastructure development by Neo development teams was split relatively evenly between both Neo2 and Neo3. NGD Seattle office released v1.1 of the Neo Blockchain Toolkit, bringing new functionality including time-travel debugging, disassembly view, and initial support for testing cross-contract invocations. The release also saw a number of upgrades to neo-express and the Visual DevTracker, including a new storage explorer, improvements to the contract invocation panel, and a new pre-claim GAS option for new neo-express instances.
On the Neo3 side, Neo SPCC's NeoGo, neow3j's Java SDK, and NEL's NeoRay debugger all saw changes aimed at bringing the tools in line with Neo3 Preview2. COZ in particular carried out extensive development on the Neo3 versions of its most popular tools, neo-python, neo-boa, and neon-js.
NeoResearch reported the evolution of its neo-opt project, now separated into three repositories. At it's base lies neo-cpp-core, a C++ implementation of the Neo3 core, then compiled with Emscripten into lib-neopt-core library. Once bundled into a JS/WASM version, it is combined with native JS cryptographic libraries to produce a Neo3 SDK for C++ and JS users.
Synchronized the latest documentation on Neo3
- Added interop services
- Added StateRootBase
- Added signing state root message in consensus process
- Added state root P2P message handling
- Added state root generation, sync, and verify
- Fixed cache root
- Fixed StateHeight start from -1
- Fixed SendDirectly as we don't use inv
- Released cross-chain on neo-cli v2.10.3-neox-preview1
Developer Experience Product Development
Released Neo Blockchain Toolkit, Smart Contract Debugger and Visual DevTracker v1.1 on Visual Studio Marketplace
Events and Partnership
- Consensus: Distributed
- Announced Time-Travel Debugging and Visual Token Designer
- Presented and took part in a panel discussion with Microsoft Azure Blockchain lead and IEEE Blockchain Chairman
- Attended REIMAGINE 2020
- Attended BlockConf Digital
- Spoke on the Road To Metamorphosis and Neo News Today podcast about the Neo developer experience
Neo Saint Petersburg Competence Centre
- Separated repositories for storage and Inner Ring nodes
- Experimented with NeoFS Inner Ring logic based on smart contracts (multi-contract setup) in a Neo sidechain initial prototype
- Design of sharding and indexing in the storage
- Implemented ACL/Session token
- Design and description of a new Local Storage component
- Released cycle changes from NeoFS API and v0.8.x release series for NeoFS and Services
- API releases: v0.7.4., v0.7.5, v 1.0.0
- NeoFS Golang API releases: v0.7.4, v0.7.5, v0.7.6, v1.0.0
- NeoFS CLI releases: v:0.7.1, v0.8.0
- Bug fixes for NeoFS.Send backend
- Bug fixes for NeoFS HTTP gate
- Design of public CDN/NeoFS improvements
- Prototype of NeoFS CI test automation
- Notification subsystem has been implemented; adding tests, filtering and client-side implementation
- Neo3 transactions format
- UTXO removal
- Neo 2.x incorrect state bug (#822) has been fixed
- Updated VM and compiler for Neo3
- 0.75.0 release
- Ported notifications to Neo3
- Implemented MPT for Neo 2.x
- Networking changes for Neo3
- Delivered a presentation for Consensus 2020 on NeoFS and published a companion Medium article.
- Published a Medium article about neo-toolkit integration with NeoGo.
- Updated existing code to be compatible with neo3-preview2, Python 3.8, and PIP >20
- Setup continuous integration (Circle-CI)
- Ported manifest and NEF
- General code cleanup and increase of test coverage
BigInteger extension module
- Updated code for const-correctness
- Refactored code base to apply a consistent code style
VM extension module
- Removed debugging messages
- Cleaned up JSON VM test code, dynamically registered test cases, and long names from XXXLimits tests
- Rename ByteArray to ByteString as per #309
- Add try_peek to follow the direction of #304
- Add ASSERT / ABORT opcodes
- Enabled syscalls for tests and support for JSON format during script building
- Fixed IntegerStackItem for large BigIntegers
- Implement check_zero_referred of ReferenceCounter and fixed code for StackLimitations and HASKEY tests
- Fixed some inconsistencies in JSON test files + temporarily removed SYSCALLs
- Fixed ExecutionContext not cloning static_fields
- Restructured project
- Started working on Python bindings
- Released versions v0.7.0, v0.7.1, v0.7.2
- Fixed the incorrect hash generation in the ABI file
- Implemented Python function conversion to NeoVM
- Implemented local variables declaration and assignment
- Implemented local variables access
- Implemented generation of NEF and manifest files
- Implemented Python numeric arithmetic and relational operations conversion
- Implemented Python boolean logic operations conversion
- Implemented Python while and for loops statements
- Implemented Python if statements
- Implemented function calls
- Included log of compiler errors and warnings
- Included an annotation to identify which functions are included in the ABI
- Implemented Python tuple builtin type conversion
- Implemented Python len built-in method
- Implemented augmented assignment statements with numeric arithmetic operations
- Began to implement multiple expressions in same line conversion
- Began to implement type checking in variable assignments
- Implemented landing page, block list, and transaction list pages
- Implemented client-side caching logic
- Completed core component development and implementation
- Performed iterations on product development of advanced features and functionality
- Debugged and fixed crash of indexer due to non-NEP5 contract emitting transfer events
- Began analysis of contract count discrepancy between indexer and chain
- Found and fixed issue with neo-cli exiting unexpectedly due to system maintenance script
- Detailed requirements for transaction attribute filtering query parameters
- Evaluated AWS DynamoDB Streams vs aggregation of data in indexer process
- Started work on endpoint for aggregated contract invocations over 24hr period
Refactored and updated to support Neo3 Preview2, including new decoding logic and a rewrite of disassembler logic
- Updated dev dependencies to support eslint v7
- Added command to format markdown in docs
- Added testing setup for Node12
- Updated crypto-js to 3.3.0
- Fixed issue with websocket not closing quickly enough
- Added ws for notifications to work in Node
- Updated all dev dependencies to latest versions
- Set up to use docker for integration testing
- Scoped base64 conversion to hex
- Modified lint config to use the latest prettier settings
- Added base64 encode and decode functions
- Updated tsconfig to target node 10
- Fixed sendRawTransaction API
- Updated tx components to 3.0.0-preview2-00
- Updated sc to 3.0.0-preview2-00
- Released neon-js v4.8.0, likely the last major feature version for Neo2. The next major version is expected to only support Neo3, given the breaking changes.
Discord security / support
- Provided support to multiple users in Discord
- Monitored multiple fraudulent Discord accounts that have impersonated Neo admins in the past
- Created Discord user ID reputation API endpoint
- Added reputation-based banning to Discord plugin protecting the Neo Discord
- Banned/prevented 14600 spambots from joining the Neo Discord groups
- Reviewed NEP-16 (NEF format) proposal and submitted fixes
- Reviewed NEP-15 (Manifest), researched implementation, and submitted bug issue
- Submitted pull request to neo-vm to improve specific test cases (to make them easier to consume for other projects like the C++ VM)
The NeoCompiler Eco server was updated, including tests, thanks to community collaboration. csbiginteger-js received many updates, also including deeper testing, culminating in the v4.0 release. csbiginteger-cpp and libcrypton also received many fixes during the month.
Three new projects were launched: neo3-cpp-core, lib-neopt-core and neopt-sdk-js.
A short article was published explaining the technology behind neo-cpp-core project.
- Updated release process for npm to allow for more consistent releases moving forward
- Removed the opencensus library which was causing memory leaks when running NEO•ONE packages
- Cleaned up dependency warnings when using the NEO•ONE CLI
- Update to TypeScript 3.8.3
- Released the initial NEODataProvider and NEOProvider APIs for working with the C# Node using NEO•ONE
- Deployed testnet.neotracker.io for exploring testnet data
- Added the ability to provide a network fee to transfers
- Added an FAQ page for frequently asked questions
- Fixed several infrastructure bugs that were causing neotracker.io outages
- Android version 2.3.2
- Cloud wallet page completed
- Performed development on NFT page
- Fixed known issues
- Add a new branch for code refactoring
- iOS version 2.3.3
- Cloud wallet page completed
- Performed development on NFT page
- Increased page data cache
- Fixed known issues
- Used Swift for project refactoring
- Added NFT support
- Refactored the project
- Added new NFT related page
- Added new NFT module API
- Adjusted the page data structure to be compatible with NFTs
- Updated some query interfaces to be compatible with NFTs
- Modified the information displayed on the Neo3 contract details page, removed information including contact name, author, and email address.
- Modified the information displayed on the browser home page, added information including prices of NEO and GAS, wallet addresses holding NEO and GAS, number of active addresses over 7 days, and daily transactions looking back over 30 days.
- Adjusted the storage structure of file management, reduced storage content, and reduced performance consumption
- Updated invoke call interface and contract compilation interface to adapt to the changes of Neo3 Preview2 SDK
- Updated the GAS request function of Neo3 TestNet, now allowing a claim of 10 GAS on Neo3 TestNet upon clicking
- Modified some issues to improve usability
- Updated the deployment button to be grayed out after compiling the deployed contract
- Fixed an issue that caused lag when debugging transactions
- Fixed a problem where the transaction list is not displayed on the debug module
- Modified system fee calculation method when calling contracts to avoid calling failures
- Fixed an issue that caused failures during manually contract calling
- Fixed the problem where call return was not displayed when manually calling contract trials
- Updated the SDK to match changes in Neo3 Preview2
- Participated in Neo Talk Episode 2 to discuss smart contract development
- Added support for EC secp256k1 (issues/121)
- Adapted to base64 encoding of scripts in JSON messages
- Adapted transaction attributes to newest changes in neo-core, i.e., merge cosigner and transaction attribute (issues/97)
- Finished neo3-preview2 implementation of contract-related classes and improved test coverage (issues/120, 123, 122, 118)
- Refactored wallet and account model (issues/97)
- Added unit tests for JSON-RPC methods in Neo3 (issues/106)
- Refactored ByteArray to ByteString
- Setup Neo3 Java examples
- Updated README for importing neow3j and testing it (/issues/125)
- Continued discussions on Neo3 governance model (issues/1617)
Hosted a workshop at IEEE ICBC 2020 (International Conference on Blockchain and Cryptocurrency), a top-tier conference in the blockchain space -- with submissions' acceptance rate of approximately 21%. The title of the session was "Neo Blockchain: developing dApps without learning a new programming language.”
Delivered a lecture for M.Sc. students, part of "534 - Blockchains and Overlay Networks," at the University of Zürich, Switzerland. The presentation title was "Building dApps on the Neo Blockchain," where Dr. Guil, one of the members of neow3j, first gave an introduction to Neo and then presented how to build a decentralized app using neo-python for the smart contract and neow3j for the backend/frontend (invoking methods in the smart contracts).
- Updated API matrix function database, packages, and readme
- Reorganized database and updated MatrixConnection
- Used ant design library to refactor all UI elements
- Added select network feature and coloring nodes table
- Refactored store code and added mock data script to help alpha testing
- Updated favicon to the latest version
- Added async methods and feature in Redis helper
- Added transaction feature and improved list push limit methods
- Fixed all typos
- Updated favicon to the latest version and added preloading style
- Improved the loading performance
- Updated spinner to center properly and removed unused HTTP NgModule
- Fixed linting and TypeScript 'used before declaration' bug
- Fixed all bugs in issue #21 addressing in C# lessons
- Fixed Lesson 02 and updated mutate algorithm
- Added Lesson 03 and Lesson 04 NEP-5 script
- Added Lesson 03 and Lesson 04 NEP11 script
- Added TypeScript lessons contents
- Discussed PR24 and merged it into the master branch
- Solved an issue with TypeScript smart contracts with the help of the NEO•ONE community
- Debugged Lesson 01 and Lesson 02 Python smart contracts
Marketing and Operations
Neo attended a series of events in May, including Consensus: Distributed, where Neo participated as a foundation partner and delivered a series of keynote presentations on topics ranging from Neo governance to developers experience. Members of NGD and Neo communities also actively participated in events such as Crypto Asia Summit, REIMAGINE2020 and BlockConf Digital.
At the same time, Neo published several Neo Column articles, many of which are companion articles to presentations given at recent events.
- May 11th, Neo participated in the Consensus: Distributed virtual conference as a foundation partner. The team delivered various speeches and a special Q&A during a one hour session.
- Da Hongfei opened the session with a keynote speech titled “Neo3: Empowering the Smart Economy,” highlighting features of the upcoming Neo3 and a preview of the redesigned governance and economic model.
- John Wang, Eco Growth director at NGD, delivered a speech on “The core value of ecosystems,” focusing on Neo’s strategic approach to ecosystem building and updates on the EcoBoost project.
- Stanislav Bogatyrev, CIO of NeoSPCC, introduced flagship products NeoGo and NeoFS, and shared with the audience the group’s long term goal to build a cloud platform for the real economy.
- John deVadoss, Head of NGD Seattle, brought the latest updates on the Neo Blockchain Toolkit and demonstrated two new developer experience products currently under development: Time travel debugging and the Visual Token Designer.
- To wrap up the session, Da Hongfei joined Aimann Faiz, senior business development manager at CoinGecko for a special Q&A. Da shared his thoughts regarding Neo’s competitive advantage and the DECP (Digital Currency Electronic Payment), China’s version of a central bank digital currency.
- May 14th, Da Hongfei published an article titled “Why is blockchain a remedy of deglobalization?”, discussing how blockchain will drive the fourth industrial revolution and enable the next wave of globalization.
- May 19th, Da Hongfei participated in the Crypto Asia Summit and gave a keynote speech.
- May 18th-21st, a number of NGD and Neo community members including Dan Byrne from NEO-ONE, and John deVadoss and Harry Pierson from NGD Seattle joined REIMAGINE 2020 and shared insights about the developer experience on Neo as well as relevant industrial topics.
- May 25th, John deVadoss appeared on episode 31 of the Neo News Today Podcast to discuss what makes him passionate about Neo and the blockchain industry, the smart economy vision, how blockchain empowers the common man, the purpose of NGD Seattle, and much more.
- May 26th, John deVadoss delivered a speech titled "Realizing the Smart Economy: A Standards-based Approach" at BlockConf Digital.
Throughout May, the Neo ecosystem continued to see growth on multiple fronts. Many O3 users will be happy to know that O3 Labs is under new management and will be relaunching its wallets very soon. NeoLine is also working on opening up more possibilities for NFT lovers, while infrastructure platform, HiggsNetworks, is developing its V2 upgrade which will enable high throughput transactions for its users. In addition, the partnership between Neo and FLETA triggered discussions within the community. This partnership is an outcome of the recent decoupling of NeoVM, which allows NeoVM to be used separately in applications.
- Neo recently partnered with FLETA to develop a clinical trial data platform. FLETA will use NeoVM on its MainNet for executing smart contracts, aiming to eliminate data manipulation in the medical industry. The Kyung Hee University Medical Center in Seoul, South Korea, will also participate in this collaboration by providing clinical data that it has collected over the years. The FLETA project, founded in 2018, has already established a cooperative relationship with the Korean government. The Korean government uses the FLETA blockchain to store clinical trial data. Through cooperation with Neo, FLETA will expand its global influence and generate more application cases of the new platform.
- Neo-funded infrastructure platform, HiggsNetwork, is currently upgrading and developing its V2 platform. Based on top of the Neo blockchain, the V2 version aims to provide services and high throughput transactions for millions of users.
- As the first adopter of the HiggsNetwork V2 version, leveraging on its exchange and transaction services, Fish farming game Tianyouyouyu (English name: YouFish) has acquired one million registered users in the week following its open beta registration. Built around the game traffic, Tiantianyouyu aims to create a closed loop ecosystem.
- The development of The Fun Life is nearing completion. Integrating social sharing and communication to e-commerce CRM systems with digital asset loyalty programs, The Fun Life is a social value creation platform combining social e-commercing, advertisements, and gaming listings.
- NeoLine is developing a One-Click NFT-Issuance platform on the Neo blockchain, which will lower the threshold for NFT enthusiasts and make it easier to issue NFTs. It’s goal is to open up more real-world applications for blockchain collectibles and blockchain game props.
- The O3 team has recently launched a series of rewards campaigns on social media for its upcoming new version launch. The team is also planning for more collaborations with other projects within the Neo ecosystem, including NeoWorld, NeoLine, Switcheo, etc.
- Safudex is developing a project that aims to integrate all fiat gateways on the market and connect them with wallets in the Neo ecosystem, providing more fiat currency options to wallet users.