Index: src/wp-includes/blocks.php
===================================================================
--- src/wp-includes/blocks.php	(revision 44723)
+++ src/wp-includes/blocks.php	(working copy)
@@ -200,8 +200,10 @@
 	 */
 	$block = apply_filters( 'render_block_data', $block, $source_block );
 
-	$block_type    = WP_Block_Type_Registry::get_instance()->get_registered( $block['blockName'] );
-	$is_dynamic    = $block['blockName'] && null !== $block_type && $block_type->is_dynamic();
+	$block_name = $block['blockName'];
+
+	$block_type    = WP_Block_Type_Registry::get_instance()->get_registered( $block_name );
+	$is_dynamic    = $block_name && null !== $block_type && $block_type->is_dynamic();
 	$block_content = '';
 	$index         = 0;
 
@@ -227,7 +229,20 @@
 	 * @param string $block_content The block content about to be appended.
 	 * @param array  $block         The full block, including name and attributes.
 	 */
-	return apply_filters( 'render_block', $block_content, $block );
+	$block_content = apply_filters( 'render_block', $block_content, $block );
+
+	/**
+	 * Filters the content of a single block.
+	 * 
+	 * The dynamic portion of the hook name, `$block_name`, refers to
+	 * the block name - "namespace/block".
+	 *
+	 * @since x.y.z
+	 *
+	 * @param string $block_content The block content about to be appended.
+	 * @param array  $block         The full block, including name and attributes.
+	 */
+	return apply_filters( "render_block_{$block_name}", $block_content, $block );
 }
 
 /**
