Happy Wednesday! Tomorrow we will be hosting our Cloud Cover AMA (Ecclesia #11), so make sure to attend on Thursday, March 16, at 9 am PST. Tomorrow Saswata will be responding to questions from the community and giving an update on the progress of Mainnet. Make sure to add questions on the Discord channel for Saswata to answer.
The blockchain team has been working hard for the tentative launch and has put much effort into closing the outstanding issues and PR, which are mostly fixed. In the following weeks, the team will spend more time on the chain stuck issue, which is currently under chaos testing in the large network, trying their best for the launch to happen.
Storm of the Week:
OpenAI launches ChatGPT-4
OpenAI just released the ChatGPT-4, a more powerful version of the ChatGPT I have been talking about in the weeklies. Here you can check it for yourself, but it requires a ChatGPT subscription. This powerful tool will enable more creative content that is not constrained to texts only but also videos and audio. It can compose songs, write screenplays, or learn a user’s writing style. It can analyze and edit full texts and even understand the context of images and audio outputs. I am excited about the platform’s future and what can be achieved with its tools! As AI innovation accelerates, the Züs network will soon be available to help support these technologies and scale their storage needs.
Last week, the blockchain team mainly focused on closing outstanding issues and PRs, such as txn fee PRs, optimizing `payFees, cancel_allocation` SCs, and closing security issues reported by code-scanning. Some of these issues were mentioned in previous week, and all got merged in this week. Meanwhile, the team detected and fixed another case that could cause the chain to be stuck under chaos/load testing. Also, they detected issues on creating challenges where it was possible to create challenges without validators or having the validator number less than the required number.
The team fixed conflicts in txn fee PRs for 0chain, gosdk, zwalletcli, zboxcli, blobber, authorizer, etc. The team is very close to merging all the PRs, but still have some system test cases that need to be resolved first. The fixed ones in this week were:
– `send` command panic caused test failure; it panics due to invalid memory address accessing when validating the txn fee. The txn data struct field was nil and because the txn type is not smart contract, hence the decoding function was not called, leading to the panic.
– The wallet register test cases, they failed because the registering process involves token faucet pour and txn fees, so the balance checking code that worked before would just fail.
– Stake and unstake cases that failed for similar reasons as wallet register tests.
– The remaining failed cases are `TestReadMarker`, the team will continue investigating and will fix it shortly. Once all fixes and conflicts from upstream if any got resolved, the team can merge the txn fee PRs.
Chain Stuck issue:
The team detected and fixed a new case that caused the chain to be stuck in large network. The blockchain team will see `is ahead` error logs in miners and all miners try to kick sharders with the notarized blocks from LFB ticket rounds. The reason for why the chain gets stuck is that sharders would not finalize a block that has less than 3 blocks appended, and due to a bug in miners that they do not send the latest notarized block to sharder, the sharders stopped finalizing blocks. The fix is simple, that sends notarized blocks to sharders on round restarting, even when they may not computed state locally.
Furthermore, the team detected a challenge generating issue that it could create challenges with no validators at all. Though the challenge would not be processed by blobbers, they should not create this kind of challenge in the beginning. The team found validators that do not send healthy check txns, that’s why miners selected no validators to create challenge as there’s no validators could pass the healthy checking.
In addition, the team added an opportunity to save the last processed mint and not processed burn tickets for a specific user and a specific Ethereum address in the case of burn tickets. Also, added Rest API endpoints, which are used by gosdk to retreive data related to DEX flow. Also, they separated the blobber/validator add and update smart contracts. Only allow to add once, then use update SC for updating.
Moreover, the team deducted the blobber slash from [DelegatePool.Balance] and added it to [DelegatePool.TotalPenalty]. Also, removed curator functionality, fixed ‘value not present’ error in loading global config in minersc, added user aggregates event on change.
– Merged PR changes including:
1. Leaf hash calculation of fixedMerkleTree is changed to be flat hash of content rather than being compactmerkletree.
2. Added validation merkle tree
3. Added actual file hash signature and validaiton root signature to the reference object
4. Replace content hash with validation root
– Renamed writemarker to allocation root
– Exposed: `getAllocationFromAuthTicket`, `getReadPoolInfo`, `writePoolLock`, `redeemFreeStorage`, `decodeTicket`, `getBlobbersList`
– Added wrapper for “authorizer-health-check” smart contract call.
– Updated GetMiners and GetSharders function to adapt the pagination APIs.