Token Allowance una interesante función de los tokens ERC-20 y ERC-777 de Ethereum, con la cual podemos otorgar permisos específicos de acceso y uso de fondos a DApps y DEX para que estos realicen operaciones de forma autónoma y segura. 

Una de las funciones más interesantes de los tokens ERC-20 (y del token ERC-777) de Ethereum es el “allowance” o “permisos de acceso a tokens” dentro de una serie de parámetros descritos por la programación de una plataforma. Esta es una función bastante común en el mundo de los tokens y tiene como finalidad permitir la interacción automática de los smart contracts con el dinero que está dispuesto en una determinada dirección. Con ello se logra que las DApps y DEX puedan hacer uso de estos recursos y realizar ciertas operaciones de forma autónoma con los mismos.

Los permisos de allowance o de acceso, permiten que una tercera parte tenga derecho a realizar una transacción de una determinada cantidad de nuestros tokens, los cuales se encuentran asociados a nuestra dirección. Todo ello sin entregar la clave privada de tu dirección.

Pero ¿Por qué darle acceso a nuestro dinero a un smart contracts en lugar de mantener el control sobre el mismo? Pues bien, aquí aclararemos la utilidad de este tipo de funciones, y lo más importante cómo esta función puede facilitar en gran medida nuestra interacción con los smart contracts.

¿Por qué se crearon las funciones de allowance?

En Ethereum, un token son monedas que no son más que unidades de cuenta dentro de un smart contract almacenado en la blockchain. El proyecto Ethereum, desde sus inicios, ha sido ampliamente utilizado para crear tokens de distintos tipos, debido a su enorme flexibilidad para esta tarea. Ante esa situación, los desarrolladores de Ethereum decidieron crear una especificación para crear estos tokens de una manera estandarizada, hablamos del token estándar ERC-20.

En este estándar se definía la estructura básica del smart contract, la forma y las funcionalidades de los tokens en Ethereum. Una de esas funciones es la función de allowance, la cual permite a los tenedores de esos tokens, otorgar permisos de uso específico a las Dapps, DEX y DeFi para los tokens contenidos en una dirección determinada.

De esta forma, el balance en tokens que una persona tiene en una dirección puede ser manejado por la Dapp bajo nuestro consentimiento. Así, por ejemplo, si queremos realizar un envío de tokens de forma automática usando una Dapp, la función allowance nos permite configurar estas acciones sin necesidad de estar activamente pendiente realizando la acción.

Aquí es donde se diseñó la capacidad de que pudieras dar permiso a otras direcciones a mover tus tokens. Una dirección puede ser un smart contract o simplemente una dirección controlada por una persona o máquina.

No obstante allowance se suele dar a smart contracts, quienes cumplen unas reglas por escrito, inmutables y transparentes. Pudiéndonos fiar del buen comportamiento del mismo y que éste no pueda robarnos.

Por otro lado, la función allowance permite definir la cantidad justa y necesaria que queremos dejar disponible para usar por un smart contract. Esta es, sin duda, otra medida de seguridad que permite controlar la forma en como los smart contracts realizan sus distintas operaciones mientras estamos interactuando con ellos. Y lo mejor de todo, es que nos permite hacer esto de forma descentralizada sin que terceros de confianza tengan que intervenir en este proceso.

Tokens ERC-20 y la llegada del Allowance

La llegada del “allowance” al mundo cripto se puede decir vino con la llegada de los ERC-20 de Ethereum. Este estándar tiene previsto en su estructura una serie de funciones estándar que permiten facilitar el trabajo a los desarrolladores para la creación de smart contracts y Dapps que permitan una interacción descentralizada entre el usuario y la red Ethereum y sus tokens asociados.

Para lograr esto, los ERC-20, entre otros smart contracts, tienen una función específica conocida como “allowance” y que es definida de forma general de la siguiente forma:

function allowance(address tokenOwner, address spender)

Básicamente la función lo que pide es una serie de permisos de uso. Estos permisos permiten que el contrato inteligente transfiera desde nuestra dirección hasta una dirección definida por el smart contract una cierta cantidad de su token (llamada asignación). Esta transferencia está limitada a solo una cantidad especificada y aceptada por el usuario de la Dapp. De hecho, esta es una medida de seguridad que permite mantener controlado el gasto en el que puede incurrir el smart contract en cada interacción y su totalidad.

Ejemplo de allowance

Un ejemplo de esta funcionalidad puede ser el siguiente:

Un usuario quiere interactuar con el smart contract de por ejemplo, Compound para hacer una inversión en alguno de los pools de este protocolo. Dicha interacción es controlada por los smart contracts de Compound y en ese punto, Compound le pedirá al usuario un acceso (allowance) a una determinada cantidad de tokens bajo su poder. Al aceptar dicha interacción, Compound tomará los tokens hará la inversión en el pool correspondiente y de allí devolverá el saldo bloqueado en dicho pool, junto con otros datos interés para el usuario.

En todo momento podemos ver que el proceso de “allowance” es un proceso a solicitud y el cual requiere del permiso expreso del usuario. Así, por ejemplo, si una Dapp pide acceso no solicitado a un saldo, usted deberá rechazar ese acceso malicioso.

¿Cuánto sabes, criptonauta?

¿El allowance puede representar un riesgo de seguridad para nuestros fondos?

¡FALSO!

La función allowance está pensada para ser una función segura y que solo brinde acceso limitado a la dirección y tokens que requiere. Debido a que todo este sistema es sin intermediarios y descentralizado, puedes estar seguro que no comprometerá tu seguridad. Sin embargo, te recomendamos siempre estar atento a las peticiones de acceso y solo aceptar aquellas que has pedido explícitamente.

Allowance en otros smart contacts

Por supuesto el ejemplo anterior aplicado a los ERC-20, también aplica a otros smart contracts estandarizados o no. Un buen ejemplo es el token ERC-777 que tiene prevista esta funcionalidad para ofrecer funciones compatibles y más avanzadas que los populares tokens ERC-20. Pero también, existen otros smart contracts donde este tipo de propiedades no existen.

Así por ejemplo, existen distintas plataformas que hacen uso de smart contracts que hacen uso de allowance para interactuar con los tokens de sus usuarios. Un smart contract que hace uso de esto es 0x, sobre el cual opera Bit2Me DEX.

Sin embargo, casos un poco más elaborados pueden darse. Por ejemplo, en CryptoKitties se usa allowance a la hora de adquirir los gatitos digitales de la plataforma. Esto debido a que se necesita permiso para hacer el gasto de dinero para adquirirlos y mantenerlos. Pero los propios “gatitos digitales” no tienen esta propiedad, puesto que son tokens no fungibles o NFT, bajo el estándar ERC-721 de Ethereum. Básicamente al ser no fungibles y únicos, estos gatitos no se pueden gastar o tener acceso de forma múltiple, por lo que carece de esta función.

Como vemos esta función es bastante útil como medio de segmentar el acceso y la seguridad dentro de los smart contracts y las aplicaciones descentralizadas (Dapp), lo que sin duda demuestra ser una solución efectiva para brindar alta seguridad en ambientes de este tipo.