Si la vista o la función pura no cuestan gasolina, ¿se abusaría de ellas/viajar gratis?

Entonces, si entiendo esto correctamente, viewla función solo lee datos de ethereum y no muta ningún estado y la purefunción ni siquiera lee datos y están destinados a casos comoreturn 1+1;

Si este es el caso, ¿se abusaría de ellos ya que no cuestan gasolina? ¿Podría simplemente usarlos para el cálculo gratuito? ¿Qué sucede si tengo un bucle infinito en una vista o función pura?

TLDR : No lo harán.

Respuestas (2)

Solo para agregar a la buena respuesta de @Shawn.

Sí, puedes abusar de ellos. Pero como los cálculos purey viewse realizan solo en su propio nodo, solo dañaría su propio nodo. No dañaría la red Ethereum de ninguna manera. Si llama a la(s) función(es) lo suficiente, incluso podría bloquear su nodo, pero aún así no dañaría la red de ninguna manera.

Digamos que si llamo a mi contrato a través de web 3 sin mi propio nodo, ¿eso afectaría a la red de alguna manera?
No, siempre tiene que llamar a algún nodo, por lo que solo se ve afectado el nodo llamado. No puede acceder a la cadena de bloques sin un nodo intermediario.
Hmm.. Tenga paciencia con mi ignorancia. Tengo entendido que cuando usa dapp, accede al nodo gratuito alojado por infura a través de web3.
Infura es unidireccional, sí. Le proporcionan un nodo que puede usar. Pero hay muchas otras alternativas.
Entonces, ¿es justo decir que podemos aprovechar el cálculo de la función pura/vista cuando no estamos ejecutando nuestro propio nodo? P.ej. ¿Puedo ejecutar una costosa tarea de procesamiento de números en uno de los nodos de la red de forma gratuita?
Eso es entre usted e Infura. No tengo idea de qué tipo de restricciones/límites de tarifas tienen.
Gracias por la aclaración. Entonces, en lo que respecta a la red ethereum, realmente no puedo realizar un cálculo gratuito, ya que solo está en mi "propio" nodo y no se transmitirá.
Publique una nueva pregunta si tiene más preguntas; se desaconsejan las discusiones en los comentarios. Pero sí, tienes razón.

purey viewlas funciones solo son "gratuitas" cuando las llama externamente, ya que llama a esa función por sí misma y ejecuta el cálculo en su nodo. Entonces, si tenía una función que devolvía "1+1", sí, puede llamar a esa función de vista individual tantas veces como quiera de forma gratuita, incluso sin crear una transacción.

Sin embargo, si usa una función viewo puredentro de una función interna que SÍ cuesta gasolina, se le cobrarán esos cálculos como de costumbre.

Gracias por la información. ¿Es posible invocar la función mala pura sin usar mi propio nodo? ¿Sería eso todavía considerado abuso o viaje gratis? ¿La red penaliza tal comportamiento de alguna manera?