Creación de un servicio de billetera en línea de Bitcoin

Mi pregunta es esta: digamos que quería crear un sitio de bitcoin, donde los usuarios se registran y pueden depositar bitcoins en su cuenta. ¿Debería usar mi MPK para generar direcciones infinitas, de modo que después de que un usuario deposite en la dirección, se genere automáticamente una nueva dirección para ese usuario? y si el usuario deposita en la dirección anterior, ¿se puede rastrear?

Además, ¿cómo podría el usuario retirar su saldo solo en su cuenta? No quiero que se exponga mi clave privada. ¿Y cómo se pueden deducir las tarifas del sitio de cada transacción sin que el usuario pueda retirar eso también? ¿Y cómo implementaría un servicio de depósito en garantía para el sitio para que el vendedor ofrezca el servicio y el comprador compre pero las monedas se almacenan hasta el el comprador dice liberación o mi personal ve que debe ser entregado a la persona adecuada.

Además, ¿cómo puedo configurar un multi-sig en el sitio para aquellos usuarios que eligen usarlo?

un sitio similar al que me refiero es www.localbitcoins.com

¿Y no soy el talentoso programador que crea el sitio, así que estoy seguro dándole mi MPK? ¿O qué es "seguro" para que yo le dé?

Respuestas (1)

¿Debería usar mi MPK para generar direcciones infinitas, de modo que después de que un usuario deposite en la dirección, se genere automáticamente una nueva dirección para ese usuario?

Sí, ese es un uso previsto de BIP32.

y si el usuario deposita en la dirección anterior, ¿se puede rastrear?

Suponiendo que recuerde la derivación de la clave, seguro. Pero probablemente sería más sencillo mantener una lista de todas las direcciones de Bitcoin que haya mostrado a un usuario y comparar las transacciones entrantes con eso.

Además, ¿cómo podría el usuario retirar su saldo solo en su cuenta?

Hay dos formas de implementar esto:

  1. Mantenga las monedas de diferentes clientes juntas en una billetera grande. Mantenga un registro de cuánto tiene cada cliente en una base de datos separada.
  2. Haga que cada dirección pertenezca a un cliente y asegúrese de que los clientes solo puedan firmar transacciones con sus propias claves.

El #1 tiene algunas ventajas, pero el #2 es generalmente más fácil de implementar sin dispararte en el pie.

No quiero que se exponga mi clave privada. ¿Y cómo se pueden deducir las tarifas del sitio de cada transacción sin que el usuario pueda retirar eso también? ¿Y cómo implementaría un servicio de depósito en garantía para el sitio para que el vendedor ofrezca el servicio y el comprador compre pero las monedas se almacenan hasta el el comprador dice liberación o mi personal ve que debe ser entregado a la persona adecuada.

Le sugiero que no proporcione sus claves privadas a sus usuarios, especialmente si está utilizando BIP32 o ha elegido el enfoque n.º 1 anterior. En su lugar, genere y firme las transacciones usted mismo.

En cuanto al depósito en garantía o la liberación manual de fondos, usted controla las claves privadas, por lo que puede mover las monedas a voluntad. (Eso es algo que sus clientes podrían no apreciar, ya que abre la posibilidad de que les robe todo su dinero).

Además, ¿cómo puedo configurar un multi-sig en el sitio para aquellos usuarios que eligen usarlo?

Supongo que te refieres a 2 de 3 multisig entre tú, el comprador y el vendedor. No lo he usado personalmente, pero he oído cosas buenas sobre la implementación de copago de BitPay .

¿Y no soy el talentoso programador que crea el sitio, así que estoy seguro dándole mi MPK? ¿O qué es "seguro" para que yo le dé?

El sitio, tal como lo describió, requiere que tenga la clave privada extendida en su servidor, o en algún lugar al que pueda acceder su servidor. Y no, no es seguro dárselo a alguien en quien no confías.