City of Zion have released the latest edition of its Proof of Working project update report. The report contains background information and updates to each of the core City of Zion projects, written by the project maintainers. Due to delays with previous reports, the latest update stretches to cover news from June through August.

neo-go

The neo-go project is a Go node and SDK for the NEO blockchain. The initial version was a conversion of the neo-python project, but it is currently undergoing a core rewrite. Version 2.0 will implement the correct semantics and code engineering practices, with a goal of matching the performance, security and modularity standards set by neo-sharp.

neo-storm

The neo-storm project aims to provide developers with an easy to use smart contract framework in Golang. Most NEO developers currently use Python or C# to write smart contracts due to more advanced support and tooling; the neo-go project aims to improve support for Golang to be equal with Python and C#. neo-storm provides the following functionality:

  • Golang to AVM bytecode compiler
  • Fully stubbed NEO virtual machine (no node requirement)
  • Smart contract debugger
  • Tooling (SDK) for deploying to test or production environments
  • Package manager for smart contract modules written in Go

Version 1.0 of neo-storm has reached release candidate 4 and is a fully functional Golang to AVM compiler. Due to insufficient stress testing at this time, it is not yet suitable for production.

The improved VM design is currently in development, and aims to allow developers to test smart contracts without needing a private NEO network. Alongside increased security, the neo-storm VM will have all runtime and NEO API’s built-in and mocked, allowing smart contracts to be tested as if deployed on a fully working blockchain.

neoscan

In addition to providing a way for NEO users to view blockchain data, CoZ’s explorer neo-scan is used by developers for its API or to monitor a private network. Recent changes are focused on stability, synchronization speed and increasing maintainability by removing redundant code (current 25% reduction). A full list of improvements can be found in the original report.

neo-sharp

The neo-sharp project is a new NEO core and node implementation, which aims to break independencies in NEO through a modular design. The project also aims to create highly improved testing infrastructure. For each component of neo-sharp, the team aims to create an initial fully compatible version alongside a new, experimental high performance module.

In June, the neo-sharp team consisted of 8 regular contributors, who focused on building the platform centered on cryptography, network messaging and persistence. The team achieved generation of the Genesis block, allowing them to begin testing the persistence of blocks from both TestNet and MainNet sources.

During July, core members of the neo-sharp team joined with NEO Global Development in Shanghai for a development sprint. The Shanghai sprint has been hailed as a success, and a starting point for further NGD resource integration into the neo-sharp project. The major areas of focus in July were:

  • Integration of wallet features
  • Application and console features
  • Addition of the task scheduler framework
  • RPC implementation
  • VM integration
  • Block processing and persistence
  • Unit test coverage

As of August, there were 13 regular contributors in the design, testing and implementation of neo-sharp. Increased focus was placed on test coverage, with a new initiative being started that will allow developers to test nodes using dynamically allocated containers.

Neon Wallet

City of Zion’s NEO light wallet, Neon, is currently on release 0.2.8. The light wallet allows users to transfer NEO-based assets without downloading and maintaining a full copy of the NEO blockchain.

As of June, development of the new user interface/experience for the Neon Wallet v2 was underway. Performance and security updates were made to both v2 and the existing release versions, alongside the ability for users to attach their own network fees to transactions.

In the following month, further improvements were made to v1 including the ability for token hashes to be dynamically fetched, rather than needing to be hard coded into the client or added manually by users. The authentication, send and wallet manager UX was implemented into the v2 branch.

August saw the release of v1 0.2.7 and 0.2.8, with multiple performance enhancements including a dramatic reduction in network calls needed to support Neon Wallet. However, the team has been primarily focusing on the UX/UI design of Neon Wallet v2, with a focus on:

  • Settings page
  • Token sale functionality
  • Node selection flow
  • Receive function
  • NEP-9 QR generation
  • Transaction history
  • Contacts section

neo-python

The neo-python project is another node and SDK for the NEO blockchain, written in the Python programming language. It is a popular choice for user-run P2P nodes, and allows developers to build, deploy and run smart contracts. The current release is version 0.8.1.

Over the last few months, a variety of updates and improvements have been made, including changes to networking, the ability to add transaction fees, expanded RPC methods and internal stability updates. A full list of improvements can be found on the changelog hosted within the neo-python documentation.

neon-js

Used by the Neon Wallet, neon-js is a JavaScript SDK that allows applications to interact with the NEO blockchain.

The team is currently working on version 4, which had a beta release in June, and is expected to be fully released in early September. The chosen stack includes TypeScript, Lerna, Jest and Yarn, which will offer the tools required to manage the growing codebase featuring multiple packages.

Version 3 will continue to be patched as an immediate uptake on v4 is not expected, however newer features may be isolated to the v4 branch. The latest v3 release, v3.11.0, includes several new features, such as getTokenBalances which bunches multiple token balance calls together. Support for State Transactions has also been added, which are required to vote for node candidates, so this addition will allow neon-js based applications to participate in NEO voting.

neo-local

The neo-local project allows developers to rapidly launch a personal NEO blockchain, where they can run tests, execute commands and modify how the chain operates.

Due to the popularity of the nOS platform, which uses neo-local as a foundation (nos-local), new bugs have been highlighted due to the influx of new users. These bugs have been fixed, with further features being suggested for implementation.

One such feature is the neo-local-faucet, a simple Javascript web application that allows for the creation of a new wallet and the automatic sending of NEO/GAS to an account. Alongside these changes, a lot of attention has been placed on the reliability of neo-local.

In August, progress began on a rewrite, turning neo-local into a cross platform command line interface (CLI). The neo-local team provided the following reasons for the switch to a CLI:

  • Removes the need for a Makefile as it does not run on Windows
  • Allows the project to be easily extended to add new functionality
  • Written in Go for better performance and the ability to be unit tested
  • Removes the dependency on Docker Compose

The full Proof of Working report can be found at the below link:
https://medium.com/proof-of-working/city-of-zion-project-report-june-to-august-2018-ea6fa87565ea

More information on City of Zion can be found at the below links.