🔐 Verificación de Cadenas - SoWasIt
Verifique la integridad criptográfica de sus cadenas SoWasIt
Verificación de cadenas
Verifique la integridad criptográfica de sus cadenas de integridad de SoWasIt sin conexión, en cualquier momento y lugar. No se requiere clave API para la verificación: transparencia e independencia total.
Características
- Verificación sin conexión - Verifique la integridad de la cadena sin llamadas API
- Prueba criptográfica - Verificación de hash doble SHA-256
- Seguimiento de progreso - Barra de progreso visual para cadenas grandes
- Herramienta CLI - Interfaz de línea de comandos fácil
- Paquete NPM - API programática para aplicaciones Node.js
¿Por qué verificar?
- Confía, pero verifica - No solo confíe en la plataforma, verifique usted mismo la prueba criptográfica
- Cumplimiento - Cumpla con los requisitos de auditoría con verificación independiente
- Validación de respaldos - Asegúrese de que sus respaldos de cadenas estén intactos y sin modificar
- Transparencia - Cualquiera puede verificar la integridad de su cadena, no se requiere acceso especial
- Independencia - La verificación funciona sin conexión, sin dependencia de la infraestructura de SoWasIt
Instalación
Instalar vía npm:
npm install @sowasit/chain-verifierO usar directamente con npx (no se requiere instalación):
npx @sowasit/chain-verifier verify my-chain.jsonUso de CLI
Verificar una cadena
Puede verificar un archivo local o descargar y verificar una cadena por ID:
# Verificar un archivo local
npx @sowasit/chain-verifier verify chain.json
# Descargar y verificar una cadena pública
npx @sowasit/chain-verifier verify my-chain-id
# Descargar y verificar una cadena privada
npx @sowasit/chain-verifier verify my-private-chain --api-key te_xxxxx
# Verificar con salida detallada
npx @sowasit/chain-verifier verify my-chain.json --verbose --output report.jsonOpciones
-o, --output <file>- Guardar informe de verificación en archivo-v, --verbose- Mostrar resultados detallados bloque por bloque-k, --api-key <key>- Clave API (o usar variable de entorno SOWASIT_API_KEY). Requerido solo para cadenas privadas-u, --api-url <url>- URL de API (predeterminado: https://api.sowasit.io)--force-download- Forzar re-descarga, ignorando caché local--include-anchors- Incluir bloques de anclaje para verificación
Caché: Al verificar por ID de cadena, los bloques se almacenan en caché en .sowasit-cache/chainId/ y solo se descargan bloques nuevos en ejecuciones posteriores.
Descargar una cadena desde la API
Descargue una cadena completa o parcial desde la API de SoWasIt:
# Descargar una cadena pública
npx @sowasit/chain-verifier download my-public-chain-id
# Descargar una cadena privada
npx @sowasit/chain-verifier download my-chain-id --api-key te_xxxxx
# Descargar rango parcial de bloques
npx @sowasit/chain-verifier download my-chain-id --from 100 --to 200API programática
Verificar una cadena
import { verifyChain } from '@sowasit/chain-verifier';
import { readFile } from 'fs/promises';
// Cargar exportación de cadena
const chainData = JSON.parse(await readFile('chain.json', 'utf-8'));
// Verificar
const result = verifyChain(chainData);
if (result.valid) {
console.log(`✓ ${result.validBlocks} bloques son válidos`);
} else {
console.log(`✗ ${result.invalidBlocks} bloques inválidos`);
console.log('Errores:', result.errors);
}Descargar una cadena
import { downloadChain } from '@sowasit/chain-verifier';
import { writeFile } from 'fs/promises';
// Descargar cadena pública (no se requiere clave API)
const publicChainData = await downloadChain('public-chain-id', {
apiUrl: 'https://api.sowasit.io/v1',
});
// Descargar cadena privada (se requiere clave API)
const privateChainData = await downloadChain('private-chain-id', {
apiKey: 'te_xxxxx',
apiUrl: 'https://api.sowasit.io/v1',
from: 0,
to: 100,
});
await writeFile('chain.json', JSON.stringify(privateChainData, null, 2));Proceso de verificación
- Integridad del hash - El hash de cada bloque se recalcula usando doble SHA-256 y se compara con el hash almacenado
- Continuidad de la cadena - El prev_hash de cada bloque debe coincidir con el hash del bloque anterior
- Bloque génesis - El primer bloque debe tener un prev_hash que coincida con el hash de la cadena (desde chain.hash)
- Orden de bloques - Los bloques se verifican en orden secuencial por ID
- Verificación de anclajes - Si se incluyen bloques de anclaje, verifica que todos los bloques referenciados existan y los hashes coincidan
Ejemplos de uso
Integración CI/CD
Automatice la verificación de cadenas con GitHub Actions:
# .github/workflows/verify-chain.yml
name: Verify Chain Integrity
on:
schedule:
- cron: '0 0 * * *' # Diariamente
jobs:
verify:
runs-on: ubuntu-latest
steps:
- name: Descargar cadena
run: |
npx @sowasit/chain-verifier download ${{ secrets.CHAIN_ID }} \
--api-key ${{ secrets.SOWASIT_API_KEY }} \
--output chain.json
- name: Verificar cadena
run: |
npx @sowasit/chain-verifier verify chain.json \
--verbose \
--output verification-report.json
- name: Subir informe
uses: actions/upload-artifact@v3
with:
name: verification-report
path: verification-report.jsonScript de respaldo automático
Descargue y verifique automáticamente sus cadenas:
// backup-and-verify.js
import { downloadChain, verifyChain } from '@sowasit/chain-verifier';
import { writeFile } from 'fs/promises';
async function backupAndVerify() {
const chainId = process.env.CHAIN_ID;
const apiKey = process.env.SOWASIT_API_KEY;
// Descargar
console.log('Descargando cadena...');
const chainData = await downloadChain(chainId, { apiKey });
// Guardar
const filename = `backup-${chainId}-${new Date().toISOString()}.json`;
await writeFile(filename, JSON.stringify(chainData, null, 2));
console.log(`Guardado en ${filename}`);
// Verificar
console.log('Verificando...');
const result = verifyChain(chainData);
if (!result.valid) {
throw new Error(`Verificación fallida: ${result.errors.join(', ')}`);
}
console.log(`✓ Respaldo verificado: ${result.validBlocks} bloques`);
}
backupAndVerify().catch(console.error);Cómo funciona
SoWasIt utiliza hash doble SHA-256 (el mismo algoritmo que Bitcoin) para garantizar la inmutabilidad:
1. Los datos de cada bloque se serializan de forma determinista (canonicalización JSON)
↓
2. Los datos se hashean dos veces con SHA-256: SHA256(SHA256(data))
↓
3. Cada bloque contiene el hash del bloque anterior (prev_hash)
↓
4. Cambiar cualquier bit en cualquier bloque invalida todos los bloques posterioresGarantías
- La manipulación es imposible - Cualquier modificación rompe la cadena
- La verificación es rápida - Solo hashing, sin criptografía compleja
- La prueba es portable - Solo un archivo JSON, no se requieren herramientas especiales