Rücktritt erbvertrag Muster

Ich werde diese Gelegenheit nutzen, um eine gemeinsame Solidity-Programmierpraxis namens “Vererbung” einzuführen, die es einem Vertrag ermöglicht, Funktionen, Modifikatoren und Variablen von einem anderen Vertrag zu erben. Dies ist der Vererbung in vielen objektorientierten Sprachen sehr ähnlich. Insbesondere wird das Design ein Design sein, bei dem der Begünstigte behauptet, dass der Eigentümer gestorben ist, und dann muss der Eigentümer innerhalb einer Wartezeit eine “Herzschlag”-Transaktion bereitstellen. Wenn der Besitzer den Herzschlag macht, bevor die Periode abläuft, dann ist er nicht gestorben. Wenn nicht, dann hält ihn der Vertrag für tot, und er überträgt das Eigentum auf Antrag auf den Begünstigten. Ein weiteres Tool zur Nachlassplanung, das Haftungsausschlüsse verwendet, ist eine Haftungsausschluss-Vertrauensstellung. Sie können diese Art von Vertrauen verwenden, um sicherzustellen, dass Ihr Begünstigter ein Einkommen aus der nicht beanspruchten Immobilie hat. Vermögenswerte bis zur Höhe Ihres verfügbaren Befreiungsäquivalents können nach Ihrem Tod auf den Trust übertragen werden, aber der überlebende Ehegatte hat neun Monate Zeit, um zu entscheiden, wie viel in das Vertrauen zu setzen, abhängig von ihrer Situation und den Erbschaftssteuergesetzen zu diesem Zeitpunkt. Pragma-Erklärungen können schweben, wenn ein Vertrag für den Verzehr durch andere Entwickler bestimmt ist , wie im Fall von Verträgen in einer Bibliothek oder einem EthPM-Paket. Andernfalls müsste der Entwickler das Pragma manuell aktualisieren, um lokal kompiliert zu werden. Das Einschränken des Zugriffs ist ein gängiges Muster für Verträge.

Beachten Sie, dass Sie niemals verhindern können, dass ein Mensch oder Computer den Inhalt Ihrer Transaktionen oder den Zustand Ihres Vertrags liest. Sie können es ein bisschen schwieriger machen, indem Sie Verschlüsselung verwenden, aber wenn Ihr Vertrag die Daten lesen soll, werden es auch alle anderen tun. Bei der Verwendung mehrerer Vererbungen in Solidity ist es wichtig zu verstehen, wie der Compiler das Vererbungsdiagramm erstellt. Beabsichtigte Verwendung: Dieser Vertrag (und abgeleitete Treuhandverträge) sollte ein eigenständiger Vertrag sein, der nur mit dem Vertrag interagiert, der ihn instanziiert hat. Auf diese Weise ist gewährleistet, dass alle Ether nach den Escrow-Regeln behandelt werden, und es besteht keine Notwendigkeit, auf zahlbare Funktionen oder Übertragungen im Vererbungsbaum zu überprüfen. Der Vertrag, der den Treuhandfonds als Zahlungsmethode verwendet, sollte seine primäre sein, und bieten öffentliche Methoden, die auf die Anzahlung des Treuhands umleiten und zurückziehen. Dieser Vertrag ermöglicht es, Ether-Zahlungen auf eine Gruppe von Konten aufzuteilen. Der Absender muss sich nicht bewusst sein, dass der Ether auf diese Weise aufgeteilt wird, da er durch den Vertrag transparent behandelt wird. Die Idee ist einfach: Wenn eine Adresse Code enthält, handelt es sich nicht um eine EOA, sondern um ein Vertragskonto. Für einen Vertrag ist jedoch während der Konstruktion kein Quellcode verfügbar. Dies bedeutet, dass der Konstruktor während der Ausführung ausgeführt wird, aber Aufrufe an andere Verträge ausführen kann, aber extcodesize für seine Adresse null zurückgibt.

Im Folgenden finden Sie ein minimales Beispiel, das zeigt, wie diese Prüfung umgangen werden kann: Bei der Entscheidung, was der Vertrag nach dem Tod des Besitzers tun soll, hatte ich eine Design-Wahl. Ich entschied mich für den Eigentümerwechsel des Smart Contracts, aber ich hätte den Vertrag genauso leicht selbst zerstören und den Äther an den Begünstigten schicken können. Ich entschied mich für einen Eigentümerwechsel, weil es mir elegant erschien, weil der neue Eigentümer möglicherweise vor der gleichen Herausforderung bei der Immobilienplanung steht wie der Vorbesitzer. Funktionsmodifikatoren können in dieser Situation verwendet werden, um die Zustände zu modellieren und sich vor einer falschen Vertragsnutzung zu schützen. Wenn Ihr Ziel darin besteht, zu verhindern, dass andere Verträge Ihren Vertrag aufrufen können, ist die extcodesize-Prüfung wahrscheinlich ausreichend. Ein alternativer Ansatz besteht darin, den Wert von (tx.origin == msg.sender) zu überprüfen, obwohl dies auch Nachteile hat. In diesem Fall kann der Registrierungsvertrag einen Reentracy-Angriff durch Aufrufen von Election.vote() innerhalb von isVoter() vornehmen. Angenommen, Sie möchten Ihren Äther einem Begünstigten vererben, nachdem Sie gestorben sind. Wie würden Sie den Zugang zu Ihrem Äther auf vertrauenslose Weise übertragen? Die Antwort ist natürlich mit einem klugen Vertrag! Der Smart Contract ist für viele Vorgänge verantwortlich: Verwenden Sie niemals tx.origin für die Autorisierung, ein anderer Vertrag kann eine Methode haben, die Ihren Vertrag aufruft (wo der Benutzer z. B.

über einige Mittel verfügt) und Ihr Vertrag wird diese Transaktion autorisieren, da Sich Ihre Adresse in tx.origin befindet.