Volver al blog Todos los artículos

Por qué construimos otro monedero de criptomonedas

Author Image Thomas Wiesner

Thomas Wiesner

Featured Image

Hola, soy Thomas, CTO aquí en Morpher. En esta publicación quiero hablar un poco sobre cómo se configuran los Componentes de la Cartera y por qué construimos la cartera en primer lugar. Es un artículo bastante técnico, por lo que si eres un desarrollador, entonces este artículo es para ti.

¿Por qué otro monedero?! 🤔

El objetivo de Morpher es hacer que el trading utilizando la tecnología Blockchain sea accesible para las masas. Las implementaciones actuales de monederos son todas muy, muy seguras, pero no muy convenientes para los usuarios. También son muy a menudo difíciles para que los desarrolladores trabajen con ellas. Creemos que la conveniencia no tiene por qué poner en peligro la seguridad.

Comenzamos Morpher con tres monederos diferentes: MetaMask, Portis y Fortmatic. La integración con los monederos generalmente funciona de la siguiente manera: El monedero inyecta un objeto web3 completo en el sitio web y se encarga de conectarse a un nodo, así como de proporcionar un almacén de claves para firmar transacciones. Por lo tanto, esencialmente necesitas conectarte al nodo correcto y luego tener medios para firmar transacciones que se envían a través de la conexión del monedero al nodo. Esos son dos componentes: un conector Http/WebSocket y un almacén de claves, ambos en un "monedero" que se encarga de firmar y enviar.

Tener ambos en componentes externos da muy poco control al desarrollador. Por ejemplo, con MetaMask no puedes influir directamente en a qué red conectarte; el usuario necesita hacerlo. Además de algunos pequeños avances en nuevas llamadas RPC que permiten a los desarrolladores agregar automáticamente una nueva red, todo lo que puedes hacer es escuchar y observar a qué red está conectado el usuario e informarles a través de un modal o algún tipo de alerta que están conectados a la red incorrecta.

MetaMask

Imagina que eres un usuario que nunca ha interactuado con la Blockchain.

Ahora necesitas configurar MetaMask antes de comenzar a utilizar una plataforma. Debes descargar un complemento del navegador del que nunca has oído hablar, que tiene una cabeza de zorro siguiendo el puntero de tu mouse. Luego necesitas ingresar una contraseña segura, y Dios no quiera que la pierdas. Después se te pide que recuerdes una frase semilla. En este punto, no tienes idea de lo que es una frase semilla, pero suena como si acabaras de comenzar tu pasantía en la CIA.

Si no has renunciado en este punto, entonces te encontrarás con un cuadro de diálogo para ingresar los detalles de la red y modificar algo que suena muy aterrador para el usuario común. ¡Ahora has llegado a la Morpher Sidechain 🎉 (al igual que nosotros, es probable que tu DApp también opere en una red de capa 2).

Para rematar, recibes un ETH para firmar transacciones en nuestra sidechain. Estos son como ETH de testnet en nuestra sidechain POA, y son esencialmente sin valor. Sin embargo, MetaMask te dice que eres rico. No hace falta decir que es muy decepcionante descubrir que tu nueva fortuna no es una fortuna en absoluto y que esos $3,000 en tu billetera no son reales. Pero en este punto, todo esto son solo detalles, porque la mayoría de los usuarios ya han renunciado a descargar MetaMask.

Vienen a comerciar, no a convertirse en expertos en blockchain.

Portis y Fortmatic

Aquí vienen las carteras alojadas. Vamos a enfocarnos en Fortmatic (¿o Magic?) por ahora.

También hace que el objeto web3 completo sea accesible para el sitio web. Eso significa que hace dos cosas: conectarse a una red y proporcionar un almacén de claves.

Afirma ser no custodial. Utiliza AWS KMS para el cifrado. Pero esencialmente actúa como un intermediario en el proceso de recuperación y tiene tus claves de recuperación almacenadas dentro de su propia infraestructura 🤷‍♂️.

Te permite personalizar un poco los pop-ups. Pero si Fortmatic decide que todos necesitan autenticación de dos factores hoy, así será. No puedes hacer nada al respecto. Si Fortmatic decide mañana que necesitas verificar tu dirección de correo electrónico nuevamente, así será. Si Fortmatic decide que exportar tu clave privada significa eliminar la cuenta, bueno, no puedes hacer nada. Si Fortmatic decide que ya no se conectará a tu red de capa-2, todo lo que puedes hacer es rezar a los todopoderosos dioses de la cadena de bloques. Y Fortmatic no ha decidido permitir que los desarrolladores o usuarios desactiven las pantallas de confirmación de transacciones en absoluto (y esas ventanas emergentes no son agradables en móviles). Pero hay solo tanto que puedes hacer al respecto.

No es suficiente depender de proveedores de terceros en un mundo en el que necesitas tener bolsillos profundos. Los precios se basan en registros de usuarios. Estás comprometido en el momento en que tu DApp despega, incluso si aún no has monetizado a esos usuarios.

Presentando Morpher Wallet

Ahora piensa en esto:

Eres un usuario que llega a Morpher. Estás acostumbrado a los flujos de registro de la web 2.0. Quieres registrarte para hacer trading. Quieres posicionarte largo en Tesla. No quieres preocuparte (y no tienes motivo para saber) acerca de ventanas emergentes de firmas, frases semilla o claves privadas. Puedes hacer todas esas cosas geniales relacionadas con criptomonedas también, pero ante todo estás aquí para hacer trading, no para aprender cómo funciona el mundo de las criptomonedas, exportar frases semilla o aprender por qué es mejor usar PBKDF2 en lugar de SHA256 para cifrar cosas.

O eres como nosotros: eres un desarrollador. Quieres brindarle a tus usuarios una experiencia fluida. Deseas tener una solución no custodial y control total sobre cómo se ve y se siente sin comprometer demasiado la seguridad.

Por eso construimos Morpher Wallet. Pero, ¿cómo funciona?

Desglose Técnico

Después de esa introducción esotérica sobre por qué construimos la billetera, estoy seguro de que también estarás interesado en el desglose técnico completo. Después de todo, somos desarrolladores. ¡Así que, hagámoslo!

La billetera Morpher utiliza 3 componentes.

  • Un Componente Backend, escrito en NodeJS/Express, que nunca ve una clave privada o frase semilla sin cifrar. Básicamente, es almacenar y recuperar para claves cifradas.
  • Un Componente Frontend que actúa como un almacén de claves e interfaz.
  • Y un SDK que crea un objeto web3 y lo entrega a un sitio web. Conecta la billetera como un iFrame y se asegura de que la comunicación entre el iFrame sea segura y funciones como web3.eth.signTransaction funcionen.

Vamos a abordar esto paso a paso y ver qué sucede, por ejemplo, al registrarse, antes de sumergirnos en la comunicación entre el iFrame y el padre.

Registro y Flujo de Datos No Custodial

Cuando un usuario se registra, el Frontend genera una frase semilla utilizando bip39.

Todo esto funciona en el frontend en este punto: el backend permanece inactivo, solo informando al frontend si un usuario con ese correo electrónico ya existe.

Luego, el frontend hace un hash de la contraseña del usuario, utiliza ese hash para cifrar la frase semilla utilizando AES-GCM 256 bits con 10000 iteraciones SHA-256 PBKDF2. Bastante estándar en la industria en este punto.

Después de eso, almacenamos el almacén de claves cifrado en el backend.

También almacenamos el almacén de claves cifrado en el almacenamiento local, por lo que el usuario solo necesita ingresar la contraseña la próxima vez que abra el navegador, pero eso es otra historia y puramente conveniencia. No compromete el hecho de que todo es no custodial y cifrado.

Inicio de Sesión

Entonces, un usuario está registrado, pero ¿de dónde viene la información para llegar a la mágica clave privada? Está almacenada en el backend, pero cifrada. Además de seguir todas las mejores prácticas web habituales para no ser víctima de ataques DDoS, la clave también se descifra solo en el lado del cliente.

Funciona así:

  1. El usuario ingresa la dirección de correo electrónico y una contraseña.
  2. (Opcional) El usuario es guiado a través de un flujo de autenticación de dos factores.
  3. El frontend le pide al backend que intente encontrar una entrada en la base de datos para esa dirección de correo electrónico.
  4. El backend devuelve la frase semilla cifrada.
  5. El frontend intenta descifrar la frase semilla con la contraseña hasheada en el lado del cliente.

A partir de ahí, se crea un almacén de cuentas web3.eth.accounts a partir de la frase semilla ya descifrada y se mantiene en memoria en el sandbox del navegador para su uso posterior.

Firma de una Transacción

El almacén de claves en la Billetera Morpher es en realidad el componente más importante, que en sí mismo no se conecta a un nodo. La arquitectura está construida de tal manera que la billetera está incrustada como un iFrame en otro sitio web.

Si diriges tu atención al almacén Vuex, encontrarás todas las funciones necesarias cuando la billetera está incrustada.

La firma real la realiza la biblioteca web3 y luego se devuelve al marco padre, que incrusta la billetera que es un HookedWalletProvider personalizado.

Eso se envía luego a un nodo, a través del proceso web3 normal, enviando una transacción firmada.

Conclusión

En resumen, así es como funcionan los entresijos internos. Obviamente, hay mucho más que simplemente registrarse, iniciar sesión y firmar transacciones. Pero para una rápida introducción, eso probablemente es suficiente.

La parte más importante para nosotros es tener un control total sobre la interfaz de usuario y su comportamiento. Quisimos hacer la incorporación del usuario simple intencionalmente, pero dejar suficientes controles para que el usuario pueda asegurar su billetera según sea necesario.

Incluso podrías ir, exportar la frase semilla, importarla en MetaMask e iniciar sesión en Morpher de nuevo. Así de estandarizado está esto.

Si estás interesado en más detalles, hay un documento de auditoría completo que profundiza en cómo funciona el cifrado, descifrado y flujo de datos.

Si deseas integrar la solución de billetera en tu propio sitio web o DApp, ¡háznoslo saber! Estamos planeando abrirlo completamente para otros desarrolladores también.


Cómo involucrarse y aprender más:

Morpher Trading Platform
Descargo de responsabilidad: Todas las inversiones conllevan riesgos y el rendimiento pasado de un valor, industria, sector, mercado, producto financiero, estrategia de trading o trading individual no garantiza resultados o rendimientos futuros. Los inversores son totalmente responsables de cualquier decisión de inversión que tomen. Tales decisiones deben basarse únicamente en una evaluación de sus circunstancias financieras, objetivos de inversión, tolerancia al riesgo y necesidades de liquidez. Esta publicación no constituye asesoramiento de inversión.
Blog Cta Image

Comercio sin complicaciones para todos

Cientos de mercados en un solo lugar - Apple, Bitcoin, Oro, Relojes, NFTs, Zapatillas y mucho más.

Blog Cta Image

Comercio sin complicaciones para todos

Cientos de mercados en un solo lugar - Apple, Bitcoin, Oro, Relojes, NFTs, Zapatillas y mucho más.

Publicaciones Relacionadas