Status Updates

June, 2021

Jump to

June 25, 2021


This week, the team finished implementing the export wallet ICO key feature, continued working on the important upgrade of the Electron dependency, and finalized the conceptual and design work for undelegating a wallet feature.


This week, the team shifted their focus to Alonzo/Plutus core features.

Specifically, they started work to update cardano-wallet to Alonzo Node. Also, work continues on streamlining APIs to enable Alonzo/Plutus features, and also on a token minting and burning feature.

Finally, they're still working on resolving a CI flakiness problem.


This week, the team developed a reviewable version of the P2P switch feature. They also merged a clean connection shutdown PR (connection-manager part), rebased the p2p-master branch on top of multiplexer clean connection shutdown -and tested it in combination-, and worked on different schedules of io-sim.

Finally, the team also worked on general server tests, specifically end-to-end tests of connection manager, inbound governor, and server components.


This week, the team has been working on db-sync snapshot scripts, and also looking for ways for db-sync high-availability (HA) architecture to reduce downtime during version upgrades to seconds, and be able to scale horizontally.

Finally, they also worked on fixing a build issue in Daedalus caused by Electron and hardware wallet upgrades.


In the last sprint, the team has been working on integrating the ERC-20 Converter with the new AGIX token, using an improved security vault to store the minting keys. Some additional work has also been required to integrate the logic in the backend with new minting policies. The target date to release the testnet with this revised functionality is early/mid July.


This week, the team fixed a serialization bug in Plutus scripts and also fixed some edge cases in saturating arithmetic. They also investigated three more performance improvement avenues, added significantly more benchmarks, fixed compilation issues with cross-repo dependencies to the other cardano projects, and completed the first step in updating the PLC parser.

The team also completed several other tasks across many other areas:

Alonzo benchmarking (aka Ouroboros block time budget modeling)

The team worked on improving anomaly reporting in the log analysis and got a qualitative judgement on the adoption/announcement log event inversion prevalence.

Node logging infrastructure rewrite

They completed the initial integration between the cardano-node/trace-dispatcher/trace-forward triplet and cardano-tracer, worked out a design change in connection layout for cardano-tracer/cardano-node, began implementation work, and started porting the resource stats collector from iohk-monitoring-framework.

Transaction generator

The Alonzo tx generation is in progress, and the Tx generator review is almost done (merge into cardano-node is imminent).


Alonzo is now supported, the recently added Plutus Tx script successfully submits the Tx against the workbench cluster. The team also worked on design formatting for choices to be included in metadata, and completed implementation of error handling.


This week, the Plutus team made an enhancement to add 'Data' as a built-in type. They also added redeemers for minting policies and started to investigate how to separate the chain index from the Plutus Application Backend (PAB).

The Marlowe team spent time improving the presentation of contract step cards within Marlowe Run and added functionality to automatically redeem payments made to active wallets. They also extended the payment type to include source accounts and transfers. Additionally, they fixed contract placeholders to work with LocalStorage and added some new property-based tests to ensure that the provided examples do not have errors.

They also completed the implementation of website and playground homepage, (including SEO and social tags), and conducted initial user testing of Marlowe Run, and planned the revision of Marlowe Run based on user testing (onboarding, tool tips, simplified contracts, and explanations.)

For Actus, they continued bug fixing PAM, based on ACTUS Java test suite for Marlowe Run enhancements and bug fixes.

For the Playground, the team added PBT for absence of error/warning in examples, and drafted a plan for extending static analysis to templates.

They also merged several PRs to Fix a problem with the VSCode devcontainer, replace eventful with beam, add cardano-node and cardano-cli to the nix-shell, export serialised PLC programs with envelopes, improved game contract playground example, adding uniswap trace and scripts, implement a more realistic wallet API, reduce our use of row-types, and delete BlockchainActions.

Finally, they made progress on converting our Tx type to cardano-api's Tx type, worked on the Alonzo node "Hello, world" script, and made progress on defining types and the interface for chain index.

June 18, 2021


This week, the team finished implementing the new, expanded native tokens view on the wallet’s 'Summary' screen and the new detailed view of the earned rewards history with per-epoch breakdown.

The team also continued working on Ledger and Trezor hardware wallet support for Project Catalyst voting registration, and are currently working to resolve the failure issue that occurs when sending a large number of native tokens from Ledger wallets.

Finally, work is still ongoing on Electron updates and the export of shared ICO keys feature.


This week, the team updated cardano-wallet to enable compatibility with node v1.27, released Bech32 v1.1.1, and updated cardano-graphql to the most recent version of DB Sync. The team also continued working on transaction signing and payment APIs, address derivation features, multi-stake-keys for the portfolio manager, and relevant simulations.

The team is now working on the consolidation and streamlining of APIs for building transactions that will enable Alonzo/Plutus features, and on a token minting/burning feature.

Finally, they are investigating an issue with CI, and have completed the development of a solution that allows fetching a key on any derivation path.


This week, the team continued working on P2P testnet functionality, including switching between P2P and non-P2P networks, diagnosis of deadlock events in the connection manager, enhanced connection shutdown properties, and strict TVar interface.

The team also continued working on the cardano-cli API and made progress on scheduling policies and io-sim-based server testing.


This week, the team worked on the Alonzo Blue parameters setup in terms of smart contract functionality. They also worked on Nix builds and Nomad tasks for ERC20 converter services, and are currently working on the explorer solution based on Traefik, which enables upgrading two explorer instances independently.


This week, the team worked on Nix properties and exported the variable compiler-nix-name in Nix so that the same GHC version can be reused in different projects. They integrated the cardano-repo-tool with the nix-shell development environment, upgraded the logging-version of the iohk-monitoring, and added missing dependencies to the cardano-api. The team also worked on transaction properties and enabled optional TxInType usage to convert different transaction types.


This week, the Plutus team enhanced the game contract example (in the Plutus Playground) by adding logs and applying the validator function in the off-chain part of the code before submitting a transaction. They also improved the serialization format for scripts and added a trace and associated scripts for the uniswap contract. Finally, they reorganized the wallet API to handle client-side wallet API errors.

The team continued working on the Alonzo node and deployed the first "Hello, world" script. They are also reducing the use of row-types in Plutus contracts, and are working on the replacement of Eventful with Beam.

The Marlowe team worked on changes to the timeouts for contracts to give users more time and flexibility. They also resolved a scrolling display bug in the flow of contract cards.

Finally, the team added some property-based tests for the example contracts, and the documentation team worked on FAQ content for the Marlowe website.

June 11, 2021


This week, the team removed legacy clusters along with Jormungandr support, fixed issues related to sending large quantities of native tokens, and completed minor fixes for the ‘Share wallet address’ feature and native token operations for Trezor hardware wallets.

The team continued implementing the expanded view of native tokens and earned rewards history features in the ‘Summary’ screen.

Finally, they are still implementing Catalyst voting support for Ledger and Trezor hardware wallets and updating Electron (a framework that enables the usage of web technologies to build desktop applications) and related dependency versions.


This week, the team finished the update for cardano-wallet to node version 1.27, and are currently working on the consolidation and streamlining of APIs enabling transactions with Alonzo/Plutus features.

They're also working on a token minting and burning feature, and have started developing a solution to allow fetching a key on any derivation path.


This week, the team worked on the P2P master branch, updated the cardano-ping protocol in line with keep-alive protocol changes, and worked on clean connection shutdown properties. They added a missing API to io-sim-classes and also worked on cardano-cli with the Alonzo team.

The team also made a technical presentation of pipelining in TypedProtocols, which is a framework for writing binary session types in Haskell.

Finally, they reviewed and updated the cardano-node documentation, reviewed some community pull requests, and provided feedback to the Hydra team.


This week, the team worked on the ERC20 converter amendments, implemented Bitte stack support outside AWS, and supported Alonzo Blue testnet activities.

The team also updated Daedalus Electron fixes, tested and deployed db-sync v. 10.0.0, and implemented flake.nix for the cardano-wallet.


This week, the team made progress adding Cardano API dependencies, building the new chain index, and resolving numerous issues and requests. They also discussed the pull-based approach to the networking layer using ouroboros-network.

The team continued working on the Hydra project implementing the preliminary user journey, and extended end-to-end tests to drive the implementation of the Head ‘closing’. They built Hydra-the-project using Hydra-the-CI to initially cache nix-shell derivations, and worked on Hydra node metrics using Prometheus. The team also provided feedback on simulation results to researchers and adapted the protocol accordingly.


This week, the Plutus team improved checkpointing to allow for constant-space contract instances. They also renamed user experience elements of the Typed validator interface for better clarity, and organized policy information into modules. The team planned for in-browser PAB development and WBE authorization flow, and made changes to the PAB Uniswap example by adding a direct Plutus data decoder for integers and constructor tags. They also enhanced the mock wallet API to align with the real wallet API.

The Marlowe team worked on the new homepage for the Marlowe Playground and updated the favicon. They also investigated how to ensure that transactions cannot be made if the wallet has insufficient funds.

June 4, 2021


This week, the team released Daedalus Mainnet 4.1.0, which enables configuration settings for decimals in native tokens with recommended values fetched from the Cardano token registry. This version also includes overall improvements, resolves some known issues, and enables Catalyst Fund4 voting registration.


This week, the team released an update for cardano-wallet to include support for decimals, and enable the multi-asset wallet migration endpoint.

They are currently working on the consolidation and streamlining of APIs for building transactions that will enable Alonzo/Plutus features, and have also started implementing changes needed for cardano-wallet to support v1.27 of the cardano-node.

The team have also completed a proof-of-concept part of the portfolio manager and the first phase of the multisig functionality implementation.

Finally, they implemented changes in cardano-graphql to support decimals and designed a proposal for the Plutus metadata server.


This week, the team worked on a P2P and non-P2P diffusion API, fixed some issues, and worked on server tests and scheduling within io-sim.

The team fixed the stateTVar signature, worked on simultaneous TCP connections opened by the handshake protocol, and rebased p2p-master branches.

Finally, they enhanced the connection shutdown feature using the connection manager and fixed issues found in PeerStateActions and systemd socket activation.


This week, the team prepared for the Alonzo Blue hard fork event, tested ERC20 multisig documentation, and performed Catalyst dry runs in preparation for Fund4.

Finally, they worked on Nixos sample configuration for the testnet stake pool on a single server.


This week, the team continued working on Alonzo benchmarking. They discovered the need for another trace in the block fetch client node, implemented it, completed block event recovery, and computed per-block propagation CDFs. The team then ran the initial calibration setup on AWS.

They continued redesigning the node logging infrastructure, reimplemented all tracers within the trace-dispatcher using the new framework, and started writing tests for the cardano-tracer. The team initiated an integration between trace-dispatcher and cardano-tracer and created a new tracing-master branch, which now carries the entire rewrite results for developers.

The team also improved logging in the Hydra node prototype, created an open-source repository for it, and examined prototype use cases designing its user journey.

Finally, work is ongoing within the transaction generator: the team continued working on the wallet abstraction and completed error handling for Marlowe and Plutus contracts.


This week, the Plutus team started investigating how to add API error handling to the chain index endpoints. They also switched the Plutus Playground simulations to higher lovelace values to accommodate the change in the higher fee calculation. Additionally, they added an equalsString and Eq instances to Plutus Core, made performance improvements to the JSON parsing, and applied a fix for a missing depth increment in LetFloat. Progress was also made on changing plutus-use-cases and other projects from Slot to POSIXTime and improvements to the Plutus Application Backend (PAB) test stability and simplified PAB package dependencies.

The Marlowe team implemented in-browser support for Marlowe Run and continued system QA testing and bug-fixing activities. They also prepared for the first Marlowe webinar, integrated ACTUS testing, and started working on ANN (Annuity) ACTUS contracts. Finally, work is ongoing on the Playground redesign.