nuAztec - Selective ZKP

We equip Aztec with selective privacy to allow sharing of transaction data with a set of public addresses that would otherwise only be visible to sender & Receiver with the help of NuCypher's PRE.

Carousel Gallery Item: 1
Carousel Gallery Item: 2
Carousel Gallery Item: 3

Last updated: 04 August 2019 04:25 AM

Created project

The problem nuAztec - Selective ZKP solves

Confidential transactions allow only the parties partaking in a transaction to be privy to the amount being transacted, outside observers are prevented from knowing this information.

  • What IF in an organization with various levels like CEO, VP, HR, Employees want to use confidential transactions with provision for selective view access to a group of people?
  • What IF in a closed auction using confidential transactions, once auction period is completed, the auction value must be revealed to a group of people?
  • What if Governments needs view access for Incometax returns calculation purpose of Crypto confidential transactions?

There are numerous use cases like mentioned above where confidentiality is required with Selective Access Control [RBAC] which is not possible with currect confidential solutions.

Selective-ZKP is a Decentralized platform for Role based access view of Confidential Assets created using Zero Knowledge Proofs. These Confidential Assets are created and transfered using Aztec Protocol. Participants uses Viewing Key to fetch the transaction Value of Note. With Selective-ZKP the visibility access to the confidential transactions can be dynamically and selectively shared by the owner of the confidential transaction.

Challenges we ran into

We ran into a lot of challanges while building the project. We have used Aztec and NuCypher protocols as part of our project. Some of challanges faced by us are listed below

  • while using Aztec protocol we observed errors when we send multiple confidential transactions using aztec-ganache-starter. After debugging, we found it is happening because for each confidential transaction sent, tokens are minted again. So sender balance was changed which caused the issue.
    We solved it by minting tokens when the application starts up. when confidential transactions are sent, they refer to initial minted tokens.
  • As there are many entities as part of the Nucypher network, it was a challange for us to manage all the nodes and setup the configuration. So we came up with a set of scripts that can be used by anyone to setup the network automatically and the configuration that was generated as part of network setup was stored in a json file by parsing through NuCypher logs.
  • As nuCypher had restriction on redecrypting we found a work around for that in our application as it was a crucial part our of project, we achieved that by reencrypting it after every decryption as that would create new message_kit that could be decrypted.

Thanks to Aztec and NuCypher team for their immense support, debugging and helping us out at all times.

Technologies used