Welcome to our latest Weekly Development Report, where we spotlight the valiant efforts of our development team. This week’s ARK SDKs development centered on refining the client and crypto packages while rolling out a minor update to the documentation site. Meanwhile, ARK Vault saw ongoing improvements based on internal testing feedback, with issue fixes, design improvements, and the initial Ledger HW support. Over at Mainsail, efforts were directed toward boosting EVM performance, updating packages, and applying various fixes.
Development Activity Summary (March 28 – April 4, 2025)
Below is a breakdown of the total number of merged commits and contributing authors by project, highlighting development activity from March 28, 2025, to April 4, 2025.
Project | Commits | Authors |
---|---|---|
ARK Connect | 0 | 0 |
ARK Scan | 0 | 0 |
ARK SDKs & Docs | 42 | 3 |
ARK Vault | 35 | 5 |
Mainsail | 40 | 2 |
During this period, the team maintained strong productivity and engagement, delivering 117 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 SDKs and Documentation Weekly Report
This week’s work primarily focused on the client and crypto packages, along with a minor update to the documentation site. Key tasks completed include:
-
Platform SDK Package:
- Updated CI to use Node.js version 20.18 as 20.19 causes issues with dependencies. This is a temporary downgrade until we upgrade it to work with node 22.
- Fixed the outgoing tab labeling issue where, in single view in Vault, selecting the Outgoing tab could incorrectly display transactions as incoming instead of outgoing.
- Added support for signing all transactions using Ledger hardware wallet addresses in combination with the Ethereum Ledger app.
- Refactored Ledger public key reading by exposing a
pageSize
prop on the Ledger scan method for better control. Improved performance when fetching public keys and added a retry mechanism to handle “device busy” errors.
-
Python Client Package:
- Added the receipts API endpoint and a configuration endpoint for the transactions API, while removing the old transaction endpoints.
- Refactored the
delegates
method arguments by updating thedelegates.blocks
anddelegates.voters
endpoints for consistency with other SDKs. - Renamed wallet transaction methods to align with naming conventions used in other SDKs.
- Refactored the blocks transactions endpoint to support wildcard arguments.
- Added the EVM API endpoint and included missing
with_endpoint('api')
references for several endpoints. This prevents the issue where EVM or create transaction calls could cause subsequent calls (likeBlocks.all()
orVotes.all()
) to be performed on the wrong API. - Added a coverage threshold to the test workflow for the Python client, ensuring it fails if coverage falls below 100%. Also addressed any missing coverage in the tests.
-
Python Crypto Package:
- Removed the
get_bytes
method fromAbstractTransaction
as it duplicated the functionality of theserialize
method, making it redundant. - Added a method to the
PrivateKey
class to create a private key from a WIF, ensuring consistency across SDKs. - Refactored message signing by removing the original
PrivateKey#sign
method and renaming thesign_compact
method. Also removed the Keccak hasher method, as it’s now possible to pass in a hashed message, skipping the hasher on CoinCurve’s side.
- Removed the
-
TypeScript Crypto Package
- Added additional unit converter tests to improve handling of larger numbers, ensuring accurate conversions and preventing potential overflow or inaccuracies.
- Refactored transaction types coverage by adding tests to improve coverage and removing unused methods.
- Added tests for the Network configuration file to ensure proper handling of network-related settings and functionality.
- Refactored the code coverage for Serializer and Builders.
- Set up a formatting workflow to run Linter and Prettier on PRs, ensuring consistent code formatting and resolving issues with mixed tabs and spaces.
-
TypeScript Client Package:
- Fixed the
create
transaction type by adjusting it tostring[]
, as it now correctly expects an array of hex strings instead of a single string. - Refactored the
blocks.transactions
client endpoint to align with other SDKs by adjusting the accepted arguments to match the consistent format ofblockId
,page
, andlimit
, ensuring uniformity across packages. - Updated the
pnpm
version in the workflows to ensure compatibility with the latest features and improvements. - Refactored the
delegates
method arguments and fixed a type issue with thevoters
method, where it was previously incorrectly set tovotes
. - Renamed the wallet transaction methods to match other SDKs by updating
transactionsSent
tosentTransactions
andtransactionsReceived
toreceivedTransactions
, ensuring consistency across platforms. - Refactored the transactions API by adding a new configuration endpoint and removing the old transaction endpoints.
- Refactored the code by renaming
show
methods toget
for consistency and clarity, following standard naming conventions.
- Fixed the
-
PHP Crypto Package:
- Removed the
getBytes
method fromAbstractTransaction
, as it duplicated the functionality of theserialize
method and was no longer necessary. - Updated the message signing and verification process by removing support for backwards compatibility, including the v1/v2 message fixtures and the
publickey
/signatory
JSON keys. The new signatures are not backward compatible and have been streamlined to reflect the updated signing mechanism. - Refactored the PHP test suite to use Pest syntax, aligning with ARKScan’s testing style. Replaced class-based tests with the
it('should...')
format.
- Removed the
-
PHP Client Package:
- Removed the
types
,fees
, andschema
endpoints from the Transactions API, as they are no longer relevant or needed in the updated implementation. - Renamed
show
methods toget
in the client to align with common naming conventions and improve consistency across the codebase.
- Removed the
-
Documentation Site:
- Updated client examples for Python, PHP, and TypeScript packages to ensure consistency and accuracy.
- Updated the SDK crypto documentation site with the latest changes to the Python crypto package.
Next week, our focus remains on bringing up the compatibility of Mainsail EVM across all client and crypto packages, as well as updating the documentation site.
ARK Vault Weekly Update
We’ve been continuing to work on feedback from the internal testing team, addressing reported issues, making additional design updates, and implementing Ledger HW support. Work completed included:
- Removed all references to
PortfolioBreakdown
, as the new design no longer includes a breakdown feature. - Updated the upload avatar component to match the new design. Since avatars are now square, removed the circular cutout from the image preview.
- Updated
profile
,settings
, andportfolio
domain tests to use the Mainsail network, ensuring consistency across all test suites. - Adjusted the radio button size on the side panel to match the checkboxes in “multi view”.
- Updated the side panel behavior to prevent the hover state from appearing when an address is selected for deletion, maintaining a consistent border style.
- Fixed an issue on the Votes page where clicking the Import/Create buttons in an empty profile redirected to the main page instead of triggering the intended import/create action.
- Updated the exchange page design to align with the votes and contact pages, incorporating the same header icon styling for consistency across the application.
- Fixed extra padding in the contacts page header, ensuring alignment with the votes page for a consistent layout.
- Fixed an issue by adding a new
useEffect
to clear the alias when the address is cleared in the multipayments form. This ensures the alias resets properly, as theclearFields
method in the parent component does not handle alias input. - Ensured that votes are synced when updating the profile and selected address on the Votes page.
- Added a hover state to the “Back” button on the side panel address selection when on the “Manage” page.
- Refactored the
useTabs
hook to support adisabled
prop, and added new classnames
andstyles
for tabs and tab buttons to handle disabled states. Tabs on the side panel are now disabled when entering manage mode to prevent interaction. - Ensured that an address is displayed as selected in the address panel’s single view if the previously selected address is deleted.
- Updated the
vote
andwallet
domain tests to use the Mainsail network, ensuring consistency with the updated network configuration. - Moved the
psdk
SDK helpers to an internallib
folder, transferring only the methods used in Vault along with their internal dependencies (which are not currently exported at the root level). - Updated CI workflows to run on pnpm 10, ensuring compatibility with the latest version and taking advantage of its new features.
- Fixed the scan modal issue by moving the navbar out of the div with margin, allowing it to cover the entire page as intended.
- Fixed the hover state for the address row component in the side panel when entering deletion mode, ensuring consistent behavior during interactions.
- Added support for signing all transactions from a Ledger address, including transactions sent from subsequent derived addresses, ensuring full functionality with Ledger hardware wallets.
- Removed unused components and their respective tests to streamline the codebase and improve maintainability.
Next week, we’ll continue addressing reported issues and finalize Ledger HW support for Mainsail EVM as we near full support for Mainsail EVM functions.
Mainsail Weekly Report
This week, our focus has been on improving overall EVM performance, updating packages, and implementing various fixes. Work completed includes:
- A separate EVM instance was used for JSON RPC actions.
- Updated EVM Rust packages to the latest version.
- Added support for multiple pending commits in EVM.
- Internal Mainsail transaction fields were renamed to match the EVM structure.
- Improved EVM performance by removing unnecessary clones of
state_hash
andlogs_bloom
.
Next week, we’ll work on renaming fields for the public HTTP API and adding support for pnpm v10.
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.