Was ist die maximale Berechnung, die eine Abfrage oder konstante Funktion in Solidity ausführen kann?

Da Abfrage- oder Konstantenfunktionen nur auf einem einzelnen Knoten ausgeführt werden, besteht keine Abhängigkeit von Gas oder Gaslimit. Ich führe Quicksort in der Abfrage-/Konstantenmethode durch. EVM kann ein Array mit einer Länge von bis zu 50000 sortieren. Die Funktion gibt Null zurück, wenn die Arraygröße zunimmt.

Antworten (1)

Jede von der Blockchain ausgeführte Operation kostet Benzin. Die theoretische maximale Anzahl von Operationen, die ausgeführt werden können, ist daher das maximale Gas/Block .

Andernfalls könnte die gesamte Blockchain mit Funktionsaufrufen gespammt (und schließlich getötet) while(true){}werden.

Konstante Funktionen (diejenigen, die den Zustand nicht ändern) können bei Bedarf auf Ihrem lokalen Knoten ausgeführt werden, und dann würde es kein Benzin kosten. Aber wenn Sie diese Funktion von einer Transaktion aus aufrufen, kostet es Benzin.

Every operation executed by the blockchain costs gas. The theoretical max number of operations that can be executed is thus the max gas/block.Dies gilt nicht für konstante Funktionen.
Ich habe dir den Grund gegeben, warum das wahr ist. Ich habe Ihnen den Link zu einer anderen Antwort gepostet, die meine Bestätigung unterstützt. Hier ist ein Verweis auf die offizielle Solidity-Dokumentation, in der Sie sehen können, dass das Hinzufügen von 2 Zahlen 3 Gas verbraucht. Was lässt Sie denken, dass Sie alle belügen und dass sie tatsächlich kein Benzin kosten?
Funktionsaufrufe über das RPC-Verfahren eth_callermöglichen das freie Auslesen von Vertragsdaten. Die meisten Bibliotheken, die RPC verwenden, verfügen über solche Funktionen. Siehe github.com/ethereum/wiki/wiki/JSON-RPC#eth_call . Es ist schreibgeschützt, daher sind natürlich alle Statusänderungen, die es verursacht, nicht dauerhaft.
@flygoing, du hast recht und das meinte ich mit Funktionen, die auf einem lokalen Knoten ausgeführt werden . Wenn eine solche Funktion jedoch von einer Smart-Contract-Funktion aufgerufen wird, die nicht über RPC aufgerufen wird, sondern von der Blockchain ausgeführt wird, dann kostet sie Gas.
Richtig, aber das ist eindeutig nicht das, wonach OP gefragt hat, und Sie sind nur pedantisch, um pedantisch zu sein.
Möglicherweise habe ich die auf einem einzelnen Knoten ausgeführte Phrase in der ursprünglichen Frage von OP falsch interpretiert und nicht erkannt, dass er sich ausschließlich auf RPC-Funktionsaufrufe bezieht.