Según tengo entendido, todos los componentes de front-end para un dapp de ethereum basado en reacción se representan desde el punto de vista de la cuenta predeterminada de metamask del usuario. Todas las llamadas a funciones constantes en Solidity para recuperar valores de variables de estado y representar los componentes relevantes para mostrar a los usuarios, utiliza la cuenta del usuario.
Lo que me gustaría es agregarle un cierto diseño:
una rutina automatizada que se ejecuta en segundo plano (sin componentes frontales para mostrar) que evaluará el valor de la variable de estado y ejecutará una transacción de contrato inteligente que solo debe ejecutar el propietario.
Esta rutina de invocación de transacciones basada en el propietario debe ejecutarse perpetuamente en segundo plano, de manera automatizada, y no solo cuando hay un usuario que tiene la página de su sitio web abierta en su navegador.
Como ejemplo, en el caso de la dapp de votación, quiero crear una rutina en la que una vez que se haya emitido una cierta cantidad de votos, o haya expirado un cierto límite de tiempo, la rutina de cálculo de votos se ejecute automáticamente, y eso también desde el propietario. dirección (ya que solo el propietario tiene el privilegio de contar los votos y declarar ganador).
¿Podría explicar cómo se puede implementar esa rutina? ¿Tendría que almacenar el archivo de almacén de claves del propietario en el extremo del servidor para ello? ¿Es una estrategia segura? Gracias.
Podría tener un programa ejecutándose en el mismo servidor que sirve la página web de su aplicación. Este programa leerá el estado de sus variables y reaccionará ejecutando funciones. Como esto se ejecuta en su PC, puede realizar las transacciones utilizando las claves del propietario de manera segura.
Si el activador se basa únicamente en el tiempo, lo que significa que desea que una función se ejecute después de que haya pasado cierto tiempo o, en general, en una fecha en particular, puede usar servicios como el sistema de programación AION . Debido a que Aion crea una cuenta independiente (contrato inteligente) para cada usuario, puede estar seguro de que si la función proviene de esa dirección, corresponde a una función programada por el propietario. AION puede llamar a cualquier función que indiques cuando llegue un momento o bloque en particular.
Espero que esto ayude
Necesitas reevaluar.
Aquí está la restricción. Un cliente no puede firmar una dirección sin conocer la clave privada. La suplantación de identidad no es posible. msg.sender
no miente
Debe considerar el proceso y hacerlo posiblemente influirá en el diseño del contrato.
Si solo el propietario puede declarar un ganador, eso implica que hay un cliente o servidor que eventualmente lo hará. Ese estilo implica la reintroducción de una centralización que muchas veces no es necesaria.
Si la fecha límite para votar ha pasado y los votos se cuentan honestamente, entonces no habría nada subjetivo para que el propietario decidiera. Es similar para subastas y juegos.
Ahora, puede haber algún código para ejecutar al final. Debe pensar en quién lo ejecutará o qué lo desencadenará. Es común dejar que el ganador ejecute tal función, ya que se les incentiva a pagar por la gasolina.
Considerar
function claimPrize () public onlyWinner onlyIfClosed ...
Espero eso ayude.
Kombo
Jaime
Kombo
Jaime
Kombo
Kombo
Jaime
Jaime
Jaime
Kombo