Aufbau einer Lightning Invoice

Ich frage mich seit tagen, wie ich eine LN-Invoice Manuell erstellen (Python) kann, so wie ich das Verstanden habe, wird die Invoice vom Node Signiert und nur der Payment Hash verändert sich, sofern der selbe Node verwendet wird, dass ist soweit Richtig oder?

Woraus genau setzt sich der Payment Hash zusammen, ich weiß das er sich aus dem Preimage ableitet, doch woraus besteht das Preimage am ende genau? Das erschließt sich mir noch nicht ganz.

Vllt kann mich da jemand etwas genauer einführen, mein English ist leider nicht das beste.