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:
- Copia tu dirección de la wallet.
- 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ón | Qué se hace en ella |
|---|---|
| Publicar un sitio | Eliges 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 sitios | Los objetos Site de tu wallet, con su URL. Cada uno se puede actualizar, renovar o destruir. |
| Mis blobs | Guardas 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
- Ve a Mis blobs y elige un archivo en Guardar un archivo.
- Elige durante cuántas épocas guardarlo (de 1 a 53; en testnet una época es 1 día) y si es borrable.
- 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
- Prepara una carpeta con tu sitio estático: como mínimo un
index.htmly, si quieres, un404.htmly unws-resources.jsoncon cabeceras, rutas y redirecciones. - 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.
- Publica y aprueba las transacciones en tu wallet. Los archivos se guardan en quilts (blobs
tuyos) y se crea un objeto
Siteen 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.
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 objetosBlob:
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.