Preheat your oven to 350°F (175°C). Grease and flour two 9-inch round cake pans.
In a large mixing bowl, combine the flour, sugar, cocoa powder, baking powder, baking soda, and salt. Mix well.
Add the eggs, milk, vegetable oil, and vanilla extract to the dry ingredients. Beat on medium speed for 2 minutes until well combined.
Stir in the boiling water until the batter is smooth (the batter will be thin). Pour evenly into the prepared cake pans.
Bake for 30-35 minutes, or until a toothpick inserted in the center comes out clean. Let the cakes cool in the pans for 10 minutes, then remove from pans and cool completely on wire racks.
While the cakes cool, prepare the chocolate pudding filling. In a saucepan, whisk together the milk, sugar, cocoa powder, cornstarch, and salt over medium heat. Cook, stirring constantly, until the mixture thickens and begins to boil. Remove from heat and stir in the butter and vanilla extract. Let cool completely.
For the frosting, beat the softened butter in a mixing bowl until creamy. Gradually add the powdered sugar and cocoa powder, mixing until combined. Add the vanilla extract and enough heavy cream to achieve a spreadable consistency.
Once the cakes are completely cool, place one layer on a serving plate. Spread the chocolate pudding filling on top, then place the second layer on top. Frost the top and sides of the cake with the chocolate frosting.