You are viewing a single comment's thread from:
RE: Ethereum: Was ist eine Call Transaction? - Hilfe!
ein call ist etwas was "vorrausgeschickt" wird/ ein test ohne Gas zu konsumieren. Eine Schätzung die im Prinzip anklopft und fragt ob es sich lohnt die Transaktion auszuführen oder ob es Probleme geben wird wie "out of Gas oder so". Streng genommen wird ein Call nicht geschickt sondern local ausgeführt. Ein simulation der geplanten Transaktion wenn man so will.
Denke mal das gehört zur guten Praxis so mancher dApp. PS. call + transaktion = call-transaction also ja es wurde übersand. Ansosnten kannst du doch mit einem Blockexplorer prüfen.
Danke für deine Hilfe @lauch3d
Für mich ist das ein Widerspruch. Entweder ich simuliere/teste/klopfe an oder ich führe etwas aus.
Wird die Ausführung der Transaktion dann auf später verschoben (wenn zb die Gebühren geringer sind)? Gibt es eine Möglichkeit, dass die Transaktion nicht ausgeführt wird? Also, dass ich den Zugriff auf das ETH verliere?
Naja du hast den Smartcontract auf deinem PC und führst ihn als read-only aus. Das heist du interagierst nicht mit der Chain.
eth_call gibt dir den Wert des ausgeführten Contracts, nur eben mit dem kleinen Unterschied, dass es nicht ausgeführt wird (es wird nur berechnet/geschätzt).
Ob eine Transaktion folgt kommt drauf an was das Programm initiiert. Wenn du nur den Befehl eth_call oder eth_estimateGasUsed oder eth_estimateGasLimit ausführst, dann wird logischerweise auch nicht gesendet.
Höchstwahrscheinlich wird ein bestimmter Wert erwartet bevor gesendet wird. Was tatsächlich beim tatsächlichen Ausführen passiert kannst du nur Wissen wenn du es ausführst mit dem Risiko out of Gas zu laufen.
Du debuggst den Contract. Ethereum bzw. die Programmiersprache (Solidity) ist ja theoretisch turing-vollständig mit allen möglichen Schleifen-Befehlen. Solches Schleifen ermöglichen auch Programme die nie terminieren. Entweder praktisch in der Laufzeit nicht oder fundamental niemals nie. Du hängst also fest und läufst out of gas. Wodurch Ethereum bzw. die Programme dann praktisch eben doch irgendwann zwangsläufig terminieren.
Wenn du einen Contract voll mit Buggs hast. Wird er nicht ausgeführt und es bleibt allein der Call. Was jetzt genau die Werte sind die erwatet werden kann ich dir nicht sagen. *keine Garantie, so habe ich es zumindest verstanden ^^
Danke, dass dir so viel Mühe gibst, aber ich verstehe kein Wort.
Inzwischen habe ich eine Antwort von Bison erhalten:
Vielleicht bin ich paranoid.... Ich möchte nur verhindern, dass ich vergesse noch irgendwas zu tun oder irgendwas falsch mache und ich in 5 Jahren nicht auf mein ETH zugreifen kann, weil zb Bison bankrott ist,deren Funds gestohlen wurden oder die in ihrer Technik Abteilung rumgemurkst haben.