Komisch, ich dachte ich hätte in dem Thread schon mal was geschrieben, war aber wohl ein anderer Thread (zum gleichen Thema).
Ich bumpe mal aus dem Anlass, dass ich eine
neue Methode zur "trustless" Vererbung von Bitcoins entdeckt habe (das sogenannte "Broadcast Delay Bitcoin Inheritance Protocol"), die eigentlich ziemlich einfach und unkompliziert ist und auch letztes Jahr
testweise in einer Wallet implementiert wurde. Sie nutzt nur Bitcoin-native Möglichkeiten und ist nahezu 100% vertrauenslos, braucht also keinen Verwahrdienst.
Ausgangslage: Alice hat eine Cold Wallet mit Coins, die sie nicht oder nur selten bewegt, und möchte sicherstellen, dass ein Angehöriger, Bob, Zugriff darauf bekommt, wenn ihr etwas passiert (Tod, Pflegebedürftigkeit, etc.)
Methode: Alice erstellt eine Transaktion mit einem Timelock, ohne diese zu broadcasten. Diese bewirkt zweierlei (mit einer Verzweigung per OP_IF implementiert):
1) Die Coins werden auf die Adresse des Angehörigen Bob transferiert, diese kann sie jedoch erst nach einer langen Zeit (z.B. ein halbes Jahr) weitertransferieren. Dies wird mit CheckSequenceVerify (OP_CSV) erreicht.
2) Die Coins können mit Alices Private Key jederzeit verschoben werden.
Die Transaktion signt Alice und gibt sie an Bob weiter, der sie nun verwahren kann. Sobald Alice etwas passiert, broadcastet Bob die Transaktion, wartet den Timelock ab und hat Zugriff auf die Coins.
Teil 2 stellt sicher, dass wenn Bob die Transaktion aus Versehen oder absichtlich zu früh broadcastet, Alice sich die Coins sofort zurückholen kann. Alice muss dafür alle paar Monate ihr Wallet prüfen. Aber Bob hat keinen Anreiz dies auszunutzen, denn sollte er diese Transaktion absichtlich zu früh broadcasten und Alice es bemerken, wird das mit dem "Bitcoins erben" sicherlich nix mehr
Diese Funktionsweise erinnert an Lightning. Der Timelock gilt ab dem Zeitpunkt, wenn die Transaktion gebroadcastet wurde. Sie verschiebt sich also automatisch immer weiter in die Zukunft, wenn nichts passiert, was den Vorteil gegenüber der Methode mit nLocktime darstellt, die
hier beispielsweise von LoyceV vorgestellt wurde.
Ich halte das auf den ersten Blick für eine ziemlich gute Methode. Natürlich muss man, wenn man die Coins verschieben sollte, eine neue Transaktion erstellen, aber bei Cold Wallets sollte das ja nicht oft vorkommen.
Der Code dafür sieht so aus (ich quote dazu den Originalthread von Andriian):
OP_IF
<Alice's Public Key> OP_CHECKSIG
OP_ELSE
<N days> OP_CSV DROP <Bob's Public Key> OP_CHECKSIG
OP_ENDIF