author_submitExtrinsic - JSON-RPC Method
Description#
Broadcasts a signed extrinsic to the Enjin Matrix transaction pool. The node validates the payload and, if valid, gossips it to peers for eventual inclusion in a block. Combine this call with payment_queryInfo to estimate fees and author_pendingExtrinsics or author_submitAndWatchExtrinsic to track status.
Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
extrinsic | string | Yes | SCALE-encoded, signed extrinsic in hex |
Returns#
| Field | Type | Description |
|---|---|---|
result | string | Transaction hash of the submitted extrinsic |
Request Example#
{
"jsonrpc": "2.0",
"method": "author_submitExtrinsic",
"params": [
"0x29028400..."
],
"id": 1
}
Response Example#
{
"jsonrpc": "2.0",
"error": {
"code": 1010,
"message": "Invalid Transaction",
"data": "Transaction dispatch is mandatory; transactions must not be validated."
},
"id": 1
}
Code Examples#
- cURL
- Python
- JavaScript
curl https://api-enjin-matrixchain.n.dwellir.com/YOUR_API_KEY \
-X POST \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "author_submitExtrinsic",
"params": ["SIGNED_EXTRINSIC_HEX"],
"id": 1
}'
The RPC rejects stale or replayed extrinsics with error
1010. Generate a fresh signed payload (correct nonce, mortality window, and tip) before broadcasting.
from substrateinterface import Keypair, SubstrateInterface
substrate = SubstrateInterface(
url="wss://api-enjin-matrixchain.n.dwellir.com/YOUR_API_KEY"
)
keypair = Keypair.create_from_uri('//Alice')
call = substrate.compose_call(
call_module='Balances',
call_function='transfer_keep_alive',
call_params={
'dest': 'efS1ZdvCHHviX7qnTGZEZQX9Uz3qpibG9L5RpF9niM8ne5RBn',
'value': 10 ** 18
}
)
extrinsic = substrate.create_signed_extrinsic(call=call, keypair=keypair)
receipt = substrate.submit_extrinsic(extrinsic, wait_for_inclusion=True)
print(receipt.is_success)
import { ApiPromise, WsProvider } from '@polkadot/api';
import { Keyring } from '@polkadot/keyring';
const provider = new WsProvider('wss://api-enjin-matrixchain.n.dwellir.com/YOUR_API_KEY');
const api = await ApiPromise.create({ provider });
const keyring = new Keyring({ type: 'sr25519' });
const signer = keyring.addFromUri('//Alice');
const tx = api.tx.balances.transferKeepAlive('efS1ZdvCHHviX7qnTGZEZQX9Uz3qpibG9L5RpF9niM8ne5RBn', 1_000_000_000_000_000_000n);
const hash = await tx.signAndSend(signer);
console.log(`Submitted with hash ${hash.toHex()}`);
Submission Checklist#
- Fee estimation – call
payment_queryInfowith the signed payload before submission. - Correct nonce – fetch via
system_accountNextIndexorapi.rpc.system.accountNextIndex. - Tip & priority – consider adding a tip for latency-sensitive mints or marketplace updates.
- Monitoring – watch inclusion via
author_submitAndWatchExtrinsicor index the hash from block events.