project screenshot 1
project screenshot 2
project screenshot 3
project screenshot 4
project screenshot 5
project screenshot 6

zkLC

A trustless documentary letter of credit service for international buyers/sellers using the legal UCP standard for letters of credit (MT700 SWIFT form) without the banks!

zkLC

Created At

ETHOnline 2023

Winner of

trophy

🏊 Scroll — Pool Prize

trophy

🥈 Scroll — Best Use

Project Description

This project creates a documentary letter of credit service which replaces the bank with a smart contract that can verify the authenticity of the shipping documents to release funds.

DLCs are used by international buyers and sellers when they do not trust each other, thereby effectively offloading trust to the banks. Typically such a service costs 1-1.5% of the value of goods. With smart contracts, this value should be reduced to roughly 0.1% (gas fees and proof generation).

The Letter of Credit format used is based on the MT700 SWIFT message format used for issuing letters of credit between banks. To find out more, see this wikipedia link here, and this UCP600 standard which legally underpins the MT700.

The focus of this project in particular was the validation of the shipping document (sea waybill) which is issued when the seller ships the goods and gives up ownership of the goods. The sea waybill is sent by email to the seller as an attachment signed by the shipping line. We prototyped using shipping documents from the two largest shipping lines: Maersk and CMA.

How it's Made

There are three main components: 1. Solidity Smart contracts 2. Circom Circuits 3. Frontend.

User flow:

  1. The user1 (applicant/buyer/importer) interacts with a frontend to fill the LC form (which adheres to the MT700 message format) + locks funds in the smart contract.

  2. The user2 (beneficiary/seller/exporter) accepts the LC above and indicates the LC contract as accepted by signing. They then ship the goods and receive the email confirmation. They use the circuits to generate proof of the email.

  3. The proof is submitted to the smart contract (from fronend) which verifies the validity of the shipment matching the original LC by the applicant, and releases funds.

  4. Smart contracts are written in solidity and contain the logic for a)issuing LC by applicant and locking funds b) accepting LC by benficiary c)verifying groth16 proof to release funds.

  5. Circom circuits The project uses the zkemail library which is used to generate ZKPs of emails. Emails can be verified inside the circuit because the email contains a DKIM signature from the shipping company's public key.

background image mobile

Join the mailing list

Get the latest news and updates