Después de estudiar el White Paper de los Smart Media Token (SMTs) por unas cuantas horas, decidí escribir un corto post (mi concepto de "corto" podría ser diferente al tuyo, pero bueno) sobre cómo implementar tu propio SMT en la cadena de bloques (Blockchain) de Steem. Hice todo lo posible para traducir los términos técnicos a un lenguaje sencillo, pero puedo tener algunos fallos, así que te animo a hacer tantas preguntas como quieras en los comentarios, trataré de responder a todas, en la medida de mis conocimientos, obviamente.
Este artículo se basa en el pseudo-código publicado en el White Paper, pero ten en cuenta que esto probablemente tendrá cambios hasta el momento en el que se implementé públicamente. Además, algunas de las operaciones individuales descritas aquí puede ser que se agrupen en construcciones de interfaz de usuario más monolíticas.
Creación y distribución de SMT
Un SMT se crea a través de un proceso de distribución. En el White Paper, el proceso de distribución a menudo se sustituye por el término "ICO", (aunque esto no signifiqué exactamente lo que conocemos, esa parte cercana a la estafa del término).
Por lo tanto, en el momento en que decidas que quieres tu propio token, tienes que decidir también una ventana de tiempo. Por ventana de tiempo entiendo:
- Cuánto tiempo la gente podrá comprar tu token (duración del ICO).
- Qué cantidad se distribuirá (el ICO tendrá un tope? será un tope suave, uno fuerte?).
- ¿Habrán distribuciones posteriores del token? (esto se define como "inflación" en el White Paper).
La creación de un SMT se realiza en 3 pasos:
- Creación del token.
- Pre-configuración de los parámetros.
- Configuración del token.
Éstas son una secuencia de operaciones en la cadena de bloques y, como ya he dicho anteriormente, ellas podrán ser agrupadas en diferentes construcciones de interfaz de usuario en la implementación final de los SMTs. Tomemos un paso a la vez.
Creación del token.
Este paso sólo indica que deseas crear un token en la cadena de bloques. Es una especie de "reserva". Incluye la control account (cuenta de control)
, o la cuenta que será responsable de la reserva, el nombre del token y el pago. La control account (cuenta de control)
puede ser cualquier cuenta que tenga STEEM en ella, pero el White Paper recomienda configurar una cuenta específica para cada token. A partir de ahora, el pago por emitir tu propio token es 1 SBD, aunque esto puede cambiar. El White Paper también tiene algunas inconsistencias, ya que en la copia, la cuota es de 1 SBD, pero en los ejemplos de JSON, la cuota es de 1000 SBD (esto también fue reforzado en una entrevista que leí ayer por @wadepaterson). Debemos esperar la versión final para ver la cantidad exacta, imagino.
Algunas consideraciones sobre el llamado "nombre" del token. En realidad es un identificador, de la forma @@ 123456789
- dos signos @, seguido de una cadena aleatoria de 9 dígitos. Este es el NAI
, o el Network Asset Identifier (Identificador de Activos de la Red)
. Esto es lo que la cadena de bloques (Blockchain) utilizará en todas las operaciones, se generará automáticamente a su nivel, y, como ya se ve, no es un nombre amigable para los humanos.
El nombre legible para los humano de su token (MYTOKEN, ALPHA, RUNCOIN, etc) se hará público a través de un registro separado, que en el White Paper se llama asset registry (registro de activos)
. Esta configuración es para disuadir a los que, en un futuro, tratarían de ocupar nombres para obtener ganancias, o así lo entiendo yo. Aunque, en la vida real, dependiendo del asset registry (registro de activos)
que se utilice, se puede terminar con nombres duplicados.
Puedes parar a este nivel, y eso significaría que acabas de crear un NAI
y pagado por ello. Pero para tener un token, tienes que hacer la configuración completa, lo que implica terminar las dos etapas siguientes.
Pre-configuración de los parámetros.
En esta parte se configuran la inflación y todos los "parámetros de nivel de aplicación para su token".
La parte de la inflación es relativamente complicada y creo que por el momento todo lo que necesitas saber es que puedes configurarlo. Puedes elegir una inflación cero (no se crearán más fichas) o puede elegir un escenario complejo, en el que la inflación se dividirá en varios grupos, imitando el fondo de recompensas de Steemit por ejemplo y los intereses pagados a las sumas guardadas (vesting balances).
Los "parámetros de nivel de aplicación" están vinculados a lo que ya sabes de Steem:
allow vesting
(¿tendrá usted su propio power down?)allow voting
(¿permitirá que sus fichas se utilicen en la votación?)cashout window
(actualmente una semana, para Steemit)reverse auction window
((el período en que tu Voting Power (poder de voto) se invertirá en realidad para las recompensas de curaduría, actualmente son 30 minutos después de que se publica un post - por cierto, espero que sepas sobre eso, no te apresures a votar un post de inmediato)vote regeneration period
(actualmente 24 horas)percent curation reward
(actualmente un 25% de descuento en el fondo de recompensas)percent content reward
(actualmente un 75% de descuento en el fondo de recompensas)author reward curve
(actualmente lineal, o en proporción directa con el poder de voto)curation reward curve
(actualmente lineal)
Como puedes ver, estos parámetros te permiten afinar tu token para crear tu Steem-on-demand personalizado, pero con tu propio nombre en el token.
Configuración del token.
La parte de la configuración es en realidad la parte de la configuración ICO, el paso de distribución final. Esta operación implementa, entre otras cosas, estos parámetros:
maximum supply
(cuántas fichas estás emitiendo)generation policy
(las conversiones de unidad entre STEEM y su token, ver más abajo)generation begin time
ygeneration end time
(cuando la gente pueda comenzar a aportar STEEM al ICO y cuando termina esa ventana de tiempo)announced launch time
(cuando los tokens serán generados)launch expiration time
(si el ICO no se inicia a esta hora, los participantes serán reembolsados, pero el símbolo permanecerá reservado para elcontrol account
. Sin embargo, para lanzar el token de nuevo, una nueva operaciónsmt_create
(paso 1) debe ser emitida y la tasa de emisión debe ser pagada de nuevo)
El ICO se hace enviando STEEMs al control account
. El generation policy
(política de generación) te permite configurar las unidades de Steem (las unidades en las que las personas contribuirán) y las unidades token (cuántas unidades del token por unidad de Steem). Esto puede llegar a ser realmente complicado y debe ser resuelto en un nivel de interfaz de usuario.
Esto permite un cierto grado de flexibilidad:
- el emisor puede encaminar los fondos entrantes a muchas otras cuentas.
- el emisor también puede generar tokens automáticamente para otras cuentas.
- el emisor puede establecer programáticamente la cantidad de acuerdo con ciertas reglas.
- el emisor puede elegir una parte de la contribución para ir directamente a los Vesting Balances (saldos de adquisición).
- el emisor puede elegir quemar las contribuciones
- el emisor puede optar por distribuir fichas a personas que han adquirido una determinada cantidad de STEEM (aún no está claro cómo se puede hacer esto)
Este es el paso final de la creación de tokens. Puede sonar un poco más complicado de lo que es y probablemente muchas de estas peculiaridades se agruparán en una interfaz de usuario más adecuada, pero esa es la lógica detrás del proceso. Pensé que era importante describirlo como es.
Lo que puedes y lo que no puedes hacer con tus tokens en el ecosistema de Steem
Dicho esto, vamos a ver lo que puede y lo que no se puede hacer con un SMT. Primero, lo que no se puede hacer:
- SMT no influyen en el voto de testigos
- SMT no se puede utilizar en las operaciones de depósito en garantía
- SMT no se puede utilizar para el beneficiario arbitrario, solamente STEEM (esto puede cambiar en el futuro)
- SMT no tiene feeds en los precios (como STEEM hace)
- SMT no pueden hacer power down hacia otras cuentas.
- SMT no se puede convertir (con el mismo proceso que convierte SBD a STEEM, pero se pueden intercambiar libremente)
Y ahora, lo que se puede hacer:
- SMT se puede asignar a la votación (un post se puede votar con STEAM y SMT)
- con SMT se puede hacer power ups y power downs.
- SMT puede ser transferido (qué sucede si el destinatario no tiene una cartera para que SMT? Se crea una automáticamente por el blockchain? No está claro en el White Paper todavía)
- SMT pueden ser delegados si soportan Vesting (de la misma manera que el Steem Power puede ser delegado)
- SMTs se pueden almacenar en cuentas de ahorros (como una medida de protección)
En general, creo que la capacidad de emitir SMTs es un gran paso adelante en el ecosistema de Steem, siempre que la implementación siga por lo menos las pautas existentes en el White Paper.