- Zk based fully secure and trustless multichain file transfer system with Sui-EVM-Wormhole.
Author: Baturalp Güvenç
Our project aims to enable secure, private, and efficient file transfers across different blockchain networks. Utilizing zkSNARKs for encryption, Arweave for decentralized storage, and the Wormhole bridge for cross-chain token transfer, we ensure that files can be shared securely from Sui to EVM networks.
Traditional file transfer methods often suffer from privacy and security vulnerabilities. Centralized servers are prone to data breaches, and current blockchain solutions lack seamless interoperability.
- Encrypt files using zkSNARKs to ensure privacy and integrity.
- Store encrypted files on Arweave with a unique file hash.
- Tokenize the file hash for transfer across blockchain networks.
- Utilize the Wormhole bridge to securely transfer tokenized assets from Sui to EVM.
- Verify and retrieve the file on the receiving network, ensuring the file's integrity.
- Purpose: Secure file encryption.
- Benefit: Ensures that file content remains private while allowing verification of its integrity.
- Purpose: Decentralized storage solution.
- Benefit: Provides permanent and tamper-proof storage for encrypted files.
- Purpose: Cross-chain token transfer.
- Benefit: Facilitates seamless and secure movement of tokenized assets between blockchain networks.
- Sui Network: Source network for initiating the file transfer.
- EVM Network: Destination network for receiving and verifying the file.
- Encrypt File: Use zkSNARKs to encrypt the file.
- Store on Arweave: Upload the encrypted file to Arweave, obtaining a unique file hash.
- Tokenize File Hash: Create a token representing the file hash on the Sui network.
- Initiate Transfer: Use the Wormhole bridge to lock the token on Sui and mint an equivalent token on EVM.
- Verify on EVM: The recipient verifies the file hash against the encrypted file on Arweave.
- Retrieve File: Ensure the file's integrity and authenticity, completing the transfer.
- Privacy: zkSNARK encryption guarantees that file contents remain confidential.
- Security: Decentralized storage and cross-chain verification ensure data integrity and authenticity.
- Interoperability: Wormhole bridge facilitates seamless and efficient cross-chain asset transfers.
- Scalability: Leveraging EVM’s high-speed and low-cost transactions.
- Research Data Sharing: Securely share sensitive research data across blockchain networks.
- Healthcare Records: Transfer patient records securely between medical institutions.
- Intellectual Property: Protect and transfer proprietary information between collaborating entities.
- Implement zkSNARK encryption for file security.
- Integrate Arweave for decentralized file storage.
- Develop tokenization process for file hashes.
- Implement Wormhole bridge for cross-chain transfers between Sui and EVM.
- Conduct thorough testing for security and efficiency.
- Deploy the solution on mainnet and conduct a pilot transfer.
- Explore integration with additional blockchain networks.
- Develop user-friendly interfaces for easy adoption.
- Baturalp Güvenç: Project Manager / Smart Contract Developer
- Yunus Emre Yoldaş: Cryptologist / Backend Developer
- Ferit Yiğit Balaban: UI Developer
Our project offers a robust solution for secure cross-chain file transfers, addressing the critical needs of privacy, security, and interoperability. By leveraging advanced cryptographic techniques and decentralized technologies, we aim to revolutionize the way sensitive data is shared across blockchain networks.
- Email: asesenep15@gmail.com
- Website: zk-lokomotive.xyz
- Detailed encryption algorithm specifications.
- Smart contract code for tokenization and transfer.
- Technical architecture diagrams.
- zkSNARKs: Zero-Knowledge Succinct Non-Interactive Arguments of Knowledge.
- Arweave: A blockchain-based decentralized storage network.
- Wormhole Bridge: A cross-chain bridge enabling token transfers between blockchains.
First, encrypt the file using zkSNARKs to ensure privacy and security. zkSNARKs allow you to prove the file’s integrity without revealing its contents. Upload the encrypted file to a decentralized storage solution like Arweave, obtaining a unique file hash.
Create a token representing the file hash. This involves wrapping the hash into a token that can be transferred across different blockchain networks. Use smart contracts to mint this token on the Sui network.
Wormhole is a cross-chain bridge that facilitates the transfer of tokenized assets between different blockchains, including Sui and EVM. The process involves locking the tokenized file hash on the Sui network and minting an equivalent token on the EVM network. Guardians (validators) on the Wormhole network monitor the lock and mint actions to ensure they are synchronized across chains.
Initiate the transfer of the tokenized file hash from the Sui network to the EVM network using the Wormhole bridge. The Wormhole protocol ensures the secure and verified transmission of the tokenized asset between networks.
On the EVM side, the recipient can use the token to retrieve the file hash. Verify the file hash against the encrypted file stored on Arweave to ensure integrity and authenticity.
Before you begin, install the following:
- Sui prerequisites (Sui prerequisites only)
- Suibase
- Docker
- Node (>= 20)
- pnpm (>= 9)
pnpm create sui-dapp@latest
[package] name = "greeting" edition = "2024.beta" # edition = "legacy" to use legacy (pre-2024) Move
[dependencies] Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/devnet" }
For remote import, use the { git = "...", subdir = "...", rev = "..." }
.
Revision can be a branch, a tag, and a commit hash.
MyRemotePackage = { git = "https://some.remote/host.git", subdir = "remote/path", rev = "main" }
For local dependencies use local = path
. Path is relative to the package root
Local = { local = "../path/to" }
To resolve a version conflict and force a specific version for dependency
override use override = true
Override = { local = "../conflicting/version", override = true }
[addresses] greeting = "0x0"
Named addresses will be accessible in Move as @name
. They're also exported:
for example, std = "0x1"
is exported by the Standard Library.
alice = "0xA11CE"
[dev-dependencies]
The dev-dependencies section allows overriding dependencies for --test
and
--dev
modes. You can introduce test-only dependencies here.
Local = { local = "../path/to/dev-build" }
[dev-addresses]
The dev-addresses section allows overwriting named addresses for the --test
and --dev
modes.
alice = "0xB0B"
pnpm localnet:start
Local Sui Explorer will be available on localhost:9001
pnpm localnet:deploy
pnpm localnet:faucet 0xYOURADDRESS
pnpm start
Follow this guide to deploy the frontend app to Firebase.
To deploy the frontend part, do the following:
- Install Firebase Tools
pnpm add -g firebase-tools
- Create a new project on Firebase
Login to Firebase Console and create a new empty project.
- Init your project
pnpm frontend:deploy:init
- You will be asked to Login to Firebase.
- Then select your newly created Firebase project from the list.
- Once you're asked for a project alias, enter default.
- Deploy to Firebase
pnpm frontend:deploy
pnpm test
Currently we have blockchain tests only.
The project documentation can be found here.