Live  ·  Polkadot Hub Testnet  ·  Block fetching…  ·  Contract: 0x7369…4eF9
Total Value Locked Live from contract
Active Pools On-chain count
Resolved Pools Historical
Current Block Hub Testnet RPC

Insure Validator Position

Stake native DOT on whether a validator will be slashed. Outcome is resolved trustlessly via PVM Precompiles — no oracle needed.

Validator Lookup

Query live on-chain data directly from Polkadot's staking runtime

Validator Address
Slashing Status ● SAFE
Blocks Authored (Era)
Precompile Read ✓ Synchronous

Open Position

Choose a side and stake DOT. Winners split the losing pool proportionally.

Your Position
Stake Amount (DOT)

Active Insurance Pools

Current liquidity distribution across all open validator insurance pools.

Loading pools from chain…

My Claims

Resolved pools where you hold a winning position and can claim your payout.

🔐

Wallet not connected

Connect your wallet to see your positions and claim payouts.

PVM Precompile Integration

How PVMShield reads Polkadot's native staking state from an EVM smart contract — synchronously, without an oracle.

1

PVM Program Entry

The RISC-V binary is invoked via the `call()` entry point. The VM initializes with the contract state loaded from the Substrate DB.

2

Native Rust Execution

Logic executes as a native PolkaVM program. This allows for high-performance math and complex state transitions at RISC-V speeds.

3

Direct Runtime Access

The contract invokes a synchronous host call to the Staking pallet. No oracles or bridges are needed to read validator slashing status.

4

Atomic Finality

State updates are committed atomically. The payout eligibility is determined and locked within the same PVM execution cycle.

Native PVM Rust Contract

fn handle_resolve_pool(input: &[u8]) { let validator: Address = abi::decode_arg(input, 0); let mut pool = storage::get_pool(&validator).unwrap(); // Synchronous host call to Native Runtime let slashed = pvm_std::precompiles::staking::is_slashed(&validator); pool.slash_occurred = slashed; pool.status = PoolStatus::Resolved; // Save state back to Substrate DB storage::save_pool(&validator, &pool); }
1-Block
Resolution speed
🔒
Trustless
No oracle dependency