RepoPilot

smartcontractkit/chainlink

node of the decentralized oracle network, bridging on and off-chain computation

Healthy

Healthy across the board

ConcernsDependency

non-standard license (Other)

HealthyFork & modify

Has a license, tests, and CI — clean foundation to fork and modify.

HealthyLearn from

Documented and popular — useful reference codebase to read through.

HealthyDeploy as-is

No critical CVEs, sane security posture — runnable as-is.

  • Non-standard license (Other) — review terms
  • Last commit today
  • 42+ active contributors
  • Distributed ownership (top contributor 12% of recent commits)
  • Other licensed
  • CI configured
  • Tests present

What would improve this?

  • Use as dependency ConcernsMixed if: clarify license terms

Computed from maintenance signals — commit recency, contributor breadth, bus factor, license, CI, tests

Informational only. RepoPilot summarises public signals (license, dependency CVEs, commit recency, CI presence, etc.) at the time of analysis. Signals can be incomplete or stale. Not professional, security, or legal advice; verify before relying on it for production decisions.

Embed the "Healthy" badge

Paste into your README — live-updates from the latest cached analysis.

Variant:
RepoPilot: Healthy
[![RepoPilot: Healthy](https://repopilot.app/api/badge/smartcontractkit/chainlink)](https://repopilot.app/r/smartcontractkit/chainlink)

Paste at the top of your README.md — renders inline like a shields.io badge.

Preview social card

This card auto-renders when someone shares https://repopilot.app/r/smartcontractkit/chainlink on X, Slack, or LinkedIn.

Ask AI about smartcontractkit/chainlink

Grounded in the actual source code. Pick a starter question or write your own.

Or write your own question →

Onboarding doc

Onboarding: smartcontractkit/chainlink

Generated by RepoPilot · 2026-06-24 · Source

🎯Verdict

GO — Healthy across the board

  • Last commit today
  • 42+ active contributors
  • Distributed ownership (top contributor 12% of recent commits)
  • Other licensed
  • CI configured
  • Tests present
  • ⚠ Non-standard license (Other) — review terms

<sub>Computed from maintenance signals — commit recency, contributor breadth, bus factor, license, CI, tests</sub>

TL;DR

Chainlink is a decentralized oracle network node implementation written in Go that bridges on-chain smart contracts with off-chain data and computation. The core node fetches real-world data from external APIs, validates and aggregates it across a network of independent nodes, and securely writes results back to blockchains—solving the fundamental problem of smart contracts being isolated from external data sources. Monorepo structure: the core node logic is in Go under an implied /core directory, with blockchain-specific integrations in separate modules (Solana, Sui, Wasmd setup actions). Smart contracts live in /contracts (Solidity, 6.6KB), CI/CD orchestration in .github/workflows/, and tooling scripts in .github/scripts/. The changeset system manages versioning and release coordination across multiple packages.

👥Who it's for

Node operators running oracle infrastructure in Chainlink's decentralized network, smart contract developers integrating Chainlink price feeds or VRF services, and protocol engineers building blockchain-agnostic data delivery systems. Contributors range from core maintainers to community developers extending support for new blockchain networks.

🌱Maturity & risk

Highly mature and production-ready. The project shows extensive CI/CD automation (.github/workflows), multi-language support across 25.7MB of Go code, active changelog management (.changeset/), and clear governance structures (CODEOWNERS, contribution guidelines in docs/CONTRIBUTING.md). Multiple blockchain integrations (Solana, Sui, Wasmd) indicate long-term maintenance and network adoption.

Low technical risk but high operational complexity. The monolithic codebase requires careful coordination across multiple blockchain ecosystems (Ethereum, Solana, Sui, Wasmd integrations visible in .github/actions/). Breaking changes are managed through the changeset system, but operator-facing changes require careful testing. No obvious single-maintainer bottlenecks given the contributor scale, though the oracle network's security depends critically on node implementation correctness.

Active areas of work

Active development on multi-chain support (actions for Solana, Sui, Wasmd setup indicate recent additions). The changeset system is actively used (minor-bump-1778011583.md visible), and E2E testing infrastructure is being refined (.github/E2E_TESTS_ON_GITHUB_CI.md). In-memory integration tests are being expanded (integration-in-memory-tests.yml workflow present).

🚀Get running

  1. Install Go 1.23: brew install go (macOS) or download from golang.org. 2. Clone: git clone https://github.com/smartcontractkit/chainlink.git && cd chainlink. 3. Install Node.js v20 for contract testing. 4. Build the core node: make build or examine the Makefile for specific build targets. 5. Configure environment per .github/dependabot.yml and contribution guidelines in docs/CONTRIBUTING.md.

Daily commands: Examine the Makefile (21.5KB) for build targets: likely make build for the node binary or make install for development setup. The .github/workflows/ contains actual CI commands—check e2e-tests.yml and integration-in-memory-tests.yml for test execution patterns. Node requires PostgreSQL and blockchain RPC endpoints; consult docs/CONTRIBUTING.md for local environment setup.

🗺️Map of the codebase

  • GNUmakefile — Primary build orchestration for the entire Chainlink node—defines compilation, testing, and deployment targets that all contributors must understand
  • .github/workflows/ci-core.yml — Core CI/CD pipeline that gates all merges; defines test coverage, linting, and build validation every contributor must pass
  • .golangci.yml — Go linter configuration enforced on all code; sets code quality and style standards that all Go contributors must follow
  • .changeset/config.json — Changelog and versioning automation config; required for proper release management and semantic versioning in this monorepo
  • .github/CODEOWNERS — Defines ownership boundaries and required reviewers by module; essential for understanding code review responsibilities and domain ownership
  • README.md — Project mission and architecture overview; the canonical reference for understanding Chainlink's role as a decentralized oracle network
  • .github/copilot-instructions.md — AI-assisted development guidelines specific to this codebase; documents architectural patterns and conventions for both human and AI contributors

🛠️How to make changes

Add support for a new EVM blockchain to CCIP

  1. Create a new TOML configuration file following the naming pattern of existing EVM chains (ccip/config/evm/NewChain_Network.toml)
  2. Reference the new config in CCIP's chain registry (typically in core node code) (ccip/config/README.md)
  3. Add integration test for the new chain in CRE system tests (.github/workflows/cre-system-tests.yaml)
  4. Document the chain configuration in the README with connection details and supported features (README.md)

Add a new CI workflow for a subsystem

  1. Create a new workflow file in .github/workflows following naming convention: subsystem-tests.yml (.github/workflows/subsystem-tests.yml)
  2. Define jobs, triggers, and steps—use existing actions from .github/actions/ for reusability (.github/actions/setup-go/action.yml)
  3. Add notification configuration using the Slack notification action (.github/actions/notify-slack-jobs-result/action.yml)
  4. Update CI matrix in ci-core.yml if this is a core path (.github/workflows/ci-core.yml)

Enforce a new code quality rule across the codebase

  1. Add or modify linter configuration in .golangci.yml (.golangci.yml)
  2. Update the lint-gh-workflows action to validate workflow syntax (.github/workflows/lint-gh-workflows.yml)
  3. Run locally via GNUmakefile lint targets to catch violations early (GNUmakefile)
  4. Document the rule and rationale in a GitHub discussion or CODEOWNERS comment (.github/CODEOWNERS)

Release a new version of Chainlink

  1. Ensure all changesets have been merged; review pending changesets via changeset.yml (.github/workflows/changeset.yml)
  2. Trigger or manually run the release-deploy workflow to bump versions and build artifacts (.github/workflows/release-deploy.yml)
  3. Verify Docker images are published by checking build-publish workflow results (.github/workflows/build-publish.yml)
  4. Post release notifications and documentation updates (.github/workflows/release-notifications.yml)

🔧Why these technologies

  • Go — Core node runtime language—chosen for performance, concurrency (goroutines), and static compilation for containerized deployment
  • GitHub Actions — Native CI/CD integration with monorepo; enables complex multi-job workflows with caching, matrix testing, and artifact management
  • Docker — Enables consistent oracle node deployment across heterogeneous infrastructure; simplifies dependency management and isolation
  • TOML configuration files — Human-readable chain configuration for CCIP; allows operators to define cross-chain routing without recompilation
  • Changesets — Structured versioning workflow in monorepo—ensures semantic versioning compliance and generates accurate changelogs across modules

⚖️Trade-offs already made

  • Monorepo structure (single repo for node, contracts, configuration)

    • Why: Simplifies cross-module coordination and enforces consistent versioning across interdependent components
    • Consequence: Larger repo clone footprint; requires careful CODEOWNERS setup to prevent unintended changes; CI complexity increases with matrix testing
  • Strict linting + code quality enforcement (golangci-lint, nancy dependency scans)

    • Why: Critical for oracle network stability—rejects risky patterns early and prevents supply-chain vulnerabilities
    • Consequence: Higher friction for rapid development; must suppress selectively (e.g., nancy-ignore); maintains strict code review gates
  • Changeset-based releases with PR-per-change

    • Why: Ensures all changes are documented and versioned; enables cherry-picking and fine-grained release control
    • Consequence: Extra PR overhead for maintainers; requires discipline in changeset creation; slower release cadence than continuous deployment

🚫Non-goals (don't propose these)

  • Chainlink does not handle on-chain smart contract deployment directly—nodes consume contract ABIs and external configs
  • This repository does not provide a hosted/SaaS oracle service—it is the open-source node software operators deploy themselves
  • No built-in frontend UI; focuses on backend oracle infrastructure and contract integration
  • Does not mandate a specific blockchain RPC provider; supports any EVM-compatible or Solana endpoint

🪤Traps & gotchas

  1. Multi-blockchain support requires setting up chain-specific tools: the .github/actions/ include setup-solana, setup-sui, setup-wasmd, etc.—missing these will fail integration tests. 2. The changeset system (.changeset/) enforces change documentation; PRs without proper changeset entries may be blocked. 3. PostgreSQL is a hard dependency (102KB of PLpgSQL visible); local development requires a running database. 4. The monorepo uses workspace conventions; modifying one blockchain adapter may require version bumps coordinated across the changeset system. 5. Node.js v20 specifically is required (per README)—v18 or v22 may cause contract compilation failures.

🏗️Architecture

💡Concepts to learn

  • Byzantine Fault Tolerance (BFT) / Off-Chain Reporting (OCR) — Chainlink uses OCR (libocr library) to achieve consensus among independent oracle nodes despite malicious or faulty participants—this is how the network guarantees data integrity without a central coordinator
  • Decentralized Oracle Networks — The fundamental design pattern Chainlink implements: distributing data fetching and validation across independent nodes to eliminate single points of failure
  • Multi-Blockchain Abstraction — The node implementation abstracts blockchain-specific logic (Ethereum, Solana, Sui, Wasmd adapters) behind a common interface—understanding this abstraction is critical for adding new chain support
  • Smart Contract Integration Patterns — Chainlink nodes must validate that requests come from authorized smart contracts and handle on-chain callbacks—the contract architecture in /contracts/ defines these patterns
  • Rate Limiting and Job Scheduling — Oracle nodes must throttle external API calls and execute jobs on deterministic schedules—Chainlink implements sophisticated job queue management visible in the core Go modules
  • Cryptographic Signatures and Proof-of-Authority — Each oracle node signs its data contributions; aggregators verify these signatures before publishing—this ensures attributability and allows slashing of misbehaving nodes
  • Changeset-based Release Management — The .changeset/ system enforces semantic versioning and coordinated releases across the monorepo—violating this breaks deployment coordination for node operators
  • smartcontractkit/chainlink-feed-contracts — Contains the Solidity smart contracts for Chainlink price feeds and VRF—tightly coupled to the core node for on-chain validation
  • smartcontractkit/chainlink-testing-framework — Shared test infrastructure and utilities used by Chainlink node integration tests; critical dependency for the E2E test suite
  • smartcontractkit/libocr — Off-Chain Reporting library used by the node for Byzantine fault-tolerant consensus among oracle nodes—implements the core aggregation protocol
  • ethereum/go-ethereum — The Ethereum Go client library used as the primary blockchain adapter and RPC interface in Chainlink nodes
  • solana-labs/solana — Solana blockchain Go/Rust libraries integrated via the node's Solana adapter; needed for Solana oracle support

🪄PR ideas

To work on one of these in Claude Code or Cursor, paste: Implement the "<title>" PR idea from CLAUDE.md, working through the checklist as the task list.

Add GitHub Action for Changeset Validation in PRs

The repo uses Changesets for changelog management (.changeset/ directory with config.json and changelog-generator.js), but there's no dedicated pre-merge validation workflow. Currently, only .github/workflows/changeset.yml exists. A new workflow should validate that PRs modifying core code include valid changeset files, preventing merge of untracked changes. This is critical for maintaining accurate release notes in a decentralized oracle network where version tracking is essential.

  • [ ] Create .github/workflows/validate-changeset.yml that runs on pull_request events
  • [ ] Reference .changeset/config.json to understand changeset requirements
  • [ ] Validate that modified files in core directories (beyond .changeset/) have corresponding .changeset/*.md entries
  • [ ] Add step to fail if required changesets are missing and provide helpful error message
  • [ ] Test against .changeset/minor-bump-1778011583.md as example valid changeset

Create Integration Test Workflow for Multi-Chain Scenarios

The file structure shows multiple chain-specific action setups (.github/actions/setup-solana/, setup-sui/, setup-wasmd/) and an existing .github/integration-in-memory-tests.yml, but no dedicated workflow that tests cross-chain interactions. Given Chainlink's core purpose as a bridge for on/off-chain computation across multiple blockchains, add a workflow that validates CCIP (Cross-Chain Interoperability Protocol) integration across these chains in a single test run.

  • [ ] Create .github/workflows/integration-cross-chain-tests.yml
  • [ ] Reference existing .github/actions/setup-solana/, setup-sui/, and setup-wasmd/ actions
  • [ ] Integrate with .github/integration-in-memory-tests.yml patterns for test execution
  • [ ] Add job matrix for testing Solana, Sui, and Wasmd chain combinations
  • [ ] Reference .github/E2E_TESTS_ON_GITHUB_CI.md for best practices on long-running tests

Add Missing Script Documentation in .github/scripts/

The .github/scripts/ directory contains utility scripts like check-changeset-tags.sh, map-affected-files-to-modules.sh, and resolve-chainlink-image.sh, but there's no README documenting their purpose, usage, and parameters. This creates friction for contributors trying to understand the build/deployment pipeline. Add comprehensive documentation for each script.

  • [ ] Create .github/scripts/README.md with overview of all scripts
  • [ ] Document check-changeset-tags.sh: purpose, exit codes, and when it's invoked in workflows
  • [ ] Document map-affected-files-to-modules.sh: expected input format and output structure for CI optimization
  • [ ] Document resolve-chainlink-image.sh and resolve-chainlink-image_test.sh: parameters and use cases in build-publish.yml
  • [ ] Add examples showing how each script integrates with workflows in .github/workflows/

🌿Good first issues

  • Add missing integration tests for the Wasmd blockchain adapter: the .github/actions/setup-wasmd exists but there's no wasmd-specific test workflow parallel to integration-in-memory-tests.yml—create wasmd-integration-tests.yml and corresponding test cases.
  • Improve documentation for local PostgreSQL setup: the PLpgSQL schema (102KB) exists but there's no docs/LOCAL_POSTGRES_SETUP.md explaining migrations, test databases, and schema inspection—new contributors struggle here.
  • Add linting GitHub Actions for Solidity contracts: the repo has golangci-lint (.github/actions/golangci-lint/action.yml) for Go but no equivalent for the 6.6KB of Solidity in /contracts/—create a new action using Solhint or similar.

Top contributors

Click to expand

📝Recent commits

Click to expand
  • 670c2f1 — CRE-4087: Fix to DKG config generation (#22319) (cedric-cordenier)
  • e8b29d4 — [DX-4017] Adds chainlink-test-diagnosis Skill + diagnose Command Improvements (#22323) (kalverra)
  • d14b0fe — Update cl-evm and cl-solana dependencies (#22291) (amit-momin)
  • 5a1731f — Vault: enforce JWT OAuth scope per JSON-RPC method (#22314) (prashantkumar1982)
  • c755ceb — Centralize and harden vault secret identifier validation (#22119) (russell-stern)
  • def17bd — Bump chainlink-aptos, chainlink-common, aptos capabilities (#22325) (yashnevatia)
  • db75bad — chore: swap contract_state.go usages with cld-changesets (#22282) (ecPablo)
  • f502927 — CRE-4087: Adjust local config if capability registry is used to store… (#22316) (cedric-cordenier)
  • 781f360 — [DX-4048] use dynamic ChIP Ingress/Router host port allocation (#22315) (Tofel)
  • c426715 — Clean up error messages and checks in CCIP Solana msghasher.go (#22287) (vicentevieytes)

🔒Security observations

The Chainlink repository demonstrates reasonable security hygiene with a formal bug bounty program and automated CI/CD workflows. However, the analysis reveals moderate concerns around secrets management in GitHub Actions workflows, incomplete dependency visibility, and the need for comprehensive review of CI/CD infrastructure. The codebase structure itself suggests enterprise-level development practices, but without access to actual code content, dependency manifests, and workflow contents, a complete security assessment is limited. Key improvements should focus on: (1) hardening GitHub Actions workflows with strict secret handling, (2) implementing comprehensive SBOM and dependency scanning, (3) auditing custom actions and scripts for injection vulnerabilities, and (4) ensuring Docker security best practices are enforced across all builds.

  • Medium · Changeset Configuration Exposure — .changeset/. The .changeset directory contains configuration files and changelog templates that could potentially expose internal versioning strategy or contain sensitive information if misconfigured. The changelog-generator.js script should be reviewed for security. Fix: Review .changeset/changelog-generator.js for injection vulnerabilities, ensure sensitive data is not logged, and verify proper input sanitization in changelog generation.
  • Medium · Workflow Secrets Management — .github/workflows/. Multiple GitHub Actions workflows are present (.github/workflows/*.yml), which may contain or reference secrets for CI/CD pipelines. Workflows like build-publish.yml, release-deploy.yml could expose credentials if not properly configured. Fix: Audit all workflow files to ensure secrets are only accessed via GitHub Secrets, never hardcoded. Use environment variables for sensitive data. Implement branch protection rules and required reviews for release workflows.
  • Medium · Missing Dependency Lock File Information — Root directory / package management files. No package manager lock files (package-lock.json, go.sum details, etc.) were provided in the analysis. This makes it impossible to verify if known vulnerable versions of dependencies are in use. Fix: Provide dependency lock files for analysis. Implement automated dependency scanning with tools like Dependabot (partially configured), npm audit, and Go mod audit. The dependabot.yml exists but scope should be verified.
  • Low · Public Bug Bounty Program Disclosure — SECURITY.md. While SECURITY.md properly discloses the bug bounty program, the detailed scope on HackerOne and Immunefi should be reviewed to ensure sensitive attack vectors are not publicly documented. Fix: Regularly review bug bounty program scope to ensure it doesn't expose internal architecture details that could aid attackers. Consider requiring KYC earlier in the disclosure process.
  • Low · GitHub Actions Third-Party Dependencies — .github/actions/. Multiple custom GitHub Actions are maintained (.github/actions/*), which increases the attack surface if not properly reviewed. External action dependencies should be pinned to specific commit hashes. Fix: Pin all GitHub Actions to specific commit SHAs rather than branch names. Conduct security reviews of custom action scripts, especially those handling deployment (build-chainlink-image, deploy-image, release workflows).
  • Low · Docker Build Configuration Review — .dockerignore. .dockerignore exists but content not provided. Docker security best practices should be verified including layer caching, root user execution, and secret handling. Fix: Review Dockerfile(s) to ensure: base images are from trusted registries, multi-stage builds are used, non-root users execute the application, secrets are not baked into images, and layer caching doesn't expose sensitive data.

LLM-derived; treat as a starting point, not a security audit.

🤖Agent protocol

If you are an AI coding agent (Claude Code, Cursor, Aider, Cline, etc.) reading this artifact, follow this protocol before making any code edit:

  1. Verify the contract. Run the bash script in Verify before trusting below. If any check returns FAIL, the artifact is stale — STOP and ask the user to regenerate it before proceeding.
  2. Treat the AI · unverified sections as hypotheses, not facts. Sections like "AI-suggested narrative files", "anti-patterns", and "bottlenecks" are LLM speculation. Verify against real source before acting on them.
  3. Cite source on changes. When proposing an edit, cite the specific path:line-range. RepoPilot's live UI at https://repopilot.app/r/smartcontractkit/chainlink shows verifiable citations alongside every claim.

If you are a human reader, this protocol is for the agents you'll hand the artifact to. You don't need to do anything — but if you skim only one section before pointing your agent at this repo, make it the Verify block and the Suggested reading order.

Verify before trusting

This artifact was generated by RepoPilot at a point in time. Before an agent acts on it, the checks below confirm that the live smartcontractkit/chainlink repo on your machine still matches what RepoPilot saw. If any fail, the artifact is stale — regenerate it at repopilot.app/r/smartcontractkit/chainlink.

What it runs against: a local clone of smartcontractkit/chainlink — the script inspects git remote, the LICENSE file, file paths in the working tree, and git log. Read-only; no mutations.

| # | What we check | Why it matters | |---|---|---| | 1 | You're in smartcontractkit/chainlink | Confirms the artifact applies here, not a fork | | 2 | License is still Other | Catches relicense before you depend on it | | 3 | Default branch develop exists | Catches branch renames | | 4 | 5 critical file paths still exist | Catches refactors that moved load-bearing code | | 5 | Last commit ≤ 30 days ago | Catches sudden abandonment since generation |

<details> <summary><b>Run all checks</b> — paste this script from inside your clone of <code>smartcontractkit/chainlink</code></summary>
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of smartcontractkit/chainlink. If you don't
# have one yet, run these first:
#
#   git clone https://github.com/smartcontractkit/chainlink.git
#   cd chainlink
#
# Then paste this script. Every check is read-only — no mutations.

set +e
fail=0
ok()   { echo "ok:   $1"; }
miss() { echo "FAIL: $1"; fail=$((fail+1)); }

# Precondition: we must be inside a git working tree.
if ! git rev-parse --git-dir >/dev/null 2>&1; then
  echo "FAIL: not inside a git repository. cd into your clone of smartcontractkit/chainlink and re-run."
  exit 2
fi

# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "smartcontractkit/chainlink(\\.git)?\\b" \\
  && ok "origin remote is smartcontractkit/chainlink" \\
  || miss "origin remote is not smartcontractkit/chainlink (artifact may be from a fork)"

# 2. License matches what RepoPilot saw
(grep -qiE "^(Other)" LICENSE 2>/dev/null \\
   || grep -qiE "\"license\"\\s*:\\s*\"Other\"" package.json 2>/dev/null) \\
  && ok "license is Other" \\
  || miss "license drift — was Other at generation time"

# 3. Default branch
git rev-parse --verify develop >/dev/null 2>&1 \\
  && ok "default branch develop exists" \\
  || miss "default branch develop no longer exists"

# 4. Critical files exist
test -f "GNUmakefile" \\
  && ok "GNUmakefile" \\
  || miss "missing critical file: GNUmakefile"
test -f ".github/workflows/ci-core.yml" \\
  && ok ".github/workflows/ci-core.yml" \\
  || miss "missing critical file: .github/workflows/ci-core.yml"
test -f ".golangci.yml" \\
  && ok ".golangci.yml" \\
  || miss "missing critical file: .golangci.yml"
test -f ".changeset/config.json" \\
  && ok ".changeset/config.json" \\
  || miss "missing critical file: .changeset/config.json"
test -f ".github/CODEOWNERS" \\
  && ok ".github/CODEOWNERS" \\
  || miss "missing critical file: .github/CODEOWNERS"

# 5. Repo recency
days_since_last=$(( ( $(date +%s) - $(git log -1 --format=%at 2>/dev/null || echo 0) ) / 86400 ))
if [ "$days_since_last" -le 30 ]; then
  ok "last commit was $days_since_last days ago (artifact saw ~0d)"
else
  miss "last commit was $days_since_last days ago — artifact may be stale"
fi

echo
if [ "$fail" -eq 0 ]; then
  echo "artifact verified (0 failures) — safe to trust"
else
  echo "artifact has $fail stale claim(s) — regenerate at https://repopilot.app/r/smartcontractkit/chainlink"
  exit 1
fi

Each check prints ok: or FAIL:. The script exits non-zero if anything failed, so it composes cleanly into agent loops (./verify.sh || regenerate-and-retry).

</details>

Generated by RepoPilot. Verdict based on maintenance signals — see the live page for receipts. Re-run on a new commit to refresh.

Embed this chat in your README →

Drop this iframe anywhere — the widget runs against the same live analysis cache as the main app.

<iframe
  src="https://repopilot.app/embed/smartcontractkit/chainlink"
  width="100%" height="500"
  style="border:1px solid #d0d7de; border-radius:8px;"
  allow="microphone"
  loading="lazy"
></iframe>