Preheat the oven to 350°F (177°C). Grease and flour two 8-inch round cake pans and set them aside on a baking sheet or counter.
In a medium bowl, whisk together 2¼ cups (281.25 g) all-purpose flour, 2 teaspoons baking powder, 1 teaspoon baking soda, and 1 teaspoon salt. Set this dry mixture aside.
In the bowl of a stand mixer fitted with the paddle attachment (or in a large bowl with a hand mixer), beat ½ cup (113.5 g) unsalted butter (room temperature) and 1½ cups (300 g) granulated sugar on medium speed until light and fluffy, about 3–5 minutes. Scrape down the sides and bottom of the bowl with a spatula.
With the mixer on low, add the 3 large eggs, one at a time, beating about 1 minute after each addition. Scrape the bowl, then beat in 1 teaspoon vanilla extract until combined.
Add the dry ingredient mixture to the batter all at once and mix on low speed just until incorporated (don’t overmix). Stop and scrape the bowl.
With the mixer on low, add 1¼ cups (300 ml) buttermilk (room temperature) and mix until combined, about 1 minute. Increase speed to medium and beat for an additional 2–3 minutes until batter is smooth and slightly aerated. Scrape the bowl once more to ensure even mixing.
Divide the batter evenly between the two prepared 8-inch pans (use a scale or an even-eye measure). Smooth the tops with a spatula.
Bake on the center oven rack for 33–38 minutes, or until a skewer inserted into the center comes out with just a few moist crumbs attached. Rotate the pans halfway through baking if your oven has hot spots.
Remove the pans from the oven and let the cakes cool in the pans on wire cooling racks for 10 minutes. Run a knife around the edges, invert the cakes out of the pans, and transfer them to the wire racks to cool completely before frosting.
While the cakes cool, make the frosting: in a food processor, combine 20 tablespoons unsalted butter (cool room temperature), 1 cup (120 g) powdered sugar, ¾ cup (64.5 g) Dutch-processed cocoa, and a pinch of salt. Process until smooth, about 30 seconds, stopping once to scrape down the sides.
Add ¾ cup (255.75 ml) light corn syrup and 1 teaspoon vanilla extract to the food processor and process just until combined, about 5–10 seconds. Scrape down the sides again.
Add 8 ounces (226.8 ml) milk or semisweet chocolate (melted and cooled slightly) to the food processor and pulse/process until the frosting is smooth and creamy, about 10–15 seconds. Scrape and pulse once more if needed. Transfer frosting to a bowl and chill briefly (5–10 minutes) if it is too soft to spread.
Assemble the cake: place one cooled cake layer on your serving platter or cake stand. Spread 1 cup of the frosting evenly over the top of the first layer using a large icing spatula.
Place the second cake layer on top, then use the remaining frosting to cover the top and sides of the cake. Use the spatula to smooth the surface or create the desired texture.
Store and serve: the assembled cake can be kept at room temperature for up to 1 day before serving. After cutting, store leftover slices in an airtight container at room temperature for up to 4 days.