Uncategorized

Überlassungsvertrag leihe muster

Um diese Einschränkungen zu überwinden, wurde eine Technik vorgeschlagen, die jeden externen Aufruf isoliert und das Risiko eines Ausfalls vom Vertrag auf den Benutzer verlagert. Aufgrund der Isolierung der Übertragungen müssen sich keine anderen Übertragungen oder Vertragslogiken auf deren erfolgreiche Ausführung verlassen. Sehen wir uns nun ein paar Beispiele dieses Musters in freier Wildbahn an. Normalerweise kosten die Transffering-ERC20-Token Gas, das in Ether bezahlt wird. Mit metaTokens können Benutzer direkt in jedem ERC20-Token bezahlen, das sie wünschen. Auf hohem Niveau könnten die Nutzer die DAI daher auch übertragen, indem sie die Transaktionsgebühr in DAI zahlen und niemals ETH besitzen müssen. Alice erstellt jetzt eine einfache, aber vollständige Implementierung eines Zahlungskanals. Zahlungskanäle verwenden kryptografische Signaturen, um wiederholte Übertragungen von Ether sicher, sofort und ohne Transaktionsgebühren zu tätigen. Jedes vom Compound-Protokoll unterstützte Asset wird über einen cToken Smart Contract integriert, bei dem es sich um ein ERC20-kompatibles Token handelt, das die Darstellung der dem Protokoll bereitgestellten Salden enthält. Dieser umschlossene Token ist die primäre Möglichkeit, mit dem Compound-Protokoll zu interagieren. Die Verwendung dieses Musters kann als Kompromiss zwischen Sicherheit und Komfort für die Benutzer betrachtet werden. Vor der Implementierung sollte man bewerten, ob der Einschnitt in der Benutzererfahrung überschaubar ist oder ob eine geschickte Verwendung des Secure Ether Transfer-Musters ausreichen könnte, um Sicherheitslücken auszuschließen.

Wenn Sie hingegen das Muster “Zurückziehen” aus dem ersten Beispiel verwenden, kann der Angreifer nur dazu führen, dass sein eigener Rückzug fehlschlägt und nicht der Rest der Vertragsarbeit. Das folgende ist ein Beispiel für das Rückzugsmuster in der Praxis in einem Vertrag, wo das Ziel ist, das meiste Geld an den Vertrag zu senden, um der “reichste” zu werden, inspiriert von König von der Ether. Signaturen, die von web3.js erstellt werden, sind die Verkettung von r, s und v, daher besteht der erste Schritt darin, diese Parameter aufzuteilen. Sie können dies auf der Clientseite tun, aber wenn Sie dies innerhalb des Smart Contracts tun, müssen Sie nur einen Signaturparameter anstelle von drei senden. Das Aufteilen eines Bytearrays in Komponententeile ist ein Durcheinander, daher verwenden wir die Inline-Baugruppe, um die Aufgabe in der splitSignature-Funktion (die dritte Funktion im vollständigen Vertrag am Ende dieses Abschnitts) zu erledigen. Das Senden von Äther an eine andere Adresse in Ethereum umfasst einen Aufruf an die empfangende Entität. Es gibt mehrere Gründe, warum dieser externe Aufruf fehlschlagen könnte. Wenn es sich bei der empfangenden Adresse um einen Vertrag handelt, kann eine Fallbackfunktion implementiert sein, die einfach eine Ausnahme auslöst, sobald sie aufgerufen wird. Ein weiterer Grund für den Ausfall ist das Auslaufen des Gases.

Dies kann in Fällen passieren, in denen viele externe Anrufe innerhalb eines einzigen Funktionsaufrufs getätigt werden müssen, z. B. wenn die Gewinne einer Wette an mehrere Gewinner gesendet werden. Aus diesen Gründen sollten Entwickler einem einfachen Prinzip folgen: Vertrauen Sie niemals externen Aufrufen, ohne einen Fehler zu verursachen. Meistens ist dies kein Thema, denn man könnte argumentieren, dass es in der Verantwortung des Empfängers liegt, sicherzustellen, dass er sein Geld erhalten kann, und falls er es nicht tut, ist es nur zu seinem Nachteil. Der folgende Beispielcode eines Auktionsvertrags, der von diesem Beispiel inspiriert ist, veranschaulicht, wie selbst ein einzelner Empfänger möglicherweise einen ganzen Vertrag einfrieren könnte. Auf diese Weise umgesetzt, würde eine ausgelöste Ausnahme in einem der Transfers nur diese spezifische Übertragung und nicht eine ganze Reihe von Transfers oder sogar den gesamten Vertrag, wie im Beispiel von oben, bewirken. Die Idee ist, einen Vertrag pro Stimmzettel zu erstellen, der einen kurzen Namen für jede Option angibt. Dann gibt der Ersteller des Vertrages, der als Vorsitzender fungiert, das Recht, für jede Adresse einzeln abzustimmen.