0.1.0 • Published 1 year ago

experimental-offchain-zkapp-storage-punkpoll v0.1.0

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
1 year ago

zkApp: Off-Chain Storage

An experimental library designed for storing zkApp data off-chain. The project is in development and is not intended for production use. This library serves as a reference implementation for Tutorial 6: Off-Chain Storage, which illustrates how to store zkApp data off-chain.

Usage

Dependencies:

Ensure all required modules are installed:

npm install

Configuration

Blockchain Mode

In the main.ts file, you can toggle the useLocalBlockchain variable to switch between local simulated blockchain testing and real-world usage.

Account Configuration

For local testing, you use predefined accounts. For Berkeley mode, you must provide a deployerPrivateKey and zkAppPrivateKey as command line arguments.

To generate these keys:

npm run generate-key

Running the Application:

Ensure that the off-chain server is running:

npm run server

This command starts the server on port 3001.

Finally, to run the example:

npm run build
node build/src/examples/main.js [deployerPrivateKey] [zkAppPrivateKey]

Note: Always remember to safeguard private keys and never expose them publicly. Use environment variables or secure vaults to manage sensitive information in production environments.

zkApp Storage Server

This server is designed to interact with the zkApp and help store and manage zkApp-related data. It is set up for development purposes only and is not supported for production-level storage.

Features

  1. CORS-enabled for cross-origin requests.
  2. Stores data for a given zkApp address with a height and items.
  3. Fetches stored data for a zkApp address based on its root.
  4. Provides the public key of the server.
  5. Background job running cleanup operations to manage outdated or irrelevant data.
  6. Supports both local simulated blockchains and Berkeley blockchains for the Mina network.

Endpoints

  1. POST /data
  • Save data for a zkApp address.
  • Body parameters: height, items, zkAppAddress.
  1. GET /data
  • Fetch stored data for a zkApp address based on its root.
  • Query parameters: zkAppAddress, root.
  1. GET /publicKey
  • Provides the public key of the server.

License

Apache-2.0