June 26, 2020
Status Updates (June, 2020) > June 26, 2020
This week the team continued working on the upcoming Daedalus release for the Shelley Testnet, which will include delegation features and the ability to check your reward balance from ITN wallets. The team also implemented a new password strength meter feature, and many other smaller UI/UX improvements.
This week, the team reviewed the Docker image to make it minimal & self-contained, using static binaries produced by CI. The introduction of dynamic control parameters prompted the team to do some database clean-up and housekeeping work. The team revised API specifications regarding the listing of stake pools. The team considered keeping an identical API between the ITN and the HTN, but there are significant differences between Jörmungandr and cardano-node with regards to stake pools, so the API had to be changed. One endpoint (listing stake pools) needed to be changed. See this URL for more information.
The key changes are:
- Stake pools no longer return an apparent_performance metric.
- Stake pools are no longer ordered by desirability. Instead, they are ordered by non_myopic_member_rewards.
- Because of change #2, the endpoint now requires an explicit stake amount to be passed as a query parameter to indicate the intended stake to delegate.
- Metadata no longer contains a pledge_address, but does now contain an explicit pledge in lovelace.
The team discovered that the Get reward account balance from the local state query protocol request was causing problems. The request is relatively slow on the node's end, and tends to fail when switching from one epoch to another. The team is now working on installing some caching to get a more consistent behavior.
The team also continued working on debugging the integration test cluster. Extra loggers were installed to pinpoint issues when they occur. Stake pools were re-enabled in the integration cluster, which was necessary to observe specific things, such as rewards growing.
The team fixed an oversight in the endpoint that returns protocol parameters. The endpoint was returning parameters from genesis only, instead of refreshing them regularly using the local state query protocol.
The team monitored the chain to discover, parse, and extract stake pool registrations and the various details contained in registration certificates.
Work was also done on finalizing the listing of stake pools using the local state query protocol. Pools can now be listed and ordered based on a given indented stake amount. A few outstanding issues remain: Wiring together metadata, pools data from the local state query, and pools data discovered from the chain (cost, margin, etc.)
Finally, the team worked on a feature to automatically and asynchronously fetch metadata associated with stake-pools from remote servers. This is an interim solution until the stake pools metadata aggregation server (SMASH) is able to discover and serve metadata itself. Fetching is done one-by-one, with a strict timeout and a defensive client to prevent bad actors from denying cardano-wallet. The team also enabled the submission of already signed and serialized Shelley and Byron transactions through cardano-wallet.
The team updated the maximum ingress queue limits as they were too low for the Shelley testnet. They also implemented randomized chain-sync timeouts to avoid the simultaneous failure of peers disconnecting from each other if a block was not produced for sufficiently long.
The team is also making progress with enabling ΔQ measurements, and have an early integration with block-fetch logic. This will make the block fetch decisions from whom to download a block robust. Block fetch will be able to adjust itself to changing network conditions.
In addition, the team finished updates that are needed to restart mini-protocols and are integrating this with our new server implementation (based on a connection manager). We also wrote connection-manager tests: using QuickCheck and our simulation monad io-sim as well as tests which run uni- and bi- directional TCP connections.
Finally, the team carried out another review session of our network design documentation.
This week the team migrated shelley_testnet from version 1.14.0 to 1.14.1, and tested the MIR process to register ITN rewards on shelley_testnet. It's important to highlight that the team managed to restore everyone's rewards from ITN on shelley_testnet, which represents a huge milestone. The team would like to thank everyone involved in working with jormungandr, cardano-node, and cardano-wallet for making this possible, and so simple for DEVOPS to implement.
The team deployed version 0.9 of ITN and submitted a plan for the community to vote on whether or not to extend ITN rewards. Also, the team worked on integrating a local test cluster for fast epochs (minutes), usable for quick testing of the Daedalus integration.
Finally, the team made available a db-sync tool to extract relays and generate a public topology.json on explorer here. The team recommends to pick one or two from the list, rather than using them all on the same relay.
This week the team completed the historical stake pool performance calculations for both non-myopic rewards and stake pool rankings. An approximation of a probability distribution (a histogram), is now stored in the chain state, so that samples can be obtained. We will be updating the formal specification with these details shortly.
The team also worked hard to put a considerable amount of benchmark tests in place, and have used them to fix several performance issues.
In addition, they worked on Byron address support in the ledger and finally, completed the VRF implementation which now offers some testnet performance improvements.
This week the Plutus team worked on providing the ability to create dynamic slot ranges for users who are writing smart contracts. These slot ranges can control what contracts execute, for example, a user could create a ‘Time To Live’ field for a contract, so that it executes if something has not happened in the last 10 slots from the current time.
The team also applied a fix for potential runtime errors when the blockchain rollup cannot find a reference. Finally, the team added 'Examples.Data.Vec’ in Plutus Core to show how Church- and Scott-encoded vectors are represented.
The Marlowe team added a first version of a new wallet simulation tab to the Marlowe Playground. This tab enables users to see what features a wallet needs so that it can run Marlowe contracts and how a contract behaves between multiple wallets.