The Stellar Dev Dashboard now includes comprehensive visualization tools for tracking contract upgrades, WASM hashes, and authorization requirements. This guide explains how to use these features effectively.
The WASM Hash History feature provides:
- Historical Tracking: Automatic tracking of all WASM hashes associated with contract upgrades
- Advanced Filtering: Search and filter by contract ID, WASM hash, or network
- Data Export: Export upgrade history as JSON for external analysis
- Transaction Links: Direct links to block explorers for verification
- Local Storage: All data stored locally in your browser for privacy
The Authorization Requirements component shows:
- Current Status: Real-time authorization status (public, admin, owner, multisig, custom)
- Severity Indicators: Color-coded severity levels (safe, low, medium, high, critical)
- Change History: Track authorization requirement changes across upgrades
- Network Context: Separate tracking per network (testnet, mainnet, public, custom)
- Navigate to the Contracts panel in the dashboard
- Click the 📜 WASM History tab
- View and manage your WASM hash history
- When a contract is selected, authorization requirements are displayed below
- Navigate to the Contract History panel
- Filter by a specific contract ID
- Recent WASM hashes are displayed in a collapsible section
- Click "Show" to view the latest upgrade history for that contract
When you perform a contract upgrade:
import { trackWasmHash } from '@/lib/wasmTracker';
// After successful upgrade transaction
await trackWasmHash({
contractId: 'CCY737I6XABK7KXYYJUZM7XKL7CMJ6DKFZDVUQJL5HJITILFIQ5B3Q',
wasmHash: 'abc123def456789...',
transactionHash: 'tx_hash_from_upgrade...',
authorization: 'admin',
network: 'testnet',
});The authorization panel automatically displays when you:
- Select a contract in the Contracts panel
- View WASM history for a specific contract
- Use the standalone AuthorizationRequirements component
- Click "Show Filters" in the WASM Hash History panel
- Enter contract ID or WASM hash to filter
- Click "Clear Filters" to reset
- Results update automatically
- Navigate to WASM Hash History
- Click the "Export" button
- JSON file downloads with current history
- Use for backup, analysis, or sharing
- Safe: No authorization required (public access)
- Low: Custom authorization with minimal restrictions
- Medium: Multi-signature requirements
- High: Owner-level authorization required
- Critical: Admin-level authorization required
- Review Before Upgrade: Always check current authorization requirements before upgrading
- Monitor Changes: Pay attention to authorization requirement changes during upgrades
- Validate Links: Use transaction explorer links to verify upgrades on-chain
- Regular Cleanup: Periodically clear old history to manage storage
- Export Backups: Regularly export history for backup purposes
- IndexedDB Support: Required for local history storage
- Modern Browser: Chrome, Firefox, Safari, Edge (latest versions)
- JavaScript Enabled: Required for all interactive features
If IndexedDB is not supported:
- WASM history displays in read-only mode
- No local storage of upgrade data
- Export functionality still works for current session data
- Authorization requirements display remains functional
- Testnet: Full support with automatic tracking
- Mainnet: Full support with enhanced security warnings
- Public Network: Full support with appropriate network context
- Custom Networks: Full support with user-defined configuration
- No Breaking Changes: Existing contract interactions are not affected
- Automatic Migration: IndexedDB schema upgrades automatically
- Data Preservation: Existing contract history remains intact
- New Features: Available immediately after update
- Default Behavior: WASM tracking enabled by default
- Storage: Uses browser IndexedDB automatically
- Privacy: All data stored locally, no external transmission
- Configuration: No additional setup required
Possible Causes:
- IndexedDB not supported in browser
- Storage quota exceeded
- Privacy settings blocking storage
Solutions:
- Check browser compatibility
- Clear old history to free space
- Review browser privacy settings
Possible Causes:
- Invalid network specified
- Missing contract ID
- Component not properly integrated
Solutions:
- Verify network parameter (testnet, mainnet, public, custom)
- Ensure contract ID is provided
- Check component integration
Possible Causes:
- No history to export
- Browser security restrictions
- Corrupted data
Solutions:
- Ensure history exists before exporting
- Check browser download permissions
- Clear and rebuild history if corrupted
Meaning: Your browser doesn't support IndexedDB Impact: Read-only mode, no local storage Solution: Use a modern browser with IndexedDB support
Meaning: Network parameter is not valid Impact: Authorization display won't render Solution: Use valid network: testnet, mainnet, public, or custom
Meaning: Browser storage limit reached Impact: Cannot store new WASM records Solution: Clear old history or increase browser storage quota
// Add a WASM hash record
await addWasmHashRecord({
id: string,
contractId: string,
wasmHash: string,
transactionHash: string,
authorization: string,
timestamp: number,
network: string,
});
// Get WASM hash history
const history = await getWasmHashHistory({
contractId?: string,
wasmHash?: string,
network?: string,
});
// Clear all history
await clearWasmHashHistory();// Track a WASM hash (with validation)
await trackWasmHash({
contractId: string,
wasmHash: string,
transactionHash: string,
authorization?: string,
network?: string,
});
// Extract WASM from transaction
const wasmInfo = extractWasmFromUpgradeTransaction(transaction);
// Check if transaction is an upgrade
const isUpgrade = isContractUpgradeTransaction(transaction);<WasmHashHistory />
// No props required - uses global store for network<AuthorizationRequirements
contractId?: string
wasmHash?: string
upgradeAuth?: string
network?: string
historicalData?: Array<{
wasmHash: string
authorization: string
timestamp: number
}>
/>- Record Size: Each WASM record is approximately 200-500 bytes
- Capacity: Browser IndexedDB typically allows 50MB-5GB depending on browser
- Cleanup: Implement periodic cleanup for long-running applications
- Pagination: History display uses pagination for large datasets
- Component Memory: Minimal (~2-5MB for typical usage)
- Filtering Performance: O(n) complexity, handles thousands of records efficiently
- Export Memory: Temporary memory usage during JSON generation
Planned improvements include:
- Cloud Sync: Optional cloud backup for WASM history
- Multi-device Support: Sync history across devices
- Advanced Analytics: Upgrade pattern analysis and insights
- Collaboration Features: Share upgrade histories with teams
- Integration: Enhanced integration with contract deployment tools
For issues, questions, or feedback:
- Check this guide for common solutions
- Review the troubleshooting section
- Check browser compatibility requirements
- Report bugs via the project's issue tracker
- Request features via the project's feature request process
- Initial WASM hash history tracking
- Authorization requirements visualization
- IndexedDB storage implementation
- Filter and export functionality
- Comprehensive error handling
- Full test coverage
- Documentation and guides