¿Cómo manejar los depósitos de éter como lo hacen los intercambios?

Una de las filosofías centrales de Ethereum es la descentralización. Sin embargo, todavía hay muchos casos de uso válidos para proporcionar servicios de billetera centralizados, siendo los intercambios uno de los ejemplos más conocidos.

Parece haber muy poca información disponible sobre cómo implementar técnicamente depósitos para tales escenarios.

  • ¿Cuál es la recomendación más reciente para la cantidad de confirmaciones de tx con el lanzamiento de Homestead? ¹
  • ¿Existen bibliotecas o servicios que proporcionen implementaciones de muestra? ²
  • ¿Cuál es la implementación aproximada del pseudocódigo para manejar esto usted mismo?
  • ¿Alguna otra consideración? ³

1) 5 confirmaciones mencionadas aquí ¿Qué cantidad de confirmaciones se considera segura en Ethereum? y 12 aquí ¿Cómo debo manejar las bifurcaciones de blockchain en mi DApp? , pero ¿qué tan relevantes siguen siendo estos con el lanzamiento de Homestead?

2) reflux-tx se menciona aquí ¿Cómo debo manejar las bifurcaciones de blockchain en mi DApp?

3) He visto a Vitalik recomendar ejecutar dos nodos para reducir los riesgos.

Hay demasiadas respuestas posibles o las buenas respuestas serían demasiado largas para este formato. Agregue detalles para limitar el conjunto de respuestas o para aislar un problema que pueda responderse en unos pocos párrafos. Tal vez podría dividirlos y responder preguntas precisas individuales.
Agregue un enlace a "He visto que Vitalik recomienda ejecutar dos nodos para reducir los riesgos". El contexto puede ser importante. Yo, dado que estoy haciendo muchas interacciones fuera de la cadena de bloques y, por lo tanto, me preocupo mucho por este tema, planeo 3, cada una con una tecnología diferente (por ejemplo, geth, pyeth, ethereumjs, parity, etc.), todas en diferentes nubes con diferentes credenciales de administración.
Para las transacciones, ahora se ha respondido definitivamente como 12 confirmations + 2 implementations(cuando se trata de grandes cantidades de ETH) reddit.com/r/ethereum/comments/4eplsv/…
@NikhilM: Creo que la crítica al gran alcance de la pregunta es infundada. La pregunta principal es bastante simple: ¿cómo implementamos los depósitos EOA? Las preguntas adicionales apuntan a profundizar en los detalles más relevantes.

Respuestas (2)

Ha hecho una serie de preguntas además de su pregunta principal, que era cómo manejar los depósitos de éter.

El principal problema con lo que está tratando de lidiar es el problema del doble gasto . Si alguien deposita en su intercambio Dapp, ¿cómo se asegura de que los fondos no se gasten dos veces y cómo maneja los fondos que se depositan y luego no se gastan debido a una bifurcación?

La respuesta está algo en su cancha como desarrollador de DAPP Exchange: usted decide. Entonces, ¿por qué no elegir 24 bloques o, como hace un intercambio, 360 bloques? Lo que te dé la confianza que necesitas.

Me doy cuenta de que esta no es una respuesta técnica, pero hay un problema funcional con esto, principalmente que el usuario que envía una orden de compra o venta tendrá que esperar el mismo tiempo para que se complete o se ingrese en el libro de órdenes. Así que tienes que cambiar la estabilidad por la usabilidad.

También debe tener en cuenta que, debido a la naturaleza del proceso de creación de bloques, no podrá procesar los pedidos de forma rápida o de la misma manera que lo haría en un servicio centralizado. Esto se debe a que un nodo no puede estar al tanto de todos los pedidos (es decir, transacciones) realizados en cualquier lugar de la red en el mismo momento en que intenta procesar los pedidos que ha recibido a través de la red.

Nuevamente, esta es una gran diferencia con un servicio centralizado, y también debe considerar esto como parte de la misma solución.

No tengo conocimiento de ninguna biblioteca disponible que pueda proporcionarle una respuesta rápida, pero parece que hay una serie de proyectos por ahí.

Respuesta razonablemente buena dado el gran alcance de la pregunta. Lo único que agregaría es que puede hacer que la cantidad de bloques sea proporcional al valor para reducir el riesgo y disminuir la latencia para muchas transacciones. Por ejemplo, si alguien está enviando 1 millón de ether a cambio de algún valor del mundo real, esperaría MUCHOS bloques antes de intercambiar ese valor del mundo real. Si son 10 ether, un par de bloques es suficiente. Puede ver la cantidad de tíos que ocurren por conteo de bloques masivos en ethstats.net

¿Cuál es la recomendación más reciente para la cantidad de confirmaciones de tx con el lanzamiento de Homestead?

De acuerdo con las API de web3, 12 bloques son buenos para asegurarse de que no haya una bifurcación. En cuanto a las confirmaciones de tx... Diría que 5 sigue siendo la cantidad de facto que desea allí. Obviamente, eso va a cambiar con Serenity, y no estaría seguro de cómo responder a eso dado el gran cambio que Casper traerá consigo. Siga el blog de Vitalik para que pueda tener en cuenta estas cosas mientras desarrolla.

¿Existen bibliotecas o servicios que proporcionen implementaciones de muestra?

hmmm... probablemente querrías trabajar con eventos y ese manejo... no estoy seguro acerca de tu área de confirmación de tx... no parece haber ninguna herramienta prefabricada para esos propósitos... probablemente tendría que hackear algo juntos en uno de los clientes (recomendaría usar Parity para esto porque quieres algo rápido... y Parity es increíblemente rápido).

¿Cuál es la implementación aproximada del pseudocódigo para manejar esto usted mismo?

algo como esto

js:

var i = myEthereumEvents
myEthereumEvents.watchAllEvents() {
    if (eventHit)
         var boolean = contract.promisifiedCheckBalanceOfPeer()
         if (boolean)
              contract.exchangeTokenValue()
}

ahora probablemente necesitará cobrar interés en algunos de ellos y crear algún tipo de equilibrio de carga en Solidity... esto requerirá que usted piense un poco... hay toneladas de ejemplos de creación de metacoins allí, simplemente ¿Tiene que configurarlo para imitar el suministro de tokens de otras cadenas? Esto podría ayudar a asegurar la cantidad necesaria... por otro lado, es posible que esté hablando de algo completamente diferente y quiera algo puramente del lado del intercambio... una cosa que recomendaría con certeza es desactivar la sincronización rápida y monitorear la cantidad. de las transacciones entrantes y se ajusta en consecuencia a sus algoritmos.

Déjame saber si esto responde a tu pregunta.