Preheat your oven to 350°F (175°C). Grease and flour three 8-inch round cake pans (or two 9-inch pans), or line the pans with parchment paper circles.
In a large mixing bowl, whisk together the flour, sugar, cocoa powder, baking powder, baking soda, and salt.
In another bowl, whisk together the eggs, milk, oil, and vanilla extract until well combined.
Add the wet ingredients to the dry ingredients and mix until just combined, being careful not to overmix. Gradually add the buttermilk and stir until smooth. Pour in the hot water (or hot coffee) and mix again. The batter will be thin, but this helps create a moist cake.
Pour the batter evenly into the prepared pans. Bake for 30-35 minutes (for 8-inch pans) or 25-30 minutes (for 9-inch pans), or until a toothpick inserted into the center comes out clean or with a few crumbs attached. Let the cakes cool in the pans for about 10 minutes, then turn them out onto wire racks to cool completely.
In a large bowl, sift the cocoa powder and set aside. Beat the butter in an electric mixer until smooth and creamy. Gradually add the cocoa powder, powdered sugar, milk, vanilla, and a pinch of salt. Mix until the frosting is smooth and creamy. Adjust the consistency by adding more milk, if necessary, for spreading.
Once the cakes have cooled completely, spread a generous layer of frosting on top of one cake layer. Place the second layer on top and frost the top and sides of the entire cake. If you have a third layer, repeat the process and finish with a smooth layer of frosting.
Let the cake sit for a few minutes to set the frosting before slicing. Serve the cake at room temperature for the best flavor and texture.
