Welcome to our latest Weekly Development Report, where we spotlight the valiant efforts of our development team. This week, the ARK Scan team implemented support for the new BLS public key registration transaction type, while the ARK Vault team continued refining the Side Panel by simplifying its architecture, enabling additional tests, and applying a series of targeted fixes. Over on the Mainsail side, the team focused on a range of improvements, updated dependencies, and made updates on Core v3 in preparation for the upcoming Mainsail upgrade.
Development Activity Summary (May 9 – May 16, 2025)
Below is a breakdown of the total number of merged commits and contributing authors by project, highlighting development activity from May 9, 2025, to May 16, 2025.
Project | Commits | Authors |
---|---|---|
ARK Connect | 0 | 0 |
ARK Scan | 2 | 1 |
ARK SDKs & Docs | 0 | 0 |
ARK Vault | 42 | 4 |
Mainsail | 19 | 2 |
During this period, the team maintained strong productivity and engagement, delivering 63 merged commits across all projects.
It’s important to note that weekly commit counts and project-specific data may fluctuate based on the focus of internal sprints, evolving objectives, and the complexity of tasks undertaken.
ARK Scan Weekly Report
This week, we implemented support for the new BLS public key registration transaction type in Core v3. This allows existing delegates to register their BLS keys ahead of the Mainsail migration, ensuring their keys are included in the snapshot and enabling them to forge as validators on the Mainsail network at launch. ARK Scan has been updated to recognize and display this new transaction type appropriately.
Next week, we’ll continue testing and begin implementing any additional features required for Mainsail.
ARK Vault Weekly Report
This week, we focused on further improving the Side Panel by simplifying its architecture, enabling new tests, and addressing various fixes:
- Decoupled the Wallet from the Coin abstraction to simplify the architecture, as multi-coin support is no longer required for Mainsail. This involved:
- Removing the
wallet.coin()
method and instead using the profile’s active network to determine network-specific behavior. - Dropping the
Coin
interface and related IoC containers. - Replacing complex SDK inheritance with straightforward, modular service classes for clearer and more maintainable logic.
- Removing the
- Fixed the issue where outgoing and incoming transaction filters were not applied when selecting the corresponding tab, specifically in scenarios where the user has more than one wallet. Now, transactions are correctly filtered based on direction regardless of the number of wallets.
- Cleaned up the network domain by moving the
NetworkIcon
component toapp/components
and removing the unused network domain module along with its associated tests. - Implemented debouncing in the
ServerFormModal
component for API server input validations, introducing a 500ms delay before triggering validation to improve performance and user experience. - Removed an initial set of unused files identified after recent refactors, helping to clean up the codebase without affecting any functionality. Additional files will be removed in future SDK cleanup phases.
- Added
UsernameCircledCheckMark
to the icon set and integrated it into theWalletIcons
component. The username icon now appears in single view whenever a wallet has a username registered on-chain. - Improved accessibility for the wallet import flow by refactoring the
Option
component inMethodStep
into abutton
element, allowing for better focus management and custom focus state styling. - Removed the following unused dependencies from the codebase to reduce bloat and improve maintainability:
create-xpub
,crypto-js
,get-random-values
,hdkey
,multiformats
,react-linkify
,react-range
,rollup-plugin-polyfill-node
. - Fixed the issue where importing a profile with a password would fail due to an error in
profile.validator.ts
. The validation logic now checks if missing properties are due to encrypted data and, if so, throws aPasswordRequired
error instead of a generic validation failure, allowing for proper handling of encrypted profile imports. - Refactored the Side Panel component to improve UX/UI and support new props:
title
,subtitle
,titleIcon
,hasSteps
,totalSteps
, andactiveStep
. Updated the component to align with the new designs and applied these improvements to the “Import address”, “Create address”, and “Address management” flows. - Enabled and fixed the following test suites to ensure full coverage and functionality:
- Transactions domain P–S tests,
- Wallet, router, and util domain tests,
- Message and network domain tests,
- Transactions domain T–Z tests,
- Profile domain tests,
- Vote domain tests.
Next week, we’ll continue enhancing test coverage, refining the Side Panel, and resolving any reported issues.
Mainsail Weekly Report
This week, we focused on various improvements and updated several dependencies. Specifically:
- Upgraded
inversify
to the latest version. - A CodeQL workflow for semantic code analysis was added.
- Enabled snapshot compression.
- Enhanced transaction inclusion logic:
- Transactions are now optimistically included in a block if their gas limit exceeds the remaining gas in the block.
- If the block runs out of gas, the last transaction is reverted.
We also worked on Core v3 in preparation for the Mainsail upgrade:
- Added support for the
BlsPublicKeyRegistration
transaction, allowing delegates to register new BLS12-381 public keys on-chain for future use. - Prepared and released Core v3.10.0-rc.0 for the public devnet to begin testing the new features.
Next week, we will focus on generating test coverage reports and writing unit tests for the Mainsail upgrade.
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.