docsConfiguration

Configuration

This page covers all configuration options for the Keypo SDK.

SDK Configuration

The Keypo SDK requires configuration for three main networks:

Filecoin Network (Storage)

  • Network: calibration (testnet)
  • Purpose: File storage on Filecoin
  • RPC URL: https://api.calibration.node.glif.io/rpc/v1

Base Sepolia (Access Control)

  • Network: baseSepolia
  • Chain ID: 84532
  • Purpose: Smart contracts for access control and permissions
  • Registry Address: 0x8370eE1a51B5F31cc10E2f4d786Ff20198B10BBE
  • Validation Address: 0x35ADB6b999AbcD5C9CdF2262c7190C7b96ABcE4C

ZeroDev Bundler (Account Abstraction)

NOTE: You can use any account abstraction bundler. We use Zerodev, but Pimlico and Coinbase work too (as well as many others)

  • Purpose: Gasless transactions
  • URL Format: https://rpc.zerodev.app/api/v3/YOUR_PROJECT_ID/chain/84532

SDK Initialization

Basic Configuration

import { Synapse } from '@filoz/synapse-sdk';
import { SynapseStorageSDK } from '@keypo/synapse-storage-sdk';
import { ethers } from 'ethers';
 
// Initialize wallet and provider
const wallet = new ethers.Wallet(process.env.PRIVATE_KEY);
const provider = new ethers.JsonRpcProvider('https://api.calibration.node.glif.io/rpc/v1');
const signer = wallet.connect(provider);
 
// Initialize Synapse
const synapse = await Synapse.create({
  signer,
  withCDN: true, // Enable CDN for faster file access
});
 
// Initialize SDK with configuration
const sdk = new SynapseStorageSDK(synapse, {
  network: 'calibration',
  rpcUrl: 'https://api.calibration.node.glif.io/rpc/v1',
  encryption: {
    registryAddress: '0x8370eE1a51B5F31cc10E2f4d786Ff20198B10BBE',
    validationAddress: '0x35ADB6b999AbcD5C9CdF2262c7190C7b96ABcE4C',
    bundlerRpcUrl: 'https://rpc.zerodev.app/api/v3/YOUR_PROJECT_ID/chain/84532'
  },
  storage: {
    withCDN: true
  }
}, process.env.PRIVATE_KEY);

Configuration Interface

interface SynapseStorageConfig {
  network: string;                 // Filecoin network ('calibration' for testnet)
  rpcUrl: string;                  // Filecoin RPC endpoint
  encryption: {
    registryAddress: string;       // Base Sepolia registry contract
    validationAddress: string;     // Base Sepolia validation contract
    bundlerRpcUrl: string;         // ZeroDev bundler endpoint
  };
  storage: {
    withCDN: boolean;              // Enable CDN for faster access
  };
}

Environment Variables

Set up your environment variables for easy configuration:

# .env file
PRIVATE_KEY=0x...                              # Your wallet private key
ZERODEV_PROJECT_ID=your_project_id             # ZeroDev project ID
 
# Filecoin Configuration
FILECOIN_RPC_URL=https://api.calibration.node.glif.io/rpc/v1
 
# Base Sepolia Contracts
REGISTRY_ADDRESS=0x8370eE1a51B5F31cc10E2f4d786Ff20198B10BBE
VALIDATION_ADDRESS=0x35ADB6b999AbcD5C9CdF2262c7190C7b96ABcE4C

Configuration with Environment Variables

// Load configuration from environment variables
const config = {
  network: 'calibration',
  rpcUrl: process.env.FILECOIN_RPC_URL || 'https://api.calibration.node.glif.io/rpc/v1',
  encryption: {
    registryAddress: process.env.REGISTRY_ADDRESS || '0x8370eE1a51B5F31cc10E2f4d786Ff20198B10BBE',
    validationAddress: process.env.VALIDATION_ADDRESS || '0x35ADB6b999AbcD5C9CdF2262c7190C7b96ABcE4C',
    bundlerRpcUrl: `https://rpc.zerodev.app/api/v3/${process.env.ZERODEV_PROJECT_ID}/chain/84532`
  },
  storage: {
    withCDN: true
  }
};
 
const sdk = new SynapseStorageSDK(synapse, config, process.env.PRIVATE_KEY);