¿Sabes cuáles son los cálculos que hace exactamente Steemit en su sistema de recompensas? Muchas veces me lo pregunté y estuve investigando al respecto, pero lamentablemente no pude encontrar un sitio donde me lo explicaran en detalle. Por este motivo decidí estudiar directamente del código fuente de steem, algo un poco más complejo y difícil de escudriñar... pero por fin lo he logrado!! En este post te quiero ahorrar ese trabajo y dejarte todas las conclusiones a las que llegué, que supongo serán de mucha ayuda para muchos.
Antes de continuar, te recomiendo encarecidamente que veas esta infografía, que es un resumen de este post y al mismo tiempo una guía rápida.
Poder de votación
El poder de votación (voting power) es un mecanismo diseñado para tener una economía estable. Gracias a él se reduce la posibilidad de que todo el mundo vote y vote todo el tiempo cualquier cosa, y por tanto haga que la gente se concentre el los posts más originales y creativos, es decir, hace una prueba de cerebro (proof-of-brain).
El poder de votación consiste en un porcentaje, cada vez que votas dicho poder se reduce un poco, y al mismo tiempo se regenera a una taza de 20% por día (esto es 100% en 5 días). Internamente en el blockchain, dicha regeneración no se calcula cada momento, en cambio, cada vez que votas se calcula cuánto se ha regenerado tomando en cuenta la última vez que votaste, así:
donde Bt
es el tiempo actual (el del bloque creado), Vt
es el tiempo donde votaste por última vez, t
es el tiempo transcurrido en segundos, y rp
es el poder regenerado. Luego, esta regeneración es añadida al último poder de votación registrado Vp0
y limitado al 100% que es el máximo. En este sentido, el poder de votación actual Vp
es:
Adicional a esto el curador tiene la posibilidad que definir un weight w
, un peso, que varía de 0% a 100%. Este peso puede ser positivo (upvote) o negativo (downvote o bandera), y el poder usado en cada caso es el mismo. Entoces agregando esto a nuestra ecuación tenemos wp
que es el peso pasado por el poder de votación:
Finalmente, el poder de votación usado pu
is una pequeña parte de este valor y se calcula usando la siguiente fórmula:
Por ejemplo, si el poder de votación es 100% y el peso es 100% entonces el poder usado es (100% + 0.49%)/50=2.0098%
, que es redondeado a 2%. Si el poder de votación está en 70% y el peso es que 100%, entonces el poder usado en el voto es de ```(70% + 0.49%)/50=1.4098%, que se redondea a 1.4%.
Si asuminos que 0.49% es un valor pequeño y puede ser descartado, entonces el poder usado se puede simplificar a:
R-shares
La contribución de un voto a un post (o a un comentario) es medido en rshares
, y estos son calculados de los vesting shares del curador y el poder de votación. Recordemos que los vesting shares están íntimamente ligados al steem power. Los rshares se calculan así:
donde Vs
son los vesting shares del curador, y rs
los rshares generados. El valor absoluto de rs
debe ser más grande que 50 VESTS, un valor que se toma como mínimo para contribuir.
Pago total
Existe un pool de recompensas llamado reward_balance
. Este pool es distribuído entre los últimos posts. Entonces el pago total de un post sencillo, medido en STEEM, es calculado como sigue:
donde RS
son los rshares totales acumulados por los votos, rb
es el pool reward_balance
, y rc
son los vests reclamados recientemente, que en el sistema se llama recent_claims
(medido en VESTS). Estos 2 valores son variables globales que pueden consultarse en steemd.com. Si quisiéramos calcular el pago en SBD, entonces multiplicamos el steem por su precio:
Valor de un voto
El valor de un voto es calculado de la misma forma que hemos calculado el pago total, solo que usando los rshares del voto. Una cosa a tener en cuenta es que un usuario típico no conoce cuales son sus Vesting Shares, sino que solamente conoce su Steem Power. La forma de calcular los vesting shares es a través de otras dos variables globales, total_vesting_shares
y total_vesting_fund_steem
:
donde Vs
son son vesting shares del curador, SP
el steem power, TVs
el ya mencionado total_vesting_shares
y TVfs
son los total_vesting_fund_steem
. De nuevo estas variables globales las podemos consultar en steemd.com.
En este sentido, podemos calcular el valor de un voto de una forma simplificada. Definiendo el poder de votación y el peso como valores que varían de 0 a 1 (0 para 0%, y 1 para 100%), el valor de un voto es:
donde Vp
es el poder de votación, SP
es el steem power, w
es el peso dado al voto, y g
es una variable global calculada como:
De nuevo mencionar que estas variables globales, incluido el precio pueden ser consultados en steemd.com. También puedes ir directamente a steemnow.com que cuenta con una calculadora que te da el valor del voto directamente.
Distribución del pago total del post
El pago total del post se distribuye en 3 partes: Autores, curadores y beneficiarios. No existe un porcentaje fijo para cada uno, sino que todo se define según una serie de cálculos y transferencias.
Primero, el 75% va para el autor. Sin embargo, si usas alguna App como esteem, utopian, dtube, etc. el post internamente tiene definido un porcentaje destinado a ellos, que se llaman los beneficiarios. Esta es una nueva característica desde el hardfork 18, y es una forma de monetización para los desarrolladores de dichas apps.
Distribución a los curadores
El 25% restante del pago va principalmente a los curadores, pero una parte de allí regresa de nuevo al autor. Cómo se calcula? Primero definamos unos valores:
rs
: rshares generados cuando el curador vota.RS0
: rshares acumulados por el post antes de que el curador vote.RS1
: rshares acumulados por el post justo después de que el curador vote. Esto esRS1 = RS0 + rs
.RST
: total de rshares acumulados por el post durante una semana.
El porcentaje de recompensa que recibe un curador es:
Sin embargo, como dije anteriormente, una parte regresa al autor. Si el curador vota 30 minutos después de la publicación entonces recibe el 100% de esto, pero si lo hace dentro de los primeros 30 minutos él solo recibirá la razón entre el tiempo y los 30 minutos, y el resto será para el autor. Por ejemplo, a los 10 minutos recibe el 33%, a los 15 minutos (que es la mitad) recibe el 50%, etc. En este sentido, el cálculo de recompensas es así:
donde
Existe una forma de simplificar estos cálculos y mostrarlos de una forma más cómoda. Como ya sabemos, existe una forma de pasar los rshares a su correspondiente valor de STEEM o SBD a través de una variable global. Si nosotros multimplicamos dicha variable global tanto en el numerador como en el denominador entonces estaremos calculando directamente los valores en STEEM o SBD. Adicional a esto, para pasar de "% del curador" al pago en sí, entonces debemos multiplicar dicho valor por el 25% del pago total. En este sentido la recompensa de un curador se calcula así:
donde P0
es el pago del post antes de ser votado, P1
el pago del post justo después de ser votado por el curador, y PT
el pago del post luego de 7 días (es decir, el pago final).
Nota importante: En steem, la fórmula para calcular la raíz cuadrada no es exacta sino aproximada, y esto se hace para hacer que las operaciones sean más rápidas. En este sentido los cálculos de arriba pueden cambiar un poco de la realidad.
Steem incentiva la votación de buenos contenidos
Cuál es el incentivo por ser uno de los primeros en votar? veámoslo. Si tomamos que P1
es el pago del post justo después del voto de un curador, consideremos 2 situaciones:
- Después de una semana el post no recibe más votos y se mantiene igual. Entonces
PT = P1
. - Después de una semana el pago escala
n
veces, esto esPT = n * P1
.
En el caso 1, el curador recibirá:
Y en el caso 2, el pago es:
Entonces
Esto quiere decir que el ser uno de los primeros en votar es recompensado con la raíz cuadrada de n
. Por ejemplo, si el pago total escala 4 veces, entonces el pago del curador se multiplica por 2. Si el pago total escala 9 veces, el pago del curador escala 3 veces. Mientras más temprano votemos más posibilidades tendremos de que escalen las recompensas de curación (claro, teniendo en cuenta la regla de los 30 minutos).
Trabajo muy fino...great job!
Muchas gracias Luis por tu apoyo!
Interesante entrada para conocer los entresijos de la votación en steemit.
Gracias moises!!
Exelente post amigo! pero soy nuevo en esta plataforma y no entendi muy bien la regla de los 30 minutos! es una regla en el significado estricto de la palabra ? o cual es el mejor momento para upvote y ser un curador?
Si quieres optimizar la forma en que haces upvote te recomiendo leer este otro post que hice.
La regla de los 30 minutos lo que dice básicamente es que ganarás más si votas luego de 30 minutos de haberse publicado. Si llegaras a votar antes lo que sucede es que parte de esas que serían tus ganancias van a dar hacia el autor. Espero haberme explicado.
Gracias hermano me funciono!! gracias a ti ahora votare de una mejor manera!
@jga interesante el tiempo que se ha tomado en tratar de traducir de forma matemáticas las cosas, ya que muchas veces las personas preguntan de donde sale el dinero pero uno no puede responder con argumentos sólidos.
Por otro lado la bendita regla de los 30 minutos es algo que no me ha quedado claro, aquel día escuche que uno como autor debe esperar 24 minutos para votarse uno mismo, ¿Eso es cierto?, feliz inicio de 2018 xD
Tener en cuenta que el hard fork 20 esto va a cambiar... cuando esto suceda debes votarte a ti mismo luego de 15 min.
Hola drakko gracias por comentar.
Tú como autor puedes votarte a ti mismo en el momento que quieras. Aqui la regla de los 30 min no influye, por que? Supón que a los 15 min te votas a ti mismo... el 75% de dicho voto ira a ti por ser el autor... el 25% restante va al pool de los curadores como menciono en el post... pero como votaste a los 15 min entonces la mitad va al autor y la otra mitad va al curador... como tu eres el autor y a la vez el curador quiere decir que lo que se tome de ese 25% va ir todo hacia a ti.
Espero haber aclarado. Sino dejame un comentario. Un saludo
Vale no sabia eso, gracias por la información, cuando sera ese HF 20?
No hay fecha aun programada. Pero será este año
Excelente trabajo @jga, con la precisión de un relojero, mis mas sinceras palabra de felicitaciones por tu dedicación y entrega al producir y aportar tan valiosa información, me sumo a lo que dice @germangv-53, hay que estudiar y mucho si de verdad queremos entender este universo llamado steemit, afortunadamente no es preciso comprender al dedillo tan intrincada tecnología para generar ingresos, pero para los que nos gusta comprender lo que hacemos e ir mas allá del promedio, esto nos interesa sobre manera, gracias por compartir, mi upvote y resteem para esta joya de post.
Muchas gracias hermes por tu comentario. Me alegra que esto sea de agrado de muchos y entre todos sigamos conociendo y fortaleciendo la plataforma.
Claro amigo, así es, parafraseando a mi hijo @hermesjr en su post de presentación, solo unidos podemos hacer, lo que separaos no podemos lograr estaré pendiente de tus aportes
Excelente tenia mucho tiempo buscando esta información esta muy detallado, incluso los cálculos precisos que se deben hacer, interesante lo de la raíz cuadrado del factor al que escale el pago
Muchas gracias por tu comentario. Yo igual que tú estuve buscando información y a falta de documentación fue que decidí leer el código fuente para llegar a estas conclusiones. Un saludo.
Simplemente genial tu trabajo amigo, de mucha ayuda para alguien que recién entra en este mundo del crypto y de steemit. Saludos desde Venezuela.
Gracias alejandro, me alegra que sea de ayuda. Si algo se queda o tienes alguna duda que aclarar no dudes en preguntar. Un saludo.
Genial!! Tenia rato preguntandome como se repartian los pagos, soy nuevo en este medio y esta informacion me resulta muy util. Saludos desde Venezuela.
Me alegro que sea de ayuda
Vengo de tu anterior post, pero ahora me tendré que leer este también jajaja..
Me encantan tus publicaciones!!
Mucho mejor en español :P
Jeje sí. Ya estoy preparando la traducción al español del otro sobre curación
buen día muy bueno además de muy inteligente le sigo, saludos @jga
Gracias amigo
Gran gran trabajo @jga faltaron las integrales y listo hehehe.Un saludo
Jajaja faltó poco. La idea es tratar de desenredar esa complejidad de la que no hay documentación y llevarla hasta el punto en que podamos sacarle provecho y entender bien
Muchas gracias por compartir este trabajo querido @jga
Hasta pronto!
Wooow un post muy bueno, siempre me preguntaba como le hacia Steemit para calcular el pago a los post buenos. Muy bueno
Gracias amigo. Un trabajo excelente, le echastes piernas. Hay que estudiar... y mucho.
Muchas gracias.
Hermano que locura conversar contigo por video llamada, pasar a leer tus post y encontrarme con ese gran talento de explicar desde un punto de vista matemático muchos de los procesos que utiliza steemit.
Me ha encantado la herramienta steemactivity, te felicito por tú enorme y gran trabajo. Sigue así, que bueno saber que estás cerca y puedo consultar cualquier duda en cualquier momento. Un gran abrazo.
Muchas gracias. Claro, ahí seguimos en contacto. Un saludo.
me senti como en una clase de termodinamica en la universidad.. ajjaja, muy bueno tu post, muy informativo.
Jajaja que montón de fórmulas