Line an 8-inch square baking pan with foil and grease with butter.
In a medium saucepan, combine the chocolates and cream and heat over low heat.
Stir constantly until well blended.
Add the sugar and salt. Cook over low-medium heat, stirring constantly until it comes to a rolling boil and then reduce heat to low.
Stop stirring and cook until the mixture reaches 236F. At altitudes above 5000 feet, you want to stop at 226F. (You can double check by dropping a small piece into a cold glass of ice water. It should form a soft ball that when removed from the ice water slowly spreads).
Immediately remove from the heat. Add the butter, but do not stir.
When the mixture has cooled to just lukewarm, about an hour, add the vanilla and beat vigorously with a wooden spoon until the mixture has lost its sheen, about 5 minutes.
Add the nuts if using. Scrape into the prepared pan.
When the fudge has hardened, about an hour, lift the foil out of the pan, peel it off, and cut the fudge into squares.
Wrap well and refrigerate. Fudge keeps for weeks, but is best eaten fresh.