Contratos inteligentes electorales

Tengo problemas para implementar un factor de tiempo fuera en mi elección. Digamos que cuando se implementa el contrato, el cronómetro comienza, después de que el cronómetro se acaba, la elección finaliza y anuncia los resultados de la elección.

¿Cómo puedo generar informes en solidity?

Respuestas (2)

No genera informes en Solidity.

Lo que normalmente haría sería tener una hora de cierre después de la cual ya no se aceptarían votos, y verificar esa hora cada vez que alguien intente votar. Por lo que a partir de la hora de cierre, el estado de las votaciones quedaría automáticamente bloqueado.

Convertir el estado bloqueado final en un informe legible por humanos normalmente sería el trabajo de algún software externo que realiza solicitudes de lectura a su nodo y las formatea para humanos. Esto se hace más comúnmente en JavaScript, a menudo usando una herramienta como Truffle.

Tiene que invertir el flujo ligeramente porque no puede simplemente iniciar un proceso cuando llega la fecha límite.

Puede (y debe) restringir la votación al período en que la elección está abierta. Es decir, no permitir ninguna votación después de la fecha límite. También puede devolver un boolpara indicar el estado abierto/cerrado, para que los clientes puedan saber si la elección está abierta o cerrada.

modifier onlyIfOpen {
  require(isOpen());
  _;
}

function isOpen() public view returns(bool isIndeed) {
  return now < deadlinel;
}

Opcionalmente, también puede devolver un ganador.

function blueTeamIsWinner() public view returns(bool isIndeed) {
  return blueCount > redCount;
}

Todo se basa en que el cliente inspeccione el contrato en lugar de iniciar un proceso en un cronograma.

Espero eso ayude.