Network Nervous System (NNS), el cerebro de Internet Computer

Javier Arroyo Ferrer
15 min readApr 26, 2022

--

En este artículo explicaremos de la mano de Lara Schmidt, PhD en Computer Science y miembro del equipo de Dfinity, como funciona el cerebro de Internet Computer, donde de forma democrática sus miembros votan las propuestas a favor o en contra con el objetivo de mejorar cada día la red de Internet Computer y hacerla más eficiente.

Por ejemplo, la propuesta relacionada con establecer la huella de carbono en Internet Computer (propuesta 55487)y crear una política de sostenibilidad acaba de ser aprobada recientemente por la comunidad. https://forum.dfinity.org/t/sustainability-nns-proposal/11976

En esta propuesta concretamente se han aprobado dos solicitudes:

  1. Solicitar a DFINITY que realice una evaluación de la huella de carbono e impacto ambiental, ya sea a través de recursos internos o mediante la contratación de un consultor externo, para responder preguntas básicas como ¿cuál es la huella de carbono de operar en una subred de Internet Computer?, ¿dónde se obtiene esa electricidad? ¿cuál es el costo total por transacción en la cadena de bloques de Internet Computer?
  2. Solicitart a DFINITY que agregue un panel de informes de “consumo de energía” al panel de estado de la red IC

Esta es una de las cientos de propuestas que podemos ver en el panel de IC en tiempo real y decidir con nuestros votos si estamos a favor o en contra. Si quieres formar parte de la comunidad y tener decisión de voto en las propuestas puedes empezar aquí: https://nns.ic0.app/

Otra de las claves de NNS (Network Nervous System) es que podemos hacer staking de los tokens de ICP que disponemos. Simplemente transfiriendo nuestros tokens de ICP desde cualquier broker centralizado como CoinBase, Binance o Kraken a nuestra dirección en NNS. Cuantos más tokens de ICP tengamos, más poder de voto tendremos en la toma de decisiones de las propuestas.

Actualmente por ejemplo las recompensas estimadas anualizadas a 8 años haciendo staking son el 20,9% en la red NNS de Internet Computer.

Puedes ver las diferentes estimaciones de recompensas aquí: https://dashboard.internetcomputer.org/governance

Volviendo al principio del artículo,de la mano de Lara Schmidt, iremos traduciendo y explicaremos con más detalle que es NNS.

Como idea fundamental, Internet Computer es un protocolo distribuido y ejecutado por múltiples nodos. Estos nodos pueden por ejemplo estar físicamente situados en diferentes centros de datos y estar comunicados entre sí a lo largo de la red de Internet, mostrando cual es el estado de la red mediante una colección de nodos llamados Subnet, que se comunican y consensuan entre sí.

Actuamente existen 477 nodos activos, 54 proveedores de nodos y 10 nodos límite en la red de Internet Computer
Cuadro de mandos nodos y subnets en Internet Computer a fecha 24 abril 2022

Además de este protocolo subyacente de comunicación y consenso, Internet Computer tiene alojados los denominados Canisters que son básicamente una evolución de los contratos inteligentes (smart contracts) que pueden también comunicarse entre sí.

El estado de estos Canisters tienen que ser replicados en todos los nodos para lograr que IC pueda ser escalable indefinidamente por lo que realmente no solo consiste en un subnet, sino en muchos de ellos.

En este ejemplo tenemos tres subnets (S1,S2 y S3) y el consenso sucede dentro de cada subnet, sin embargo los subnets pueden también comunicarse entre ellos, y particularmente éste hecho habilita que también los canisters alojados en los diferentes subnets puedan comunicarse unos con otros.

Subnets S1, S2 y S3
Canisters alojados en los diferentes Subnets (S1, S2 y S3)

Por lo tanto Internet Computer es escalable bajo demanda, si nosotros por ejemplo necesitamos más capacidad computacional a lo largo del tiempo, se requerirá que los nuevos Subnets puedan ser añadidos. En este ejemplo añadimos un nuevo Subnet (S4).

Añadimos el subnet S4

Además, uno podría querer mejorar la robustez de alguno de los subnets añadiendo nuevos nodos a los subnets, por tanto, en este ejemplo un nuevo nodo naranja es añadido al subnet (S3)

Nodo añadido a la subnet (S3)

A lo largo del tiempo la potencia de computación de Internet Computer estará formada por millones de nodos que deben ser organizados llevando un seguimiento de que nodos están en cada subnet. También se debe tener en cuenta que dispone de la capacidad de decidir cuando queremos añadir o eliminar nuevos subnets; éstos tienen unas características iniciales configuradas aunque también se podría querer añadir otras características nuevas en el futuro.

Por todas estas razones Internet Computer necesita ser capaz de poder tomar decisiones en la evolución del protocolo y hacer que tales decisiones se realicen de una manera distribuida. Esto es precisamente la solución que presenta Internet Computer a este problema y que logra resolver NNS (Network Nervous System)

Network Nervous System (NNS) de Internet Computer Protocol

Internet Computer es gestionado por un sistema tokenizado abierto de gobernanza que es el responsable de por ejemplo, almacenar que nodos pertenecen a cada subnet y también es el responsable de la toma de decisiones a la hora de actualizar esta información.

Por tanto y como idea principal, NNS se realiza mediante un grupo de Canisters, principalmente para la toma de decisiones son importantes dos tipos de Canisters:

  1. Canister de gobernanza:
  • Almacena las propuestas que básicamente son sugerencias de como Internet Computer podría mejorar, estas propuestas pueden luego ser votadas.
  • Almacena lo que llamamos Neuronas (Neurons) que determina quien tiene permiso para participar en la gobernanza.

2. Canister de registro:

  • Almacena la configuración de todo el Internet Computer que puede ser almacenada por otros usuarios.
Visión general composición de los Canister

Volviendo al ejemplo anterior, la información actualizada es almacenada corroborando que el subnet S3 consta de esos cuatro nodos. La idea principal de este ejemplo es que se proponga la decisión de añadir un nuevo nodo (el cuarto) en un subnet existente (S3).

Para esto, primero asumimos que tenemos un usuario que controla un neuron y le gustaría presentar tal propuesta, por lo que si el usuario hace una sugerencia, dicha propuesta será añadida al sistema de gobernanza, y una vez que otros usuarios también controlen neurons, podrían votar en la propuesta por lo que en este ejemplo, imaginemos que los dos primeros votos están a favor de la propuesta y el último voto está en contra. Al final, la mayoría de los usuarios estarían a favor de la propuesta y por lo tanto sería ejecutada, lo que significa que el registro será actualizado para reflejar ahora que este nuevo nodo es también parte del subnet S3.

Ejemplo usuario con neuron presenta propuesta: añadir un nuevo nodo a la subnet.
Ejemplo usuario con neuron presenta propuesta: añadir un nuevo nodo a la subnet y votan 3 usuarios que poseen neurons. Propuesta ejecutada por mayoría 2 contra 1

Conceptualmente todas las propuestas funcionan de esta manera, sin embargo, existen una variedad de diferentes propuestas y temas a tratar. Las más importantes son:

  1. #Propuesta SubnetManagement:
  • Se consideran cambios en la topología. Por ejemplo las propuestas que ya hemos visto de añadir un nuevo subnet se incluiría en esta categoría.

2. #Propuesta ExchangeRate:

  • Se ocupa de la información en tiempo real del valor de los tokens por lo que es importante para determinar cuantos tokens tienen que ser pagados por la computación.

3. #Propuesta NodeAdmin:

  • Se encarga de la administración de las máquinas de nodos por lo que podría ser por ejemplo especificar que todos los nodos deber ser actualizados.

4. #Propuesta NetworkEconomics:

  • Se encarga del cambio de parámetros económicos de Internet Computer, por ejemplo cuantas recompensas deberían ser pagadas para aquellos que proveen las máquinas de nodos.
Temas más importantes de las propuestas en NNS

Para entender con más detalle como funciona un canister y como se almacena es fundamental comprender que los neurons se obtienen mediante la compra de tokens de ICP.

Pero antes es importante aclarar que es cada cosa:

Canisters: Es como una evolución de contrato inteligente (smart contract) porque su ejecución se rige por un protocolo seguro: el Protocolo de computadora de Internet (ICP). Por lo tanto, un Canister es imposible manipularlo, lo que significa que su estado solo se puede modificar a través de mensajes incluidos en la cadena de bloques, que se rige por el protocolo.

Neurons: Los poseedores de tokens de ICP pueden hacer stake de sus tokens canjeandolas por neuronas en el Sistema Nervioso de la Red (NNS) para participar en el gobierno de la red y obtener recompensas de votación por su participación. Las neuronas “no se disuelven” por defecto. Para desbloquear y retirar los tokens , el poseedor de un token debe disolver completamente su neurona. El período de tiempo durante el cual esto ocurre se denomina “retraso de disolución” o dissolve delay . Los poseedores de tokens pueden aumentar el retraso de la disolución en cualquier momento, pero las neuronas siempre se disuelven en tiempo real. Las neuronas se crean y administran utilizando la dapp front-end de NNS.

Neurons en el Sistema Nervios de la Red de Internet Computer

Los tokens de ICP se conocen como la moneda del sistema de gobernanza (gobernance system). Los tokens de ICP son gestionados por otro Canister en NNS que llamamos Ledger Canister o el libro mayor del Canister.

Ledger Canister y Tokens

Los Ledger Canister almacenan:

  1. Cuentas
  2. Transacciones

El almacenamiento en el sistema de las cuentas contables mantiene un seguimiento de cuantos tokens están en posesión de cada usuario, cada usuario tiene una identidad en Internet mediante la cual es autentificado en Internet Computer.

Los tokens pueden ser enviados desde una cuenta a otra y esta transacción queda almacenada en el ledger canister.

Como ya hemos comentado los tokens de ICP son la moneda del sistema de gobernanza y en particular pueden ser utilizados para tres diferentes finalidades:

  1. Primero, los tokens facilitan la participación en la red de gobernanza, ya que como vimos anteriormente los neurons están conectados con los tokens.
  2. Segundo, tanto aquellos usuarios que participan en el sistema de gobernanza como aquellos que proveen capacidad computacional mediante el uso de máquinas de nodos, son recompensados con tokens.
  3. Finalmente los tokens son usados para comprar ciclos, estos ciclos son el combustible para poder hacer la computación y almacenar la información en Internet Computer. Mediante la compra de ciclos los desarrolladores pagan una tarifa de gas para poder desarrollar en el ecosistema de IC. El usuario final nunca pagará la tarifa de gas. Es lo que conocemos como Reverse Gas Fee model donde lo explico en el siguiente artículo. https://medium.com/p/3ef0f97d1fd3/edit

¿Cómo pueden ser usados éstos tokens para participar en la gobernanza de NNS?

Los tokens de ICP pueden ser usados para añadir propuestas y para votar en ellas. Las votaciones dependen de las Neuronas, es decir, aquellos que tengan más tokens, tendran más poder de voto (voting power).

Tokens y Gobernanza

Sin embargo, a pesar de que el número de Neuronas no corresponden a los tokens, las Neuronas contienen tokens bloqueados, esto significa que los tokens bloqueados no son líquidos y no pueden ser transferidos libremente. También sabemos que una Neurona almacena la siguiente información:

  1. Mantiene un seguimiento de cuantos tokens están asociados con una Neurona, por lo que solo hacemos referencia una cuenta en el ledger.
  2. Especifica un ID principal, que básicamente se identifica mediante una llave pública (public key).
  3. Muestra un ID de la Neurona, esta Neurona aunque es única, cuenta con otros parámetros comunes asociados con la Neurona. Esta Neurona inicialmente se encuentra en una fase temprana (early state), en la que los tokens pueden ser desbloqueados.

La idea principal es que solo los tokens que estén bloqueados al menos el tiempo mínimo de stake que son 6 meses, podrán participar en el sistema de gobernanza, y esto lógicamente incentiva a los poseedores de las Neuronas a mantener sus tokens bloqueados a largo plazo (entre 6 meses a 8 años) y votar las propuestas para obtener mayores recompensas.

Lo siguiente es ver como el usuario que tiene una cuenta en NNS puede bloquear alguno de sus tokens creando una Neurona. Imaginemos que queremos que un usuario bloquee 100 de sus tokens en una Neurona y hacemos que envíe una orden a NNS especificando que el número total de tokens a bloquear en una cuenta específica son 100.

Creando un Neuron en IC

El efecto de esto es que la transacción se guarda en el ledger especificando que 100 tokens se enviarán desde la cuenta original del usuario a una nueva cuenta. Esta nueva cuenta ahora mantiene bloqueados los 100 tokens y un nuevo neuron es creado en el canister de gobernanza que especifica que el usuario es el único que controla este neuron y que también recalca que la cantidad de tokens bloqueados son definidos por este nuevo ledger account.

Hay que tener en cuenta que desde fuera realmente no es visible que esta nueva cuenta mantiene bloqueados los tokens o que están de alguna manera relacionados con la cuenta original, sin embargo, esta cuenta está de hecho controlada por la Neurona, lo que significa que los 100 tokens no son líquidos y el usuario no puede transferirlos a nadie. También al controlar la Neurona, permite a los usuarios propietarios de la Neurona crear una propuesta o poder votar en éstas.

¿Cómo se crea una propuesta en NNS?

En primer lugar, el usuario solo puede presentar una propuesta si es propietario de algúna Neurona por lo que sino tiene una Neurona primero debería bloquear alguno de sus tokens para obtenerla.Una vez que controla una Neurona, puede presentar una nueva propuesta especificando el ID de la Neurona, el tipo de propuesta que quiere presentar y también los parámetros de la propuesta.

En el ejemplo de la siguiente imagen vemos un usuario que presenta una propuesta con el id de la Neurona 990 sugiriendo en el tipo de propuesta añadir un nuevo nodo, y en los parámetros de la propuesta define que nodo debería ser añadido en cada subnet y una vez que el Canister de gobernanza recibe esta propuesta, comprueba que este usuario es el que controla la Neurona y que esta Neurona es elegible para votar (al menos 6 meses bloqueado) y si este es el caso, la propuesta es añadida al Canister de gobernanza.

Realmente cuando una propuesta es añadida, el número de votos iniciales a favor corresponden a la persona que presenta la propuesta y ya han sido automáticamente configurados en el poder de voto (voting power).Es decir, en nuestro ejemplo anterior ese usuario que bloqueó 100 tokens, tiene 100 votos a favor iniciales en el poder de voto de la propuesta.

Presentar una propuesta

Cabe destacar que para evitar inundar NNS con propuestas inútiles, la Neurona que presenta una propuesta realmente tiene que pagar una pequeña comisión si la propuesta es rechazada.

Una vez que la propuesta ha sido presentada, los usuarios que controlan las Neuronas pueden votar la propuesta.

¿Cómo votan los usuarios a favor o en contra de una propuesta?

En el ejemplo anterior, el usuario de color naranja poseedor de una Neurona, para votar una propuesta primero deberá preguntar al Canister de gobernanza por las propuestas pendientes para saber que propuestas están disponibles para votar, y asumimos que el usuario naranja quiere rechazar y votar en contra de la propuesta del ejemplo anterior. Para hacer esto, el usuario naranja enviará su ID de la Neurona votando en contra, de nuevo el canister de gobernanza verifica que este usuario es el que controla la Neurona y si esta Neurona es elegible para votar, se añadirá al poder de voto (voting power) los votos en contra.

Ejemplo votar una propuesta

Al igual que el usuario naranja, otros usuarios poseedores de Neuronas votarán a favor o en contra de la propuesta y llegado a un punto donde haya mayoría en el poder de voto, la propuesta será aprobada o rechazada.

En el caso que sea aprobada, la propuesta será ejecutada mediante lo que llamamos “described method” o método descrito, en nuestro ejemplo el método de añadir un nodo del Canister de registro será aprobado con los parámetros específicos, y el efecto de esto implica que el nodo ahora se añade a la subnet.

Por tanto, el incentivo de los votantes a bloquear sus Neuronas no solo se basa en que ellos pueden participar en decisiones sino que por encima de eso participar en la gobernanza y votar las propuestas también es recompensado. Esto nos trae un segundo caso de uso de los tokens.

Las recompensas dependen de diferentes parámetros, pero uno de los más importantes es en cuantas de las posibles propuestas y toma de decisiones una Neurona ha participado. Para obtener las recompensas NNS nos muestra:

  1. Spawn neuron: Ordenar al canister de gobernanza que genere una nueva Neurona. El efecto de esto será que una nueva Neurona con una nueva cuenta asociada será creada, y esta nueva account ledger ahora contiene las recompensas por valor de los tokens generados (spawn neuron). Técnicamente lo que ha sucedido es que los nuevos tokens han sido acuñados y transferidos a la nueva cuenta del libro mayor (account ledger). Estas nuevas neuronas tienen un retraso de disolución (dissolve delay) lo que significa que el usuario podrá desbloquear los tokens y usarlos libremente para cualquier propósito que quiera. Para poder optar a esta opción debe de cumplirse el tiempo que el neuron esté bloqueado (6 meses-8 años) y su disolución (start dissolving) que serán otros 6 meses-8 años dependiendo del dissolve delay que hayamos elegido en la neurona.
Recompensas NNS

2. Merge maturity: Actúa como catalizador haciendo uso de la capitalización compuesta, los intereses (recompensas) que vamos obteniendo, se van acumulando y se fusionan con la neurona aumentando el número de tokens ICP que tenemos en staking hasta su madurez donde comienza su disolución y generación de una nueva Neurona.

Como ya hemos mencionado anteriormente, esta no es la única manera de obtener tokens, también los proveedores de las máquinas de nodos son recompensados con tokens.

Volviendo a los votantes que quieren participar en las decisiones de Internet Computer y recibir recompensas, podría ser que muchas veces no tienen tiempo para participar en todas las decisiones o podrían no sentirse cómodos tomando ciertas decisiones de gobernanza que no conocen ni entienden el impacto en la red de IC. Por ejemplo un usuario que no está familiarizado con la topología de la red de Internet Computer podría no querer tomar una decisión de si un nodo debería ser o no añadido a la subnet.

Por lo tanto Internet Computer facilita lo que llamamos “democracia líquida” o “democracia delegativa revocable” donde incluye la posibilidad de la delegación de voto, es decir, una neurona sigue a otras neuronas y delega su voto a estas neuronas. En NNS esta función de delegación de voto se conoce como followees y básicamente funciona mediante la delegación del voto de cada neuron a la decisión de voto de los followees. De esta manera el usuario puede seguir acumulando las máximas recompensas hasta la madurez sin tener que estar activamente participando en la gobernanza.

El seguimiento de los neuron a través de followees se dividen en temas específicos: All topics except Governance, Exchange rate, Network Economics, Governance, Node Admin, Participant Management, Subnet Management, Network Canister Management, Kyc y Node Provider Rewards. En nuestro próximo artículo explicaremos con más profundidad cada tema de las propuestas.

Lo realmente interesante de esto es que podemos seguir en algunas propuestas que no conozcamos a un followee o diferentes followees o votar manualmente nosotros en el tema que nos interese manteniendo en cualquier caso la máxima recompensa.

Actualmente los followees disponibles en NNS son Internet Computer Association, DFINITY Foundation, ICDevs.org, ICP Maximalist Network o cycledao.xyz.

Detrás de la participación de la gobernanza y las recompensas mediante votos, los tokens pueden también ser usados para pagar por los ciclos (cycles)

Ciclos en Internet Computer

Los ciclos son la gasolina de la computación y el almacenamiento en el ecosistema de Internet Computer. Cada Canister en IC (excepto para aquellos que están en la NNS) tienen ciclos almacenados y éstos se usarán por ejemplo cuando se realicen cálculos de computación, de modo que la idea en la que usamos estos ciclos fundamentalmente reside en su precio.

Mientras el precio de los tokens puede variar muchísimo a lo largo del tiempo, el objetivo de los ciclos es mantener el precio de la energía de computación estable a lo largo del tiempo.Por ejemplo consideremos un usuario que ejecuta un Canister en Internet Computer y le gustaría completar el ciclo de este Canister para poder realizar aún más cálculos de computación. En este ejemplo el canister tiene 700 trillones de ciclos y el desarrollador le gustaría aumentarlo por lo que envía una orden en NNS para que se realice la transacción mediante el cual acuñamos ciclos por Canister, se crea un nuevo Canister en NNS teniendo un efecto deflacionario mediante la quema de tokens de ICP y la obtención de ciclos.

Finalmente el desarrollador obtiene 900 trillones de ciclos y ahora tiene más ciclos para consumir para cálculos, es decir, para desarrollar dapps, páginas web, NFT´s… o lo que desee en el ecosistema de Internet Computer.

Fuente: https://www.youtube.com/watch?v=hWnsluxmRqc Autor: Lara Schmidt

--

--

Javier Arroyo Ferrer
Javier Arroyo Ferrer

Written by Javier Arroyo Ferrer

Economista en constante fase de aprendizaje. Apasionado de web 3.0 y blockchain. Internet Computer Protocol cambiará la historia hacia un mundo más libre.

No responses yet