0Chain Weekly Debrief — November 3, 2021
As we swing into November, we look back at progress made at the end of October. While the development team continues to progress its testing, work also has begun for collaboration with our new UI team. In addition, Sculptex takes a look inside the 0S3 repo, a critical feature in our push for enterprise adoption. The development team also shares a glimpse into progress with Magma. Hope you are all having a great week, enjoy!
Sculptex’s Use Case of The Week: 0S3 Repo
“Following our discussion on CRUD operations last week, this week I will discuss our 0s3 repo.
I expect most will already understand how huge AWS is. Paving the way for Enterprise Cloud services, this offshoot of Amazon has dominated the cloud scene for many years. One of the advantages of being a trailblazer is that you get to create your own standards. In this case, AWS has created a comprehensive set of tools and methods for interacting with their cloud services.
S3 stands for Simple Storage Service but ‘S3’ has become a recognised standard all of its own. Such is AWS S3 dominance, relative latecomers such as Google Cloud Services have had little choice but to align their offerings to be S3 compatible!
While it’s great that we have 0Box, explorer, API and CLI tools to interact with our storage, Enterprise Customers will already be heavily invested in using S3 compatible tools and methods (even if they aren’t actually using AWS!). In order for 0Chain to launch with an enterprise-grade platform, S3 compatibility is a must to simplify onboarding and minimize barriers for enterprise adoption.
Our 0S3 repo offers a compatibility layer to the S3 command line tools. This allows 0Chain to simply replace existing enterprises by literally just replacing the existing S3 command with the 0S3 one and you are using 0Chain storage instead!
All standard CRUD operations are supported, although the commands are structured more like operating system commands, and the source/destination determines if a file is being uploaded, downloaded or moved etc.
For example, <0s3 cp s3://bucket1/file1.dat docs/file1.dat> would copy the file from the storage layer to a folder called docs on the local machine, so this would act as a download command. If the local path parameter had been before the S3 bucket parameter, it would have been interpreted as an upload command.
However the feature I found most cool is the replication of the recursive, include and exclude parameters. The recursive option, as (you might expect) will recurse through all subfolders, while the include and exclude parameters allow for a list of file types or wildcard matches to be included or excluded respectively.
This is very powerful, and a single command could copy all your image files (*.jpg,*.png,*.gif) etc. in one go!
Of course, this is only part of the picture, there are also other compatibility tools in the works that align with other S3 related functionality. As I write, the 0s3 repo is still private with further testing being performed before being made public. But if you are (or know) a keen sysadmin who wants early access, just pop me a message in the Service Providers Telegram channel.”
Non-Dev Updates
The biggest developments this week are related to app development. Our UI/UX design team provided preliminary wireframes for the storage app. The wireframes are starting out with a general layout for the overall app and home page. The primary focus at the outset here is to facilitate a general navigation that is simple, intuitive, and guides our users towards taking advantage of our strongest features.
This is important because we must get the navigation right if we want to build an outstanding application. The general layout of the app will act as the foundation for our UI/UX. This is the first step towards our goal of deploying a blockchain-based storage application that is unlike anything else out there today, enabling us to both bring in new users and retain them.
Development Team Updates
This week, we completed the live streaming feature for our 0Proxy service with the view to bring this to 0Box in the coming weeks. We continue to progress in multiple backend feature enhancements for blockchain and storage layers which will then be integrated with the frontend/explorer. Recent blockchain testing has resulted in resiliency and scalability fixes that were merged with the code base for continued testing. Our system test suite has been updated to include new areas and has resulted in many improvements that will ease the use and resiliency for the end user. Overall a very productive week for feature development, bug fixes and testing.
0Box
Over the past week, we completed the 0Box Android UI tests which were further reviewed and tested by the team. We resolved another iOS bug which could result in allocation selection issues or duplicate folders appearing in the UI, meaning that the 0Box users will experience less issues when using the app. As blobber repo testing persists and updates follow, we continue to ensure 0Box’s compatibility with the storage layer’s code base. Most notably to our community, we have started discussion with the UI team regarding implementation of updated interface for 0Box and 0Wallet.
0Wallet
Similarly to 0Box, the 0Wallet team continues to collaborate with the UI team to ensure an optimal user experience for our wallet application. In addition, the team completed the majority of our UI tests for 0Wallet Android at this time, resulting in some small updates to code with the team currently going through the new pull request prior to committing to the main branch. We also continue to work on our USDC-ZCN conversion so that users have easy onboarding.
Blockchain
Recent blockchain testing allowed the development team to identify a few potential problem areas and implement updates. Upon reviewing the results of the recent tests, the team implemented fixes/optimizations for finalizing block gaps, notarization process, and block state status. By improving the notarization block process, we ensure that miners and sharders to compute block after block which prevents high CPU — this could cause the miner/sharder’s performance to be impacted. In addition, block state updates prevent MPT corruption and errors when syncing new nodes to the network.
Magma
The development team is excited to share some insight this week into Magma. Over the past several weeks, progress continues to accelerate rapidly. Current progress has resulted in the resolution of the majority of issues found in previous rounds of testing. In addition to the great progress on the code base, resulting in improved performance, the team is working on sponsorship transactions, billing mechanisms, and system tests. Many updates to the code are what we call “refactoring” of the current code, meaning that we are improving the internal aspects of the code without changing functional behavior, for example we can optimize how a set of data is sorted so a function returns orders of magnitude faster, but the behavior of that function doesn’t change — it still returns sorted data.
Developer Resources
- Interested in learning more about building on 0Chain or becoming a service provider? Check out our GitHub for access to repositories. Community ambassador Sculptex has created numerous tutorials to help get you started.
- Try our BetaNet here! Users can create wallets and allocations, store files, send transactions, and share files.
- Need help navigating creating wallets, allocations, or joining as a blobber? Check out our documentation page.
- 0Chain’s API endpoints use simple and intuitive HTTP requests to interact with the blockchain in order to send/retrieve information to and from miners, sharders or blobbers in the active network.
About 0Chain
0Chain is a high-performance decentralized storage network designed to eliminate business threats such as censorship, privacy liability and data breaches. 0Chain helps entities achieve GDPR compliance, localization and tokenization, and monetizes private data sharing.