¿Hay debilidades en el uso de Oraclize (o similar) para la aleatorización?

Estoy tratando de aprender sobre los contratos inteligentes de Ethereum y estudiando código de ejemplo y Dapps existentes. Si entiendo las cosas (y probablemente no), Solidity no puede crear números aleatorios, por lo que los desarrolladores deben usar un servicio como Oracle.

Estaba revisando las transacciones y vi algo interesante, un poco confuso:

  1. el usuario final crea una transacción enviando ether desde su billetera a dapp_smart_contract_1
  2. dapp_smart_contract_ 1 luego envía una transacción a oraclize_smart_contract
  3. Se ejecuta la consulta oraclize (Primero, es curioso cómo funciona esto. ¿Por qué los desarrolladores necesitan usar Oraclize? ¿Por qué no configurar su propio servicio RESTful u otro mecanismo?)
  4. oraclize devuelve un número aleatorio llamando a dapp_smart_contract_ 2
  5. dapp_smart_contract_2 realiza transacciones con dapp_smart_contract_1
  6. dapp presenta los resultados

Es muy probable que no entienda el proceso, pero si lo entiendo, parece que el desarrollador de dapp puede alterar los resultados en esta configuración y hacer que la aplicación todavía parezca estar usando los resultados de la consulta de Oraclize algunas veces.

De todos modos, tengo curiosidad por saber si hay debilidades o vulnerabilidades en el uso de un servicio como Oraclize y también si hay planes para hacer que los contratos inteligentes de Ethereum sean "mejores" para que los servicios centralizados no sean necesarios.

Respuestas (1)

Curioso como funciona esto

Furst, crea un evento para Oracle. En el caso de Oraclize, se hace llamando a su método. Luego, un bot fuera de la cadena, que busca nuevos eventos, lo procesa: ejecuta la solicitud http y vuelve a poner el resultado en la cadena llamando a otro método de contrato. Ahora, el resultado puede ser accesos por su contrato.

¿Por qué los desarrolladores necesitan usar Oracle? ¿Por qué no configurar su propio servicio RESTful u otro mecanismo?

No necesitas _ La gente lo usa porque es mucho más simple. No necesita preocuparse por el bot fuera de la cadena.

Tengo curiosidad por saber si hay debilidades o vulnerabilidades en el uso de un servicio como Oracle

Usted paga el precio de la confianza (¿qué pasa si Oraclize deja de funcionar o envía datos sesgados?). También cobran una tarifa.

si hay planes para hacer que los contratos inteligentes de Ethereum sean "mejores" para que los servicios centralizados no sean necesarios?

Vamos a dividirlo en 2 preguntas:

  1. ¿Es posible utilizar alguna fuente implícita de datos fuera de la cadena? Como mineros que hacen la solicitud por sí mismos.

No. Todos los resultados de la ejecución de blockchain deben ser deterministas para que todos puedan verificar el bloque. Diferentes solicitudes hacen producir diferentes respuestas. Además, suponiendo que no sea un problema, tendrá servicios DDoS porque cualquier persona que quiera verificar la transacción hará una solicitud http.

  1. ¿Podemos hacer que Oracle sea descentralizado?

Seguro. Por ejemplo, elijamos 50 personas de confianza que pondrán el precio de USD en blockchain y luego usaremos la mediana. Así es como MakerDAO calcula el precio ETH/USD sin confiar en todos.

Puede ampliar esta idea implementando cualquier mecanismo de consenso.