Welcome to our latest Weekly Development Report, where we spotlight the valiant efforts of our development team. ARK Scan received a new release with updated blocks and transactions pages and Mainsail’s continued on the first API implementation solution. Let’s dive into the details.
Below is a breakdown of total commits and authors by project for development activity over the last week from September 1st through September 8th, 2023.
Overall, the team has demonstrated consistent productivity and engagement over this period, with a total of 65 commits across all projects.
The number of commits and data for each project will fluctuate on a weekly basis depending on internal sprints, objectives and difficulty.
ARK Scan Weekly Progress
This week, we released a new version of ARK Scan. Notable updates include refreshed “Transactions” and “Blocks” pages, now featuring daily statistics and streamlined tables. More information about these changes is available in our release blog post.
Our next sprint will focus on revamping the ARK Scan homepage. The aim is to enhance user-friendliness, incorporating updated tables and a consistent look in line with the recent changes across ARK Scan.
Mainsail Weekly Report
This week, our Mainsail team has been actively engaged in two key areas: the initial development of the public API and addressing certain P2P-related issues that came to our attention. Here is a more detailed breakdown of our recent work:
Initial Public API Implementation: We have introduced three new packages:
api-syncpackage is designed to run within the main Mainsail process and is responsible for populating the database with fresh data. On the other hand,
api-httpis an implementation of a Hapi server, complete with predefined routes and controllers. This package operates as a separate process. Lastly,
api-databasemanages database access for both
api-http, connecting to a PostgreSQL database. The current iteration of the API exposes straightforward endpoints and seeds the database with block, transaction, wallet, and validator-set round data.
Processor and Consensus Enhancements: We’ve made several improvements and fixes related to processor and consensus functionality. Notably, we’ve added verification of block timestamps, ensuring that the time difference between blocks adheres to the duration defined in the
blockTimemilestone property. We’ve also addressed issues with the ProposerPicker seed calculation. Additionally, our consensus mechanism now handles discrepancies in data if a process crashes during the commit phase, ensuring that temporary messages are appropriately managed.
- Redefining State Building: Within the bootstrap package, we’ve redefined the process of state building. Custom builders, such as those for transactions, rewards, and committed rounds, have been replaced. Instead, blocks are now fully re-applied during the bootstrapping process. We’ve incorporated additional state indicators to differentiate between bootstrapping and regular block commits, which leads to less errors. During bootstrapping, certain checks and actions are skipped, such as storing blocks and transactions in the KV store and the committed transactions check.
- P2P Network Improvements: We have made significant changes to our P2P networking components. NetworkState has been eliminated, and NetworkMonitor has been replaced with a cleaner P2P service implementation. This implementation periodically checks for an adequate number of connected peers and ensures the timely delivery of messages. If a period passes without receiving any messages, random peers are reverified, and their message status is verified. Our P2P banning mechanism has also been refined; peers are now banned only when they provide invalid or inconsistent data. Timeouts and non-responsiveness, while not leading to banning, do result in peer disconnection. However, these disconnected peers have the opportunity to reconnect if they successfully pass the verification process.
Next week, our focus will continue to be on expanding the API implementation and making general P2P improvements. Additionally, we plan to work on state snapshots to enable periodic saves of the blockchain state, which will improve node restart speed.
Feedback & Feature Requests
If you are using our open-source products and would like to provide feedback or request a feature, please feel free to contact us via the contact pages for the specific product you are using or open an issue on GitHub.
Quick access links to GitHub issues pages:
Follow on Twitter (X)
Follow us on X (Formerly Twitter) and keep checking the blog to stay up-to-date on all of our new releases. We post a weekly development report so you can easily see what we’ve been up to and follow along our journey towards making your decentralized future a reality.