Preheat oven to 350°F (175°C). Grease and flour two 9-inch round cake pans.
In a large bowl, sift together flour, sugar, cocoa powder, baking powder, baking soda, and salt.
In another bowl, whisk eggs, milk, oil, and vanilla extract.
Gradually add wet ingredients to dry ingredients, mixing until combined.
Carefully stir in boiling water (batter will be thin).
Divide batter evenly between prepared pans and bake for 30–35 minutes or until a toothpick inserted comes out clean.
Cool cakes in pans for 10 minutes, then remove to wire racks to cool completely.
For frosting, beat butter until creamy. Gradually add powdered sugar and cocoa powder, then salt, vanilla, and heavy cream. Beat until smooth and fluffy.
Frost the cooled cakes and assemble layers. Decorate as desired.