Limite la billetera para enviar fondos a una lista de direcciones

Imagina un escenario. Hay 3 partes: Parte A, Parte B y una parte mediadora C. A y B transfieren cada 1 BTC a una billetera W recién creada propiedad de C. La función de C es distribuir los 2 BTC completos a A o B dependiendo con alguna condición (piense en una apuesta). Ahora imagine que C se ve comprometida y su clave privada es robada por un hacker. El hacker ahora puede enviar 2 BTC a cualquier dirección que desee. ¿Es posible limitar la billetera W para enviar fondos solo a A o B? De modo que incluso si está comprometido, el pirata informático solo puede enviar fondos a A o B y no a ninguna dirección arbitraria.

Respuestas (1)

Absolutamente.

  1. El mediador, C, crea una dirección.

  2. Después de que se hayan realizado los pagos de la apuesta, C crea dos transacciones. Uno le paga a A y el otro le paga a B. Mantiene ambas transacciones en secreto. Luego, destruye la clave privada de la dirección.

  3. Dependiendo de quién gane, el mediador publica una de las transacciones.

Un atacante no puede enviarse los Bitcoins a sí mismo, pero puede elegir quién gana la apuesta o destruir ambas transacciones.

Desventajas

Si se realizan pagos adicionales a la dirección de C después de que destruye su clave privada, esos Bitcoins se pierden. Esto podría mitigarse haciendo que la dirección sea una cuenta de firma múltiple 1 de 2, donde una de las claves es una clave fuera de línea en poder del operador del servicio.

El servicio es vulnerable entre el momento en que publica la dirección y el momento en que crea y firma las transacciones. Tampoco puede crear las transacciones en el paso dos antes de ver las transacciones entrantes, porque dependerán del txid que esté tratando de gastar.

Wow, esta es una gran explicación. Gracias. ¿Es posible crear una dirección multigrado 1 de 2 sin sacar la segunda clave "maestra" del almacenamiento fuera de línea?
Otro problema es que C no tiene forma de probar que la clave privada está realmente destruida. Podría haberse quedado con una copia, intencionalmente o no, que luego podría ser robada o abusada.