Latch Web3: Un pestillo de seguridad para SmartContracts (Parte 5)
Hoy toca ya ver el paso a paso para poder tener un Latch Web3 en tu SmartContract que los usuarios puedan utilizar para proteger las acciones que un SmartContrat hace cuando se firma una transacción desde su Wallet. Es decir, que aunque un atacante consigas las claves de la Wallet de un usuario necesarias para firmar un transacción con un SmartContract, exista un 2FA basado en Latch que permita controlar con un canal paralelo si se puede ejecutar o no esa acción.
Para ello, hay que seguir los pasos en orden, que es necesario para hacer que el sistema funcione en una Dapp que tiene un Backend en un servidor Web2, y lógica de aplicación Web3 basada en un SmartContract. Para ello, comenzamos.
Paso 1: Creamos el SmartContract de la DApp
Este es el primer paso del proceso. Para eso, el SmartContract de la DApp debe realizar tres cosas nada más al principio que ya hemos visto en la anterior parte del artículo.
- Importar latcheable.sol
- Heredar de latcheable "is latcheable"
- Configurar el Latch Proxy en la Blockchain correcta
Una vez hecho esto, ya en el código del SmartContract podrá elegir los puntos en los que comprobar el estado del Latch con una sencilla llamada al método de getStatus() del SDK de Latch usando dos parámetros, que serán la dirección pública del SmartContract de la DApp desplegado, y la dirección pública del usuario que está firmando la transacción.
4. Pon Latches en la funciones sensibles del SmartContract
function getStatus(address dAppSC, address clientAccount) returns (bool);
Las direcciones tienen formato Ethereum todas ellas, pero con esto, ya tendríamos el código de un SmartContract Latcheado. Y cuando acabes todo el proceso, deber ir a por el siguiente punto, que es:
5.- Despliega el SmartContract y quédate con la dirección pública
Paso 2: El Developer crea la Aplicación en Latch
Con este sencillo funcionamiento anterior, en un SmartContract de una DApp se puede comprobar el estado de los Latches de los usuarios a la hora de realizar las acciones, pero es necesario antes crear estos Latches. Para ello, primero el Developer tiene que abrirse una cuenta de Desarrollador en Latch.
Una vez en el panel del desarrollador, se debe crear una Latch Web3 Application en la parte de My applications, y se debe dar un Nombre, configurar la dirección pública del SmartContract de la DApp a proteger y la dirección pública de la Developer Web3 Wallet Web3.
Cuando haya configurado esa información, debe dar al botón de firmar transacción para garantizar que tanto el SmartContract de la DApp, como la Wallet del Developer (WEB3WALLET) son suyas. Para ello, la transacción que debe firmar es la cadena “Latch-Web3” (WEB3SIGNATURE), y una vez hecho, quedará creada la aplicación.
Figura 36: Firma de la transacción con la Developer Web3 Wallet
Si el SmartContract de la DApp no pertenece a ese developer, entonces se recibirá un error como el siguiente, ya que la plataforma comprueba quién el el dueño de ese SmartContract de la DApp.
Si está correcto, el Developer tendrá ya la Latch Web3 Application creada en la lista de sus aplicaciones y podrá acceder en todo momento al SECRET_KEY que necesitará para realizar las llamadas a la API.
Una vez hecho esto, ya solo nos queda crear un sistema para que los Latch UserID puedan crear Latches Web3 en el SmartContract de la Dapp.
Paso 3: Creación de Latches Web3 desde la Latch App
Los usuarios de Latch deben poder crear los Latches en el SmartContract de la DApp desde su Latch App móvil que está conectada con el Backend de Latch. Para ello, solicitan un token de pareado que deben introducir en una zona de configuración de seguridad de cuenta habilitado para ello en el Backend de la DApp.
Como se puede ver en el esquema anterior, el usuario desde la Latch App solicita el Token de Pareado, que se entrega al Backend de la DApp. Éste lo envía, haciendo uso del SDK de Latch al Latch Backend junto con la Public Address de la Wallet del usuario. El Latch Backend almacena la Public Address de la Web3 Wallet, y llamará al Latch SmartContract para que cree el Latch de ese usuario, que estará identificado por dos parámetros: La dirección pública del SmartContract y la dirección pública de la Wallet Web3 del usuario. Para realizar este proceso se le exigirá al usuario que firme la transacción de creación del Latch.
Figura 40: El Backend de la DApp inicia Latch con el Application ID y el Secret Key de la Latch Application, y llama con el Pairing Token. La Public Address del SmartContract se coge de msg.sender y la Public Address del Web3 User Wallet de la firma de la transacción.
En el ejemplo que tenemos hecho con el Market de NFTs de Telefónica vemos cómo hemos habilitado una opción en las opciones de seguridad para que el usuario introduzca el Token de Pareado que ha solicitado con su Latch App y firme la transacción con su Wallet Web3, en este caso MetaMask.
Figura 41: Se solicita el Token de Pareado en la Latch App, se introduce en el
Backend de la Dapp. Se firma la transacción con la Wallet Web3 del usuario.
Y el Latch queda creado.
Con esto, ya quedaría realizado el pareado el Latch Web3 ya aparecería en la Latch App móvil del Latch UserID, y ya podremos proteger las transacciones con Latch. Pero esto lo vemos en la siguiente parte de este artículo, que esta ya ha quedado muy larga.
¡Saludos Malignos!
*******************************************************************************************
*******************************************************************************************
Autor: Chema Alonso (Contactar con Chema Alonso)
No hay comentarios:
Publicar un comentario