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 access1
: Write access2
: 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
-
Permission Management
- Use appropriate permission levels
- Regularly audit access
- Implement proper cleanup
-
Security
- Validate addresses
- Monitor access patterns
- Handle sensitive data appropriately
-
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
- Learn about Data Streams
- Explore Snapshots
- Check out Analytics