Contratos inteligentes sin transacciones ETH

Tal vez me equivoque, pero entiendo que las Transacciones de Contratos Inteligentes siempre deben contener un campo "VALOR", es decir, la cantidad de Ether que Alice transferirá a Bob en caso de que se cumpla cierta condición.

Teniendo esto en cuenta, ¿significa que los Smart Contracts de Ethereum no se pueden utilizar para establecer cláusulas que no involucren a Ether? Como por ejemplo:

a) SI Alice transfiere el Título de Propiedad de una casa a Bob, ENTONCES Bob a cambio le transfiere otro Título de Propiedad;

O, por ejemplo: b) SI el valor de la temperatura de enero es inferior a X, ENTONCES el seguro reduce la prima del seguro para el próximo mes;

c) SI el consumidor A compra algo pero está roto, ENTONCES recibe una compensación (no monetaria) del vendedor.

En caso de que esto sea posible, los nodos tendrán una compensación según el Gas utilizado, incluso si no hay una transacción de Ether entre las partes. ¿no es así?

Gracias de antemano.

Respuestas (1)

Tu no entiendes.

Las transacciones contienen datay valueen el nivel de protocolo. dataes para una posible interpretación por un contrato inteligente. valuepuede contener un valor distinto de cero y el propio protocolo impone reglas como no gastar ETH que el remitente no tiene.

Una transacción puede ser estrictamente sobre datay posibles cambios de estado en el almacenamiento del contrato. En todos los casos, el costo de ejecución (peso computacional) se expresa en unidades de gasy se gaspaga con ETH.

Aquí hay un contrato simple que no se preocupa por las transferencias de valor. Costaría una pequeña cantidad de ETH pagar el gas para invocar set().

pragma solidity 0.4.25; 

contract Simple {

    uint public number;

    function set(uint _number) public {
        number = _number;
    }
}

Espero eso ayude.

Para aclarar aún más, cuando envía una transacción para invocar el contrato inteligente, sí, la transacción tendrá un valuecampo, pero el valor puede ser simplemente 0.
Gracias por tus respuestas. Solo queda una duda: al transferir ETH, los mineros verifican la transacción para verificar si no hay fraude (existencia de fondos y no doble gasto). Pero en casos como estos donde no hay transferencia de dinero ("valor") sino solo "datos", ¿hay algo que verifiquen para aprobar la transacción?
Eso es un poco mal entendido. Todos verifican. Los mineros solo compiten para desambiguar el orden de las transacciones. La confusión se debe en parte al uso de términos porque el usuario promedio esperará una transacción para "verificar", pero en realidad significan "aparecer en un bloque". Una vez que aparece en un bloque, todos echarán un vistazo para ver qué hace. En caso de que no esté claro, considere una transacción no válida. Todavía se incluirá en un bloque para que todos puedan estar de acuerdo en que se extrajo en una fila determinada en un bloque determinado y no se permitió actualizar el estado.