Line a square 8x8 inch baking pan with baking paper.
Combine the white chocolate, peanut butter and condensed milk in a heavy-based saucepan over low heat. Melt together and cook, stirring continuously for about 4-5 minutes until well combined and smooth (notes)
Pour into the prepared tin, making sure to scrape out the saucepan, and set aside.
FOR THE CARAMEL LAYER
Rinse out the saucepan and place it back on the low heat with the butter, sweetened condensed milk, sugar and golden syrup. Stir, without boiling, until the sugar is dissolved.
Let the mixture come to a bubble and let it bubble away, while constantly moving it around the pan so that it doesn't burn on the bottom, for another 4-5 minutes. It will thicken a little and the colour will darken just slightly.
Take the mixture off the heat and mix through the vanilla and salt.
Pour it over the peanut butter layer and scatter the peanuts over the top.
Chill in the fridge for 1/2 an hour before proceeding.
FOR THE CHOCOLATE TOPPING
Place the chocolate in a medium heat proof bowl and set aside.
In a small saucepan, heat the cream over medium heat, until it starts to bubble. Pour it over the chocolate and give the bowl a gentle shake to settle the chocolate under the cream. Leave for 3 minutes before stirring to a smooth, glossy ganache.
Pour the chocolate over the caramel and level out, then chill for 3-4 hours before cutting into squares.
This fudge should be kept stored in the fridge.
In place of golden syrup, you could use brown rice malt syrup or corn syrup. Honey would work but would change the flavour a little.
If the PB fudge looks at any time like its splitting, just take it off the heat and stir well until it comes back together.