Replicamos un Depósito a Plazo en la Blockchain y esto ocurrió.

Luego de varias propuestas e ideas que la comunidad entregó vía formulario a nuestro equipo, decidimos implementar un sistema de depósitos a plazo bajo un contrato inteligente.

Luego de varias propuestas e ideas que la comunidad entregó vía formulario a nuestro equipo, decidimos implementar un sistema de depósitos a plazo bajo un contrato inteligente, dicho contrato no presentó problemas al ser realizado pero el verdadero desafío fue integrarlo en una web en la que cualquier usuario pudiese interactuar con la blockchain en tiempo real, esto es conocido como una Dapp.

“Si una Dapp requiere que algún tipo de registro que influencie resultados o utilize una base de datos externa para los datos esenciales no es una aplicación descentralizada como tal, menos aún si en su mismo contrato posee cláusulas que permitan a algún individuo manejar las condiciones del juego, por lo cual al igual que en cualquier contrato, debemos aprender a leer la letra chica”   ~ Ceo, Vultur.

El resultado fue que más de 20 personas utilizaran la dapp en la red principal de Ethereum, logrando quizá un pequeño avance en el usuario de aplicaciones mediante contratos inteligentes.

El Contrato

El contrato constó de 2 funciones principales: la primera una que registrase las depósitos y la segunda una realizar el retiro, te preguntarás ¿El contrato no envía directamente lo pactado automáticamente? la respuesta es no de manera nativa (aunque existen servicios externos que pueden ser usados en el futuro)

No se publicará el código del contrato al ser potencialmente utilizado por otros tokens y llamar a falsas inversiones y otros temas de dudosa reputación, en una versión final y masiva el código quedará a la vista.

 

La Web

//vultur.io/hodl/ fue la web en donde se interactuó con el contrato en donde cada proceso de escritura en la blockchain era mostrado gráficamente, desde tratar de tomar el depósito con metamask bloqueado, hasta recibir la confirmación por parte de la red de ethereum, esto es importante para el usuario ya que muchas aplicaciones descentralizadas no cuentan con el seguimiento completo o incluso el retorno de los valores ingresados.

Al momento de tomar el depósito la Dapp arroja datos como la fecha de término del plazo y la tasa de retorno, todo esto DIRECTAMENTE desde el smartcontract.

Funcionamiento

Se ofrecieron 2 “planes de inversión” utilizamos como medio el Token Vultur para generar dicha rentabilidad, se precargaron los tokens al contrato sin la posibilidad de retirarlos y se adicionó el modificador “pausable” en los ingresos para evitar el ingreso de nuevos depósitos si así fuese necesario.

Resultados

Más de 20 usuarios interactuaron con la Dapp (3 millones de tokens), realizando el retiro correspondiente de sus tokens más la rentabilidad pactada, sin agentes externos de por medio, todo manejado desde un contrato inteligente.

 

¿Si lo hubiésemos hecho maliciosamente?

En primera instancia estábamos nerviosos por el funcionamiento, ya que, cualquier error en el contrato mantendría los tokens encarcelados para siempre, pero con sólo agregar ciertas funciones al contrato podrías incluso retener tokens ajenos, aquí algunos tips que debes observar.

1. Identificar al Owner del contrato

Muchos contratos poseen una variable llamada “Owner” que es el administrador de contrato, por el estándar de escritura la verás en contratos con cierto nivel de reputación, este nombre puede variar a “Admin” o “CEO” lo importante es reconocerlo como tal en la siguiente figura:

Con esto sabremos que el contrato posee un Owner y si hay uno quiere decir que hay funciones que sólo el Owner puede realizar, como por ejemplo CAMBIAR LA TASA DE RETORNO DEL DEPÓSITO A PLAZO como lo muestra la siguiente imagen:

Por lo tanto, si vemos alguna function con el modificardor “onlyOwner” debemos prestar atención a las acciones que toma dicho administrador, en este caso el administrador puede cambiar las tasas de rentabilidad, pudiéndolas dejar en cero.

2. Detectar transferencias

Es tan fácil como buscar la palabra “transfer” en el código del contrato, veamos la siguiente imagen:

 

En la imagen anterior se aprecia una transferencia hacia la cuenta “owner” de “this.balance” en donde owner es una dirección de ETH del creador del contrato y this.balance es el saldo de ETH que posee el contrato, por lo cual debemos preguntarnos ¿Para qué el dueño del contrato quiere retirar todos los ether? 

Una manera más sencilla de verlo sería de esta manera:

 

Todo esto nos hace reflexionar inclusive de algunos tokens que pueden ser congelados, estaremos mostrando más casos en el transcurso del tiempo, recuerda que no porque sea un contrato o una dapp debe ser descentralizado.