¿Dónde puedo obtener una revisión de contrato en Solidity? ¿Cuánto costaría? [cerrado]

Básicamente, quiero implementar un contrato de lotería, que por defecto debería ser muy preciso y seguro, ya que todo el saldo se almacenará en el contrato, y también tengo que rastrear los saldos de los ganadores allí. He leído algunos problemas de seguridad y problemas de condiciones de carrera, pero sería bueno tener una revisión desde fuera de mi cabeza.

Voy a votar para cerrar esta pregunta como fuera de tema porque la mayoría de las preguntas de recomendación son imanes mal especificados para el correo no deseado y la eliminación de bicicletas, por lo que no aceptamos preguntas de este tipo en ningún sitio de Stack Exchange. meta.stackoverflow.com/questions/251134/…

Respuestas (3)

Open Zeppelin y Consensys ofrecen revisiones de seguridad para contratos inteligentes.

En lo que respecta a una lotería, el problema más básico que puede tener es "encontrar" la aleatoriedad para seleccionar al ganador de la lotería.

Para encontrar la aleatoriedad existen las siguientes soluciones:

  1. Utilizando el hash del bloque anterior. Este método es susceptible de bloquear ataques de retención. Esto significa que el minero del tx sabrá quién es el ganador cuando ejecute el contrato inteligente. Luego, puede optar por no agregar el bloque minado si el resultado de la lotería no es a su favor [Fuente] .
  2. Usando un contrato inteligente de aleatoriedad como RandDao . Realmente no lo he usado, así que no estoy seguro de qué garantías de seguridad ofrece.
  3. Usando un servicio de Oracle como oraclize . Esta solución podría ser segura en teoría, pero introduce una parte confiable en su diseño.
  4. Recoge la aleatoriedad de los usuarios. Esta debería ser una versión generalizada de la moneda de Blum lanzando al aire por teléfono . El problema de este enfoque es que el protocolo tiene dos fases. La fase de compromiso cuando las partes se comprometen con un número aleatorio y una fase de revelación cuando las partes revelan su aleatoriedad. Para diseñar dicho esquema, debe tener en cuenta que las partes pueden optar por abortar el protocolo y no revelar sus compromisos. Además, este esquema se basa en la capacidad del usuario para proporcionar aleatoriedad con una entropía lo suficientemente alta (¿Qué tan aleatoria es una cadena 123456?).

En general, la aleatoriedad en cadena es un problema abierto. Puede ver la página de ethereum github para otras soluciones que no se mencionan en mi respuesta Ethereum research .

PD: no estoy afiliado a ninguna de las empresas mencionadas anteriormente. PD: Espero que mi respuesta ayude.

Bueno, si tienes el dinero, puedes ver con Zeppelin . También puede consultar esta plataforma independiente de Ethereum . Puede explorar algunos subreddits o comunidades de discordia centradas en Ethereum/contratos inteligentes y ver si hay personas dispuestas a hacerlo.

@BokkyPooBah es un auditor de contratos inteligentes. Ha auditado toneladas de contratos inteligentes. https://github.com/bokkypoobah

Descargo de responsabilidad: no estoy afiliado.