Update analisis_es authored by santi's avatar santi
......@@ -11,15 +11,31 @@ A medio plazo el sistema debe ser capaz de ser extendido a otras webs/servicios/
Debe de tener una API para comunicarse con otras webs.
### Carteras
### Gestión de Carteras
#### Balances
Podemos seguir usando el sistema usado hasta ahora en OCP de forma que cada dirección mantenga el balance del usuario, aunque no es eficiente. El balance de cada usuario y el historial de transacciones deberían ser campos en la base de datos de OCP, el sistema actual es un cuello de botella que no va a dar problemas si se escala la aplicación a cientos de usuarios.
Propongo instalar dos carteras en OCP:
1. Cartera temporal, con las direcciones actuales, para detectar ingresos. Cuando se realiza un ingreso, la cartera lo detecta, notifica a OCP del ingreso y se actualiza el balance del usuario en la base de datos. También este trabajo se puede realizar mediante un cron en vez de con notificaciones.
2. Cartera segura multifirma, cuando OCP ha actualizado el balance, transfiere los fondos a una cartera segura, que será la cartera multifirma que se ejecute en wallet.fair.coop.
#### Multisig automatizado
wallet.fair.coop sólo ejecuta la cartera y sólo se comunica con los servidores autorizados, el resto de tráfico se filtrará en el firewall. Un VPS pequeño de 1 núcleo, 1GB de RRAM y 10GB de disco duro realizará el trabajo sin problemas.
Cada web/servicio/app usaría una cartera propia e independiente.
Usará un sistema de 4 carteras multifirma con dos firmas necesarias para enviar por cada cartera.
- Dos carteras las guardarán dos personas u organizaciones de confianza como backups.
- Otra cartera se guardará en wallet.fair.coop y otra en ocp.
Todas las carteras tiene las mismas direccciones, por lo que se pueden chequear los balances desde cualquiera de ellas. Las personas de backups pueden chequear los balances, pero no saben a quién pertenecen (los que no sean direcciones públicas) si no tienen acceso a la base de datos de OCP.
Los admins de wallet.fair.coop y ocp deberían de ser distintas personas y no guardar las carteras de backup. De esta forma ni siquiera los admins de las máquinas podrían mover los fondos.
#### Multisig intervención del usuario
Las claves de backup del apartado anterior las guarda el usuario, de esta forma no es necesario un servidor externo. Tras el formulario de envío, OCP pediría al usuario que firmase la transacción y la pegase en un nuevo formulario con cualquiera de las dos llaves.
Los admins de wallet.fair.coop y ocp deberían de ser distintas personas y no guardar las carteras de backup. De esta forma ni siquiera los admins de las máquinas podrían mover los fondos (un admin en ocp podría modificar el código para falsear un mail de confirmación... Este paso creo que es el más débil y habría que crear un método de identificación entre servidores para evitar spoofing. Podría ser un mensaje firmado por una dirección de faircoin...).
Es un proceso más complicado para el usuario y delega en él la seguridad de las claves. Como contrapartida, tiene control de sus fondos aunque falle OCP y aunque hubiese un fallo de seguridad en OCP, sus fondos estarían a salvo. Tampoco los admins de OCP podrían mover esos fondos sin otra clave extra.
### Lenguages/Frameworks/Bibliotecas/Herramientas
......@@ -72,8 +88,5 @@ Todas las carteras tienen las mismas direcciones por lo que pueden observar toda
4. OCP manda un mail al usuario un mail de confirmación con un link a wallet.fair.coop
5. Cuando el usuario confirma el envío, wallet.fair.coop firma la transacción y la retransmite a la red.
wallet.fair.coop sólo ejecuta la cartera y sólo se comunica con los servidores autorizados, el resto de tráfico se filtrará en el firewall. Un VPS pequeño de 1 núcleo, 1GB de RRAM y 10GB de disco duro realizará el trabajo sin problemas.
Podemos seguir usando el sistema usado hasta ahora en OCP de forma que cada dirección mantenga el balance del usuario, aunque no es eficiente. El balance de cada usuario y el historial de transacciones deberían ser campos en la base de datos de OCP, el sistema actual es un cuello de botella que no va a dar problemas si se escala la aplicación a cientos de usuarios. De esta forma podríamos tener dos carteras en OCP:
1. Cartera temporal, con las direcciones actuales, para detectar ingresos. Cuando se realiza un ingreso, la cartera lo detecta, notifica a OCP del ingreso y se actualiza el balance del usuario en la base de datos. También este trabajo se puede realizar mediante un cron en vez de con notificaciones.
2. Cartera segura multifirma, cuando OCP ha actualizado el balance, transfiere los fondos a una cartera segura, que será la cartera multifirma que se ejecute en wallet.fair.coop. De esta forma sólo desde OCP se tendrá acceso a los balances de los usuarios.
\ No newline at end of file
Un admin en ocp podría modificar el código para falsear un mail de confirmación. Este paso es el más débil,
¿Cómo hace wallet.fair.coop para verificar que la transacción es legítima sin confiar en OCP?
\ No newline at end of file