author_submitAndWatchExtrinsic
Description
Submits a signed extrinsic and subscribes to its lifecycle events (ready, in-block, finalized, dropped). Useful for wallets and services that need confirmation without polling.
Parameters
Parameter | Type | Required | Description |
---|---|---|---|
extrinsic | string | Yes | SCALE-encoded signed extrinsic |
Returns
Subscription ID. Status updates are delivered over the same WebSocket connection.
Subscription Example
{
"jsonrpc": "2.0",
"method": "author_submitAndWatchExtrinsic",
"params": [
"0x280402000b60e2739f9901d4b3a0e3b88b7c25215926bbf7c733f5c31e69c0c8c4b4a86d6ec3f3f086e95d00"
],
"id": 1
}
Sample Notifications
{
"jsonrpc": "2.0",
"method": "author_extrinsicUpdate",
"params": {
"result": {
"status": "Ready"
},
"subscription": 1
}
}
{
"jsonrpc": "2.0",
"method": "author_extrinsicUpdate",
"params": {
"result": {
"status": {
"InBlock": "0x65b246e9b69a61f842104a15307ae906013c56a8bb6c942555b1a71424b4bab3"
}
},
"subscription": 1
}
}
{
"jsonrpc": "2.0",
"method": "author_extrinsicUpdate",
"params": {
"result": {
"status": {
"Finalized": "0x0783f5b163e338d4d74a1ee39a0f631bc2dffbd8862460407f6cc97c903194e1"
}
},
"subscription": 1
}
}
Code Examples
JavaScript
const unsub = await api.rpc.author.submitAndWatchExtrinsic(tx, ({ status, events }) => {
if (status.isReady) {
console.log('Submitted');
} else if (status.isInBlock) {
console.log('Included in block', status.asInBlock.toHex());
} else if (status.isFinalized) {
console.log('Finalized in block', status.asFinalized.toHex());
unsub();
}
});
Tips
- Handle
Broadcast
orDropped
statuses to surface networking or validation issues to users. - To cancel the subscription, call the
unsubscribe
function returned by the library (e.g.,unsub()
in polkadot.js).