One of our team members works in the supply chain industry and we wanted to tackle an actual use case that made sense. Dealing with sensor data from all over the world, we need a protocol for these sensors to reliably post encrypted data. People who are afforded the privilege can then verify things about this data.
What it does
Sensor uploads encrypted data on chain. Party can use a zk proof to verify data
How we built it
We created a sensor component which records data, a smart contract for storing the encrypted data, and then a dashboard for sending and viewing proofs. We mocked a sensor with our phone and are using the motion sensor to track the safety of a shipment. This sensor data is encrypted on the sensor using homomorphic assymetric encryption then kicked off to an API which pushes the data to the blockchain. The shipping company can then use zero-knowledge proofs to ensure to the client that that the shipment was not compromised (phone turned upside down) during the shipment.
Challenges we ran into
We initially tried to use Chainlink, but that proved too difficult. Then we tried doing all of the verification on-chain and we succeeded, but then failed since the gas costs were too high. Luckily for us, having the proofs on-chain was more of a desire rather than a necessity and the actual functionality works with that portion off-chain.
Accomplishments that we're proud of
Verified zero-knowledge proofs. Tackling a real life use case.
What we learned
Zero knowledge proofs are hard, chainlink documentation could use work, aztec protocol has some very useful solidity utilities.