Status Updates

April, 2021

Jump to

April 30, 2021


This week, the team enabled pasting of wallet recovery phrases, added a warning for sending ada within the same wallet, and implemented a manually configurable decimal places value for native tokens.


This week, the team started developing Portfolio Manager (Multi-delegation) features, and also began introducing cardano-ogmios to GraphQL. They also prepared an update for cardano-wallet and cardano-addresses, which upgrades the node to v 1.26.2, plus some additional improvements. The team is also working on enabling MA wallet migration and native tokens minting/burning, ongoing development of CI and test suite improvements, and development of multisig features.


This week, the networking team made progress with local root peers testing, a new feature of p2p-governor, and also made some progress on DNS local root peer configuration, using SIGHUP to re-read configuration files. This piece of work attracted the attention of some SPOs, which displayed an enthusiastic attitude towards it.

Finally, they continued working on the creation of a testing network environment, which will support the simulated execution of network P2P components.

P2P private testnet launch

This week, the networking team deployed the first private P2P testnet, which includes the initial components enabling P2P connectivity in the network.

The P2P system was deployed in a private environment and tested between eight nodes connected to the mainnet and established communication with active SPO relay nodes, further connecting to other relay and block-producing nodes. The system enabled nodes to discover SPO relays using on-chain stake pool registration, which includes the SPO relay DNS names or IPs.

The nodes demonstrated the capability to arbitrarily select peers for communication, including those from the mainnet. The use of the ‘upstream’ metric enabled the discarding of the worst-performing peers, randomly selecting new peers for connection. This policy has been demonstrated in large-scale simulations (10,000 nodes), providing close-to-optimal results. In the live demonstration, the team saw multiple iterations of such an optimization procedure. The team also observed that a range of peer connections occurred – with both nearby and far-away peers from different locations, which was inherent for all the eight nodes situated in different parts of the world.

The P2P private testnet includes the connection manager, which encourages efficient resource management. P2P nodes used the capabilities of the connection manager to use a single socket between two peers for bidirectional communication. The team additionally ran a connection manager simulation in isolation, which provided good coverage of state transitions and allowed tracking relevant issues to be resolved in future simulations.

Finally, the team conducted a formal analysis of the connection manager state machine, which resulted in good performance with no resource leaks found. Although the private testnet launch ensured good performance, there are still some known issues that the team will be fixing in the following testing phases. These upcoming testing phases will cover the engineering testnet and semi-public testnets launch involving a small group of SPOs who will help us test P2P capabilities. During these phases, the team will also add more P2P features, improve network performance, and establish full interoperability between legacy and P2P nodes.


This week, the team worked on improvements to cardano-node nix flake and also worked on the bitte cluster for stake pools. They also switched the Catalyst voter registration to stake address for rewards.


This week, the team achieved several objectives: they wrote a prototype of faster environments with skew binary random access lists, updated data encoding to use the new CBOR tags, tweaked the interface for the ledger again, finished and merged the first step of inlining work, made progress on adding built-in lists and tuples, repeated the benchmarks with the new data, and finished calculating the cost model for machine steps. They also removed the "fake Plutus" shim that provides Plutus with the TxIno, so the real Plutus contexts are now being used, and the system is now calling the Plutus interpreter with cost models that pass validation.

The team also completed the first round of unit tests. Specifically, the tests can construct transactions with Plutus scripts and run them through some of the ledger rules (specifically, the UTxOW low-level rule).

The Alonzo TranslateEra instance for the consensus layer is close to completion. This work caught a serialization bug for Alonzo TxOuts, which was fixed. The new API functions required for the consensus layer to handle two-phase validation are also nearing completion.

Finally, they added some more detailed benchmarks, drafted a PR for a new event log in the ledger, and did another round of reviews between the formal spec and the implementation. These reviews included the exploration of the code architecture (and how to write the prototype business logic), drafting some command line interface (REPL) for testing purposes, the discussion of ledger integration in the engineering meeting, and the creation of a smoke test using a MaryTest ledger.


This week, the Plutus team worked on a two party escrow contract and fixed a conflict with a semantic merge. Also, they implemented a change whereby using machine integers -rather than arbitrary-sized integers- results in a performance improvement.

The Marlowe team continued working on the integration of Marlowe Run to the Plutus application backend (PAB) and applied fixes to the Save button in the Marlowe Playground. They also improved the CSS production build of the Marlowe dashboard client and worked on user documentation.

April 23, 2021


This week, the team released Daedalus version 4.0.5, and continued working on dependency updates for Ledger and Trezor wallets, recovery phrase pasting, and UX improvements to Catalyst voting. They also implemented a warning that reminds users not to send ada to the same address they are transacting from, and added a manually configurable decimal place value for native tokens.


This week, the team worked on enabling MA wallet migration and native tokens minting/burning. They also continued working on CI and test suite improvements, and the development of multisig features.


This week, the team worked on the P2P master branch making some changes and incorporating bulk sync improvements. The team also worked on P2P governor shrinker and IOSim enhancements, network environment simulations, P2P node properties, and governor testing. They changed the keep-alive codec to produce valid CBOR, which includes a test validating that all mini-protocol codecs produce working CBOR encoding.

Finally, the team discussed promotion and demotion policies within P2P connectivity and updated relevant documentation.


This week, the team implemented auto-scaling instances to the Bitte Nomad stack, worked on PostgreSQL features within the stack, and also assisted in the analysis and testing of the epoch boundary issue.


This week, the team set up a private environment to run end-to-end tests of the ERC-20 Converter. The ERC-20 Converter is a tool that will allow users to migrate supported tokens from Ethereum to Cardano.

With core functionality now in place, the team is focused on a security audit and some front-end UX/UI design prior to a testnet deployment coming soon.


This week, the team performed some changes to the ledger interface, worked on missing types and instances, and continued updating the Nix configuration.

They also worked on Alonzo mempool enhancements. Specifically, they fixed some property test issues, worked on transaction attributes for mempool validation, and added new API features to handle two-phase validation.

The team updated the Alonzo CDDL specification, which now includes a full test suite with fixed serialization characteristics. More work has been done to synchronize the specification with the actual Alonzo implementation.

Finally, the team continued testing minimum UTXO computations and investigated performance quality at the epoch boundary.


This week, the Plutus team improved the cost model for the ledger by enhancing the interface and fixed a memory annotation problem that was affecting the costing results. They also improved the logging of contract messages and modified the AddressChangeRequest to use SlotRange.

The Marlowe team implemented a solution for the conversion of ratios from Haskell to Marlowe by using prefixes for inverse rates within oracles. They also connected metadata to contracts in the Haskell and JavaScript editors, and added a new follower contract that tracks Marlowe contract execution history in Marlowe Run.

April 16, 2021


This week the team worked on Daedalus version 4.0.5, which includes updates to the Catalyst voting registration for Fund4, and resolves minor issues.

Daedalus now features a search feature within dropdowns, wallet names in dialog windows, and wallet recovery phrase pasting.

Finally, the team fixed the automated testing setup.


This week, the team released Cardano Addresses v. 3.3.0, which enables the library to build with ghcjs. They also released off-chain metadata tools v. 1.0.0 (this tool was formerly known as cardano-metadata-submitter).

The team is now working on enabling multi-asset wallet migration, improvements to CI and the test suite, and development of multisig features.


This week the team continued testing the P2P governor and improved its livestock detection, shrinker, and bulk synchronization properties. They also tested local root peer connection and the coverage of connection manager simulation, implemented tracer and counter features within P2P components, and continued developing relevant documentation.


This week the team improved Nix flake integration with haskell.nix for the cardano-node and made some Bitte improvements to enable autoscaling Nomad deployments. They also worked on Catalyst enhancements by scripting reward payouts, limiting DoS rate, and setting up Android and iOS debug environments using mitmproxy. The team also performed multiple Catalyst dry runs.


This week the team inspected Alonzo dependencies prior to integration with the ledger. They continued working on Alonzo tests implementation by analyzing ways of creating specific transactions and refining mempool properties to handle transactions with scripts. The team also worked on Nix configuration code updates and formatting.

The team progressed with node tracing enhancements: the trace-forward library is now being tested for deployment, and the conversion of the old-style tracers using the new trace-dispatcher infrastructure is in the final stages of development.

Finally, the team prepared the transaction generator property to be included in the cardano-node repository, and progressed with the workbench cluster definition and automation stack development.


This week, the Plutus team added an optional configuration field ‘mscZeroSlotTime’, that if set, will start the slot count from that date, or use the current time as the beginning of slot 0. They also added a fixed transaction cost to the emulator and an optional timeout for endpoint calls.

The Marlowe team worked on a two-party escrow contract, integrated the wallet companion contract with the dashboard frontend, and implemented a view of running and historical contracts within the Marlowe Dashboard Client.

April 9, 2021


This week the team released Daedalus version 4.0.4, which introduces community-requested enhancements to the rewards screen. This screen now includes a rewards address for each of the wallets in Daedalus, which blockchain explorers can use to see a detailed delegation rewards breakdown.

Final testing and preparation for Catalyst Fund4 voting registration are now completed, and ready to be released on April 13th.

The team also finalized user interface designs for the upcoming multi-delegation feature in Daedalus, which will enable delegation of a wallet to multiple stake pools. UI designs will be presented to the community for feedback before implementation.


This week, the team released cardano-explorer version 1.5.0, which adds asset metadata to the token UI, enables searching for blocks by slot number, and fixes some display bugs. The team also released update v2021-04-08 for the wallet backend. This update contains API enhancements and several bug fixes.

Work is ongoing for enabling MA wallet migration, improvements for the CI and test suite, and development of multisig features.


This week, the team assisted with the latest node version (1.26.1) release and adjusted P2P master branches to align with it. They also helped delivering changes to cardano-api, continued working on P2P local root peer connections, worked with the TVar Eq constraint in io-sim-classes, and progressed with connection manager testing (extending the generator and simulation runtime to include application errors).

Finally, the team reviewed connection manager implementation and documentation.


This week, the team tested and deployed node version 1.26.1, worked on defrag-ops scripts to decrease the number of UTXOs in the Byron wallet, and performed dry runs for Catalyst Fund4.


This week, the team spent time synchronizing Alonzo rules implementation with the specification, worked on some Shelley types and functions reorganization, and started writing high-level unit tests for the new Plutus use cases. They also integrated mempool two-phase validation and Plutus TxInfo and CostModel properties with Ouroboros.

The team performed final 1.26.1 tag benchmarking, produced the comparative benchmark report, and investigated the divergence in epoch boundary CPU usage duration between the model and production deployments.

They continued working on the node tracing design documentation, trace-dispatcher integration, and implementation of the benchmark and resource stress testing of the trace and metric forwarder.

Finally, the team initiated the review and merging of the long-running benchmarking branch of cardano-ops into the master branch, and started improving equivalence between the Supervisord local cluster configuration and AWS deployment.


This week, the Plutus team fixed the cost model usage in the Plutus ledger API and updated the PLC specification. They also started working on an initial proposal for extended bytestring builtins.

The Marlowe team worked on the implementation and design of the Marlowe Run prototype. Additionally, they added a Marlowe companion contract and continued working on the Marlowe market contract templates.

April 1, 2021


This week, the team released Daedalus version 4.0.3. This new version adds multi-asset support, which allows users to send and receive native tokens on Cardano.

This release also includes the countdown to fully decentralized block production, support for Trezor devices with passphrases, the ability to view wallet public keys, and an improved CSV export process, along with some minor improvements and issue resolutions.


This week, the Adrestia team released cardano-graphql version 4.0.0 and also worked on several other tasks. Specifically, they worked on enabling multi-asset wallet migration, a new feature to return derivation paths of addresses in the list endpoint, metadata hashing before signing with the wallet key to support hardware wallets for Catalyst, test suite improvements to simplify and enhance QA, and also continued developing multisig features.


This week, the team assisted with the node version 1.26.1 release by exploring and resolving different issues. They also worked on the implementation of the local root peer feature within the connection manager, made progress on connection manager simulations, and added the MonadFix instance to IOSim.


This week, the team prepared for the Project Catalyst Fund4, performed troubleshooting and deployments within EVM/KEVM Mantis devnets, and tested and deployed the node version 1.26.1. Finally, they made improvements to the metadata server, and fixed some tls issues in the Daedalus development environment.


This week, the team finalized the integration of Alonzo rules with the ledger, investigated further rules integration with Plutus and consensus, and fixed some minUTxO value properties in Alonzo. The team prepared the first draft of the TxInfo documentation (which explains how ledger transactions are translated into the type formats that can be used by Plutus scripts), and also worked on the transaction-related ledger code.

The team continued working on the benchmarking of incremental computations in terms of performance properties, and introduced the status update on the periodic SPO call. They also completed the log forwarding protocol design and implementation, combined two new forwarding protocols (for traces and metrics) to provide a full forwarding demo application, continued node integration with the trace-forwarder, and finally, reviewed the documentation for the logging API design.


This week, the Plutus team continued working with Quviq on contract testing, and also updated the cost model benchmarking.

The Marlowe team worked on the implementation of running contracts in the Marlowe Dashboard client. Additionally, they updated the Marlowe market contract templates and worked on new logo designs.