Cut butter into 1/2-inch cubes and keep cold in the refrigerator.
In a large bowl, whisk together flour, cocoa powder, salt and powdered sugar. Add butter, toss to coat in flour, then use your fingers or a pastry blender to cut the butter into pea-sized pieces.
Add 4 Tablespoons of the cold water mixture and stir until a shaggy dough forms. Bring the dough together with your hands, adding a bit more water if needed. Turn dough out onto a floured work surface and pat into a fat disc. Wrap in plastic wrap and refrigerate for at least 1 hour.
On a lightly floured surface, roll out dough into a 12-inch circle. Carefully transfer to a 9-inch pie dish and crimp edges as desired. Use a fork to prick the bottom all over then freeze for 30 minutes.
When ready to par-bake the crust, preheat oven to 375°F.
Line the crust with parchment and fill with dried beans or pie weights. Bake for 25 minutes, or until edges have set and darkened. Carefully remove the parchment paper and weights and bake another 5-10 minutes until bottom is dark and looks dry. Cool on a wire rack.
Preheat oven to 400°F. Line a baking sheet with foil.
Pierce sweet potatoes all over with a fork, wrap in foil and place them on a baking sheet. Bake for 1 hour, or until very soft. Reduce oven to 375°F.
Let potatoes cool completely. Peel, discard skin, and blend in a food processor until very smooth. Pull aside 2 cups pureed potatoes (save any extra for another use).
In a large bowl, whisk together eggs, sugar, brown sugar and salt. Whisk in cream, vanilla, cinnamon, ginger, and nutmeg. Add sweet potato puree and melted butter; whisk until smooth.
Pour mixture into parbaked crust and smooth the surface. Bake until the filling is set, 45-55 minutes. Remove from the oven and cool completely. Serve with whipped cream, if desired.