Heat oven to 350ºF. Generously spray two 9-inch round cake pans and place both on a baking sheet. Set aside until ready to use.
In a large bowl, cream together butter and sugar until light and fluffy. Add eggs and vanilla extract and blend well. In a small bowl, add flour, cocoa powder, baking powder, baking soda, and salt, and gently stir to combine. Fold dry ingredients into wet and alternate adding the buttermilk and sour cream as you mix. Then, on low speed, use hand mixer to blend mixture until all ingredients are incorporated (about 3 minutes). Pour batter into prepared cake pans.
Bake 30 to 40 minutes or until cakes barely spring back when gently pressed. Let cool completely in pan before removing.
Meanwhile, for the frosting, in a medium sized bowl blend together melted chocolate and butter. Add vanilla extract, cocoa, and 2 cups of powdered sugar and mix slowly until mostly blended. Once sugar is blended, mix on high speed, adding half & half, to get a light and fluffy consistency. If the icing is too thin, add additional powdered sugar. Conversely, if the icing is too thick, add half & half 1 tablespoon at a time.
To assemble cake, place one cake layer upside down on serving platter (this creates a flat and even cake). Ice the top of the cake. Place the second cake layer upside down onto the first layer. Ice the entire cake using the remaining frosting. Decorate as desired. Cut and serve.