Preheat oven to 350 degrees F. Grease and flour a 9x13 pan, set aside.
Make cake batter by whisking together flour, cocoa, baking soda, baking powder, and salt in a medium mixing bowl, set aside.
Add butter and sugar to a separate large mixing bowl or stand mixer bowl, beat until creamy.
Beat each egg individually until each is combined into butter mixture before adding the next one.
Add flour mixture in three batches, adding milk with last batch and mixing until smooth and just combined (do not overmix).
Pour and smooth batter into prepared pan.
Bake for 36-37 minutes or until a toothpick comes out clean.
Remove from oven and allow to cool.
While the cake is cooling, prepare the frosting, add butter and powdered sugar to large mixing bowl or bowl of stand mixer and beating until smooth and creamy (about 4 minutes on high).
Add salt and vanilla extract and beat until combined.
With a double boiler or heat-safe bowl over saucepan with about two inches of water in the pan, heat chocolate on low heat until begging to melt. Remove from heat and stir until smooth.
Allow the chocolate to cool slightly, then mix into butter mixture until combined.
Spread evenly over top of cooled cake and serve.