Status Update

April 30, 2021

Status Updates (April, 2021) > 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.