Saltar al contenido principal

Primeros pasos

Esta guía te lleva de una wallet vacía a un archivo guardado y un sitio web publicado, en la testnet de IOTA.

1. Instala una wallet IOTA​

Necesitas una wallet de IOTA en el navegador, por ejemplo la extensión IOTA Wallet. Crea una cuenta y cambia la wallet a testnet.

Solo necesitas esta wallet: pagas en IOTA y firmas con ella. No hace falta ningún otro token ni ninguna otra cadena.

2. Consigue IOTA de testnet​

El IOTA de testnet no tiene valor y sale del faucet:

  1. Copia tu dirección de la wallet.
  2. Abre faucet.testnet.iota.cafe, pega la dirección y resuelve el captcha.

El faucet solo funciona desde su página web. Con una petición tienes de sobra para probar todo lo de esta guía. Como referencia, con los precios de prueba actuales:

  • guardar un archivo pequeño unas cuantas épocas cuesta unos miles de nanos de IOTA (1 IOTA son 10⁹ nanos) más unos 0,006 IOTA de gas;
  • publicar un sitio pequeño cuesta unas centésimas de IOTA, casi todo un depósito que se recupera al destruir el sitio.

Los detalles, en Economía.

3. Conecta la wallet a la app​

Abre app.iotastorage.com y conecta tu wallet. La app tiene tres secciones:

SecciónQué se hace en ella
Publicar un sitioEliges o arrastras una carpeta, ves sus archivos, el número de épocas y el coste estimado, y la publicas como sitio (o actualizas uno tuyo) pagando en IOTA desde tu wallet.
Mis sitiosLos objetos Site de tu wallet, con su URL. Cada uno se puede actualizar, renovar o destruir.
Mis blobsGuardas un archivo como blob y ves la lista de los blobs de tu wallet para renovarlos o borrarlos.

Cada operación es una transacción de IOTA que apruebas en tu wallet; tus claves no salen de ella.

4. Guarda un archivo​

  1. Ve a Mis blobs y elige un archivo en Guardar un archivo.
  2. Elige durante cuántas épocas guardarlo (de 1 a 53; en testnet una época es 1 día) y si es borrable.
  3. Aprueba las transacciones en tu wallet. La app codifica el archivo en el navegador y registra y paga el blob en IOTA. Los slivers se guardan en los nodos de almacenamiento y, cuando los nodos confirman, el blob se certifica en IOTA.

Al terminar tienes el blob ID, un enlace para leerlo del aggregator y lo que ha costado. El blob aparece en tu lista, desde donde puedes renovarlo o, si es borrable, borrarlo.

5. Léelo por el aggregator​

Cualquiera puede leer un blob con el aggregator público, por su blob ID:

curl -o mi-archivo https://aggregator.iotastorage.com/v1/blobs/<blob ID>

o por el ID de su objeto Blob:

curl -o mi-archivo https://aggregator.iotastorage.com/v1/blobs/by-object-id/<ID del objeto>

El aggregator responde con content-type: application/octet-stream, así que el navegador descarga el archivo en vez de mostrarlo. Para servir páginas web, publica un sitio. Ver la API del aggregator.

6. Publica un sitio​

  1. Prepara una carpeta con tu sitio estático: como mínimo un index.html y, si quieres, un 404.html y un ws-resources.json con cabeceras, rutas y redirecciones.
  2. Ve a Publicar un sitio y elige o arrastra la carpeta. La app muestra los archivos que se van a publicar, el número de épocas y el coste.
  3. Publica y aprueba las transacciones en tu wallet. Los archivos se guardan en quilts (blobs tuyos) y se crea un objeto Site en tu wallet.

Tu sitio queda en https://<ID del sitio en base36>.iotastorage.com/. Mis sitios muestra esa URL y deja actualizar el sitio (solo se sube lo que cambia), renovarlo o destruirlo. Para darle una dirección legible, apunta a él un nombre de IOTA Names.

Que tu sitio no caduque

Un sitio está disponible mientras lo estén sus blobs. Renuévalo antes de su época de fin: cada compra cubre como mucho 53 épocas (53 días en testnet).

Herramientas de referencia​

Además de la app, el proyecto tiene herramientas de referencia en Node.js, en su repositorio (todavía no es público):

  • sitio.mjs, una línea de comandos para publicar y gestionar sitios. Ver CLI de sitios.
  • Un cliente en JavaScript (ClienteAlmacen) que guarda y lee blobs y gestiona los objetos Blob:
const cliente = new ClienteAlmacen({ red }); // `red`: la red (IDs de paquetes y objetos)
const g = await cliente.guardar(bytes, { firmante, epocas: 5, borrable: true }); // guardar
const copia = await cliente.leer(g.texto); // leer por blob ID
await cliente.renovar(g.objeto, 3, { firmante }); // extend_blob: 3 épocas más
await cliente.transferir(g.objeto, direccionDeBruno, { firmante }); // el Blob pasa a ser de Bruno
await cliente.borrar(g.objeto, { firmante: bruno }); // delete_blob, por su nuevo dueño

El firmante es un par de claves o una wallet: cualquier objeto con toIotaAddress() y firmarTransaccion(bytes), que devuelve los bytes que firmó la wallet y la firma. Cada firmante paga el gas de sus transacciones.