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=0x35ADB6b999AbcD5C9CdF2262c7190C7b96ABcE4CConfiguration 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);