Welcome to our latest Weekly Development Report, where we spotlight the valiant efforts of our development team. This week, the ARK Scan team has diligently worked on establishing clear specifications and implementing key modifications, aiming to optimize the integration with Mainsail. In parallel, the ARK Connect team has been steadfast in enhancing the Ledger integration, alongside strategizing for the rollout of new, exciting features. A significant stride has been made by the Platform SDK team, particularly for ARK Vault, as they embark on the development of initial support for transfers within Mainsail. The Mainsail team, on the other hand, has been tirelessly ironing out reported issues and introducing a range of improvements to the codebase. Furthermore, they’re in the midst of devising a thorough testing strategy, along with the preparation of scripts necessary for its execution.
Development Summary
Below is a breakdown of total commits and authors by project for development activity over the last week from March 22nd through March 29th, 2024.
Project | Commits | Authors |
---|---|---|
ARK Connect | 22 | 4 |
ARK Scan | 29 | 2 |
ARK Vault | 3 | 1 |
Mainsail | 47 | 3 |
Overall, the team has demonstrated consistent productivity and engagement over this period, with a total of 101 commits across all projects.
The number of commits and data for each project will fluctuate every week depending on internal sprints, objectives, and difficulty.
ARK Connect Weekly Progress
Throughout the week, our focus has been on enhancing Ledger functionality and making general improvements, along with addressing reported bugs. Specifically, we accomplished the following:
- Implemented a pending state for transactions after sending to improve user experience.
- Resolved an issue related to signing messages on Ledger.
- Refactored the status message for Ledger actions.
- Made adjustments to the styling of the connection modal.
- Implemented various smaller UI fixes and improvements.
Looking ahead to next week, our priorities include completing the implementation of a custom fee option on the demo app site and adding a fee warning feature to enhance user experience by alerting users if the fee is set too high or too low. Additionally, we aim to finalize the specifications for new features within the ARK Connect extension, which will be our focus in the upcoming development cycle.
ARK Scan Weekly Progress
The ARK Scan team has been working on additional changes necessary for Mainsail implementation while addressing any discovered issues. Initial integration of ARK Connect has also started, with the following accomplishments made this week:
- Renamed ‘Delegate(s)’ to ‘Validator(s)’ throughout ARK Scan.
- Fixed the transaction and block export feature for Mainsail integration.
- Added support for ‘Usernames,’ a new feature in Mainsail, to ARK Scan, handling all possible edge cases.
- Included a ‘Connect’ button in the navbar for ARK Connect integration.
- Upgraded ARK Scan to the latest Laravel 10 version in preparation of the incoming Laravel 11 update.
Looking ahead to next week, our focus will be on completing tests and PHPStan fixes, preparing a new ARK Scan release for the Mainsail testnet, which will include all the aforementioned tasks. Additionally, work will continue on ARK Connect integration.
Mainsail Weekly Progress
The Mainsail team has been addressing reported issues from the testnet while also developing additional tests for upcoming targeted testing and implementing further optimizations and new features. Here’s a detailed overview of their recent work:
- The install script has been fixed to accommodate the new paths naming convention.
- API nodes are now determined using URLs instead of IP & port pairs. This enables users to configure API nodes accessible via domains and concealable behind proxies.
- The transaction pool processor now accurately captures and reports transaction errors, with errors reported back on the
post-transaction
endpoint. - A new package,
consensus-storage
, has been extracted from consensus, containing logic for storing open proposals, prevotes, and precommits. - The database has been refactored to return commits instead of blocks. A commit is a structure that holds a block along with aggregated signatures and a list of signers.
- The transaction pool database now supports in-memory mode.
- The configuration generator now includes static fees in the milestones.
- The logic responsible for registering listeners for shutdown signals has been moved outside the application into a custom bootstrapper. This feature enables testers to skip registering listeners in the tests.
- The TSM TypeScript loader has been replaced with TSX, allowing the execution of ESM code in the tests. Consequently, rewiremock has been replaced with esmock (ESM-compatible dependency mocker), and all CommonJS-related code like the
__dirname
statement has been removed. - The run hook in the
test-runner
has been fixed. Errors thrown in before or after hooks are caught and properly handled to result in a failed test. - Support for functional tests has been added, including the ability to run multiple Mainsail instances in a single node process. Additional features have been incorporated to aid the testing process:
- In-memory replacements for the database and storage are provided, along with custom configuration loaders allowing nodes to run without accessing the disk.
- Custom P2P logic facilitates communication between instances and can be customized to simulate various scenarios such as message delay, skipped messages, targeted broadcast, and data loss.
- A Test
ProposerSelector
allows tests to run with a predefined proposer, improving determinism. - The Test Logger logs the instance ID in the messages.
- A Test Worker performs crypto calculations on a thread without booting subprocesses.
- Assert and helper methods such as
snoozeForBlock
,assertBlockId
,assertBlockRound
, andassertCommitValidators
are included. - Sandbox helpers for configuring and booting nodes are provided.
- Functional tests have been added for the transaction pool covering all transaction types, including most accept and reject scenarios.
Next week’s focus will be on preparing tests for various consensus scenarios (double forging, malicious validators, network fragmentation, etc.) and adding additional tests using multisig wallets and blocks.
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.