Chapter 5: Methodology
5.8 Ethical issues relating to the study
Se implementa una aplicación web con el propósito de mostrar una interfaz gráfica amigable al usuario, esto debido a que, para este caso de uso de pagarés, necesita ser usado por un público amplio, por lo que la usabilidad fue una prioridad. Además, para hacer que la aplicación fuera tan agnóstica como sea posible, se desarrolló una aplicación REST básica, lo cual permite realizar las conexiones con las API externas, esto con la intención de permitir al cliente web adaptarse a diferentes infraestructuras de blockchain.
El desarrollo se realizó en dos partes, un servidor express30 en NodeJS31, este fue desarrollado principalmente para mantener el agnosticismo, funcionando como API para la interfaz gráfica, así como la conexión a la base de datos de usuarios, la cual mantiene la información de los usuarios, al igual que las direcciones de la billetera Metamask. Por otro lado, la interfaz gráfica se desarrolló con la librería de NPM llamada ReactJS32, esto con el propósito de desarrollar una aplicación estable, mantenible en el tiempo y
27https://solidity.readthedocs.io/en/v0.6.8/ 28https://www.trufflesuite.com/ganache 29https://www.trufflesuite.com/ 30https://expressjs.com/es/ 31https://nodejs.org/es/about/ 32https://es.reactjs.org/
simultáneamente poder mantener un flujo de trabajo constante en la implementación, debido a que esta librería cuenta con un soporte amplio, que permite facilidad y tiempos cortos de desarrollo.
Teniendo en cuenta lo anterior, se desarrolló una interfaz que permite ejecutar las funciones relacionadas a la creación de cuentas, transacciones sobre pagarés y extensiones de estas funciones dados los escenarios propuestos en este documento.
A continuación, se exponen capturas de pantalla que describen el funcionamiento del prototipo realizado: Registro
Imagen 21: Registro de usuario, sugerir instalar Metamask
Para que el usuario pueda utilizar la aplicación tiene que utilizar una billetera de Metamask, por lo tanto, al registrarse se pide que instale la extensión, esto es necesario debido a que se utiliza la cuenta registrada para firmar el pagaré con la llave privada proporcionada por la billetera.
Luego de instalar la extensión y crear la billetera en Metamask, se pide permiso para utilizar la información de la cuenta.
Imagen 23: Registro de usuario, formulario de registro.
Al confirmar los permisos, el usuario se puede registrarse con los datos necesarios para poder crear y endosar pagarés.
Según lo definido en los diagramas de proceso en el diseño, el proceso de creación de pagaré es asincrónico, permitiendo un acuerdo justo entre el deudor y acreedor, por lo tanto, desarrollamos los pasos necesarios para que esto ocurra, de manera que dependiendo de la perspectiva el usuario ve interfaces diferentes:
Imagen 24: Creación de un pagaré, etapa 1
Esta interfaz se muestra cuando un usuario crea un pagaré como acreedor, permitiendo indicar la información del deudor.
Imagen 25: Creación de un pagaré, etapa 2
Luego, el deudor o acreedor puede establecer los acuerdos del préstamo, en los cuales se define el valor y condiciones del préstamo.
Imagen 26: Creación de un pagaré, aceptación de condiciones
Imagen 27: Creación de un pagaré, etapa 3 y visualización en PDF
El acreedor entonces impone la información del pagaré, como lo es el lugar de creación, fecha de vencimiento y un código de retiro para asegurar el préstamo al deudor. También se debe destacar la funcionalidad de previsualización del pagaré del PDF, de manera que los usuarios pueden ver una versión familiar del pagaré y entiendan el documento que están creando.
Imagen 28: Creación de un pagaré, imposibilidad de firmar por cuenta incorrecta
Finalmente, el usuario debe firmar el pagaré, sin embargo, el usuario debe tener la cuenta de Metamask con la que se registró.
Imagen 29: Creación de un pagaré, firma del pagaré a través de Metamask
Para firmar este pagaré, se necesita confirmar la transacción, de manera que se firma con la llave privada de la billetera.
Imagen 30: Creación de pagaré, espera de confirmación de la firma en la red de Ethereum
Al firmar, se espera la confirmación de la transacción que toma en promedio 25 segundos y es redirigido a su balance.
Imagen 31: Balance de pagarés
El propósito de esta página es mostrar el balance de un usuario, lo que debe y lo que prestó, actuando como un repositorio de transacciones. Se debe destacar que, según la etapa de creación, los pagarés se diferencian con colores. También desde esta página se puede ver el detalle del pagaré.
Imagen 32: Detalle de un pagaré sin endosar
Este detalle, si no ha sido endosado, muestra un PDF con la respectiva información. Si el usuario es el legítimo tenedor del pagaré puede endosarlo, este endoso consta de 3 etapas como se describió en el diagrama de procesos en el diseño.
Imagen 33: Endoso de un pagaré, etapa 1
Este endoso se debe hacer con otra persona, por lo que en la información básica se añade los datos del endosatario.
Imagen 34: Endoso de un pagaré, etapa 2
En la siguiente etapa se añade el código de retiro para asegurar el pago entre el endosante y el endosatario, por lo que esta acción se realiza solo por el endosatario.
Imagen 35: Endoso de un pagaré, previsualización del endoso
El endosante, de igual manera que el deudor en la creación de un pagaré debe firmar el endoso para transferir el título valor al endosatario. Hay que destacar que la previsualización en PDF del pagaré también muestra la información del endoso actual, eso debido a que sería el equivalente en un documento material.
Imagen 37: Endoso de un pagaré, espera a confirmación de la red de Ethereum
De igual manera que con la firma de un pagaré, se espera a la confirmación de la transacción antes de ser redirigido al repositorio de endosos.
Imagen 38: Detalle de un pagaré con endosos
Finalmente, al ver el detalle del pagaré ahora se muestra la cadena de endosos permitiendo tener una trazabilidad clara de las transacciones que se han hecho sobre este pagaré.
Como se ha evidenciado, se trató de disminuir en lo posible errores cometidos por el usuario, por lo que se trata de instruir a los usuarios, desde el registro de un usuario hasta el endoso de un pagaré, ejemplo de esto es indicar a los usuarios la cuenta de Metamask que deben utilizar para firmar. Lo anterior refleja la búsqueda por mantener una trazabilidad de todas las transacciones.
Como explicamos anteriormente, se realizaron extensiones a los casos de uso de la aplicación para mostrar escenarios extras que decidimos probar también, para esto desarrollamos un botón para poder, desde la misma aplicación, cambiar los escenarios de uso.
Una de estas extensiones es el uso de ENS o nombres de dominio de Ethereum. Esto con el propósito de identificar a los usuarios de Ethereum de una manera más humana, en lugar de direcciones hexadecimales.
Imagen 39: Registro de un usuario con ENS, creación de subdominio
En este caso se registra un nuevo usuario, este es un proceso de cuatro pasos, dado que se deben realizar 4 transacciones para asociar la dirección de un usuario con un nombre de dominio, a continuación, se pueden ver los siguientes pasos.
Imagen 41: Registro de un usuario con ENS, asociación de dirección de usuario
Imagen 42: Registro de un usuario con ENS, asociación de nombre de dominio
Imagen 43: Perfil de usuario con ENS
También se desarrolló un escenario en el cual la aplicación funciona de manera descentralizada, de manera que no hay servidor back-end que procese las transacciones, en lugar de esto, se comunica directamente con Ethereum a través de Metamask. Esto permite el uso de Ether como moneda para transferir dinero.
Imagen 44: Creación de un pagaré a través de Metamask con transferencia de Ether
Aquí se puede ver que se eliminaron la mayoría de las etapas, debido a que no es necesario para este escenario como fue definido, precisamente por el tiempo de estas transacciones. Además, se debe destacar que el valor definido en pesos en el formulario se utiliza para agregar valor en Ether a la transacción, de manera que, para este caso, el acreedor presta $100000 que es convertido a 0.13 Ether.
Imagen 45: Creación de pagaré a través de Metamask, esperando confirmación de la creación
Se espera la confirmación de la creación del pagaré en la red de Ethereum para poder ser firmada por el deudor.
Imagen 46: Balance de pagarés de un usuario en escenario de aplicación descentralizada
Imagen 47: Firma de un pagaré en escenario de aplicación descentralizada
Firmar el pagaré indica al Smart Contract el depósito de Ether al deudor.