0Chain Weekly Debrief — June 22, 2022

Chad Hanson
Zus Network
Published in
7 min readJun 22, 2022

--

Welcome back to another week! Over the past week, a lot of work has been ongoing in the background. We saw an update provided by 0Chain CEO Saswata Basu which provides insight into the ongoing work, upcoming release of products, and progress toward Active Set. Progress continues on the blockchain benchmark testing with code fixes to address the issues that 0Chain dev Yury Dabasov identified. Sculptex Corner returns this week where he discusses his ongoing testing of our storage layer and also requests community assistance from those who have interacted with other platforms. Read on to learn more!

An Update from 0Chain CEO Saswata Basu

Recently, Saswata popped into the 0Chain Telegram and then took his message to Twitter to provide some insight into the ongoing progress the team has made. Saswata notes that current dStorage solutions are struggling to compete with traditional centralized storage speeds, indicating the need for a fast, reliable dStorage protocol. Following major upgrades to our blockchain layer, recent benchmark testing has revealed lightning fast speeds that support scaling of millions of wallets, allocations, and files. Despite the enhanced performance of our blockchain and storage layer, Saswata indicates the need for an ecosystem of applications in order to compete with others. The team will not only launch its blockchain-storage network tandem, it will also include 6 products: a personal storage application, crypto wallet, an NFT platform, enterprise-facing storage application, a service provider application, and a block explorer. While devs continue their work to approach our Active Set testing, we are emphasizing thorough testing to ensure we are able to scale transactions and APIs while closing potential Byzantine loopholes. To coincide with the dev progress, the business development team continues to ramp up its work in preparation for the rollout of products, marketing schemes, and business strategies.

Thank you again to everyone who has signed up for any of our campaigns for our wallet, storage application and blobber platform. If you haven’t done so already, sign up for our storage application! This referral program has been extended until August 15, 2022 so make sure to take advantage of the free storage space! Interested in becoming a storage provider on the 0Chain network? Sign up now to be part of the first cohort of Blobbers on our network!

Sculptex Corner: Blobber Testing

“Continuing my blobber stress and performance testing another week, my Blobbers have continued to scale up to nearly a million files in just a few days without a hitch. When performing multiple simultaneous uploads/downloads to the same pair of blobbers, my poor little blobber VMs (2*vCPUs each) are getting maxed out to 100% CPU and the performance noticeably deteriorated.

However, vCPUs are notoriously under-powered, they are just a share of a real CPU after all, so I needed to test on some real CPUs to make sure that our blobbers will be able to scale. A generous offer from Zero Services GmbH was happily accepted and they set up a bunch of Blobbers in Madrid, Spain to perform some further testing on.

The first thing to try was higher EC values. With only 2 blobbers, I have had to use EC1+1 (EC1/2), with many more Blobbers now available I tested EC settings up to EC10/16. (If you aren’t already familiar with EC (Erasure Coding), check out my deep dive included in the Sept. 22 Weekly Update.

The bulk of my testing was from my server in Helsinki, Finland. Unfortunately, as Central Europe goes, this is about as far away from Madrid as you can get, so I expected the results to be much slower than those where my Blobbers and client server were all in Helsinki.

For small files, as you’d expect, the advantage of the low latency of Blobbers in Helsinki resulted in faster uploads and downloads there.

For larger files, however, the benefit of parallel downloads became apparent and faster download speeds were achieved, despite the significant latency between Helsinki to Madrid. Uploads didn’t see such benefit though, the logic being that because there are many Blobbers involved, the client software waits for all chunks to be uploaded, so it’s effectively restricted by the slowest Blobber. As stated previously, this isn’t too much of an issue since clients can upload multiple files concurrently (albeit there are plans for post-mainnet that will allow clients to effectively blacklist poorly performing Blobbers that are detrimental to performance).

For downloads, the logic is that fastest Blobbers win, so the client only requires the first n (data) Blobbers to reconstruct the data, so it’s no surprise that higher EC values can result in download speed improvement.

Regarding CPU, for significantly approx. 10–15 concurrent uploads/downloads, Zero Services GmbH dedicated server Blobbers were barely breaking a sweat with a peak of 6% CPU observed, where my vCPU Blobbers hit 100% with much less! This confirms to me that the Blobber software is ‘lite’ with resources, and a decent dedicated server as per recommended specs is capable of handling hundreds of concurrent connections.

Between us, we did also perform some client testing from other locations, more local to Madrid, however the results were mixed as some errors were observed. The errors related to read and write markers, but the whole read/write markers code has more recently received an overhaul. I have reported the errors back to the team but because the builds I have been using for testing are a couple of months old, it’s possible that the issues have already been resolved in more recent releases.

For this reason, I have suspended further testing for the time being with the intention that we retest again with the next stable builds that are released.

A big thanks to Zero Services GmbH for their help!

NOTE: The Blobber testing I am performing is in addition to continuous testing being internally performed by the team. but it is outside the ‘sandbox’ of the traditional Dev environment and therefore is intended to give real world insight into performance characteristics to a more distributed network and form the basis of comparison with other platforms.

Ps. If anyone knows anyone who has actually used FileCoin, ArWeave or Stratos directly via CLI tools please let me know.

Development Team Updates

The blockchain team continues to make progress with the closing of 13PRs and 10 issues in the 0Chain repo. The team noted they opened an additional 15 new PRs that are pending review and small change requests. Despite opening new PRs, many of these are close to being completed and require rather simple modifications. Due to this, we expect to see of flurry of PRs being submitted in the coming days and weeks from both the blobber and blockchain team since a lot of the new PRs are pending code review

The blockchain recently fixes for loading data that were discovered during benchmark testing, resulting in the optimization of REST endpoints and adding of pagination for all storage smart contract APIs. Pagination allows data to be fed through APIs in a manner that makes it easy to be decipherable on the front-end by providing lists of info that a user can scroll through. The team also removed a redundant payer ID field that was part of the readMarker. This field is not needed since the cost of reads are deducted from the allocation owner’s read pool and could serve as a potential attack vector in the future. In turn, the team also removed the client ID requirement for blobber-validator pairs. This is part of the team addressing a series of issues encountered during bobber registration, which was mainly caused by the same wallet being used for a blobber and validator. As the blobber and validator are boht sending a series of transactions, there were periodical failed transactions due them attempting to use the same nonce.

The team has recently removed the max challenge completion time (CCT) from the Blobber’s structure. The CCT is to be read from 0Chain’s global configuration from MPT. This change was put in place to ensure consistent implementation of challenges across all 0Chain nodes. In previous weeks, there was discussion on how to improve the blobber challenge process when considering the usage of blobber in terms of number of allocations, size of storage, and overall usage. The team implemented a database update for removing an allocation from the blobber’s allocation list (blobberAllocPartition) to accurately reflect when an allocation is canceled or completed (finalizeAllocation and cancelAllocation). Keeping consistent with partition upgrades to coincide with recent tokenomics-based modifications, the team removed the blobber challenges indexes as they are not used because the event database is always referred to in order to get information regarding blobber challenges. Small updates to code were implemented to rename Used to Allocated to reflect the data size that the blobber has allocated. Meanwhile Used reflects the amount of storage actually being used by the client. At last, the team has added GitHub actions to generate and deploy swagger documents automatically.

The Blobber and gosdk team have closed an additional 10 PRs over the course of this past week. Some of these updates coincide with changes mentioned above by the core blockchain and smart contract team. Last week, we saw mention of the ongoing work to change the transaction.Value type from int64 to uint64, which has been merged this week. To reflect that, the team has updated a blobber’s read/write price to uint64 after changing the currency type in the past weeks. The team also plans to implement these upgrades on the client ends to ensure compatibility across all platforms. The Blobber team has also implemented the 0nft sdk, our interactive toolset that will be used in conjunction with our NFT platform. In parallel with the removal of the max challenge completion time (CCT) by the blockchain team, the blobber team has implemented changes to mirror those.

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.

API| Docs | Telegram | Reddit | Twitter | Forum | GitHub

--

--