Digamos que quiero ejecutar un gran proyecto, donde los usuarios puedan solicitar continuamente nuevas direcciones para depositar Bitcoins en su cuenta en línea. Supongo que tendré que generar previamente miles de pares de claves de Bitcoin e importarlos a una instancia en ejecución de bitcoind en mi servidor. Cada vez que un usuario solicite una nueva dirección para depositar Bitcoins en su cuenta, le asignaré una nueva dirección. Luego, bitcoind me notificará cuando alguna de las direcciones importadas reciba una transacción.
Primera pregunta: ¿Bitcoind es capaz de monitorear miles de direcciones en tiempo real? ¿Debo planificar una máquina dedicada para esto?
Segunda pregunta: dado que tendré que mover los Bitcoins recibidos a un almacenamiento en frío y también realizar pagos automáticamente muchas veces al día, también tendré que almacenar las claves privadas en el servidor en línea. Puedo tener wallet.dat protegido con contraseña, pero ¿cuál es el método más seguro para desbloquear automáticamente la billetera, mover fondos y luego volver a bloquearla sin que la contraseña se vea comprometida? No lo considero seguro si la contraseña aparece en algún lugar del código, la configuración o la base de datos. Y no quiero ingresar la contraseña manualmente varias veces al día.
Tercera pregunta: ¿bitcoind generará un nuevo "cambio de dirección" cada vez que traslade fondos de la dirección de recepción a pagos y almacenamiento en frío? Pregunto porque si bitcoind usó una de las direcciones importadas para el cambio, parecería que el cliente recibió Bitcoins.
No desea almacenar claves financiadas del lado del servidor, hay un flujo casi constante de hosts que se ven comprometidos para robar fondos. La mayoría de los sistemas de Bitcoin usan algo llamado "billetera caliente" y mueven el resto a billeteras de papel individuales fuera del control de los servidores. Entonces es el papel de los administradores mover los fondos de un lado a otro para mantener la billetera caliente financiada. Esto reduce significativamente el riesgo y significa que un atacante puede obtener como máximo la cantidad de fondos en la billetera caliente.
¿Bitcoind es capaz de monitorear miles de direcciones en tiempo real?
Sí, pero realmente no desea almacenar nada más que una pequeña billetera caliente en un servidor. Si su seguridad no es perfecta, simplemente la van a robar. si estaba acostumbrado
¿Cuál es el método más seguro para desbloquear automáticamente la billetera, mover fondos y luego volver a bloquearla sin que la contraseña se vea comprometida?
No puedes estar seguro. Incluso si la billetera está "encriptada", un atacante puede sentarse en el servidor y esperar a que la desbloquees. Nuevamente, esta es la razón por la que necesita usar almacenamiento fuera de línea y billeteras activas para mitigar el daño del servidor comprometido.
¿Generará bitcoind un nuevo "cambio de dirección" cada vez que traslade fondos de la dirección de recepción a pagos y almacenamiento en frío?
Sí. Es por esto que todas las direcciones presentadas al cliente son de un solo uso. Usted crea una nueva dirección de recepción cada vez para la billetera caliente bitcoind
y nunca se la vuelve a mostrar al cliente. No necesitan hacerlo, sus fondos no están restringidos a ninguna salida de Bitcoin en particular. Su saldo es solo un valor externo en su base de datos para el que tiene los fondos.
Idealmente, la configuración se ve así:
Servidor:
bitcoind
billetera caliente crea nuevas direcciones de recepción y se las presenta a un cliente. Usando walletnotify
o blocknotify
actualiza los saldos recibidos para cada usuario a una base de datos externa como Postgres o Redis.bitcoind
nunca almacene más de 50 BTC en su billetera, si el saldo supera los 50 BTC, se ejecuta un script que genera una nueva clave con una clave pública determinista (el servidor nunca tiene que conocer la clave privada para hacer esto) o utiliza una lista generada previamente. Envía el exceso a esta dirección para mantenerlo seguro.Desconectado:
Una billetera Armory que contiene las claves privadas de la billetera fría. Idealmente, esto sería completamente fuera de línea, con una copia de seguridad en papel en una caja de seguridad.
El control es solo del administrador, quien conoce la dirección de recarga de la billetera caliente en el servidor. Cuando es necesario, vuelven a mover los fondos al servidor según las notificaciones.
Muy complicado, pero es más o menos cómo funcionan otros sistemas, y tiene que ser así a menos que quieras terminar como http://inputs.io/ que perdió una billetera caliente completa de 4000 BTC debido a una negligencia. Nunca se puede ser demasiado paranoico en situaciones como esta. Su pérdida máxima en este caso sería la billetera caliente de 50 BTC, que es mejor que perderlo todo.
Juega seguro.
¿Cuál es el método más seguro para desbloquear automáticamente la billetera, mover fondos y luego volver a bloquearla sin que la contraseña se vea comprometida?
Quiere dos cosas fundamentalmente opuestas aquí, por un lado, quiere que su billetera sea accesible para procesos automatizados. Por otro lado, no desea que esté disponible para los piratas informáticos que comprometen el sistema que ejecuta dichos procesos automatizados. Básicamente, no puedes tener ambos.
Es por eso que tiene una "billetera caliente" y una "billetera fría". La billetera caliente contiene una cantidad de bitcoins que puede permitirse perder. La billetera fría tiene bitcoins en almacenamiento a largo plazo.
En un día a día normal, el dinero que ingresa generalmente excederá el dinero que sale. Su sistema automatizado debe estar diseñado para mover dinero a la billetera fría si se acumula demasiado en la billetera activa.
Ocasionalmente, puede descubrir que el dinero que sale supera al dinero que ingresa. En este caso, su sistema deberá alertarlo de que la billetera activa se está agotando. Luego deberá auditar cuidadosamente la situación antes de mover manualmente el dinero de la billetera fría.
spamec