Calcular el coste de RAM en blockchains EOSio con JavaScript

Posted on

La RAM es un recurso de los más preciados en una blockchain. Todo la información que almacenamos en ella, NFTs, smart contract, información de transacciones, etc. se almacena en la RAM de la blockchain.

Esta es la memoria de la base de datos y, como tal, es finita, por lo que debe garantizarse un uso racional de la misma.

Ciertamente WAX Blockchain es una de las cadenas más rápidas y baratas con las que podemos trabajar pero dejar el acceso a los recursos totalmente gratis podría dar lugar a abusos que pusieran en peligro la viabilidad de todo el proyecto. Por ese motivo se asigna un precio a la RAM disponible para poder hacer uso de ella.

El precio de la RAM se asigna de forma equilibrada entre la cantidad de RAM existente y el valor actual de toda al RAM vendida y ambos datos pueden consultarse en la tabla rammarket del smart contract principal de la blockchain de WAX: eosio

EOS, Telos y WAX son blockchains independientes creadas con la tecnología EOSio. ¡No confundir EOS con EOSio!

Para calcular el coste en WAX de 1 byte de RAM hay que dividir quote entre base

Usando JavaScript para calcular la RAM

Necesitamos tener instalado node.js, npm y nuestro editor de código favorito.

Para este ejercicio crearemos un directorio y nos situaremos en su interior para crear el proyecto:

npm init

Con esta instrucción se genera el archivo package.json con los datos del proyecto que nos ha preguntado durante el proceso.

A continuación añadimos las librerías de funciones que necesitamos para acceder a una blockchain EOSio:

npm install eosjs node-fetch

Creamos el archivo index.js y añadimos el código:

La función ramPrice recibe como argumento un número que representa los NFTs para los cuales queremos comprar RAM (es un ejemplo).

El cuerpo de la función consiste en una llamada asíncrona a la función get_table_rows para leer los registros de la tabla rammarket (solo tiene 1 registro)

Una vez obtenido el resultado extraemos los valores base y quote y con split eliminamos los sufijos ‘ WAX’ y ‘ RAM’ para poder operar con valores numéricos.

El coste de 1 byte de RAM es igual a quota / base

Las operaciones de compra y venta de RAM en WAX están sujetas a una pequeña comisión de un 0,5% por lo que vamos a incrementar el precio en ese porcentaje para cubrir el coste.

Por último, devolvemos el resultado redondeado y formateado a WAX multiplicando el coste por byte * 150 Bytes por NFT * total de assets (en el ejemplo 35.000 NFTs)

Para probar el código ejecutamos:

node index.js

¡Nos vemos en un próximo tutorial!

🐦Twitter: https://twitter.com/MarcoS3DK

📚Libros y material recomendado: https://www.amazon.es

💲Invertir en criptomonedas: https://www.huobi.com

Mis proyectos en WAX Blockchain:

WAX Arena: https://waxarena.net

Rada Quest TCG: https://radaquest.net