Как исключить timestamp inherent из счётчика подписанных транзакций Substrate
Даже блок без пользовательских переводов может содержать extrinsic. Если считать каждый из них подписанной операцией пользователя, в тихие периоды активность будет завышена.
Проверьте подпись и тип вызова
Используйте подключённый polkadot-js с подходящими метаданными runtime. Pallet timestamp обычно получает время через неподписанный inherent timestamp.set. Пример считает его отдельно от подписанных extrinsic.
const hash = await api.rpc.chain.getFinalizedHead()
const {block} = await api.rpc.chain.getBlock(hash)
const signed = block.extrinsics.filter(ex => ex.isSigned)
const timestamps = block.extrinsics.filter(ex =>
!ex.isSigned && ex.method.section === "timestamp" &&
ex.method.method === "set")
console.log(block.extrinsics.length, signed.length, timestamps.length)
Укажите состав измеряемого показателя
Допустим, в блоке четыре extrinsic: timestamp inherent, другой неподписанный вызов и два подписанных. Показатель подписанных равен двум. Если назвать все неподписанные обновлениями времени, второй вызов будет классифицирован ошибочно. Для определения его назначения изучите pallet и метод.
Подписанный пакет может включать несколько действий, а подписанный extrinsic может завершиться ошибкой выполнения. Для числа платежей в блоке учитывайте успешные события оплаты с их фазой исполнения.