Skip to content

Latest commit

 

History

History
109 lines (79 loc) · 2.3 KB

File metadata and controls

109 lines (79 loc) · 2.3 KB

Core Concepts

Stream Lifecycle Management

Stream Creation Workflow

  1. Stream ID Generation

    • Deterministic generation from descriptive names
    • Ensures unique, reproducible identifiers
    const streamId = await StreamId.generate("economic_indicator");
  2. Stream Deployment

    • Validate stream type (Primitive/Composed)
    • On-chain registration
    • Transaction confirmation
    await client.deployStream(streamId, StreamType.Primitive);
  3. Stream Mutation

    • Record insertion
    • Taxonomy configuration
    • Visibility settings
  4. Stream Destruction

    • Permanent removal from network
    • Irreversible operation
    await client.destroyStream(streamLocator);

Advanced Stream Composition

Taxonomy Weights

  • Represent relative importance
  • Dynamic reconfiguration possible
await composedAction.setTaxonomy({
	stream: composedStreamLocator,
	taxonomyItems: [
		{ childStream: stockStream, weight: "0.6" },
		{ childStream: commodityStream, weight: "0.4" },
	],
	startDate: Math.floor(Date.now() / 1000),
});

Composition Strategies

  1. Weighted Average
    • Linear combination of child streams
  2. Hierarchical Aggregation
    • Multi-level stream composition
  3. Time-Weighted Composition
    • Varying weights based on temporal factors

Performance Considerations

Optimization Techniques

  • Batch record insertions
// Batch record insertion
await primitiveAction.insertRecords([
	{ stream: stream1, eventTime: 1, value: "1" },
	{ stream: stream2, eventTime: 2, value: "2" },
]);

Security and Permissions

Access Control Model

  • Granular read/write permissions
  • Public and private stream configurations
  • Wallet-based access management
// Set stream visibility
await streamAction.setReadVisibility(streamLocator, visibility.private);

// Grant specific wallet access
await streamAction.allowReadWallet(
	streamLocator,
	EthereumAddress.fromString("0x...")
);

Best Practices

  1. Use environment-secured private keys
  2. Implement robust error handling
  3. Validate stream data before insertion
  4. Monitor transaction confirmations

Further Learning