Welcome to our latest Weekly Development Report, where we spotlight the valiant efforts of our development team. We’ve completed the first week of October, and our primary focus during this time has been on finalizing the homepage design for ARK Scan. Additionally, we’ve made significant progress in adding new API features and enhancing the blockchain state management of Mainsail.
Below is a breakdown of total commits and authors by project for development activity over the last week from September 29th through October 6th, 2023.
Overall, the team has demonstrated consistent productivity and engagement over this period, with a total of 50 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, our main goal was to complete the tasks related to the redesigned homepage and address any development issues that arose. Here’s a summary of what we accomplished:
- Added tooltips to the ‘Top Accounts’ page, allowing you to see the voting choice of addresses by hovering over the vote icon.
- Ensured proper display of tooltips during table loading.
- Finalized the new ‘Statistics’ homepage section, showcasing interesting blockchain metrics.
- Introduced a new ARK Vault banner on the ARK Scan app homepage.
- Implemented an enhanced home statistics chart, which now offers features like switching between different timeframes and displaying price information at predefined points.
- Implemented responsive design for homepage layouts and resolved mobile responsive issues.
In the upcoming week, our goal is to release the new version of ARK Scan with the redesigned homepage. Following that release, we will focus on addressing any reported bugs from users. This will mark a significant step in the redesign of ARK Scan, and we look forward to hearing your feedback and any suggestions for further improvements.
Mainsail Weekly Progress
This week, we made progress on the blockchain state improvements and introduced some new API packages. Here are the details:
- Transaction handlers now have a new method called
getData, which is responsible for converting JSON data into the transaction data object. We introduced this method mainly to convert numeric data represented as strings into
Nonceare handled at the abstract transaction handler level, and concrete handlers will override this method to handle assets. For example, the multipayment handler stores payment amounts as
- The multipayment transaction has undergone refactoring. The
amountfield now holds the sum of all amounts. In V3, this field was always set to 0. We made this change to simplify the code and eliminate specific calculations for multipayment. For instance, the block
amountis now calculated as the sum of all transaction amount fields. We removed the extra logic that incorrectly checked transaction type on the block level and executed custom logic to calculate the block amount.
- We implemented the blockchain controller on the
HTTP APIand synchronized the total supply with every commit. The value is calculated in the mainsail process.
- We added missing plugins to the
- A new package called
api-commonwas introduced, containing shared logic and building blocks for different API packages. It includes a
ServiceProvider, schemas, generic plugins, and more. API packages with specific logic use this package as a foundation and only add contextual logic in routes and controllers.
- We also implemented a new package named
api-transaction-pool. This package features a single endpoint accessible on the mainsail nodes. It allows for the POSTing of transactions and attempts to add sent transactions to the mempool.
- We fixed the P2P download logic. Message downloaders can now handle multiple rounds for the same height. If another peer claims to have +1/3 prevotes for a higher round, we can skip intermediate rounds (from our round to the peer’s round) and directly download the higher round. This will initiate a new consensus round, even if we skip from round 3 to round 10, for example. Consensus ensures the safety that a block for the previous round was not committed when +1/3 prevotes exist for the current round.
- The State Service is a new manager for the state. It is responsible for creating
StateStoreclones. Additionally, it serves as a getter for the blockchain
StateStore, which can no longer be obtained via identifiers. This class will also handle the import and export of the state in the future.
In the week ahead, we will continue enhancing our API’s features and work on the export state of the blockchain. These efforts are aimed at improving the functionality and reliability of our services while ensuring the accessibility and accuracy of our blockchain data.
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.