Contratos e IDs de testnet
La red funciona con dos paquetes Move en IOTA:
| Paquete | Qué contiene |
|---|---|
almacen | El sistema (System: comité BLS, precios, capacidad, contabilidad por época), Blob y Storage, el staking (Staking, pools, comité por stake, épocas), la tesorería del proyecto (treasury), eventos y Display. Los pagos y el stake son en iota::iota::IOTA. |
sitios | Sitios: Site (con Display), un Resource por ruta, rutas, redirecciones, metadatos y eventos. |
Testnet de IOTA
| Objeto | ID |
|---|---|
Paquete almacen | 0x6c5fef208f3d3de114b9debdfeeed88762bff823486135c82b0447b5541ac142 |
System | 0xedc9b3efa90d0bba4da9819e2c08becc0d230de36b7921040c1f53c0c6ee90cc |
Staking | 0x44d4a6a113cd7530cab0a6a8dd40717534cd5a89be78e130c72504c08f92b5a2 |
Treasury | 0x8e28d541b98302744afc9b0dbbd9a7680200c7a63d70839057429ca7ea1fa64c |
Paquete sitios | 0xfffd81708ef3474d7cbd5a496246b03603a27c8a747415ea1d1e2632019a3c30 |
- Cadena: testnet de IOTA. RPC público:
https://api.testnet.iota.cafe. - Configuración: 4 nodos de almacenamiento con 25 shards cada uno (100 shards), 1 IOTA de stake en cada uno, épocas de 1 día y como mucho 53 épocas por compra.
- Tipos: un blob guardado es un
<almacen>::blob::Bloby un sitio, un<sitios>::site::Site, donde<almacen>y<sitios>son los IDs de los paquetes de arriba.
Funciones principales
Guardar y gestionar blobs (paquete almacen):
| Función | Qué hace |
|---|---|
system::reserve_space | Compra un Storage de un tamaño codificado durante unas épocas, pagando en IOTA. |
system::register_blob | Registra un blob ID sobre un Storage y crea el Blob, pagando la tarifa de escritura. El contrato vuelve a calcular el blob ID a partir de la raíz Merkle y el tamaño. |
system::certify_blob | Certifica el blob con la firma BLS agregada de un quórum de shards y el bitmap de los firmantes. |
system::extend_blob | Renueva un Blob certificado y vigente más épocas, pagando en IOTA. |
system::delete_blob | Borra un Blob borrable y devuelve su Storage. |
blob::burn | Destruye un objeto Blob. |
reserve_space, register_blob y extend_blob reciben el pago como &mut Coin<IOTA> y cobran lo
justo, así que el cliente puede pagar el almacenamiento con la moneda de gas en la misma
transacción.
Sitios (paquete sitios, módulo site): new_site, new_resource, add_header, add_resource,
remove_resource_if_exists, create_routes, insert_route, remove_all_routes_if_exist,
create_redirects, insert_redirect, take_redirects_if_exist, update_name, update_metadata
y burn.
Tesorería (módulo treasury): cualquiera puede ingresar (deposit); solo quien tiene el
TreasuryAdminCap puede retirar (withdraw).
Eventos
Los nodos de almacenamiento siguen los eventos del módulo events: BlobRegistered,
BlobCertified (que también emite una renovación, con is_extension), BlobDeleted e
InvalidBlobID, entre otros. La tesorería emite TreasuryDeposit y TreasuryWithdrawal.
Notas
- Claves BLS. La testnet y la mainnet de IOTA desactivan las funciones de G1 sin comprimir, así
que las claves públicas de los nodos se guardan como
Element<G1>y se suman cong1_add. Un certificado es la firma agregada de los firmantes, verificada conbls12381_min_pk_verifyfrente a la suma de sus claves. - Tesorería. El módulo
treasuryrecibe el 3 % de las recompensas de cada época y la comisión de los nodos penalizados. - IOTA Names. El paquete
sitiosno depende de IOTA Names: los nombres los resuelve el portal.
Tests
almacen: 268/268 tests de Move, 5 de ellos de la tesorería.sitios: 39/39 tests de Move.- Pruebas de extremo a extremo en la testnet de IOTA: guardar con el publisher; pagar desde una wallet, renovar, transferir y borrar; y publicar, servir, actualizar y destruir sitios.