Access Control

SuiPulse provides a flexible permission system for securing your data streams and controlling access.

Overview

Access control in SuiPulse is managed through:

  • Public/private stream settings
  • Permission levels
  • Address-based access control

Permission Levels

SuiPulse supports three permission levels:

  • 0: Read access
  • 1: Write access
  • 2: Admin access

Managing Permissions

Add Permission

import { SuiPulse, Network } from "@suipulse/sdk";
import { Ed25519Keypair } from "@mysten/sui.js/keypairs/ed25519";

// Initialize SuiPulse
const keypair = Ed25519Keypair.fromSecretKey(/* your private key */);
const suiPulse = new SuiPulse(keypair, Network.MAINNET);

// Add read permission
await suiPulse.addPermission(streamId, address, 0);

// Add write permission
await suiPulse.addPermission(streamId, address, 1);

// Add admin permission
await suiPulse.addPermission(streamId, address, 2);

Check Subscription

const isSubscribed = await suiPulse.isSubscribed(streamId, address);
console.log(`Address ${address} is ${isSubscribed ? "" : "not "}subscribed`);

Stream Visibility

Public Streams

// Create a public stream
const result = await suiPulse.createStream({
  name: "Public Stream",
  description: "A publicly accessible stream",
  metadata: new Uint8Array(Buffer.from("Public metadata")),
  isPublic: true,
});

Private Streams

// Create a private stream
const result = await suiPulse.createStream({
  name: "Private Stream",
  description: "A private stream with restricted access",
  metadata: new Uint8Array(Buffer.from("Private metadata")),
  isPublic: false,
});

Best Practices

  1. Permission Management

    • Use appropriate permission levels
    • Regularly audit access
    • Implement proper cleanup
  2. Security

    • Validate addresses
    • Monitor access patterns
    • Handle sensitive data appropriately
  3. Access Patterns

    • Plan for scalability
    • Consider batch operations
    • Implement proper error handling

Use Cases

  • Multi-user applications
  • Enterprise data sharing
  • DeFi protocols
  • Gaming platforms
  • IoT networks

Next Steps