CHECKSEQUENCEVERIFY Nach x Mal der letzten Transaktion

Gibt es eine Möglichkeit, eine Multi-Sig-Adresse zu haben, die es einem der Unterzeichner ermöglicht, nach einer festgelegten Zeit nach jeder Transaktion / Aktualisierung der Adresse nur seinen einzigen Schlüssel zu verwenden?

Ich möchte eine Adresse haben, bei der 2 Personen für ausgehende Transaktionen unterschreiben müssen. Aber wenn nach 30 Tagen überhaupt nichts mit der Adresse gemacht wurde, kann ein einzelner Unterzeichner eine Transaktion unterzeichnen. Aber wenn es jemals etwas wie eine ein- oder ausgehende Transaktion gibt, werden die 30 Tage zurückgesetzt.

Antworten (3)

Während dies anscheinend nicht direkt möglich ist, da das Bitcoin-Skript es nicht erlaubt, eine Transaktion "innerhalb der letzten 30 Tage" zu referenzieren, könnte man über einen "Workaround" mit einer Geschäftslogik nachdenken, die die P2SH-Adresse überwacht. Ein Ansatz könnte das verschachtelte „if“ sein, das im Bitcoin-Skript erlaubt ist. Wenn innerhalb der letzten 30 Tage jemals eine Zahlung erfolgte, müssen die 30 Tage "zurückgesetzt" werden - vielleicht müssten Sie mit zwei P2SH-Adressen spielen und das Geld auf eine zweite Adresse verschieben (und umgekehrt). Wenn Ihre Geschäftslogik in den letzten 30 Tagen eine Transaktion entdeckt, wird das Geld an eine zweite Adresse und dann erneut an die erste Adresse überwiesen. Für diese zweite Adresse hätten Sie dieselben Regeln, nur das TX-Ausgabeskript (für seine Adresse) ändert sich. Die Geschäftslogik könnte ein "

IF
  OP_HASH160  <length 0x14> <SECRET> OP_EQUAL
  <business pubkey> CHECKSIG
ELSE
  IF
    2 <Alice's pubkey> <Bob's pubkey> <Escrow's pubkey> 3 CHECKMULTISIG
  ELSE
    30d CHECKSEQUENCEVERIFY DROP
    <Alice's pubkey> CHECKSIG
  ENDIF
ENDIF

Offensichtlich wird deutlich, dass in einem solchen Szenario Gebühren anfallen. Dies hängt von der Häufigkeit der Transaktionen innerhalb der letzten 30 Tage und dem Wert der Gelder ab, die verschoben werden. Die Gebühren sollten Ihr Geld nicht auffressen ... Und andererseits könnte man vielleicht prüfen, ob Sie Lightning als "Transportmechanismus" verwenden, um Werte zu verschieben?

... nach einer festgelegten Zeit nach jeder Transaktion/Aktualisierung der Adresse nur noch ihren einzigen Schlüssel zu verwenden?

Dies ist nicht möglich, da es im Bitcoin-Skript keine Möglichkeit gibt, vergangene Transaktionen innerhalb einer anderen Transaktion abzufragen, sodass Sie die Zeit der letzten Transaktion an diese Adresse nicht überprüfen können.

Eine Problemumgehung, wenn sich die Multi-Sig-Adresse nicht im Cold Storage befindet und Ihr Anwendungsfall dies zulässt, besteht darin, alle Münzen in der Multi-Sig-Adresse jedes Mal auszugeben, wenn Sie eine neue Einzahlung an diese Adresse vornehmen, wodurch der Timer zurückgesetzt wird durch " überschreiben" es.

Wenn Sie also X Münzen in der Multi-Sig haben und Y neue Münzen einzahlen möchten, führen Sie eine Transaktion durch, die auch diese X Münzen ausgibt (wobei beide Unterzeichner sie signieren müssen) und eine neue Ausgabe von X + Y Münzen vornehmen.

Das Ausgabeskript hätte dann immer die Form:

IF
    2
ELSE
    30d CHECKSEQUENCEVERIFY DROP
    1
ENDIF
<Alice's pubkey> <Bob's pubkey> 2 CHECKMULTISIG

Dies würde bei laufendem Timer immer genau eine unverbrauchte Ausgabe in der Multi-Sig-Adresse zur Folge haben.