NEO St. Petersburg Competency Center (NEO SPCC) has released an infographic documenting its Q4 2018 progress on a decentralized file storage platform for the NEO blockchain. The report also noted other activities, including community project contributions, NEO document translations and its attendance of MICSECS 2018.

Distributed Decentralized Storage Platform

The DDSP is a peer-to-peer network formed by two types of node. The Outer Ring nodes are the storage servers, responsible for ensuring the integrity and availability of all stored data. The Inner Ring nodes maintain information about the network’s topology and handle accounting and data auditing.

All the active Outer Ring nodes and their respective properties will form a network map, which the Inner Ring is responsible for maintaining and updating as the network changes. This includes information such as node groups and their locations, along with the required parameters for data to be placed or retrieved.

The majority of the architectural design has been completed, with a few elements still in the draft stages, as can be viewed in the original report. Among the completed designs are the network map, data placement and retrieval functions, and the incentive model.

According to the roadmap, the incentive model and Proof-of-Concept releases are planned for Q3 2019.

Object Placement and Retrieval

NEO SPCC provided detailed information regarding its implementation of an object placement/retrieval algorithm. The implementation is divided into two components; the placement function and placement rule, and the container.

DDSP will use a consistent placement function, using a storage policy defined by placement rules, the network map and a rendezvous hashing salt. The storage policy operations will result in a subgraph of the network map being allocated for the placement of data and its replications (for redundancy).

The rendezvous hashing algorithm results in each node or bucket having an individual hash for each individual item, with the largest hash number being selected. In the event that a node becomes inaccessible, only objects mapped to that node would need to be remapped, which minimizes disruption.

For objects to be placed in the system, users are required to define a container with a storage policy, a unique identifier, an owner and the maximum capacity. Containers define the subgraphs of the network map for data allocation. This approach offers a few benefits, as it:

Isolates a subset of nodes, which is faster and more predictive

Protects against overfilling, as the container’s remaining capacity can be estimated

Allows controlled access to the container

Simplifies payments as they can be linked to the container

Facilitates the integration of the Amazon s3 and Swift APIs

Community Contributions

The report noted several contributions made to open-source NEO projects. NEO SPCC has provided a Russian translation for the official NEO documentation, which is hoped to help onboard more Russian developers into the ecosystem.

The team also made notable additions to the neo-go and neo-storm projects. Neo-go is a NEO node implementation and SDK written in Golang. NEO SPCC contributed 10 accepted pull requests to the repository, primarily concerned with improving its RPC functionality:

NEO SPCC also submitted four accepted pull requests to the neo-storm project, a smart contract framework for NEO written in Golang. The changes made various improvements to different areas of the code, including bug fixes, code simplifications and Go modules support:

Other Activities

The team participated in a NEO blockchain community meetup on November 30th, 2018. The event was attended by Fabian Wahle, NEX and CoZ co-founder, alongside NEO general manager Johnson Zhao.

NEO SPCC hosted a hackathon in St. Petersburg on December 8th and 9th, 2018. The full report can be read on NEO News Today.

Finally, NEO SPCC attended the MICSECS-2018 conference at ITMO University on December 20th, where it held three presentations regarding its DDSP research. The team also submitted a provisional patent application for a zero-knowledge data validation method designed during its research.