author_pendingExtrinsics - Kusama RPC Method
Get pending extrinsics in the transaction pool on Kusama. Monitor mempool activity, verify transaction submission, and analyze network congestion.
Returns all pending extrinsics currently in the transaction pool on Kusama. These are signed extrinsics that have been submitted but not yet included in a finalized block.
Why Kusama? Build on Polkadot's canary network for real-world testing with live economic conditions with 7-day governance cycles (vs 1 month on Polkadot), lower bonding requirements, live KSM token economy, and first-to-market feature testing.
When to Use This Method
author_pendingExtrinsics is essential for experimental dApp developers, parachain teams, and early adopters validating new features:
- Transaction Confirmation -- Verify whether a submitted extrinsic is still pending or has been included in a block on Kusama
- Mempool Monitoring -- Monitor the transaction pool size and activity for parachain experimentation, early feature deployment, and production-grade testing with real value
- Network Congestion Analysis -- Gauge current network load by inspecting the number and type of pending extrinsics
- Validator Tooling -- Build block authoring tools that inspect the ready queue before producing blocks
Code Examples
Common Use Cases
1. Transaction Pool Monitor
Continuously monitor the Kusama transaction pool and alert on unusual activity:
import { ApiPromise, WsProvider } from '@polkadot/api';
async function monitorPool(api, interval = 6000) {
let previousCount = 0;
setInterval(async () => {
const pending = await api.rpc.author.pendingExtrinsics();
const count = pending.length;
if (count !== previousCount) {
console.log(`Pool size changed: ${previousCount} -> ${count}`);
if (count > 100) {
console.warn('High pool activity detected!');
}
}
// Analyze pending extrinsic types
const byPallet = {};
pending.forEach((ext) => {
const key = `${ext.method.section}.${ext.method.method}`;
byPallet[key] = (byPallet[key] || 0) + 1;
});
if (Object.keys(byPallet).length > 0) {
console.log('Pending by type:', byPallet);
}
previousCount = count;
}, interval);
}2. Verify Transaction Submission
Check that a submitted extrinsic appears in the pool:
async function verifyInPool(api, txHash) {
const pending = await api.rpc.author.pendingExtrinsics();
const found = pending.find((ext) => ext.hash.toHex() === txHash);
if (found) {
console.log(`Transaction ${txHash} is in the pool`);
console.log(` Call: ${found.method.section}.${found.method.method}`);
return true;
}
console.log(`Transaction ${txHash} not found in pool (may already be included)`);
return false;
}3. Pool Congestion Analysis
Analyze network congestion to decide on tip amounts:
async function analyzeCongestion(api) {
const pending = await api.rpc.author.pendingExtrinsics();
const tips = pending.map((ext) => ext.tip.toBigInt());
const totalTips = tips.reduce((sum, tip) => sum + tip, 0n);
const avgTip = tips.length > 0 ? totalTips / BigInt(tips.length) : 0n;
const maxTip = tips.length > 0 ? tips.reduce((a, b) => (a > b ? a : b), 0n) : 0n;
return {
poolSize: pending.length,
averageTip: avgTip.toString(),
maxTip: maxTip.toString(),
congested: pending.length > 50
};
}Error Handling
Common errors and solutions:
| Error Code | Description | Solution |
|---|---|---|
| -32603 | Internal error | Node may be starting up -- retry after delay |
| -32005 | Rate limit exceeded | Reduce polling frequency; the pool changes only each block |
| Connection refused | Node unreachable | Verify the RPC endpoint URL and that the node is running |
| Empty array | No pending extrinsics | Normal when the pool is idle -- not an error |
Related Methods
author_submitExtrinsic-- Submit a signed extrinsic to the transaction poolpayment_queryInfo-- Estimate fees for an extrinsic before submissionsystem_chain-- Get the chain namechain_getBlock-- Get a finalized block to see which extrinsics were included
author_submitExtrinsic
Submit a signed extrinsic to Kusama for inclusion in a block. Broadcast transactions for token transfers, staking operations, governance votes, and smart contract calls.
author_submitAndWatchExtrinsic
Submit an extrinsic and subscribe to lifecycle status updates on Kusama. Track transactions from pool admission through finalization with real-time WebSocket events for parachain experimentation, early feature deployment, and production-grade testing with real value.