Skip to main content

2024-02 Devnet v0.1.0 release notes

19 February 2024

Midnight is a regulatory-friendly data protection-based blockchain that safeguards sensitive commercial and personal data, protecting fundamental freedoms of association, commerce, and expression for developers, companies, and individuals. Midnight utilizes a novel data protection-first programming model and zero-knowledge (ZK) proofs while operating as a Cardano partner chain.

Overview

This devnet release is Midnight's first public alpha version, which is being made broadly available for the developer community. We aim to solicit the community's feedback about Midnight's technology and development progress. It is one of many iterations of the functionality on the roadmap to Midnight mainnet.

These release notes present the core features of Midnight that are being made available at this time and list some of the known issues our team has mapped and is working to resolve. We will use Midnight's to update the community on resolutions and any new issues we find.

NOTE: the previous version of Devnet, 0.0.2, will be deactivated after this new devnet release, and Midnight's documentation docs.midnight.network has been updated to reflect the new version. Communication of Devnet 0.0.2 sunset will be issued via Midnight's Discord.

Impacted Users

These release notes apply to all Midnight devnet users.

Impacted Components

ComponentVersionChange/impact
Blockchain0.2.0Stabilization upgrade, bug fixes
Pub-sub indexer1.0.5Stabilization upgrade
Wallet (Lace)1.1.0 (App), 3.5.5 (Engine), 3.3.1 (API)Midnight Native Shielded Tokens
DApp connector1.1.0Common prover and balance methods
Proof server2.0.7Bug fixes
Compact compiler0.9.2Support to Midnight Native Shielded Tokens
Visual Studio plugin0.2.12Accompanying Compact language updates
Faucet0.6.1Initial release

Additional Resources

Developer support

The Developer Relations team can be reached through Midnight's Discord channel, where further communication about community engagement will be made.

Documentation

Midnight documentation is accessible at devnetdocs.midnight.network/docs/ and is regularly updated. In case of suggestions, questions, or requests, please contact the Developer Relations team on Discord.

Social Channels

What is new in this release?

New Features

  • This is an alpha version of Midnight, which is open to all developers.

  • Build data-protection smart contracts using the Compact language and Compact compiler. Generate JavaScript, cryptographic materials, and circuit descriptions needed by the proof to create the ZK proofs that enforce the terms of a smart contract while shielding the users' private data.

  • Store, manage, and interact with Midnight assets and decentralized applications (DApps) directly within the Google Chrome web browser using a Midnight alpha version of the popular Lace wallet exclusive for Devnet.

  • View and manage listed Midnight Native Tokens in their Midnight Lace Wallet.

  • Pay for transactional costs and move value peer-to-peer using shielded tDUST tokens (tDUST is a test token used for Midnight devnet testing purposes only.

  • Create ZK proofs and perform ZK computations using the local proof generator software to facilitate the submission of transactions and proof data from clients.

  • Index the Midnight blockchain data to support wallet and DApp functionality using the pub-sub indexer to query data directly from the ledger.

  • Write Midnight DApps in TypeScript and Compact DSL code supported by the Visual Studio Code plugin.

Bug Fixes

  • PM-7595 - The wallet history shows only transaction fees to preserve the confidentiality of the transaction. Other visualization methods will be made available in the future.

  • PM-7815 PM-7830 PM-7826 PM-7790 - The following error messages or behaviors of the wallet require the user to resync the wallet by using the resync button next to the syncing status in the menu:

    • The wallet locks funds when an error happens after a transaction is balanced/built but before it is submitted.

    • When a 'Not sufficient funds' error appears, and no errors are present in the node logs, it might be the wallet locking funds due to an error before submitting a transaction.

    • When a 'Wallet was not synced. Connection was lost' error appears, it might be because the wallet is locking funds due to an error before submitting a transaction.

    • The wallet locks funds when a valid transaction is submitted but fails to execute in the node.

  • PM-7832 - The wallet displays a popup indicating that it cannot 'fetch ADA price'. When this occurs, the user can close this message and proceed further. Ada is not a token available for use on the Midnight devnet.

  • PM-7820 PM-7817 - The following error messages or behaviors of the wallet require the user to create a new wallet:

    • RuntimeError: unreachable at wasm

    • Not sufficient funds to balance token

  • PM-7594 - When the headless wallet is stopped, it might show an error saying node:events:495 throw er; // Unhandled 'error'. It's an internal abrupt close of connection, but nothing is wrong. Users can ignore this message.

  • PM-7593 - When the headless wallet connects to the pub-sub indexer, it might fail with error message java.security.SecureRandom is not supported on this platform because it provides neither 'crypto.getRandomValues' nor Node.js 'crypto' module.' The users should apply the following workaround:

Unset
import { webcrypto } from "node:cryptou"; // \@ts-ignore
global.crypto = webcrypto;

Enhancements

  • Increased stability for all components.

  • New blocks are produced every 6 seconds.

  • Users are now able to implement, visualize and transact with different shielded token types.

Known issues

ItemIssue
PM-8694Wallet Native tokens missing after resyncing or restoring wallet. When that happens, users are required to mint new tokens.
PM-8523Pubsub Missing block height number validation before querying. This should not impact users.
PM-8476Wallet Deploying contract error after increasing wallet balance. In case of insufficient balance, users should increase wallet balance, resync their wallet, then redeploy the contract.
PM-8199Compactc Compiler might not add a trailing slash to COMPACT_PATH. Users should add the trailing '/' at the end of the variable, if not using the provided wrapper script.
PM-8135Faucet Error messages are ambiguous in case of insufficient balance or invalid address. Users should ensure a valid wallet address is entered (e.g. by copy and paste from Lace Wallet), and try again after a few minutes.
PM-7843Welcome DApp DApp halts if invalid contract address is set. Users should end the current CLI DApp instance and start a new one ensuring to use a valid Contract Address.
PM-7798Faucet Previous error message remains visible while processing request. Users can ignore the message and proceed.