¿Qué es Filecoin (FIL)?
El proyecto Filecoin, es un proyecto centrado en la construcción de una red de almacenamiento descentralizado. Una red que está impulsada económicamente por tecnología blockchain y una criptomoneda bajo el mismo nombre y que es conocida como el token FIL. En ese sentido, la idea detrás de Filecoin es muy parecida a la conocida Siacoin (SIA).
Pero seguro te preguntarás ¿Qué es exactamente y cómo funciona Filecoin? ¿Es sostenible este tipo de sistemas? Pues bien, esto y más lo conocerás a continuación.
Historia y origen de Filecoin (FIL)
Para entender el origen de Filecoin, debemos remontarnos a una de las mayores necesidades del mundo de la computación: el almacenamiento distribuido. La información digital, a diferencia de la información escrita, siempre ha tenido riesgo: la pérdida accidental o maliciosa de esa información.
En ese sentido, uno de los mayores campos de investigación en el mundo de la informática y la computación, siempre fue la creación de sistemas de almacenamiento seguros, redundantes y distribuidos. Sin embargo, la falta de poder de cómputo, de tecnologías y el costo de desarrollo, frenó en muchos sentidos la implementación de estos sistemas.
En la actualidad, la mayoría de estos problemas son cosas del pasado. La creación de Internet y su crecimiento por más de 30 años, la evolución de los integrados, el mayor poder computacional y el bajo costo de los medios de almacenamiento nos ha llevado a tener todas las herramientas necesarias para la creación de verdaderos sistemas de almacenamiento de información descentralizada.
El nacimiento de Napster
En este punto quizás te sorprenda conocer que el primer sistema de este tipo fue Napster, en 1999. Napster era una aplicación P2P, que te permitía acceder a los archivos de música que se encontraban en otros computadores que ejecutan dicho software. En palabras más sencillas, Napster era un gran sistema de almacenamiento distribuido. Uno al cual los usuarios podían acceder para subir o descargar la música que se encontraba distribuida en dicha red. De esta forma, la música siempre podría estar disponible en la red, ya que, si alguien borraba la información, esta podría seguir disponible en otra ubicación que tuviera dicho archivo.
En tal sentido Napster fue toda una revolución, una que puso a las disqueras contra la pared, generando pérdidas multimillonarias. Esto le hizo entender a la industria musical la necesidad de acoger la tecnología de Internet y el streaming para subsistir a la evolución digital. Pero Napster fue solo el comienzo, programas como eDonkey, Bittorrent, Kazaam, Ares, Frostwire, DC++ todos y cada uno de ellos, tenían la capacidad de crear enormes redes para distribuir datos por todo el mundo sin intermediarios. De hecho, sistemas como eDonkey (creado por Jed McCaleb, el creador de Stellar) y BitTorrent se convirtieron en la meca de la compartición de archivos a nivel mundial.
Esto sin embargo fue solo el comienzo de una revolución que no tardaría en dar un vuelco al mundo del almacenamiento de datos.
Freenet, el primer sistema de almacenamiento web P2P
Con el nacimiento de Napster, el boom del P2P para compartir datos empezaba. De la nada, nacieron varios proyectos que buscaban explotar la grandiosa capacidad de distribuir datos por este tipo de redes. Uno de esos proyectos es Freenet, un proyecto que nació en marzo de 2000. El objetivo de Freenet es el de crear una red P2P libre de censura, con capacidad para desplegar servicios, páginas web con protección a la privacidad y siendo completamente anónima.
Freenet es un proyecto del tipo Tor. De hecho, Freenet es la primera “darknet” creada con este tipo de tecnologías, ya que Tor e I2P son posteriores (2002 y 2003, respectivamente). En todo caso, Freenet tiene una interesante funcionalidad capaz de permitir a sus usuarios el almacenamiento de datos de forma descentralizada, con manejo de permisos y control de acceso fino. En la actualidad, este proyecto se encuentra aún activo, y su comunidad es una de las más extensas y leales al sistema.
IPFS, un sistema de archivo distribuido
Pese al enorme salto que redes como Freenet, I2P y Tor significaron a la tecnología del almacenamiento distribuido, era obvio que estos sistemas aún tenían algunos puntos flojos. En primer lugar, son complejos de configurar, el control de acceso es limitado y no es modular, con el fin de permitir unir esta capacidad de almacenamiento con proyectos y sistemas ya existentes de una forma sencilla.
Superar estos problemas es el planteamiento detrás del proyecto IPFS o InterPlanetary File System, diseñado por Juan Benet en febrero de 2015. IPFS busca crear un sistema modular capaz de crear un sistema de archivo, de funcionamiento descentralizado utilizando tecnologías como DHT (Tabla Hash Distribuida) y DAG (Grafo Acíclico Dirigido). Gracias a estas tecnologías, IPFS es capaz de funcionar como un sistema de archivo cualquiera (como NTFS de Windows o ext4 de GNU/Linux).
Podemos decir entonces que IPFS es la conclusión de una tecnología que venía evolucionando desde 1999, y que ahora está disponible para todos.
El nacimiento de Filecoin
Ahora te preguntarás ¿Cómo encaja todo esto con el desarrollo de Filecoin (FIL)? A diferencia de Siacoin, IPFS es un sistema de almacenamiento que funciona sin incentivos. Los usuarios almacenan trozos de ficheros de otros usuarios de forma altruista. Eso no escala. Siacoin resolvió todo esto, y es en lo que se basó IPFS para no quedarse atrás.
Básicamente, Juan Benet y el equipo tras IPFS copiaron el modelo de incentivos tras Siacoin, añadiendo un token, el cual además usaron para financiarse a través de una ICO. De esta forma, los usuarios podían acceder a dicho almacenamiento pagando una pequeña cuota por el mismo. Y todo ello, sería pagado con el token nativo de la plataforma, el token FIL.
La idea de Benet fue presentada en julio de 2017 con la liberación de su white paper. Y, para agosto de 2017, tras una ICO (Oferta Inicial de Monedas) que duró unos minutos, Benet fue capaz de recaudar más de 200 millones de dólares para su proyecto. Con esto estaba más que asegurada la financiación económica de Filecoin y su desarrollo.
¿Cómo funciona Filecoin (FIL)?
El funcionamiento de Filecoin recae sobre una serie de innovaciones únicas diseñadas para esta red. Su whitepaper en ese sentido es bastante claro y, nos deja ver, las piezas claves en el funcionamiento de esta red. En tal sentido podemos mencionar:
DSN o Decentralized Storage Network
La DSN o Decentralized Storage Network, es una red de nodos que ejecutan el software de Filecoin y con ello son capaces de agregar espacio de almacenamiento a la red Filecoin. El sistema es completamente autónomo en su coordinación gracias al protocolo de conexión de Filecoin, lo que convierte a esta red en una enorme red de almacenamiento descentralizado.
El sistema que controla toda la red es resistente a fallas bizantinas y los mensajes se envían usando el protocolo Gossip, pero un poco modificado. La idea es que la red sea resistente, autorecuperable, eficiente en la transmisión de datos y sobre todo segura. De hecho, los mensajes manejados por el protocolo de red se pueden dividir en tres tipos:
- Put: un mensaje que permite acceso al sistema y con el que se pueden manejar datos. De esta forma, los clientes que ejecutan el protocolo Put pueden almacenar datos bajo una clave identificadora única.
- Get: este mensaje permite a los clientes recuperar los datos que se almacenan dentro de la red proporcionando la clave para acceder a los mismos.
- Manage: este mensaje del protocolo permite controlar el almacenamiento disponible, auditar el servicio ofrecido por los proveedores y reparar posibles fallos en los datos.
Es de esta manera que la red puede compartir mensajes entre sí y, manejar los datos y su acceso en todo momento. Por supuesto esto es solo una parte del funcionamiento de DSN. Otra de las funciones principales es mantener los mecanismos a prueba de fallo y de integridad de datos.
En este caso, DSN mantiene una serie de acuerdos bizantinos (BA) que garantizan en todo momento que el acceso a los datos será posible en casi cualquier condición de red. Por ejemplo, si una red Filecoin de 1000 nodos es seccionada por un ataque, dejando al 50% de sus nodos fuera de línea, las llamadas de acceso de la red pueden enrutarse de forma tal que, se pueda sortear el seccionamiento y acceder a los datos sin problemas. Esto es un caso extremo de ataque a la red, algo que difícilmente podamos ver en la realidad, pero que da un claro mensaje: Filecoin es una red segura y resistente a fallos.
Otra función de la DSN es mantener la integridad de los datos. Para ello DSN asigna de forma automática una serie de algoritmos que velan porque la integridad de los datos se pueda garantizar. El uso de hash SHA-256 y funciones CRC32, permiten que esta tarea pueda ser realizada de la forma más óptima posible.
Proof of Replication y Proof of Spacetime, los pilares de la seguridad de Filecoin
Otra innovación importante en Filecoin (FIL) son los protocolos de consenso Proof of Replication (Prueba de Replicación o PoRep) y Proof of Spacetime (Prueba de Espacio-tiempo o PoSt). Ambos protocolos vienen a ser un reemplazo del conocido Proof of Storage (Prueba de Almacenamiento o PoStge), con el cual se comparte muchas de sus funciones.
Proof of Storage, el génesis de los protocolos de consenso de Filecoin
Pero antes de adentrarnos en Proof of Replication y Proof of Spacetime, examinemos cómo funciona su antecesor, Proof of Storage (PoStge). Proof of Storage (PoStge) es un sistema que permite a los usuarios comprobar en todo momento que un espacio contratado realmente está disponible y está siendo usado por los datos del usuario. La idea es permitirle al usuario verificar de forma rápida y sencilla que sus datos realmente están almacenados y que los mismos no se perderán o serán borrados. Para lograr esto, PoStge genera una serie de pruebas criptográficas y probabilísticas que responden a un esquema desafío/respuesta que usa los datos del usuario para generar una prueba válida.
Dicho de una forma más sencilla, Proof of Storage hace lo siguiente:
- El usuario envía los datos a la red y los nodos almacenan dicha información.
- Si el usuario desea verificar los datos, envía una petición verificación de datos (Proof of Storage). En dicha petición hay un desafío criptográfico y probabilístico que debe ser resuelto por la red. Básicamente lo que se le dice a la red es: si tomas estos determinados bloques de datos que te envíe (seleccionados aleatoriamente), y generas la prueba criptográfica, obtendrás la respuesta a mi desafío.
- La red solo recibe los apuntadores de los bloques de datos, y el desafío criptográfico, con esos datos, los nodos donde está almacenada la información del usuario, comenzarán a tomar los bloques de datos, hará la prueba criptográfica y obtendrá la respuesta al desafío. La respuesta sólo será correcta si efectivamente el nodo tiene almacenada la información del usuario, demostrando así que los datos efectivamente están almacenados.
Este esquema usado por Proof of Storage permite mantener la seguridad de que los datos están en la red, pero a la vez, permite evitar los ataques Sybil (con nodos reflejando identidades duplicadas falsas), los ataques de subcontratados (evitando que los nodos puedan almacenar más información de la que realmente pueden manejar) y los ataques de generación (evitando otro medio de manipulación sobre la cantidad de datos realmente almacenada). La utilidad de este sistema de almacenamiento distribuidos es innegable, pero Filecoin ha ido un paso más allá, al diseñar sus propios protocolos.
Proof of Replication (PoRep), una versión alternativa de Proof of Storage
Proof of Replication (PoRep) es un derivado de Proof of Storage, pero que tiene como objetivo: permitir a un servidor convencer a un usuario de que algunos datos se han replicado en su propio almacenamiento. De esta manera, el usuario puede estar seguro de que sus datos tienen una réplica exacta de sus datos dentro de la red.
El esquema de prueba de PoRep sigue el mismo que Proof of Storage, solo que PoRep hace uso de funciones criptográficas más avanzadas como lo son las zk-SNARKs. El uso de este tipo de pruebas tiene un doble objetivo: ser extremadamente privadas y seguras, además de ser muy eficientes en tamaño y ejecución computacional.
Proof of Spacetime (PoSt), asegurando los datos en el tiempo
Un punto que Proof of Storage y Proof of Replication no examinan es la comprobación de datos por periodos determinados de tiempo. Para resolver este problema, Filecoin cuenta con Proof of Spacetime (PoSt). La idea es hacer que los nodos y los usuarios sean capaces de crear pruebas temporales de los datos almacenados en la red, sin que ello requiera un alto uso de ancho de banda. De esta manera, por ejemplo, un usuario que ha alquilado espacio de almacenamiento por un año, puede a lo largo de ese tiempo, recibir pruebas criptográficas que dan fe de que sus datos en ese tiempo no han sido alterados o borrados.
Para lograr esto, los nodos que usan Proof of Spacetime, realizan una prueba criptográfica de almacenamiento secuencial en un periodo de tiempo determinado. Esto, con el fin de garantizar que los datos siguen dentro del sistema. Para esto, el usuario envía una petición de Proof of Spacetime, y la red contesta usando una serie acumulada de Proof of Replication, junto a un desafío criptográfico específico en un determinado momento. Al sumar estas pruebas se obtiene una marca criptográfica única para cada iteración temporal, lo que sirve de prueba temporal de que los datos realmente están almacenados.
Para ver esto de una manera más sencilla imagina lo siguiente:
Almacenas 100 GB de datos en Filecoin por un espacio de un año. En el contrato de almacenamiento has agregado que cada mes el sistema te enviará las Proof of Replication y Proof of Spacetime correspondiente. Al llegar el primer mes, se te envía el primer par de pruebas, y todo va bien. Pero la llegada del segundo mes es cuando Proof of Spacetime muestra su poder.
En ese segundo mes, el nodo te envía la Proof of Replication con su respectiva prueba de desafío/respuesta. Pero para el caso de Proof of Spacetime esto cambia, ya que el nodo tomará ambas Proof of Replication (del primer y segundo mes), tomará el desafío criptográfico impuesto por el sistema y el intervalo de tiempo para responder de forma correcta la prueba de desafío/respuesta de ese protocolo.
La respuesta sólo será correcta si se regeneran las Proof of Replication anteriores de forma correcta, aplicando sobre ellas la Proof of Spacetime correspondiente a su periodo, y probando con todo ello que ninguna parte de los datos ha sido borrada.
La prueba se hace más compleja a medida que más tiempo pasa, porque los bloques usados para la generación de esas pruebas son aleatorios, y la eliminación de una parte de los datos podría detectarse fácilmente con este sistema.
Smart contracts en Filecoin
Filecoin es una red con capacidad para ejecutar smart contracts y, de hecho, estos son el corazón del sistema de pagos y recompensas para los usuarios y mineros de Filecoin. Cada smart contracts en Filecoin se puede ver como un programa que permite gastar tokens, solicitar el almacenamiento/recuperación de datos en los mercados y validar pruebas de almacenamiento, y más.
Todas estas interacciones se dan sobre la blockchain, así que pueden ser públicamente auditadas, garantizando la seguridad de este sistema. Sin embargo, cabe recalcar dos puntos:
Filecoin tiene contratos plantillas ya predefinidos para las acciones ya mencionadas. Por ejemplo, un contrato de alquiler de almacenamiento ya está predefinido en la red y puede ser usado sin mayores problemas directamente con el software de Filecoin. Existe la posibilidad de crear contratos personalizados adaptados a necesidades específicas.
Entre los tipos de contratos que podemos ver en Filecoin podemos describir:
- Contratos de archivo: Permitimos a los usuarios programar las condiciones por las que ofrecen o prestan servicios de almacenamiento.
- Contratación de mineros: los clientes pueden especificar de antemano los mineros que ofrecen el servicio sin participar en el mercado
- Estrategias de pago: los clientes pueden diseñar diferentes estrategias de recompensa para los mineros, por ejemplo, un contrato puede pagar al minero de forma increscente a lo largo del tiempo, otro contrato puede fijar el precio del almacenamiento informado por un oráculo de confianza
- Servicios de venta de entradas: un contrato podría permitir a un minero depositar tokens y pagar por el almacenamiento/recuperación en nombre de sus usuarios
- Operaciones más complejas: los clientes pueden crear contratos que permitan la actualización de datos.
El mecanismo encargado de ejecutar estos smart contracts se conoce como Filecoin Virtual Machine (FVM), y la programación de estos smart contracts se da en lenguaje Go. Esto hace que sea muy sencillo programar smart contracts en Filecoin y, de hecho, tiene otra ventaja, y es que el código de estos smart contracts puede ser ejecutado usando hilos (threads) acelerando la ejecución computacional de los mismos.
Gas en Filecoin
Como en Ethereum, Filecoin usa el concepto de Gas para el pago de tarifas dentro de la red. Sin embargo, el sistema usado para tal fin es completamente distinto. En primer lugar, Filecoin cuenta con un valor llamado BaseFee, una pequeña comisión que es quemada en cada transacción dentro de la red. Esto se ha creado con el fin de evitar que los mineros puedan manipular las comisiones. Además, también sirve para evitar ataques de spam.
Otro valor creado es el de GasPremium, el cual indica la tasa de prioridad que incluyen los remitentes para incentivar a los mineros a elegir las transacciones más rentables. En otras palabras, si el remitente de un mensaje quiere que su mensaje sea incluido más rápidamente, puede establecer una GasPremium más alta.
Así tenemos entonces los siguientes conceptos y valores de Gas dentro de Filecoin:
- GasUsed es una medida de la cantidad de recursos (o unidades de gas) consumidos para ejecutar una transacción. Cada unidad de gas se mide en attoFIL y, por tanto, GasUsed es un número que representa las unidades de energía consumidas.
- BaseFee es el precio establecido por unidad de gas (medido en attoFIL/unidad de gas) que se quemará (enviado a una dirección irrecuperable) por cada ejecución de mensaje. El valor del BaseFee es dinámico y se ajusta en función de los parámetros de congestión de la red.
- GasLimit se mide en unidades de gas y lo establece el emisor de la transacción. Impone un límite duro a la cantidad de gas (es decir, el número de unidades de gas) que la ejecución de un mensaje debe consumir en cadena.
- GasFeeCap es el precio máximo que el emisor del mensaje está dispuesto a pagar por unidad de gas (medido en attoFIL/unidad de gas). Junto con el GasLimit, el GasFeeCap establece la cantidad máxima de FIL que un remitente pagará por una transacción: un remitente tiene garantizado que una transacción nunca le costará más que: GasLimit * GasFeeCap.
- GasPremium es el precio por unidad de gas (medido en attoFIL/gas) que el emisor del mensaje está dispuesto a pagar (además de la BaseFee) para “dar una propina adicional” al minero que incluirá este mensaje en un bloque. Mineros en Filecoin
Mineros en Filecoin
Filecoin tiene un sistema blockchain que permite gestionar el sistema económico, de contratos y pagos de la red. En ese sentido, Filecoin cuenta con mineros que trabajan en función de generar bloques, mantener el consenso y la seguridad de la red y ejecutar los smart contracts.
En Filecoin para minar se apuesta más por el espacio de almacenamiento que por el poder computacional disponible. Así tenemos que en Filecoin existen varios tipos de mineros:
- Almacenamiento, responsables de almacenar archivos y datos en la red.
- Recuperación, responsables de proporcionar vías rápidas para recuperar archivos.
- Reparación, una opción que está por implementarse en la red.
Los mineros de almacenamiento son el corazón de la red. Estos ganan tokens FIL al almacenar datos para los clientes y calculando pruebas criptográficas para verificar el almacenamiento a lo largo del tiempo. La probabilidad de ganar la recompensa por bloque y las tasas de transacción es proporcional a la cantidad de almacenamiento que el minero aporta a la red Filecoin, y no a la potencia de hashing.
Por otro lado, los mineros de recuperación son las venas de la red. Estos ganan tokens FIL y tarifas de minería para un archivo en particular, que se determinan por el valor de mercado del tamaño de dicho archivo. El ancho de banda de un minero de recuperación y el tiempo de respuesta inicial de las ofertas (es decir, la latencia y la proximidad a los clientes) determinarán su capacidad para cerrar ofertas de recuperación en la red. El ancho de banda máximo de un minero de recuperación establecerá la cantidad total de tratos que puede realizar.
En todo caso, el trabajo de minería busca generar un nuevo bloque cada 2 minutos dentro de la red, y las recompensas son ajustadas de acuerdo al nivel de participación de los mineros, aunque en promedio, se generan unos 310.000 token FIL diariamente. Asimismo, el total de tokens FIL que existirán en la red es de 2.000.000.000 de tokens, siendo una red de corte deflacionaria y con limite de emisión. En la actualidad, hay unos 68 millones de tokens FIL en circulación.