Depósitos de contratos inteligentes de múltiples usuarios

Quiero crear un contrato inteligente que permita a múltiples usuarios depositar/retirar fondos. Mi primer enfoque fue simplemente tener una dirección de contrato que almacenaría los fondos de todos los usuarios y un mapeo que rastrearía los saldos individuales de cada uno de los usuarios, sin embargo, esto me impediría identificar depósitos para usuarios particulares, ya que todos depositando a la misma dirección.

Para superar esto, quiero que el contrato inteligente genere un contrato secundario para cada usuario en el que ese usuario pueda depositar fondos. El problema es que implementar este contrato infantil costará gasolina. No quiero que el usuario pague este costo de gas, sin embargo, si hago que el contrato principal reembolse los costos de gas de los usuarios, surge un ataque potencial cuando alguien puede crear varias cuentas para que el contrato gaste todo el saldo en esta tarea. ¿Cómo puedo superar esto?

Respuestas (1)

Su primera idea fue la mejor, pero la siguiente evaluación lo está desviando:

sin embargo, esto me impediría identificar depósitos para usuarios particulares

Identificar quién envió qué es precisamente lo que le permite hacer el mapeo (y los registros de eventos).

Lo que hace con esa información se relaciona con detalles no revelados del caso de uso. ¿Posiblemente hay un detalle de implementación con una solución no obvia?

Bueno, sí, entonces quiero que las personas tengan una cuenta con un nombre de usuario/contraseña y puedan depositar desde cualquier dirección arbitraria (cambio, base de monedas, billetera, etc.)... Siguiendo el modelo ethcrash si está familiarizado con eso, por lo tanto identificar las múltiples cuentas desde las que un usuario puede depositar no serían posibles usando un solo contrato para todas las transacciones.