A comprehensive dashboard for EduChain operations including OnDemand block ordering and reserve transfers, built with polkadot-api and Vue.js.
EduChain Dashboard is a comprehensive interface for managing EduChain (Para 4883) operations on the Polkadot ecosystem. It provides essential tools for:
Real-time network statistics and connection status for EduChain. For detailed block information and transaction history, visit the full block explorer at dev.papi.how.
OnDemand coretime allows EduChain to purchase individual blocks of execution time on Polkadot without needing a full core. This is particularly useful for:
- Educational Testing: Test blockchain functionality in educational environments
- Cost-Effective Learning: Students and educators can experiment without long-term commitments
- Flexible Development: Quick iteration cycles for educational blockchain projects
- Resource Management: Pay only for the computational resources actually used
Seamlessly transfer assets between EduChain and AssetHub using reserve-based transfers powered by XCM (Cross-Consensus Messaging).
- Wallet Mode: Standard wallet integration via Talisman Connect for production use
- Development Mode: Direct mnemonic signing that bypasses wallet prompts for faster development
- Interval Mode: Automatically place orders at configurable time intervals (5-3600 seconds)
- Finalization Mode: Place new orders automatically when the previous block finalizes
- Cross-chain transfers: Move tokens between parachains and AssetHub using XCM
- Bidirectional: Support for both parachain-to-AssetHub and AssetHub-to-parachain transfers
- Dual signing modes: Works with both wallet and development signing modes
- Live transaction status updates
- Order count tracking
- Block finalization monitoring
- Comprehensive error handling
- Connect: Use wallet mode or configure development mode with your mnemonic
- Configure: Set Para ID, max amount in PAS tokens, and safety preferences
- Submit: Place individual orders or enable auto-ordering
The application uses two main Paseo chain extrinsics:
place_order_keep_alive: Creates an order while ensuring your account balance stays above the existential depositplace_order_allow_death: Creates an order that may reap your account if balance goes too low
- Connects to your browser wallet (SubWallet, Talisman, etc.)
- Each transaction requires wallet approval
- Full security with user confirmation for every order
- Direct signing with mnemonic phrase
- Bypasses wallet prompts for rapid testing
- Ideal for automated testing and development workflows
β οΈ Use only with test accounts on testnets
- Places orders at regular time intervals
- Configurable from 5 seconds to 1 hour
- Perfect for stress testing and continuous block production
- Monitors the chain for block finalization events
- Places a new order immediately when the previous block finalizes
- Ensures maximum block production efficiency
- Enable π§ Development Mode checkbox, or use your wallet of choice
- Enter your test mnemonic (12-24 words)
- Click "Set Context" to configure the signer
- Enable auto-ordering for continuous testing
- Monitor results in real-time
- Development Mode: Only use test mnemonics on testnets like Paseo
- Keep Alive: Always recommended to prevent account reaping
- Max Amount: Set reasonable limits to avoid unexpected costs
- Auto-Ordering: Monitor carefully as it will continue placing orders until stopped
This template uses PAPI (Polkadot API) - a modern, type-safe SDK for interacting with Polkadot-based blockchains.
π PAPI Documentation: https://papi.how/
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run previewsrc/
βββ components/ # Vue components
βββ composables/ # Vue composition functions
βββ utils/ # Utility functions and SDK setup
βββ descriptors/ # Chain descriptors
βββ style.css # Global styles
βββ App.vue # Main application component
PAPI requires type descriptors for each chain. Generate them using the PAPI CLI:
# Add a new chain using a WebSocket endpoint
npx papi add your_chain -w wss://your-rpc-endpoint.io
# Or use a well-known chain name
npx papi add kusama -n ksmcc3
# Generate descriptors (automatically runs on postinstall)
npx papiThis creates type-safe descriptors in @polkadot-api/descriptors that you can import.
Edit src/utils/sdk.ts to add your chain configuration:
import { yourChain } from '@polkadot-api/descriptors'
const CONFIG = {
// ... existing chains
your_chain: {
descriptor: yourChain,
providers: ['wss://your-rpc-endpoint.io'],
},
}You can add multiple RPC endpoints for fallback support:
const CONFIG = {
dot: {
descriptor: polkadot,
providers: [
'wss://rpc.polkadot.io',
'wss://polkadot-rpc.dwellir.com'
],
},
}π For more details, see the PAPI Codegen documentation.
The reserve transfer functionality is based on the excellent work by Francisco Aguirre:
- XCM Transfer Implementation: https://github.com/franciscoaguirre/dot-reserve-change/blob/main/transfers.ts
- Original implementation demonstrates proper XCM message structure for reserve-based transfers between chains