Hi @g_dip sorry for the delay, happy to bring more clarity into the privacy implementation for Unsiwap : )
Incognito is a privacy sidechain for Ethereum. It allows you to anonymize Ethereum based assets and Dapps.
Three whales on which it is built Incognito Mode for Uniswap.
Communication between Ethereum & Incognito networks goes through a non-custodial, trust-less bridge.
It’s a two-way relay bridge that lets you transfer assets from Ethereum to incognito and vice versa. when someone converts ETH to pETH (private ETH), they aren’t swapping their asset with someone else’s. instead, ETH is locked in a smart contract and new pETH is minted on incognito. When the pETH are burned (to maintain a 1:1 ratio), the locking contract on Ethereum will verify the validity and unlock it upon submission of burn proof.
for example, you can convert 1000 “public” DAI (on Ethereum) to 1000 “private DAI” pDAI (on incognito) via Ethereum -> incognito relay. once you have 1000 pDAI, on the incognito chain, you can send 500 pDAI to Alice privately, send 300 pDAI to bob privately, and then convert the remaining 200 pDAI back to “public” DAI whenever you want via incognito -> Ethereum relay.
READ THE BRIDGE DESIGN
READ THE BRIDGE CODE
READ THE ZKP FOR MOBILE CODE
Any feedback is welcome.
READ THE PRIVACY STACK
Privacy for smart-contracts
After Incognito went on mainnet and the trust-less Ethereum bridge went live (Nov 2019) and we started work on bringing a privacy layer for Smart contracts.
Executing is the process of running a function call of an Ethereum smart contract anonymously. For example, running swap(pETH, pDAI) on Uniswap anonymously.
The following is an overview of the EXECUTE instruction flow:
- A user confidentially signs and sends an EXEC instruction from a pApp on Incognito, with information about which counterpart dApp on Ethereum they want to run and the parameters.
- The bridge forwards the EXEC instruction to the Broker smart contract.
- The Broker smart contract parses the EXEC instruction without revealing the user identity, verifies the parameters (especially the amount the user wants to spend against the user balance), and finally sends a message to a suitable smart contract via the encoded ABI.
An EXECUTE instruction contains the following parameters:
- The input token to spend on this transaction
- The input amount of input token to spend on this transaction, which should not exceed the user balance in the Broker smart contract
- The output token if the execution returns one
- The dApp contract address
- The encoded ABI of the target function of the dApp
- The timestamp of the transaction
- The signature on the combined data of the above parameters
READ pETHEREUM SPEC
READ pETHEREUM DEV TUTORIALS
Trade on Uniswap anonymously
pUniswap 1.0 is available in Incognito wallet.
What is next
pUniswap 1.0 is the first implementation and we are going to continue development in this direction. Our next milestones:
- Wrap privacy around Metamask
- Bring pUniswap in web
- Measure demand in privacy for Uniswap trades
- The main goal is: to bring Incognito mode for Uniswap main interface
Looking forward to community feedback.