Status Updates
March, 2019
March 29, 2019
Weekly Development Report
DAEDALUS
Wallet
This week the team implemented system location detection, to be used upon initial Daedalus launch to present the interface in the appropriate language, with English and Japanese languages currently supported.
The text shown on the 'Support' screen has been updated to reflect the removal of the in-app support request feature. Users are now expected to submit their support requests through the IOHK support portal web form. The updated text instructs the user to download and attach Daedalus logs to the web form manually, and to help with this the team has added a 'Preparing logs for download' notification which is shown during log file compression before the logs are saved to the hard drive.
The team has also nearly finished the implementation of a new 'Wallet's UTXO distribution' screen, with code changes under final review and test.
In the scope of regular maintenance tasks, the team has carried out a significant code cleanup, which has removed all linter warnings from the Daedalus codebase.
App Platform
This week the team completed the Docker execution engine, as well as collaborated with the Plutus team to refine the emulated wallet API and off-chain HTTP interface. The latter establishes a network communication channel between the trusted control process and the untrusted execution environment. The project is now being formalized as the smart contract backend and dockerized in an effort to produce a dev tool for dApp developers, and later to also form a hosted production stack. Work on the chain observation and triggers service also begun.
BACKEND OPTIMIZATION
Following the introduction of a new agile development process, the team has successfully created an initial 'pre-release' version of the new wallet backend. It's still in the early stages but combines a lot of the fundamental functionality the team has been working on for the past few weeks.
Elsewhere, engineers have started integration work with testnet and mainnet to make sure the various low-level building blocks are fitting nicely together. In the process, the team restored a wallet using a sequential address scheme similar to BIP-44, with enormous improvements in memory allocation and time elapsed compared to the current legacy implementation.
Work has started on translating the API specification document into concrete Haskell types which can be used to create both a wallet backend web server and a command-line interface to interact with Cardano random (current Daedalus) and sequential (Yoroi/Icarus) wallets!
NETWORKING
The networking team has been working on version negotiation for the multiplexing layer this week, and has started writing high-level convenience interfaces for the network layer. Engineers also reviewed the block-fetch logic responsible for downloading blocks from peers which headers diffused through the chain synchronization mini protocol.
The team is happy to announce that the Byron proxy, responsible for connecting old Byron nodes with new Shelley nodes, is now capable of downloading blocks from a Byron node and echoing them through the chain synchronization mini-protocol over TCP. Steady progress has also been made on writing a technical specification of the network layer and its design.
DEVOPS
Continuous Integration
The team continued work on integrating nix-tools with the new repositories, including cardano-shell and plutus.
Cardano 1.5 Release
The team worked with QA and the release manager on various release activities, and mainnet was updated this week. Engineers also worked on a 1.5.1 hotfix to fix a migration issue affecting wallets with spending passwords that occurred when migrating from an older version.
Monitoring
The team continued the migration process to a new set of monitoring tooling. Engineers are working on upstreaming their changes to NixOS for Prometheus 2. The team expects to have a working environment by the end of the week.
CARDANO DECENTRALIZATION
Research and Design
The team and researchers reviewed the specs for the chain-level validation and operational key certificates.
Development
Integration of various parts of the implementation is progressing. It should soon be possible to validate the existing blockchain in the new code base, which is an important milestone in the transition from Byron to Shelley. The on-disk storage system is nearing completion. A part of the team has researched the in-memory representation of the UTXO, looking for potential optimizations.
GOGUEN
This week the Plutus team worked on updates to the Plutus Core specification and on preparation work for multi-currency support in Plutus Playground. Work was also completed on improving error messages and user interface problems. The Marlowe team have been busy working on the design for Meadow in the cloud, as well as a zero coupon bond example.
Work continued on content creation for the Marlowe educational materials and plans for the Plutus training courses and other assets.
ANNOUNCEMENTS
IOHK is currently looking for talented people to work with us. Please see the IOHK Careers page for more details.
March 22, 2019
Weekly Development Report
DAEDALUS
Wallet
Work to implement status icons on the connecting/loading screen has been completed, providing users with more information about the status of the connection and improving the overall user experience.
The team is working on a new screen named 'Wallet's UTXO distribution', which will allow users to examine their wallet's histogram of the distribution of UTXOs with different amounts of ada. The goal of this new screen is to make users more familiar with UTXO accounting.
Next on the list is the implementation of system location detection, which will be used upon initial Daedalus launch to present the interface in the appropriate language (only English and Japanese will be supported initially).
In the scope of regular maintenance tasks, the team has implemented a tool which enforces code formatting rules to ensure that all code changes conform to best coding practices.
The team has also implemented a handler for an invalid TLS certificate error. If this occurs, users will get an error message on the 'Connecting' screen instructing them to restart Daedalus to resolve the issue.
App Platform
This week the team refined the smart contract backend design to include: contract state management to suit off-chain network propagation and crash recovery, a UTXO observer, and a module to run 'triggers' based on conditions such as UTXO set changes. A Docker-based execution engine was also scoped to provide a runtime for development scenarios, but can later be considered a production execution engine for container-hosting scenarios.
BACKEND OPTIMIZATION
The team spent most of last week setting up a new repository and getting started with a new agile development approach. This week, engineers have ported and reviewed a lot of the fundamentals required to implement various aspects of the wallet backend, such as manipulation of mnemonic phrases, sequential address derivation, and address discovery. Meanwhile, other members of the team finalized the first instance of a network layer which allows the wallet backend to connect to another chain producer process. It relies, for now, on the cardano-http-bridge, and other targets (such as Shelley nodes) will be implemented soon.
NETWORKING
The networking team has started work on some high-level, convenience
interfaces for the library. Engineers began by preparing a low-level interface for running a multiplexing layer, and on top of that will implement node-to-node and node-to-client interfaces.
The team has been working on versioning in the multiplexing layer, which involves a tiny protocol which runs initially to agree on protocol versioning. Engineers have also added the chain-sync server (of the chain-sync protocol) to the Byron proxy.
Last week, the team received an initial review of the ΔQ computations that are used in the block fetch logic, and have also been making progress on ΔQ and its interface.
Finally, the protocol documentation received a number of updates and explanations. All mini protocols are now documented, the protocol pipelining is explained, and we have CDDL definitions (Concise Data Definition Language) for codes implemented for various protocols.
DEVOPS
Continuous Integration
The team continued work on integrating nix-tools with the new repositories, including cardano-shell and plutus.
Smart Contracts
The team completed the review and documentation phase of IELE integration with iohk-ops.
Cardano 1.5 Release
The team worked with QA and the release manager on various release activities. The public testnet was deployed, along with an updated proposal for the community to start testing the Cardano 1.5 release. Testnet installers can be found on the testnet page: https://testnet.iohkdev.io/cardano/get-started/testnet-wallet/.
The mainnet will be updated this week.
Monitoring
The team started a proof-of-concept migration to new monitoring tooling. This is in anticipation of providing similar tooling to stake pool operators to monitor their nodes post-Shelley release.
CARDANO DECENTRALIZATION
Research and Design
Some subtleties in the rewards distribution function have been discussed amongst the team this week, and the specs for the update mechanism have been updated.
The chain level spec for Praos is nearing completion. It still needs some prose, and a couple of details need to be checked with the researchers.
The document that describes non-integral calculations in Shelley has been completed. The team also started using criterion to write benchmarks for the Haskell implementation thereof.
Development
Lots of integration work this week: continuing the integration of network and chain code, of validation code for the existing chain with the cardano-shell, and of validation rules (executable spec and concrete implementation) with the consensus layer.
Some work has been done on implementing the update mechanism.
Progress has been made on various storage subsystems: the ledger DB, immutable DB, and volatile DB.
GOGUEN
This week the Plutus team worked on some tutorial content and made updates to the sample scenarios available in Plutus Playground, and preparatory work was carried out for improved testing within the playground. The Marlowe team are busy working on the design for Meadow in the cloud, as well as updates to Marlowe semantics for translation to PureScript. Actus use cases are also being reviewed and integrated into Marlowe.
Work continued on the content creation for the Marlowe educational materials, and plans are being confirmed for the Plutus training courses this week following the delivery of the class in Ethiopia.
ANNOUNCEMENTS
IOHK is currently looking for talented people to work with us. Please see the IOHK Careers page for more details.
March 15, 2019
Weekly Development Report
DAEDALUS
Wallet
This week the team fixed a data loading issue which sometimes caused Daedalus not to show all wallet transactions if a user had put their machine into sleep mode, or if the Cardano node had been manually restarted.
The team is almost done with implementing status icons on the connecting/loading screen which will provide more information to users about the status of the connection, improving the overall user experience. The code for this is in the final review and testing phase.
In the scope of regular maintenance tasks, the team updated the 'Support' screen text, which was outdated after the removal of the in-app support request feature. Also, a minor defect which caused 'Staging' and 'Testnet' Daedalus instances to create an empty 'Daedalus' state directory has been fixed.
App Platform
This week the team started working on a client-side smart contract execution example and a server-side WASM execution engine with an adaptor. The production modules are being developed using the proof of concept as a reference and source. These modules are being grouped under the 'smart contract' namespace.
BACKEND OPTIMIZATION
The team has started work on a new wallet backend implementation based on the wallet specification, which will eventually become the backend for Cardano, with support for delegation and the ability to communicate with both Rust and Haskell nodes. To begin with, the engineers have set up a new repository with a wholly revised continuous integration server.
The team has also begun using a new development process, embracing an agile method known as extreme programming, which emphasizes short iteration cycles with frequent releases.
The first work on the new wallet backend involves rebuilding essential wallet functions without dependencies on legacy code and taking the opportunity to make testing a high-priority part of the development process.
NETWORKING
Last week the networking team the finished tx-submission protocol. This is a significant milestone, marking the completion of all mini-protocol implementation and testing. Work has also resumed on writing block-fetch logic, which is responsible for fetching block bodies whose headers have been announced from a set of available peers. The team has also been working on version negotiation and exception handling in the low-level multiplexing layer. Engineers also helped out with work on iohk-monitoring-framework and managing an immutable DB from the consensus layer.
DEVOPS
Continuous Integration
The team completed work on integrating nix-tools for cardano-chain and iohk-monitoring-framework, and work continued on integrating nix-tools with the remaining new repositories cardano-shell and plutus.
Smart Contracts
The team continued review and documentation of IELE integration with iohk-ops.
Cardano 1.5 Release
The team worked with QA and the release manager on various release activities. The public testnet was deployed, along with an updated proposal for the community to start testing the Cardano 1.5 release. Testnet installers can be found on the testnet page: https://testnet.iohkdev.io/cardano/get-started/testnet-wallet/
CARDANO DECENTRALIZATION
Research and Design
The team made good progress on the chain level specification for Shelley this week. We now have both a Haskell and a C reference implementation for the non-integral calculations in Shelley, with documentation, tests, and performance metrics. This is a subtle point that needed special care: had we resorted to standard floating point calculations, we would have risked forks due to small differences between different platforms, languages, or compilers. To prevent that, we are planning to use fixed-point arithmetic.
Development
A proof-of-concept integration between the network layer and cardano-chain has been started, which will provide blocks to the wallet from the network/chain layer. Progress has also been made on various aspects of the storage layer for Shelley, and on integration.
GOGUEN
This week the Plutus team continued to work on several security improvements as well as updates to the signature implementation code. Some members of the team were planning for the Plutus training next week in Ethiopia. The Marlowe team are busy working on the design for Meadow in the cloud, as well as updates to new Marlowe semantics. In addition, Actus use cases are being reviewed and integrated into Marlowe.
Work has started on the content creation for the Marlowe educational materials and plans are being confirmed for the Plutus training courses this week.
ANNOUNCEMENTS
IOHK is currently looking for talented people to work with us. Please see the IOHK Careers page for more details.
March 8, 2019
Weekly Development Report
DAEDALUS
Wallet
This week the team fixed an NTP service handling issue which caused Daedalus to falsely show an NTP error screen for a few moments every thirty minutes. This is the final fix the team prepared for the upcoming Daedalus 0.13.0 with Cardano 3.0.0 release.
The team is implementing status icons on the connecting/loading screen which will provide more information to users about the status of the connection, improving the overall user experience.
The team also completed some work to reduce application build time, and the application now builds twice as fast as before. Engineers have also improved application test coverage by implementing acceptance tests for the ‘Having trouble connecting/syncing?’ notification display and ‘Network connection lost - reconnecting…’ screen.
App Platform
This week the team completed a smart contract prototype, gathered feedback from the Plutus team regarding the API and script execution, and planned the transition into a production-ready offering. Major pieces completed include the implementation of an HTTP proxy to route GraphQL requests to an internally mapped server for the contract, finishing the JS client-side library to sign transactions based on the script engine, and the initial setup on Plutus support.
BACKEND OPTIMIZATION
This week the team has been focusing on broader reading around the BIP-44 specification to ensure that they can implement the best possible equivalent for the wallet backend. The team has also been working on an initial prototype of a new wallet backend which is free of dependencies on the old code base, supports delegation, and will be able to communicate with both Rust and Haskell nodes. This work is still in the early stages, however.
NETWORKING
This week the team made changes to the cardano-sl repository which allow the use of the iohk-monitoring framework. Engineers also implemented the block-fetch mini protocol: a pull-based mini protocol for downloading bodies of blocks whose headers have already been announced through the chain-following protocol.
The team also wrote a test suite for the multiplexing layer and implemented a channel which will handle data from a mini-protocol to the multiplexing layer.
DEVOPS
Continuous Integration
The team completed work on integrating nix-tools for cardano-chain and iohk-monitoring-framework, and continued work on integrating nix-tools with the new repositories, including cardano-shell and Plutus.
Smart Contracts
The team continued combining IELE and KEVM testnet deployments into iohk-ops to consolidate and simplify deployment strategies. The work was completed this week and is now in the review and documentation phase.
2019 IOHK Summit
The team made some improvements to adaPay based on feedback from end users.
Cardano 1.5 Release
The team started the release process for Cardano 1.5.
CARDANO DECENTRALIZATION
Research and Design
This week the team finished investigating how to implement a block consolidation mechanism for OBFT, as well as exploring how to manage the hard fork mechanism which will be required as part of the transition from Byron to Shelley.
Development
The team completed work on OBFT block generation and validation work this week, and are currently testing OBFT performance when completely independent from the old code base.
GOGUEN
This week the Plutus team worked on some security improvements and updates to the signature implementation code. The Marlowe team were busy with design work for Meadow in the cloud, as well as updates to Marlowe semantics and plans to expand the test suite.
Good progress was made on the outline plans and content for the Plutus and Marlowe educational materials which will be delivered in a phased approach over the next few months.
ANNOUNCEMENTS
IOHK is currently looking for talented people to work with us. Please see the IOHK Careers page for more details.
March 1, 2019
Weekly Development Report
DAEDALUS
Wallet
This week the team finished work on implementing performance improvements for the rendering of large lists of transactions. Daedalus is now able to render any number of transactions without affecting performance.
Work continues on routing logic improvements, which should fix some potentially unhandled routing edge-cases.
App Platform
This week the team worked on a prototype for the Cardano smart contract API, execution engine, and a client-side library to query the API over https/wss. The client subscribes to requests for transaction signing based on the keys in the local key store, providing a way for contracts that are running externally to prompt a user for authorization.
BACKEND OPTIMIZATION
The team has been focused on debugging and fixing known issues with the address derivation à la BIP-44. In doing so, we've strengthened our integration tests, and made a few API details nicer. In the meantime, we are working towards improving the logging on the wallet backend to get better debugging, even after the release.
NETWORKING
The network team has finished asynchronous exception handling in the simulator monad, which allowed us to write async API for thread-handling. This is an important improvement that allows writing code using an established and simple API for both a simulation environment and real I/O. This will result in a simpler and more robust test suite. The developers updated the chain-sync protocol together with its codec to the new typed-protocols package that the team is using (and developing) for expressing protocols in a typed way (a session types framework with support for protocol pipelining). The developers also rewrote the block-fetch protocol using the typed-protocol package. The block-fetch protocol is responsible for downloading block bodies from a peer that announced its headers in the chain-sync protocol. Additionally, the multiplexing layer to the new typed-protocols package was updated. It was simplified and we added support for local pipes. Furthermore, the team has been working on Cardano SL support for the Byron proxy and are now able to use it as a library dependency. Steady progress has been made on documenting the protocols and requirements for the Shelley release of the networking layer.
DEVOPS
Continuous Integration
The team continued to work on integrating nix-tools with the new repositories, including cardano-shell and cardano-chain, iohk-monitoring and plutus.
Smart Contracts
The team continued combining IELE and KEVM testnet deployments into iohk-ops to consolidate and simplify deployment strategies. This work is slated to be completed by the end of the month.
IOHK Summit 2019
Successfully launched a service to receive transactions for the summit using adaPay. Monitoring is configured using open source tooling that will be spread across our other deployments.
Cross Compilation
The team completed cross compilation for Daedalus and added international language support to the installer.
CARDANO DECENTRALIZATION
Last week, development was under way and work continued across various workstreams. The team is working hard to meet the deadlines for implementation and deployment.
GOGUEN
The team is busy with development efforts for Plutus and Marlowe, including improvements to both Plutus Playground and Meadow, the Marlowe emulator.
Preparatory work is continuing on some online educational materials. These will be delivered in stages over the next few months.
Work is continuing on the research paper submissions for multi-assets and chimeric ledgers. The team is still working on delivery timelines and an integration plan for Shelley.
ANNOUNCEMENTS
IOHK is currently looking for talented people to work with us. Please see the IOHK Careers page for more details.