Blockchain technology is all about transparency and decentralization. It's about distributing information across a network of peer nodes, which renders the system resistant to adversarial behavior.
But here lies an interesting conundrum. While transparency is one of blockchain's design principles, how can data confidentiality be maintained, when the information is, by design, visible to hundreds, even thousands of nodes? This problem is particularly relevant to smart contracts, which often handle sensitive data and create metadata that can also be correlated to reveal other sensitive details.
Data protection in blockchain: the great conundrum
Today, developers have several options at their disposal, often involving cryptography, to support data protection in their smart contracts. While some of these techniques satisfy some definitions of data integrity, they may require an over-reliance on trust assumptions, which may limit the achievable level of decentralization, resulting in an undesirable tradeoff.
To address this challenge, Midnight introduces smart contracts that enable maintaining users’ and organizations’ data confidentiality without sacrificing decentralization. Midnight smart contracts also provide app builders with programmable protection so they can remain compliant with regulations. This blog explores Midnight smart contracts, offering a high-level overview of the protocol.
What are Midnight smart contracts?
Midnight smart contracts offer a data-protecting solution that enables developers to achieve data protection and general-purpose smart contract functionality without sacrificing decentralization characteristics. Midnight contracts leverage the principles laid out in the Kachina: Foundations of Private Smart Contracts paper.
Replicated v reactive state machines
Resolving the confidentiality conundrum in the context of blockchain and smart contracts requires a solution that achieves confidentiality guarantees while preserving decentralization and avoiding additional trust assumptions.
Other blockchain networks typically implement smart contracts as replicated state machines, which means that the natural model is that of the state machine itself. This further means that inputs are drawn from a ledger of transactions and passed to this state machine.
Such implementation has a major drawback from a confidentiality perspective. If the state machine's behavior is known and the inputs are on the ledger, confidentiality is non-existent. To resolve this problem, Midnight models smart contracts as a more holistic state machine, including a user’s local system, only part of which is replicated by submitting transactions to a distributed ledger (the Midnight blockchain in this implementation). The smart contract functionality simply tracks the identifiers' corresponding inputs.
The uniqueness of the Midnight smart contract protocol
Midnight offers a practical protocol for realizing infinite data-protecting smart contracts, utilizing succinct non-interactive zero-knowledge proofs (ZK Snarks), which enable one party to prove to another that a certain statement or claim is true, without revealing the contents or sensitive data behind that statement.
The protocol makes four key contributions to data-protecting systems:
- Creation of data-protecting smart contracts
- Realization of a large class of such contracts
- Enablement of concurrent interactions with smart contracts, without compromising on data confidentiality
- Demonstration of a general methodology to efficiently and composably build smart contract systems.
The protocol's core idea is to separate a smart contract’s state into two parts: a shared, on-chain, public state (the public blockchain), and an individual, off-chain, local state for each contract party.
In this context, ‘state’ refers to the current data or information stored within the smart contract. State represents the values of variables, storage locations, and any other relevant information that is necessary for the execution and functioning of the smart contract. The state can include the fact that an action has been completed or not.
In Midnight, the contract itself can update both the public state and the private state simultaneously. Contract parties use zero knowledge to create a proof that the change of the public state is valid, while maintaining a private state and an input for this transition. The protocol then posts the proof and the transition as a transaction. When a user initiates a transaction, they intend to issue a high-level command to the smart contract (casting a vote or withdrawing funds, for example). After the ledger confirms the transaction, the user receives information about the outcome of their command and any computed results based on the contract's current state.
How does Midnight enhance the efficiency of smart contracts?
From a user perspective, Midnight enhances the efficiency of smart contracts through concurrency. Concurrency refers to the ability of multiple actors to perform tasks simultaneously without blocking each other. This supports increased throughput and efficient transaction and smart contract processing. To enable concurrency, Midnight utilizes transcripts that record the operations performed on the contract's state and interact with queries. By optimizing conflicting transactions and allowing for reorderings, Midnight minimizes information leakage while maximizing concurrency.
Excellent developer experience
Data protection and regulatory compliance are two of the most important design concerns for smart contract creators, and the companies deploying the contracts. Providing developers with a solution that addresses and resolves these issues represents a key differentiator for Midnight.
From a developer experience perspective, using Midnight to create DApps and smart contracts means easy integration of zero-knowledge proofs. In a wider context, Midnight offers an innovative programming model that simplifies the development process. Using TypeScript libraries and Midnight’s domain-specific programming language, developers can develop smart contracts that are based on the Kachina protocol.
In addition, a plug-in for Microsoft VS Code allows developers to seamlessly work with the Midnight blockchain. The Midnight SDK provides all the necessary tools to build and run software, including the compiler and runtime, as well as a mocked node, CLI wallet, and example projects.
Overall, Midnight offers a powerful environment for developers to create data-protecting smart contracts with ease, providing the necessary tools to build and run software and allowing for seamless integration with the blockchain.
Potential use cases
The Midnight smart contract model may be applied to a wide range of use cases, including traditional finance (TradFi) and decentralized finance (DeFi) applications, identity management, supply chain management systems, healthcare applications, and many more.
Data protection is the heart of Midnight. The safeguarding of sensitive data, both personal and commercial, using blockchain and cryptography based technologies.
This data protection-first philosophy will support an environment that not only preserves confidentiality, but also protects three fundamental freedoms: association, commerce, and expression for developers, companies, and individuals.