---
title: "Cómo desplegar un smart contract en ISBE paso a paso: red local, modalidades y PRO"
url: "https://www.unknowngravity.com/articulos/desplegar-smart-contract-isbe"
site: Unknown Gravity
published: "2026-10-16T15:25:44+00:00"
modified: "2026-10-16T19:54:55+00:00"
language: es
description: "Tutorial para desplegar un smart contract en ISBE: red Besu local, Hardhat, OpenZeppelin, modalidades, PAUSER_ROLE, revisión técnica y PRE/PRO."
section: "Inicio > Blog > Cómo desplegar un smart contract en ISBE paso a paso: red local, modalidades y PRO"
---

# Cómo desplegar un smart contract en ISBE paso a paso: red local, modalidades y PRO

**En ISBE (Infraestructura de Servicios Blockchain de España) no puedes desplegar un contrato propio por tu cuenta: lo desarrollas y lo pruebas en una red Besu local, eliges una de las tres modalidades de despliegue y, tras una revisión técnica, ISBE lo despliega en PRE y en PRO a través de su infraestructura de gobernanza.** Esta guía recorre cada paso con código.

## Qué necesitas y quién hace cada cosa

Si necesitas antes el contexto, empieza por [qué es ISBE](/glosario/isbe). Lo esencial para este tutorial: ISBE es un conjunto de redes público-permisionadas. Los contratos de terceros van a la red de casos de uso (la «Red Main» o «UseCase» de la documentación, que en los enlaces al explorador aparece como «Red Case»), basada en Hyperledger Besu y compatible con la [EVM](/glosario/evm-ethereum-virtual-machine). La Red Bare no admite contratos de terceros ni emisión de tokens, según la política ECO1020 de ISBE.

El reparto de papeles es distinto al de una red pública:

- **Tu equipo técnico** desarrolla el contrato, sus pruebas y la documentación de la entrega. Puede empezar hoy, sin que tu empresa haya completado el alta.
- **Tu empresa** completa el alta en el portal con un certificado de representante de persona jurídica y firma el contrato de adhesión. Lo explicamos en [cómo usar ISBE: alta, requisitos y tarifas](/articulos/como-usar-isbe-alta-requisitos-tarifas).
- **El personal de ISBE** revisa el contrato y lo despliega en PRE y en PRO, en las tres modalidades. Tú registras el contrato en el portal y su equipo orquesta el despliegue.

Para seguir los pasos necesitas Node.js 18 o superior, npm 9 o superior, Git, Docker en ejecución y la utilidad jq, además de conocer Solidity y la línea de comandos.

## Parámetros de la red ISBE a 16 de octubre de 2026

Son los de la red de casos de uso en sus dos entornos públicos, según la página de parámetros de docs.redisbe.com. La propia documentación avisa de que pueden cambiar entre entregas y pide confirmar el Chain ID con el equipo de infraestructura de ISBE antes de configurar tus herramientas.

| Parámetro | Valor |
| --- | --- |
| Chain ID de ISBE Mainnet (PRO) | 33073 |
| Chain ID de ISBE Testnet (PRE) | 11073 |
| Cliente | Hyperledger Besu 26.7.1 (versión recomendada) |
| Consenso | QBFT, con un bloque cada 2 segundos |
| Forks de la EVM activos | Shanghai y Cancun; Prague (Testnet, 10-ago-2026; Mainnet, 18-ago-2026); Osaka (Testnet, 27-ago-2026; Mainnet, 2-sep-2026), todos a las 08:00 UTC |
| Gas por transacción | Máximo 16.777.216 (EIP-7825, desde Osaka) |
| Gas por bloque | 30.000.000 |
| Precio mínimo de gas | 1 Gwei, sin coste de gas por transacción |
| Tamaño máximo de contrato | 24.576 bytes |
| Acceso RPC | Solo HTTP, a través del Filtering Proxy del Cliente ISBE (APIs ETH, NET y QBFT); sin WebSocket |

Dos consecuencias prácticas. Si tu script fija un `gasLimit` por encima de 16.777.216, la red rechaza la transacción; la documentación propone 10.000.000 como punto de partida para contratos complejos. Y con 24.576 bytes de tamaño máximo, la lógica grande hay que repartirla en varios contratos o facetas.

## Paso 1: levanta una red ISBE local con Besu

ISBE publica la plantilla `isbe-clients-template`. Trae la librería oficial `@red-isbe/isbe-contracts`, Hardhat, OpenZeppelin y una red local en la carpeta `isbe-network-case`, que reproduce la red de casos de uso con cuatro nodos Besu y QBFT en Docker. Cuando tengas acceso a PRE, solo cambias la URL del RPC. La organización de ISBE en GitHub tiene también el repositorio `isbe-besu-local-deployer`, pero la guía para desarrolladores parte de la plantilla.

```
git clone https://github.com/red-isbe/isbe-clients-template mi-contrato
cd mi-contrato
npm install
cp .env_sample .env

# Red ISBE local: 4 nodos Besu con QBFT en Docker
cd isbe-network-case
./startNetwork.sh
docker ps

# Compila y despliega el ejemplo incluido (modalidad 1)
cd ..
npx hardhat compile
npx hardhat run scripts/hashtimestamp/deployHashTimestamp.ts --network isbe
```

Qué conviene saber de este entorno:

- El RPC local queda en `http://localhost:8545`, en el nodo bootnode.
- El Diamond de gobernanza de ISBE ya está en el génesis, en la dirección `0x00000000000000000000000000000000000015BE`.
- El fichero `.env_sample` trae la cuenta n.º 0 de Hardhat, con fondos y permisos de administrador en el Diamond de la red local. Sus claves son públicas: no las uses fuera de tu máquina.
- La red local usa el Chain ID 11073, el mismo que ISBE Testnet.
- El ejemplo `HashTimestamp` es un contrato de la modalidad 1. Si se despliega sin errores, el entorno funciona.
- A 16 de octubre de 2026, `npx hardhat compile` falla con la plantilla tal como está publicada (error HH600): el contrato `ProjectFacet` del esqueleto `contracts/project-contracts` no implementa `_implementedInterfaces()`, que exige la librería. Impleméntalo al adaptar el esqueleto, como hace `HashTimestamp.sol`, o aparta esa carpeta y `contracts/testwrapper/project` hasta que las necesites.

Así configura la plantilla el compilador y la red `isbe` en `hardhat.config.ts` (extracto, sin la opción de firma con KMS):

```
solidity: {
  version: '0.8.28',
  settings: { evmVersion: 'istanbul', optimizer: { enabled: true, runs: 200 } },
},
networks: {
  isbe: {
    url: process.env.ISBE_URL ?? process.env.LOCALHOST_URL ?? 'http://localhost:8545',
    chainId: process.env.CHAIN_ID ? Number(process.env.CHAIN_ID) : 11073,
    accounts: process.env.ACCOUNT_PRIVATE_KEY ? [process.env.ACCOUNT_PRIVATE_KEY] : [],
  },
},
```

## Paso 2: elige la modalidad de despliegue y revisa el PAUSER_ROLE

Es la decisión que más condiciona el trabajo. La documentación describe tres modalidades:

| Aspecto | Modalidad 1: Proxy Diamond + librería ISBE | Modalidad 2: contrato propio homologado | Modalidad 3: despliegue directo |
| --- | --- | --- | --- |
| Para qué | La mayoría de casos; es la que recomienda ISBE | Lógica de negocio muy específica | Pruebas o casos sin regulación exigente |
| Librería ISBE | Obligatoria | Opcional | No aplica |
| Revisión | Conformidad automática, con componentes ya certificados | Homologación de nivel A, B o C | No requerida |
| PAUSER_ROLE de ISBE | Sí, irrevocable | Obligatorio para homologar; el owner podría revocarlo, pero violaría los términos de uso | No garantizado |
| Precio | Preferente (sin cifra pública) | Estándar | Estándar |
| Quién despliega | Personal de ISBE | Personal de ISBE | Personal de ISBE |

El PAUSER_ROLE, modalidad por modalidad:

- **Modalidad 1.** No lo añades tú. Tu contrato se integra como faceta del Diamond de ISBE y hereda la pausa y el control de acceso de la librería. La documentación pide usar `DidDocumentDetailedInternal` y no las implementaciones de AccessControl y Pausable de OpenZeppelin.
- **Modalidad 2.** Es obligatorio. El contrato debe exponer `hasRole`, `pause()` y `unpause()`, y dar el PAUSER_ROLE a la dirección de gobernanza de ISBE. Sin eso no hay homologación.
- **Modalidad 3.** ISBE no garantiza tener ese rol. Ante una emergencia, pediría la pausa a quien presta el servicio y, como último recurso, filtraría la dirección del contrato en el cliente de red.

Un matiz que conviene conocer: la política ECO1020 v1.0, de 19 de diciembre de 2025, es más estricta que la documentación. Exige el patrón Diamond y la homologación para todo código propio, rechaza el despliegue sin homologación y dice prevalecer sobre las guías técnicas en los requisitos de los contratos. Antes de plantear la modalidad 3, confírmala con ISBE.

## Paso 3: escribe el contrato en Solidity con OpenZeppelin

El ejemplo es un contrato propio de la modalidad 2: un registro de evidencias que guarda hashes salados de documentos. Usa [OpenZeppelin](/glosario/openzeppelin) 4.9, la versión que fija la plantilla, y cumple lo que la documentación pide a un contrato propio:

- control de acceso por roles y `whenNotPaused` en las funciones que cambian estado;
- `pause()` y `unpause()`, con el PAUSER_ROLE para la gobernanza de ISBE;
- almacenamiento no estructurado (unstructured storage), con un slot calculado con keccak256;
- un evento en cada acción sensible;
- ningún dato personal en la cadena: solo hashes combinados con un valor aleatorio secreto («salt»), como exige la política ECO1020.

```
// SPDX-License-Identifier: Apache-2.0
pragma solidity ^0.8.28;

import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol";
import {Pausable} from "@openzeppelin/contracts/security/Pausable.sol";

/// @title RegistroEvidencias (modalidad 2: contrato propio homologado)
/// @notice Registra hashes salados de documentos. Nunca datos personales.
contract RegistroEvidencias is AccessControl, Pausable {
    bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE");
    bytes32 public constant OPERADOR_ROLE = keccak256("OPERADOR_ROLE");

    // Unstructured storage: slot propio calculado con keccak256
    bytes32 private constant STORAGE_POSITION = keccak256("acme.evidencias.storage");

    struct EvidenciasStorage {
        mapping(bytes32 => uint256) registradoEn;
    }

    event EvidenciaRegistrada(bytes32 indexed hashSalado, address indexed operador);

    error EvidenciaDuplicada(bytes32 hashSalado);

    constructor(address admin, address gobernanzaIsbe) {
        _grantRole(DEFAULT_ADMIN_ROLE, admin);
        _grantRole(OPERADOR_ROLE, admin);
        _grantRole(PAUSER_ROLE, gobernanzaIsbe); // requisito de la modalidad 2
    }

    function registrar(bytes32 hashSalado) external onlyRole(OPERADOR_ROLE) whenNotPaused {
        EvidenciasStorage storage $ = _evidencias();
        if ($.registradoEn[hashSalado] != 0) revert EvidenciaDuplicada(hashSalado);
        $.registradoEn[hashSalado] = block.timestamp;
        emit EvidenciaRegistrada(hashSalado, msg.sender);
    }

    function registradoEn(bytes32 hashSalado) external view returns (uint256) {
        return _evidencias().registradoEn[hashSalado];
    }

    function pause() external onlyRole(PAUSER_ROLE) {
        _pause();
    }

    function unpause() external onlyRole(PAUSER_ROLE) {
        _unpause();
    }

    function _evidencias() private pure returns (EvidenciasStorage storage $) {
        bytes32 position = STORAGE_POSITION;
        assembly {
            $.slot := position
        }
    }
}
```

El contrato compila con solc 0.8.28, `evmVersion` «istanbul» y OpenZeppelin 4.9.6 (comprobado el 16 de octubre de 2026). Es un punto de partida, no un contrato listo para homologar. La guía práctica de implementación básica de la documentación exige además un rol SUPER_ADMIN_ROLE que nadie pueda revocar desde fuera, y este ejemplo no lo incluye. La ECO1020, por su parte, pide heredar del contrato base «Common» de ISBE y prohíbe en las facetas las variables de estado con el layout estándar, que es como guardan su estado AccessControl y Pausable de OpenZeppelin 4.9. Revisa ambos puntos con ISBE antes de la entrega.

Si tu caso encaja en la modalidad 1, el punto de partida es otro: la carpeta `contracts/project-contracts` de la plantilla, con el patrón de cuatro ficheros (interfaz, lógica interna, capa externa y faceta), y un script que registra la faceta en el Diamond con tres transacciones: `deploy`, `setConfiguration` y `deployUseCase`.

## Paso 4: prueba con Hardhat y despliega en tu red local

Las pruebas corren en la red en memoria de Hardhat, que da varias cuentas de prueba; el despliegue, en tu red ISBE local. Este test comprueba el rol de ISBE, la pausa, el control de acceso y los duplicados:

```
import { expect } from "chai";
import { ethers } from "hardhat";

describe("RegistroEvidencias", () => {
  async function desplegar() {
    const [admin, isbe, otro] = await ethers.getSigners();
    const c = await ethers.deployContract("RegistroEvidencias", [admin.address, isbe.address]);
    return { c, admin, isbe, otro };
  }

  it("da el PAUSER_ROLE a la gobernanza de ISBE", async () => {
    const { c, isbe } = await desplegar();
    expect(await c.hasRole(await c.PAUSER_ROLE(), isbe.address)).to.equal(true);
  });

  it("registra un hash salado una sola vez", async () => {
    const { c } = await desplegar();
    const h = ethers.id("factura-0001|salt-aleatorio");
    await expect(c.registrar(h)).to.emit(c, "EvidenciaRegistrada");
    await expect(c.registrar(h)).to.be.revertedWithCustomError(c, "EvidenciaDuplicada");
  });

  it("bloquea a quien no tiene OPERADOR_ROLE", async () => {
    const { c, otro } = await desplegar();
    await expect(c.connect(otro).registrar(ethers.id("x"))).to.be.reverted;
  });

  it("ISBE puede pausar y la pausa bloquea las escrituras", async () => {
    const { c, isbe } = await desplegar();
    await c.connect(isbe).pause();
    await expect(c.registrar(ethers.id("y"))).to.be.revertedWith("Pausable: paused");
  });
});
```

Y este script despliega el contrato en la red local. Como dirección de gobernanza usa la del Diamond del génesis, el contrato que, según la documentación, comprueba el PAUSER_ROLE de un contrato propio ejecutando la pausa. Para PRE y PRO, confirma la dirección con ISBE.

```
import { ethers } from "hardhat";

// Diamond de gobernanza del génesis local. En PRE y PRO, confirma la dirección con ISBE.
const GOBERNANZA_ISBE = "0x00000000000000000000000000000000000015Be";

async function main() {
  const [admin] = await ethers.getSigners();
  const c = await ethers.deployContract("RegistroEvidencias", [admin.address, GOBERNANZA_ISBE]);
  await c.waitForDeployment();
  console.log("RegistroEvidencias:", await c.getAddress());
}

main().catch((e) => { console.error(e); process.exitCode = 1; });
```

```
npx hardhat test
npx hardhat run scripts/deploy-evidencias.ts --network isbe
```

Si prefieres Foundry, la documentación lo acepta: en la modalidad 1 se entrega «un proyecto (Hardhat o Foundry)». La plantilla oficial usa Hardhat.

## Paso 5: prepara la revisión técnica

Cuando tu empresa tenga acceso al portal, registras el contrato para la revisión técnica. Para un contrato propio, la documentación pide un expediente completo:

- el repositorio con el código fuente y el commit o la rama exactos;
- la documentación del unstructured storage (slots y estructura) y del esquema de roles, con el PAUSER_ROLE;
- pruebas unitarias y de integración, con informe de cobertura;
- análisis estático sin hallazgos críticos abiertos, con Slither, Mythril o similares;
- un build reproducible: versión exacta de Solidity, flags, `metadata.json` y dependencias con su lock file. La plantilla trae el script `npm run standard-input`, que extrae del build la entrada estándar del compilador;
- los scripts de despliegue completos.

| Nivel de conformidad | Perfil típico | Qué exige | Plazo orientativo |
| --- | --- | --- | --- |
| C (mínima) | Contrato simple, lógica básica | Tests, análisis estático, roles, pausa y build reproducible | 2-4 semanas |
| B (avanzada) | Contrato complejo | Lo del nivel C más pruebas de propiedades e invariantes | 4-8 semanas |
| A (certificada) | Instrumento financiero regulado | Lo del nivel B más una auditoría externa de seguridad | 4-12 semanas |

Un expediente incompleto reinicia el plazo. Y ten claro el alcance de la revisión: ISBE verifica los controles técnicos mínimos y la conformidad con su arquitectura, pero no audita toda la lógica de negocio. El comportamiento del contrato sigue siendo responsabilidad de quien presta el caso de uso.

## Paso 6: PRE, PRO y el explorador público

Con el contrato aprobado, el resto lo ejecuta ISBE:

1. **PRE (ISBE Testnet, Chain ID 11073).** Es la [testnet](/glosario/testnet) de preproducción: ISBE despliega y tú compruebas que todo funciona. El Faucet del portal da tokens de prueba en este entorno.
2. **PRO (ISBE Mainnet, Chain ID 33073).** Es el despliegue final. ISBE te devuelve la dirección del caso de uso, el punto de entrada de tus aplicaciones.
3. **Catálogo de Servicios Comerciales.** Es el último paso del alta. Desplegar no te publica en él: hace falta una solicitud aparte.

Tus aplicaciones leen y escriben por el RPC que te asigne ISBE, con una API key del servicio BaaS del portal o con tu propio nodo de ejecución. Para leer, además, cualquiera puede usar el explorador Blockscout:

- PRO: `blockscout-main.portal.redisbe.com` (Red Case) y `blockscout-bare.portal.redisbe.com` (Red Bare);
- PRE: `blockscout-main.pre.portal.redisbe.com` y `blockscout-bare.pre.portal.redisbe.com`.

El explorador muestra bloques, transacciones, eventos y contratos, y el código fuente si el contrato se verifica; pregunta a ISBE si la verificación está habilitada en tu entorno. Los saldos que verás son simulados y no tienen valor económico. También tiene una API REST de lectura que responde sin sesión:

```
# Estadísticas de ISBE Mainnet (PRO)
curl -s https://blockscout-main.portal.redisbe.com/api/v2/stats

# Contratos desplegados y verificados
curl -s https://blockscout-main.portal.redisbe.com/api/v2/smart-contracts/counters

# Una dirección concreta: el Diamond de gobernanza
curl -s https://blockscout-main.portal.redisbe.com/api/v2/addresses/0x00000000000000000000000000000000000015BE
```

Las dos primeras llamadas devuelven, entre otros datos, el total de transacciones y de direcciones, el tiempo medio de bloque y cuántos contratos hay desplegados y verificados. Consúltalas en el momento: esas cifras cambian cada día.

## Cómo lo abordamos en Unknown Gravity

Unknown Gravity es socia de Alastria, la asociación que opera ISBE. No somos nodo, operador ni partner de ISBE, y el despliegue en PRE y PRO pasa siempre por la infraestructura de ISBE. Lo que hacemos es preparar el contrato para la modalidad que encaje con tu caso, escribir las pruebas y el expediente de la revisión técnica, y acompañar a tu empresa en el alta. Si el contrato representa un valor negociable, la red no basta: la [Ley 6/2023](/articulos/lmvsi-ley-6-2023-tokenizacion) obliga al emisor a designar la entidad que lleva el registro (art. 8.4). Lo desarrollamos en [cómo tokenizar valores en ISBE](/articulos/tokenizar-valores-isbe-erc-3643-erir). Para el enfoque completo, mira nuestra página de [desarrollo sobre ISBE](/blockchain/desarrollo-blockchain-isbe).

## Preguntas frecuentes

### ¿Puedo probar un contrato en ISBE sin haber completado el alta?

Sí. La documentación permite desarrollar y probar en una red ISBE local con la librería `@red-isbe/isbe-contracts` y Besu en Docker antes del onboarding. Cuando tu empresa tenga acceso a PRE, solo cambias la URL del RPC.

### ¿Quién despliega el contrato en PRE y PRO?

Según la documentación de ISBE, su personal, en las tres modalidades y después de la revisión técnica. Registras el contrato en el portal y el equipo de ISBE orquesta el despliegue a través de la infraestructura de gobernanza de la red. La política ECO1020 lo precisa: la transacción la firma la identidad verificada (DID) de tu empresa y la ejecuta la Factory de ISBE. Con el asistente (wizard) de plantillas pre-certificadas, firmas tú y el contrato se despliega al momento.

### ¿Es obligatorio dar a ISBE el PAUSER_ROLE?

Depende de la modalidad. En la 1, ISBE ya lo tiene y es irrevocable. En la 2, asignarlo a la dirección de gobernanza de ISBE es condición para la homologación. En la 3, ISBE no garantiza tenerlo y, ante una emergencia, recurriría a pedir la pausa o al filtrado de la dirección.

### ¿Cuánto tarda la homologación de un contrato propio?

Según la documentación, de 2 a 4 semanas en el nivel C, de 4 a 8 en el B y de 4 a 12 en el A. La política ECO1020 v1.0 fija para el procedimiento un objetivo global de 25 días hábiles, con 10 días para que corrijas los hallazgos.

### ¿Cuesta gas desplegar o usar un contrato en ISBE?

El gas no tiene coste económico: solo limita la ejecución. Para el uso de la red, la política ADM1010 v1.0, de 16 de diciembre de 2025, prevé una suscripción mensual desde 500 € por 50.000 transacciones; no consta públicamente si ya se cobra. Lo detallamos en [las tarifas de ISBE](/articulos/como-usar-isbe-alta-requisitos-tarifas).

### ¿Desplegar en ISBE hace que mi token cumpla la Ley 6/2023 o MiCA?

No. MiCA y la Ley 6/2023 se aplican al activo, no a la red. Si el token es un valor negociable, entran la ERIR y MiFID II: el emisor debe designar en el documento de la emisión la entidad que lleve el registro (art. 8.4 de la Ley 6/2023), e ISBE no se presenta como tal.

## Fuentes

- [Construye en ISBE (docs.redisbe.com)](https://docs.redisbe.com/documentation/construye-en-isbe)
- [Configura tu entorno y arranca la red local (docs.redisbe.com)](https://docs.redisbe.com/documentation/smart-contracts/developer-experience/entorno)
- [Tu contrato y su despliegue (docs.redisbe.com)](https://docs.redisbe.com/documentation/smart-contracts/developer-experience/contrato-y-despliegue)
- [Modalidades de despliegue (docs.redisbe.com)](https://docs.redisbe.com/documentation/smart-contracts/modalidades/)
- [Desarrollo de contratos custom y niveles de conformidad (docs.redisbe.com)](https://docs.redisbe.com/documentation/smart-contracts/contratos-custom)
- [Seguridad y gobernanza de red (docs.redisbe.com)](https://docs.redisbe.com/documentation/smart-contracts/seguridad-y-gobernanza)
- [Smart contracts: preguntas frecuentes (docs.redisbe.com)](https://docs.redisbe.com/documentation/smart-contracts/faq)
- [Implementación básica: RBAC y pausa (docs.redisbe.com)](https://docs.redisbe.com/documentation/smart-contracts/guias-practicas/implementacion-basica)
- [Parámetros técnicos de la red ISBE (docs.redisbe.com)](https://docs.redisbe.com/documentation/infraestructura/arquitectura-red/parametros-red)
- [Blockscout: guía de uso (docs.redisbe.com)](https://docs.redisbe.com/documentation/infraestructura/blockscout/guia-uso)
- [Proceso de onboarding (docs.redisbe.com)](https://docs.redisbe.com/documentation/onBoarding)
- [Plantilla isbe-clients-template (GitHub de ISBE)](https://github.com/red-isbe/isbe-clients-template)
- [Librería @red-isbe/isbe-contracts (npm)](https://www.npmjs.com/package/@red-isbe/isbe-contracts)
- [Política ECO1020 v1.0 de gestión de casos de uso y smart contracts (GitHub de ISBE)](https://github.com/red-isbe/legal/blob/main/pol%C3%ADticas/ecosistema/ECO1020%20-%20Pol%C3%ADtica%20de%20gesti%C3%B3n%20de%20casos%20de%20uso%20y%20SCs.pdf)
- [Política ADM1010 v1.0 de tarifas y retribuciones (GitHub de ISBE)](https://github.com/red-isbe/legal/blob/main/pol%C3%ADticas/administracio%CC%81n/ADM1010%20-%20Poli%CC%81tica%20de%20tarifas%20y%20retribuciones.pdf)
- [Explorador Blockscout de ISBE Mainnet](https://blockscout-main.portal.redisbe.com)
- [Ley 6/2023, de los Mercados de Valores y de los Servicios de Inversión (BOE)](https://www.boe.es/buscar/act.php?id=BOE-A-2023-7053)

*Marco verificado a 16 de octubre de 2026.* ¿Tienes un contrato que quieres llevar a ISBE? [Hablemos](/meeting).
