Por qué se necesitan estándares
Dentro del contrato inteligente ( ¿qué es? ), Puede escribir la mecánica única del token. Funcionará, pero otros desarrolladores (y contratos inteligentes) no podrán acceder a él utilizando lógica genérica.
Ejemplo: ha creado un token para un elemento del juego (el juego descentralizado se está desarrollando activamente ahora) y desea que pueda comerciar en los mercados por elementos del juego (algo así ). Pero los mercados no saben cómo acceder a las funciones dentro de su contrato, necesitan un contrato inteligente separado para respaldar su token.
Los estándares vienen al rescate. Sabiendo cómo interactuar con ellos, los creadores de otras dApps han puesto en el código todo lo necesario para trabajar con un token en un estándar determinado.
¿Cómo surgen los estándares?
Ethereum es un proyecto de código abierto (por cierto, ERC es Ethereum Request for Comments), por lo que es lógico que cualquier usuario pueda proponer un nuevo estándar de token. Si el estándar resuelve algún problema importante, entonces puede convertirse en el estándar oficial de Ethereum (es decir, inscríbase en esta lista) .
Fichas fungibles y no fungibles
El punto de partida para clasificar los estándares de tokens es su intercambiabilidad o falta de ella. Los tokens fungibles son iguales entre sí y se pueden usar como moneda. Los tokens semi-fungibles (medio fungibles) son casi indistinguibles entre sí, pero aún así son únicos (por ejemplo: boletos en un cine, el costo puede ser el mismo, pero cada uno tiene un lugar único) . Los tokens no fungibles (no fungibles) son completamente únicos, un objeto tokenizado en una sola copia (ejemplo: objetos con derechos de autor) .
Si no reconoces al gatito, este es uno de los primeros juegos en Ethereum (y el estándar ERC-721), CryptoKitties .
ERC-20
El estándar más famoso para tokens fungibles es ERC20, que fue propuesto por el autor de la idea de Ethereum, Vitalik Buterin, en 2015. Este token se usa ampliamente para varios tipos de oferta inicial (primera propuesta). Evito los términos ICO e IEO, porque ahora estos están lejos de ser las únicas formas de realizar una oferta pública de tokens (pero este artículo no trata sobre eso).
Especificidad: un estándar intercambiable, hay un ticker para intercambios, divisible (el número de decimales lo determina el creador del contrato inteligente), debe tener un suministro total (el número de tokens que no se pueden emitir más).
Ya se ha escrito mucho sobre ERC-20 ( habr ), estoy avanzando hacia otros estándares.
ERC-721
Este estándar se usa ampliamente para crear tokens únicos. Aterrice en Decentraland , Binance Collectibles , aquí hay ejemplos de ERC-721.
ERC-721 fue propuesto como EIP (Ethereum Improvement Proposal) por Dieter Shirley en 2017, se hizo oficial en 2018. Detalles
específicos: no es un estándar intercambiable, no hay ticker, es indivisible, necesariamente existe solo en una sola copia.
ERC-721, como ERC-20, está muy extendido, por lo que no me detendré en ello.
ERC-777
Este formato es una "mejora" del conocido ERC-20. Es compatible con versiones anteriores del ERC-20, pero tiene varias ventajas:
- al intercambiar tokens, utiliza una transacción en lugar de dos en ERC-20;
- cancela automáticamente transacciones por contratos incompatibles;
- la capacidad de marcar direcciones no confiables;
- la capacidad de designar operadores (direcciones que tienen derecho a enviar tokens desde otra dirección);
- transacciones aceleradas.
ERC-223
También una "mejora" de ERC-20, que evita el envío de transacciones a contratos aleatorios. Si el contrato inteligente no tiene funciones para trabajar con tokens, se devuelven al remitente.
ERC-1155
La idea de este estándar fue propuesta por los desarrolladores del proyecto Enjin en 2018. Enjin es un proyecto que tiene como objetivo simplificar la creación de juegos en Ethereum. Por tanto, el estándar propuesto por ellos debe considerarse en primer lugar como un estándar de juego, aunque su aplicación no se limita a esto.
Especificidad:
- le permite emitir varios tokens en un contrato;
- los tokens en un contrato pueden ser fungibles y no fungibles al mismo tiempo;
- admite intercambios atómicos;
- admite transacciones "por lotes";
- no todas las transacciones deben esperar hasta el final del bloque.
Si los dos primeros puntos están claros, entonces el tercero y el cuarto pueden generar dudas. Primero, echemos un vistazo a los intercambios atómicos.
Intercambios atómicos
Una de las razones del rechazo de la cadena de bloques en todas partes es la incapacidad de intercambiar rápida y eficientemente (en términos de tarifas) un token por otro (y la cantidad de tokens diferentes aumenta todo el tiempo). La solución al problema ya se ha creado: estos son intercambios atómicos. Por lo general, los intercambios atómicos se entienden como la tecnología de intercambio descentralizado entre criptomonedas de diferentes cadenas de bloques independientes ( está bien escrito sobre esto en BitcoinWiki ). Pero también vale la pena considerar los intercambios atómicos en el contexto del intercambio de tokens dentro de un contrato inteligente.
La imagen del blog de Enjin ilustra el intercambio de múltiples tokens ERC-1155.
Y las transacciones por lotes, aunque no ahorran tiempo, ahorran gas ( ¿qué es esto? ) Al escribir varias transacciones en la red como una sola.
Vale la pena mencionar que, si bien el ERC-1155 se ha generalizado, tomó prestado mucho del ERC875, que apareció unos meses antes. ERC-875 ofrecía la misma funcionalidad además de admitir tokens fungibles.
ERC-865
Un estándar similar al ERC-20, pero no utiliza gas para las comisiones, sino los propios tokens. Debido al complejo sistema de pago de comisiones de gas (el precio del gas se elige de forma independiente) y, a veces, la imprevisibilidad del tamaño de la comisión, esta mejora puede ser muy útil para aceptar tokens en Ethereum.
Enlaces
No he considerado todos los estándares, pero si hablamos de todos los ERC, entonces son en su mayoría similares entre sí y ofrecen una solución a los problemas del ERC-20 o una aplicación en algún nicho separado. Si desea leer el código en detalle: Github EIPs , Github OpenZeppelin . Ethereum.org .