project screenshot
project screenshot
project screenshot
project screenshot


zkTrace is a privacy supply chain protocol that uses zk proofs and merkle trees to leverage on privacy. It combines blockchain for trustlessness & zero knowledge to provide safe & confidential business processes, correctly order events and increase work flow at no cost (gasless).


Created At

FVM Space Warp

Project Description

Unlike other systems, zkTrace is built to have the frame of reference immutable and resistant to tamper once the state (handshake) has been established.

First, we make reference to the Buyer system and the Supplier system and before each transaction starts, the buyer has the option of using a private data storage (Storj) or IPFS for public storage of data (IPLD creates a data stream as a file).

The Buyer requests for a quotation from a specific supplier, detailing the items needed, quantity, dates, etc).

The supplier receives and reviews the request. They then send back their proposed terms including prices, discounts, availabilities of products etc. (These details are used to create the Trace Agreement)

The Trace Agreement contains the overall details of the transaction and the number of levels within a particular supply chain management.

The buyer then receives the proposal and either agrees or declines, requesting for adjustments.

Agreement between the Buyer and the Supplier is called a "handshake", in literal representation of an agreement (state).

After the handshake, a cryptographic proof (zero knowledge proof & nullifier) that confirms the proper business logic and commercial data application, is generated and sent to the Supplier and the Buyer consecutively.

The cryptographic proof is created using, a random number generator, to generate a nullifier (after hashing) and zero knowledge circuit to create the zk proof.

The two cryptographic proofs are used to create the Trace Agreement, which is the smart contract that controls every state of the supply chain and contains details of each transaction. Each supply chain is a unique transaction and the Trace Agreement represents each. The Trace Agreement helps with verification for the different stages of the supply chain.

When the Buyer is ready to begin the process, they initialize the order after updating the supply chain stages & addresses and input the cryptographic proof generated for verification. The Supplier is then notified to confirm the execution of the order by verifying his cryptographic proof.

Once this is done, the Trace Agreement is open.

Each stage, the movement and state of the transaction is seen on chain. The verifier addresses for each stage of the transaction have to sign consecutively, confirming the state of the transaction before going to the next.

The verifier addresses are used to create a merkle tree and the merkle root is saved on the smart contract

We would be providing the protocol built as a Software Development Kit (SDK) and as an API for developers to integrate into their various supply chain apps or website.

How it's Made

We built zkTrace using merkle tree, zero knowledge and smart contracts to make supply chain stages traceable and business logic private. We have Storj to create private data storage but we use IPFS to store our supply chain data for tracking. The Trace Agreement details saved in a content addressing system IPLD and is pinned to IPFS using web3 storage as our pinning service. This makes verification and traceability of the supply chain stages..

background image mobile

Join the mailing list

Get the latest news and updates