Compound Protocol está formado por un conjunto de smart contracts de Ethereum que permiten a usuarios no técnicos, y también a desarrolladores de aplicaciones, interactuar con los mercados financieros de criptomonedas. Los usuarios del protocolo podrán, o bien tomar activos prestados, con el correspondiente pago de una tasa de interés variable, o bien suministrar activos al protocolo, con el cobro de una tasa de interés también variable. En el siguiente artículo vamos a profundizar en el protocolo Compound y a explicar en detalle cuál es su funcionamiento.

 

¿Qué es Compound Protocol?

En el white paper del proyecto, podemos ver que Compound Protocol es un protocolo desarrollado en la blockchain de Ethereum en el que se establecen mercados de activos, los cuales actúan como pools de activos con tasas de interés derivadas algorítmicamente, en función de la oferta y la demanda.

Tanto los usuarios que prestan los activos (Suppliers), así como los usuarios que piden prestado dichos activos (Borrowers), interactúan directamente con el protocolo, ganando o pagando un porcentaje de sus activos, el cual obedece a una tasa de interés variable.

Cada mercado es único para cada activo. Dichos activos estarán basados en Ethereum. Por ejemplo, existirá un mercado monetario para ETH (la moneda nativa de Ethereum), otro para DAI (la stablecoin de MakerDAO basada en Ethereum), y otro para REP (el utility token de Augur basado en Ethereum). Además, cada mercado contiene un ledger público y transparente que registra las transacciones realizadas y el histórico de las tasas de interés.

A través del siguiente enlace, se pueden consultar los mercados disponibles, las tasas de interés compuesto APY (Annual Percentage Yield) y los volúmenes de activos prestados y suministrados que gestiona Compound Protocol (Figura 1).

Mercados Compound Protocol Master Blockchain Online

Figura 1. Mercados financieros soportados por Compound Protocol. Fuente

 

En la actualidad, Compound Protocol está desplegado en las siguientes redes de Ethereum: Mainnet, Ropsten, Kovan, Rinkeby, y Goerli. El lector que quiera acceder a las direcciones y los ABI de los smart contracts desplegados por el protocolo, para cada una de estas redes, puede hacerlo a través del  siguiente enlace.

 

Suministrar activos a Compound Protocol (Supplying Assets)

Los usuarios de Compound Protocol que quieran suministrar al sistema activos, para poder obtener beneficios por ello, podrán hacerlo con el token nativo de Ethereum (ETH), o bien con otros activos que se ejecutan en la blockchain de Ethereum.

 

Para los lectores que quieran profundizar sobre el concepto de los cTokens, así como en el funcionamiento de los smart contracts que los gestionan, recomendamos la lectura de la documentación que se encuentra en el siguiente enlace.

En este contexto, existen diferentes casos en los que es atractivo suministrar activos al protocolo Compound. Uno de estos casos es el de aquellos inversores a largo plazo (los denominados holders) en activos crypto, como ETH u otros, que estén interesados en sacar un rendimiento adicional a sus inversiones sin asumir riesgos ni condiciones. Otro caso, sería el de aquellas aplicaciones, exchanges y mercados que manejen fondos de tokens y quieran nuevas fuentes de monetización para obtener unos mayores rendimientos de sus actividades mediante mecanismos como «Sweeping» o ZBA (Zero balance accounts).

 

Tomar activos de Compound Protocol (Borrowing Assets)

Compound Protocol permite a los usuarios del protocolo pedir préstamos del activo que deseen al instante, utilizando como colateral los cTokens. Para ello, cada mercado (dependiendo del activo que se quiera pedir prestado) tiene una tasa de interés variable que determinará el coste de pedir prestado dicho activo.

Además, cada mercado tiene un «Collateral Factor», que va del 0 a 1, y que representa la porción del valor del activo subyacente que puede ser prestado. Los activos poco líquidos, de pequeña capitalización, tienen valores bajos de este factor, mientas que los activos más líquidos, con alta capitalización suelen tener valores altos. Como consecuencia, la capacidad para pedir prestado un activo (capacidad de endeudamiento), por parte del usuario, será igual a la suma de los balances de las cuentas del activo subyacente multiplicado por el Collateral Factor. De esta manera, Compound Protocol se protege de posibles incumplimientos de los usuarios, ya que estos sólo pueden pedir prestada una cantidad de activos inferior o igual a su capacidad de endeudamiento (Figura 4).

 

Borrowing Compound Protocol Master Blockchain Online

Figura 4. Borrowing DAI en Compound Protocol utilizando como colateral ETH . Fuente

 

Para entender mejor lo anteriormente expuesto, pongamos el siguiente ejemplo. Supongamos que un usuario de Compound Protocol, llamado Antonio, suministra a Compound Protocol 10 ETH, recibiendo 10 cETH. Supongamos también, que el Collateral Factor, en el momento de realizar el cálculo, para el mercado de ETH, es de 0,5. Entonces, la capacidad para pedir un préstamo por parte de Antonio, en el mercado ETH, será igual a: 10 ETH (balance del activo subyacente) * 0,5 (Collateral Factor) = 5 ETH.

En este contexto, existen diferentes casos en los que es atractivo pedir prestados activos al protocolo Compound. Pasemos a señalar algunos de ellos. Uno de estos casos es el de aquellas dApps que necesiten financiación para usar dentro de la propia cadena de Ethereum sin tener que recurrir a opciones de financiación off-chain, como por ejemplo, adquirir recursos computaciones en la red de Golem. Otro caso de uso es el de aquellos comerciantes e inversores que quieran adquirir financiación para invertir en nuevos proyectos en el ecosistema crypto usando como colateral sus propias carteras de cryptoactivos, en lugar de recurrir a divisas fiduciarias. Otro caso, puede ser el de los traders de cryptoactivos que quieran realizar operaciones de compra/venta de activos de Ethereum previendo que el valor de las ganancias obtenidas en las operaciones realizadas sea superior a la tasa de interés pagado por pedir prestado dichos activos en Compound Protocol.

 

Modelo de gestión de las tasas de interés

A diferencia de otros sistemas de préstamos tradicionales, en los que las partes implicadas, entre otras condiciones, deben negociar las tasas de interés aplicadas, Compound Protocol tiene un modelo de tasas de interés prefijado de antemano, público y que obedece, en última instancia, a la gobernanza del protocolo.

El modelo de tasas de interés de Compound Protocol obedece a un sistema de interés compuesto o acumulado que pretende alcanzar un equilibrio, en cada mercado monetario, que obedezca a la oferta y la demanda de cada activo. De esta forma, se intenta llevar a cabo la teoría económica que indica que la tasa de interés debe aumentar en función de la demanda. Cuando la demanda es baja, la tasa de interés baja. En cambio, cuando la demanda es alta, la tasa de interés sube.

El protocolo, por sí mismo, no garantiza la liquidez de los mercados de los activos con los que trabaja, pero utiliza un modelo de tasas de interés que procura que la liquidez sea óptima. Para ello, en periodos de extrema demanda de un activo, las tasas de interés aumentan, incentivando la oferta (supplying) y desincentivando los préstamos (borrowing).

El ratio de utilización de un activo «U», para cada mercado «, definido por la variable «Ua» intenta unificar la oferta y la demanda mediante la siguiente expresión:  Ua = Borrowsa / (Casha + Borrowsa)

La curva de la demanda se codifica a través de la gobernanza y se expresa en función de la utilización de cada activo. Como consecuencia, las tasas de interés por pedir prestado deberán obedecer a expresione similares a la siguiente: Borrowing Interest Rate a = 2.5% + Ua * 20%

Por otro lado, las tasas de interés, para cada mercado, asociadas a los activos prestados (Supplyin Assets) obedecerán a la siguiente expresión: Supplying Interest Rate a = Borrowing Interest Rate a * Ua

Es importante entender que las tasas de interés, para cada mercado de activos, se actualizan en cada nuevo bloque creado de la red de Ethereum, siempre que la relación entre los activos prestados y los activos suministrados en el protocolo haya cambiado desde el bloque anterior.

La cantidad que cambian las tasas de interés, para cada mercado, obedece sólo a dos factores: al modelo de tasas de interés que esté definido por los smart contract que gestionan cada mercado (que puede ser cambiado mediante la gobernanza del protocolo), y a la cantidad que haya cambiado el ratio entre los activos suministrados y los prestados.

Los lectores que quieran profundizar sobre los modelos de tasas de interés que se aplican en los distintos mercados, pueden hacerlo a través del siguiente enlace. Además, se puede consultar un histórico de las tasas de interés aplicadas, a través de la siguiente API.

Aunque los «suppliers» perciben un interés en cada nuevo bloque creado en la cadena de Ethereum, el interés se compone, en cada mercado, para todos los «suppliers» y «borrowers», cuando las cuentas de Ethereum interaccionan con los smart contracts que gestionan los cTokens, a través de las llamadas a las funciones mint (acuñar nuevos tokens), redeem (realizar canjes), borrow (pedir prestado) y repay (pagar o liquidar activos). Es decir, la correcta ejecución de estas funciones dispara el método «accrueInterest», el cual hace que se agregue interés al saldo subyacente de cada «supplier» y «borrower» en el mercado.

La historia de cada tasa de interés, para cada mercado monetario, es capturada por un índice de tasa de interés (Interest Rate Index), que se calcula cada vez que cambia una tasa de interés. Este cálculo o actualización del Interest Rate Index se realiza para componer el interés desde el índice anterior, utilizando el interés para el período calculado.

Con el fin de que queden asentados los conceptos vistos en el presente apartado, pongamos el siguiente ejemplo práctico. Imaginemos que un usuario de Compound Protocol, llamémosle Antonio, decide aportar 1 ETH al protocolo. En este caso, Antonio es un «supplier». En el momento en el que Antonio ha realizado la aportación al protocolo (invocando la función «mint» del smart contract de cETH), el supplyRatePerBlock para el mercado de ETH es de 0,000000001000000000 ETH. Es decir, la recompensa, que va a recibir Antonio en cada nuevo bloque que se cree en la red de Ethereum es de 0,000000001000000000 ETH por cada ETH aportado. Durante los siguientes 2 nuevos bloques creados en Ethereum, nadie en Compound Protocol interacciona con el smart contract cETH invocando las funciones antes vistas. En el siguiente nuevo bloque (el tercero), otro usuario de Compound Protocol, llamémosle Javier, pide prestado 1 ETH a Maker Protocol invocando la función «borrow» en el smart contract cETH. En ese momento, el balance subyacente de Antonio es de 1,000000003000000000 ETH (0,000000001000000000 ETH por 3 bloques, más el balance inicial de 1 ETH). A partir de este momento, se ejecuta la función «accrueInterest» y como consecuencia el interés compuesto se calculará sobre el nuevo balance de ETH subyacente de Antonio de 1,000000003000000000 ETH, en lugar del anterior de 1 ETH.

 

Cálculo de la APY y del coste de Gas

Como hemos visto anteriormente, en Compound Protocol, cada mercado de activos tiene una tasa de interés compuesto que es variable. A dicha tasa se la denomina APY (Annual Percentage Yield), y puede calcularse, tanto para el caso en el que se presta (Supply APY), como para el caso en el que se pide prestado (Borrow APY), mediante una fórmula en la que intervienen los valores de «supplyRatePerBlock», y «borrowRatePerBlock» respectivamente, los cuales varian en el tiempo. Dicha fórmula, para el caso de Supply APY, se puede ver en la Figura 5.

Formula APY Master Blockchain Online

Figura 5. Fórmula para Supply APY. Fuente

 

Compound Protocol, en su documentación, indica que el coste el gas que se produce como consecuencia de la invocación de las funciones que se encuentran en los smart contracts de su protocolo, puede fluctuar según el mercado y el usuario, llegando incluso a usar una cantidad arbitraria de gas.  Aún así, se indica que si bien puede ser difícil proporcionar garantías sobre los costes de las transacciones, se puede utilizar la tabla que muestra la Figura 6 como guía.