Sobre el proyecto

Chainlink es un proyecto de código abierto que amplía las capacidades de los contratos inteligentes al proporcionar acceso a datos del mundo real y computación fuera de la cadena, preservando al mismo tiempo las garantías de seguridad y fiabilidad de la cadena de bloques. Este repositorio contiene el nodo central de Chainlink y los contratos. El nodo central es el binario empaquetado que ejecutan los operadores de nodos que participan en una red de oráculos descentralizada. Capacidades clave descritas en el README: - Binario del nodo central con una interfaz web (puerto predeterminado 6688) y un cliente CLI remoto para administración, inicio de sesión y gestión de trabajos. - Gestión de trabajos mediante comandos CLI como `chainlink jobs list`, con documentación sobre la creación de trabajos. - Configuración mediante una combinación de variables de entorno y ajustes directos a través de la API, la interfaz de usuario o la CLI. - Adaptadores externos que hacen que el sistema sea extensible, permitiendo la integración de cálculos personalizados y API especializadas a través de una API REST sencilla. - Soporte de complementos definidos en archivos YAML bajo el directorio `plugins/`, instalados con loopinstall; algunos complementos hacen referencia a repositorios privados. - Imágenes Docker precompiladas para las versiones principales, además de flujos de trabajo para compilar imágenes solo para pruebas a partir de ramas o PR. - Verificación de versiones mediante cosign con firma sin clave OIDC. Notas de compilación y desarrollo: - Requiere Go, NodeJS y pnpm, y PostgreSQL (>= 15.x); la imagen Docker oficial admite hasta Postgres 18.x debido al cliente incluido. - Compilar con `make install` y luego ejecutar `chainlink help` o `chainlink node start`. - Ejecutar el nodo requiere acceso a un cliente de ejecución de Ethereum con una conexión websocket abierta. Los clientes oficialmente admitidos enumerados son Parity/Openethereum (obsoleto), Geth y Besu; Nethermind y Erigon se describen como admitidos pero con fallos debido a problemas conocidos. - Las pruebas pueden usar `make test` con una base de datos de prueba efímera, o un flujo manual que implica la configuración de la base de datos de prueba, migraciones y `go test ./...`. Se admiten la detección de condiciones de carrera y las pruebas de fuzzing. - El repositorio contiene tres módulos Go (raíz, integration-tests, core/scripts) con reemplazos relativos, y `make gomodtidy` ordena los tres. - La generación de código utiliza mockery para los mocks; se proporciona un shell/flake de Nix para un entorno de desarrollo reproducible. - Se utilizan changesets para el control de versiones, y el proyecto sigue las convenciones de Versionado Semántico y Keep a Changelog. Comunidad y contribución: Discord es el canal de comunicación principal; se hace referencia a las pautas de contribución y al rastreador de problemas, y la documentación oficial está disponible en docs.chain.link.