diff --git a/explorer/src/components/block/BlockOverviewCard.tsx b/explorer/src/components/block/BlockOverviewCard.tsx index b93c3b7feb..473cc147f5 100644 --- a/explorer/src/components/block/BlockOverviewCard.tsx +++ b/explorer/src/components/block/BlockOverviewCard.tsx @@ -42,6 +42,8 @@ export function BlockOverviewCard({ } const block = confirmedBlock.data.block; + const committedTxs = block.transactions.filter((tx) => tx.meta?.err === null); + return ( <>
@@ -76,11 +78,17 @@ export function BlockOverviewCard({ - Total Transactions + Processed Transactions {block.transactions.length} + + Successful Transactions + + {committedTxs.length} + +
diff --git a/explorer/src/components/block/BlockProgramsCard.tsx b/explorer/src/components/block/BlockProgramsCard.tsx index 427547b9df..71b92898f6 100644 --- a/explorer/src/components/block/BlockProgramsCard.tsx +++ b/explorer/src/components/block/BlockProgramsCard.tsx @@ -5,6 +5,7 @@ import { TableCardBody } from "components/common/TableCardBody"; export function BlockProgramsCard({ block }: { block: ConfirmedBlock }) { const totalTransactions = block.transactions.length; + const txSuccesses = new Map(); const txFrequency = new Map(); const ixFrequency = new Map(); @@ -31,9 +32,14 @@ export function BlockProgramsCard({ block }: { block: ConfirmedBlock }) { }); }); + const successful = tx.meta?.err === null; programUsed.forEach((programId) => { const frequency = txFrequency.get(programId); txFrequency.set(programId, frequency ? frequency + 1 : 1); + if (successful) { + const count = txSuccesses.get(programId); + txSuccesses.set(programId, count ? count + 1 : 1); + } }); }); @@ -83,11 +89,13 @@ export function BlockProgramsCard({ block }: { block: ConfirmedBlock }) { % of Total Instruction Count % of Total + Success Rate {programEntries.map(([programId, txFreq]) => { const ixFreq = ixFrequency.get(programId) as number; + const successes = txSuccesses.get(programId) || 0; return ( @@ -97,6 +105,7 @@ export function BlockProgramsCard({ block }: { block: ConfirmedBlock }) { {((100 * txFreq) / totalTransactions).toFixed(2)}% {ixFreq} {((100 * ixFreq) / totalInstructions).toFixed(2)}% + {((100 * successes) / txFreq).toFixed(0)}% ); })}