The proposal is for collecting feedback for the appropriation. If the vote passed, we will start to work on the first milestone. If it is not passed, the proposal will be discussed and adjusted.
Date of proposal: 2020-06
We want to build a decentralized dark pool on KUSAMA with all infomation encrypted and stored in a decentralized network. Everything in the dark pool is invisible โ accounts, order book, order history โ except your own orders.
The dark pool is built on Phala Network confidential smart contract. While the inputs, outputs, and the states are encrypted, the execution can still be verified by anyone. The dark pool allows users to trade with confidence, but without exposing any sensitive information.
In general, the protocol is based on TEE-Blockchain hybrid archetecture to help process the encrypted contract data. To further reduce the attack surface, while the order matching happens inside hardware enclaves ephemerally, the persistent assets balance can be protected by ZKP-based private token technology. This combination can achieve a good balance between utility and security.
The protocol has two major subsystem: Private Assets, and Confidential Trading Engine.
The Privite Assets subsystem manages the conversion of external assets and the assets used in the dark pool in a privacy-perserving way. It interacts with the Confidential Trading Engine by allowing transferring assets between the two subsystems.
The assets come from other blockchains (e.g. KSM from Ksuama relaychain, ACA from Acala parachain). They are not natually confidential. To ensrue the confidentialy of deposit and withdraw, we should have a protocol to convert between non-confidential external assets and confidential assets in some way.
A straightforward idea is to deploy an ERC-20 like smart contract as a confidential smart contract in Phala Network (i.e. in TEE). In this case, we can deploy a pallet to accept token deposit, and at the same time add the same amount of the token in the confidential contract in TEE, and vise versa. In the confidential contract, we allow token transferring and withdraw. The transactions are all encrypted. Therefore it preserves the confidentialy.
However, by using TEE, it implies the trust of the hardware, which is arguablely a compromise of decentralization. It's also arguable that a state-level adversary could potentially break the confidentiality. So in this design, we make the Private Assets a standalone and pluggable component, which can be replaced by other solutions.
One solution to the security concern of TEE is to utilize zero-knowoledge based protocol. Zerochain and Suterusu are both Substrate based ZKP private assets protocol. They both support assets deposit and withdraw, and fit the exact same requirements of Private Assets subsystem. The security of ZKP-based protocol are based on mathematic assumptions, which are much stronger than hardware.
Though ZKP-base solutions can offer sufficient security, they are usually incapable of building an decentralized dark pool because it's necessary to share confidential data among untrusted parties. Secure MPC is a pure cryptographic technology for this issue, but it has millions times performance overhead. Phala Network's TEE-Blockchain hybrid architecture can offer a good balance.
The interoperability between ZKP-based token protocol and TEE-based Confidential Trading Engine is feasible. It's a common practice to encrypted the transactions on the blockchain in a ZKP-based token protocol. To interoperate with the TEE-based subsystem, an ephemeral wallet in the TEE can be generated as the deposit address. Then the dark pool contract watches the blockchain and knows when it receives any incoming transactions. To withdraw from the dark pool, it simply creates a regular transaction and post it back to the blockchain.
Confididential Trading Engine is similar to a decentralized exchange. Assets can be deposited or withdrawed from it. It maintains an order book. Whenever a user puts an order in the exchange, it's added to the order book and the pool will try to match it with the existing orders. The difference is that everything except your orders are confidential โ you cannot get the other order history, the order book, or the historical price in any way.
Kusama is a great place to hack with cross-chain composiability.
Being a part of Kusama ecosystem, it gets access to all the assets on Kusama. Not like Ethereum who can only trade ERC20 tokens, on Kusama we can access coins (BTC), native token (KSM), external tokens (ERC20 from ETH bridge), and parachain native tokens (ACA, PLM).
Our design requires a subsystem to manage all the assets (Private Assets). It's supposed to be a pallet, and then deployed as a parachain. Having a single place to manage all the assets can benefit not only this specific use case, but even more developers who want to integrate their DeFi projects with Kusama. A simple scenario: suppose a multi-chain custodial wallet wants to accept assets in Kusama, instead of integrating with all the parachains, it can just connect to this single "assets hub". The pallet can even be deployed to Kusama relay chain in theory.
Comprate with Polkadot, Kusama is a better place to experiment innovation ideas. The parachains are not so expensive, and new community-driven pallets can also be added to the relay chain potentially.
We want to explore a novel collaborative pattern
We described a roadmap to build a dark pool, and truly believe that it can only be done in Kusama ecosystem. However, it doesn't mean we can or should build it end-to-end. Phala team is good at devleoping TEE-based infrastructure and applications, but that's just a part. To make the final product a success, there are a few other necessary conditions:
So here we call for the community developers to join the effort to make the first-ever dark pool a real product.
Support from the Kusama community
Of course, we would like to apply for Kusama tresury. In return, the Private Assets pallet will be built as a parachain (or a relay chain pallet), and it will be the unique assets gateway of the dark pool.
Note that the dark pool is built on Phala Network, which could be a standalone Substrate blockchain, a Kusama parachain, or a Polkadot parachain. Phala Network provides the basic security of TEE environment, but it's irrelevant to the dark pool business logic. The dark pool will always commit to Kusama as the assets are on Kusama.
See the proposal application on Hackmd document for details.
Cybex team has developed a dex demo. The dark pool trading engine and Web UI will be based on this:
Phala Network team has devleoped a confidential contract testnet. Phala is the infrastructure layer for confidential computation:
The following milestones are listed in a rough order. Some of them can be done in parallel, and some depend on other tasks. Depending on the progress of ZKP-based Private Assets module, the path might be different.
M1-1: Private Assets
M1-2: Private Assets (ZKP)
M2: Basic dark pool exchange in confidential contract
M3-1: Cross-chain assets integration
M3-2: Assets custody gateway integration
M4: Productionalize ($10k)