Walnut logo

Changelog

Stay updated on everything we ship. Subscribe with your email to get the latest Walnut news straight to your inbox.

Bug Fixes 🐛🐞🪲🕷️🪳🦟

This week, we focused on bug fixing. And we also extended our Contract Verification service to support Cairo 2.8.5.

Improvements

  • Fixed a bug that caused simulation to fail when performed on the latest block number.
  • Resolved an issue where the call trace was not displayed for reverted transactions.
  • Improved handling of the execute account function when it fails due to an undeployed contract. The transaction status now shows REVERTED with a clear error indicator.
  • Added sierra-replace-ids to the Scarb.toml configuration, ensuring sierra_program_debug_info is included in the contract class during the build process.
loop-removal-from-call-trace

Loop Removal from Call Traces

This week, we streamlined loop handling in the call trace by removing loops and ensuring function calls within them are displayed at the correct level.

More Improvements

  • Adjusted the build configuration during Contract Verification to use the release profile, aligning with Starknet Foundry's setup.
  • Fixed an issue in Transaction Simulations where errors weren’t shown for undeployed contracts.
  • Updated the documentation Walnut Verification Guide with the new Walnut API Contract Verification service, ensuring users are up to date with the latest functionality.
  • Improved frontend performance by removing regexes from Call Trace function formatting.
new-verification

New Verification Flow

We've enhanced the contract verification process by enabling users to verify contracts using only the source code, simplifying the process and making it more user-friendly.

More Improvements

  • Added a verification request information to the verifcation status response. Look example here.
  • Added support for contract verification with Cairo version 2.8.4.
  • Improved the contract page to support custom networks.
  • Resolved an issue where the presence of the license-file field in Scarb.toml caused verification to fail.
  • Fixed an issue where error traces for contract calls were missing.
  • Introduced minor UI adjustments and performance optimizations to enhance overall usability and responsiveness.
function-call-details

New Memory Window

We're excited to introduce a brand new Memory Window in the Debugger to display function call arguments and results.

More Improvements

  • Made debugger windows resizable, giving you more control over your workspace and helping you focus on what matters.
  • Core Starknet functions in the call trace are now collapsed by default, making large transactions easier to navigate.
  • Added support for class hash verification, a feature requested by StarkWare.
  • Fixed contract display issues in the call trace to make the application more reliable.
class-page

Brand New Page for Class Details

In this release, we've introduced a new Class Page that displays details about the class, including the Class Hash, the list of networks where the class is declared, and the associated source code.

More Improvements

  • Added form validation to the Transaction Simulation dialog to help users avoid errors and ensure correct input.
  • Included ContractState function argument in the Call Trace, enabling users to explore these values.
  • Fixed a bug that caused inconsistent state when declare, deploy, and invoke transactions occurred within the same block. This improvement ensures accurate and reliable transaction processing in this scenario.
  • Improved the loading state text in the Contract Verification window for clarity.
args-res-simplification

Clearer Arguments and Results representation

This week, we simplified the Call Trace by removing argument and result namespaces and skipping system arguments. This reduces visual complexity, making it easier for users to navigate function calls!

More Improvements

  • Added Debugger Keyboard Shortcuts:
    • b — Step Back
    • n — Step Into
    • o — Step Over
  • Improved error messages in the Transaction Simulation Dialog to help users complete the form more easily.
  • Fixed a bug in fetching CASM instructions. Previously, some instructions were missed, causing issues in specific transactions. Now, all CASM instructions are reliably retrieved, resolving the issue.
  • Resolved issues with transaction inconsistencies on custom networks by adding the chain ID of custom networks to the transaction execution context.
  • Enhanced the mobile experience by fixing the navigation burger menu on the home screen and ensuring the footer remains anchored at the bottom of the page.
step-over

Step Over Button in Debugger

We finally added the 'Step Over' button, one of the most requested features from our early users. It speeds up the debugging experience by allowing developers to skip over functions and focus on the main logic, saving time and reducing the need to manually step through each line in deeply nested code.

More Improvements

  • Enhanced the Call Trace with __validate__ Account call, to better express Starknet's Account Abstraction model.
  • Updated the copy and added a link to the Walnut Verification Guide in the debugger window for non-verified contracts.
  • Addressed and resolved minor bugs to improve overall application stability and performance.
Home page header

New Homepage with easier access to Transaction Simulations and Settings

This week, we updated the homepage to enable users to simulate transactions and configure custom networks directly, without opening a tranasction first.

More Improvements

  • Resolved an issue with content width in the Call Trace, eliminating unnecessary horizontal scrolling.
  • The Transaction Simulation dialog will now use the "latest" block by default if none is provided.
  • Added support for Dojo Alpha 14 and 16.
  • Other minor optimizations and ongoing work to prepare for upcoming improvements in the debugger window.
Search call trace

New Search in the Call Trace

This week, we added a search feature to the call trace, allowing developers to search by contract address, contract name, entrypoint, or any Cairo function name.

More Improvements

  • Users can now search by contract name and address, with search results showing source file names and line numbers.
  • Enhanced the copy-to-clipboard functionality across the app, with a toast notification confirming when content is copied.
  • Added short transaction hash formatting for a better mobile experience.
  • Fixed an issue with the horizontal scroll bar in the call trace, ensuring it always appears.
Searh improvment

Improvements in Search

In the latest release, we added a footer to search results that shows the networks being queried, making it easier to recognize when a custom network should be set if the search doesn't return expected results.

More Improvements

  • As part of ongoing improvements to the Call Trace, we removed the "Unknown Function" frame which was only causing confusion.
  • Collaborated with Dojo to support Katana blocks with multiple transactions. Thanks Dojo for your help on this issue #2458.
  • Added support for Dojo Alpha 13.
  • Updated the Contract Verification service to support Cairo 2.8.2.
Call Trace Improvements

Improvements in the Call Trace

Last week, we introduced several updates to enhance the Call Trace feature and improve overall product quality.

More Improvements

  • Introduced expand and collapse buttons to the Call Trace, making navigation between call frames easier and more intuitive.
  • Fixed several bugs, resulting in improved stability and overall product quality.
  • Added special handling to the call trace to report cases where source code locations are missing.
  • The Cairo VM and Cairo compiler crates were upgraded to the latest versions, allowing simulations of transactions with contracts up to Cairo v2.8.2.
Multiple class verfication

Multiple Classes Verification

In the latest release, we introduced support for verifying multiple classes in a single request. This improves the Class Verification user experience and boosts performance.

More Improvements

  • Added support for Dojo Alpha 12, to support the latest on-chain game developers.
  • Increased server resources to ensure faster response time and handle high-demand requests.
  • Improved error handling by mapping errors, leading to clearer and more detailed debugging information.
  • Addressed several Class Verification issues reported primarily by DOJO game developers. These include configuring Scarb caching for Sozo and applying the default namespace from the Dojo configuration.
debug-page-contract-call

Contract calls in Debugger Window

The step-by-step debugger now supports nested contract flows. When you reach a contract call in the source code, just hit “Next” to seamlessly move into the new contract and continue debugging.

More Improvements

  • Integrated Walnut into Sozo and added support for contract verification directly from Sozo.
  • Added contract verification for custom networks, including support for hosted Slot instances.
  • Chain information has been added to the transaction simulation context, fixing occasional data inconsistencies in simulations.
  • Updated the app UI to support full screen mode, making it easier to debug large codebases.
settings-page

Debugging on Custom Networks

This week we added support for debugging transactions on custom networks, a key request from DOJO on-chain game developers. Walnut now connects to any Starknet network via custom RPC URLs, with full support for debugging, simulating, and verifying smart contracts. Next week, we will pilot custom networks with hosted Slot instances in New York, meeting DOJO game developers and demonstrating Walnut.

More Improvements

  • Created a new Settings page to configure custom RPC URLs, enabling debugging transactions on custom networks.
  • Aggregated search now displays transactions and verified contracts from mainnet, testnet, and custom networks.
  • Fixed a caching bug that caused state mismatches and inconsistencies in transaction simulations.
  • Extended Call Trace to include function call arguments, results, and interface names for internal calls.
  • Improved regex parsing for function call names in the Call Trace for better readability.
verification-status-api

More Resilient Contract Class Verification

In the latest release, we moved contract class verification to run in the background, making the service more resilient when verifying larger contracts or multiple contracts.

More Improvements

  • Introduced a new API endpoint to check the verification status of a contract class. Available at /v1/verification/{:id}/status. Try it here.
  • Enhanced the accuracy of simulated transactions by applying state transitions for all preceding transactions within the same block.
  • Updated the nudge verification link from the Walnut app to direct users to the Walnut documentation.
code-attribute-highlight

Code and Attribute Highlighting in Debugger

In the latest release, we introduced highlighting for both Cairo attributes and Code snippets in the step-by-step debugger.

More Improvements

  • Debugger windows automatically open to the nearest verified contract.
  • Fixed a bug related to incorrect block timestamp.
The gif of source file switch

Improvements to the Debugger Window

In the latest release, we improved the debugging experience by allowing switching between source files in the debug window.

More Improvements

  • The Cairo version is now displayed in the contract details view.
  • Improved error handling for contract verification.
  • Added a message when no execution trace is found, instead of nudging users for verification.
Transaction page information box

Improvements to the Transaction Information Box

In the latest release, we focused on enhancing the information box on the transaction page. We now display the transaction type, timestamp, and transaction version.

More Improvements

  • Added support for Declare transactions.
  • Input and output data can now be switched between Hexadecimal and Decimal formats, and vice versa.
  • Improved handling of transaction simulation errors.
Contract Call within Internal Function Call Trace

Improvements to the Call Trace

In the latest release, we focused on improving the call trace. Concretely, we worked on displaying contract calls within internal function calls. In the screenshot above, you can see the IVerificationHelper.calculation_proof correctly placed right after the internal function call IVerificationHelperDispatcherImpl::calculation_proof.

More Improvements

  • If the Contract Name is not present, the app now uses Interface Name as a fallback.
  • Added human readable Chain ID to transaction details.
Sneak Peek of Walnut Window with nudging people to verify contracts

Contract Verification

In the latest release, we added full support for contract verification to Walnut. Developers can verify their contracts to get detailed call traces, step-by-step debugging, and execution mapping to the source code in the Cairo contracts.

Improvements

  • Added a new alert message in the debugger tab and the call trace to prompt contract verification if the contract is not yet verified.
  • Errors in the call traces now show details about the error.
  • Opening the debugger from the call trace line now moves the execution to the corresponding line.
  • Renamed "testnet" to "sepolia".
Sneak Peek of Walnut Window with internal function call panic

Internal Function Call with Error

In the latest release, we focused on displaying errors in the call trace.

Improvements

  • Added error details below the deepest internal function call where the panic occurred.
  • In collaboration with Software Mansion, we added contract verification into foundry. Check the guide documentation here.
Sneak peak of the Walnut Debugger Window with arguments and result values

Added Argument and Result Values to the Debugger

Function arguments and return results are now visible in the step-by-step-debugger. In the screenshot above, the extract_age function returns a single result: 18.

Improvements

  • The debugger now shows arguments and return values. Some data might be missing in specific places, which will be improved in the future.
  • Internal function calls in the Call Trace now display the argument and result values.
  • New API endpoint for querying the source code of verified contracts via API using Class ID. Available at the /{network_id}/classes/{class_id} endpoint. Try it here.
  • Added support for the Sepolia testnet and deprecated Goerli.
Sneak peak of the Walnut Verifaction API for starknet smart contracts

Contract Verification API

In the latest release, we have introduced the contract class verification API endpoint.

Improvements

  • Launched new API at api.walnut.dev with a /verify endpoint for Cairo Smart Contract Verification.
  • In the Call Trace, the DELEGATE and CALL functions have now been merged and are displayed as DCALL.
Sneak peak of the Walnut Debugger for Starknet Transactions

Debugger for Starknet Transactions

In the latest release, we finally launched the first version of the step by step debugger. It comes with support for multiple contracts in the transaction, and moves the code execution accordingly.

Improvements

  • External calls now also present the source code of the contract in Cairo.
Code snippet on Walnut

Contract Source Code in Call Trace

In the latest release, we added support for displaying the corresponding Cairo source code for each call in the call trace.

Improvements

  • Each call trace now displays the associated Cairo line and the corresponding code snippet where the call occurred. This only works for verified contracts.
  • The new events tab showcases all emitted events for simulated transactions.
  • Data for arguments and results is now also available in view functions.
Gif of resimulating an existing transaction on Walnut

Transaction Simulations

In this release we added support for transaction simulations into Walnut. You can simulate a new transaction, or re-simulate an existing one.

Improvements

  • New transaction simulation screen that allows to re-run existing transactions or simulate new ones on the Starknet Mainnet network
  • Simulations support modification of the following transaction parameters: sender address, calldata, block number, chain id, and transaction version
Internal function calls in a transaction call trace.

Internal functions in the call trace

In this release we added support for internal function calls in the call trace. After verifying contracts, the call trace presents calls to every Cairo function, and will also present details about each call's arugments and return values.

Improvements

  • Support for different colors in the call trace to visually separate certain elements. For example contract names, entrypoints, arguments.
  • After clicking on a call trace item, you get details about argument and return values.
Walnut homepage with search for transactions

Walnut v0.1.0

This is our first changelog message. We started building Walnut to make transaction debugging and simulations on Starknet easier. In the initial version, we plan the following features:

Transaction Call Trace

  • Support for any transaction, including failed transactions
  • The call trace will include calls to internal functions within each contract involved in the simulated transaction
  • Each call will present decoded arguments with names and values, as well as the return value
  • For verified contracts, ability to see the exact call location mapped to the Cairo source code.

Contract Verification

  • Ability to upload the contract source code to Walnut for verification

Step by step debugger

  • Visual debugger that will allow to re-run the transaction line-by-line, mapped to the original source code in Cairo.

Transaction Simulations

  • Visual debugger that will allow to re-run the transaction line-by-line, mapped to the original source code in Cairo.