Skip to content

v0.2.7

Latest

Choose a tag to compare

@andrejrakic andrejrakic released this 09 Nov 13:16
a3ace4e

chainlink local logo

v0.2.7 Release - 9 November 2025

This release adds support for a new Data Streams billing mechanism.

⚠️ Important: This release updates the version of the @chainlink/contracts dependency to v1.5.0 and the @chainlink/contracts-ccip dependency to v1.6.2, in which the remappings related to OpenZeppelin contracts have been changed. If you experience any issues with Chainlink Local after upgrading to this release (v0.2.7), please report them by opening a GitHub issue.

Changelog

Dependencies

Package Version
@chainlink/contracts-ccip 1.6.2
@chainlink/contracts 1.5.0

Added

  • Data Streams billing mechanism toggle in DataStreamsLocalSimulator.sol
  • enableOffChainBilling() and enableOnChainBilling() functions
  • getBillingMechanism() helper function
  • Developer-friendly error messages for billing mechanism mismatches
  • Comprehensive test suite for billing mechanisms
  • Trusted publishing workflow with OIDC authentication
  • Automatic version and branch validation in CI/CD

Changed

  • Bumped @chainlink/contracts-ccip to 1.6.2 version
  • Bumped @chainlink/contracts to 1.5.0 version
  • Updated import paths to use vendored OpenZeppelin contracts
  • Enhanced configuration() function to return current fee manager state
  • Unified publish workflows into single automated workflow

Fixed

  • Fixed Hardhat 2 compilation issues by vendoring OpenZeppelin contracts
  • Fixed import path issues that occurred with updated dependency versions

Basic usage

This PR adds support for toggling between on-chain and off-chain billing mechanisms in the DataStreamsLocalSimulator contract.

// Existing users - no changes needed!
DataStreamsLocalSimulator simulator = new DataStreamsLocalSimulator();
// Defaults to an old on-chain billing (existing behavior)

// For a new off-chain billing
simulator.enableOffChainBilling();

// Switch back to on-chain billing if needed
simulator.enableOnChainBilling();

// User contracts can check current state
address feeManager = address(verifierProxy.s_feeManager());
if (feeManager != address(0)) {
    // On-chain billing active
} else {
    // Off-chain billing active
}

Testing the release

To test this release install @chainlink-local using the following commands:

Foundry (git)

forge install smartcontractkit/chainlink-local@v0.2.7

and then set remappings to: @chainlink/local/=lib/chainlink-local/ in either remappings.txt or foundry.toml file

Hardhat (npm)

npm install @chainlink/local@v0.2.7

and then create the following contract and compile it:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

import {CCIPLocalSimulator} from "@chainlink/local/src/ccip/CCIPLocalSimulator.sol";

Remix IDE

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

import {CCIPLocalSimulator} from "https://github.com/smartcontractkit/chainlink-local/blob/v0.2.7/src/ccip/CCIPLocalSimulator.sol";

PRs included

Full Changelog: v0.2.6...v0.2.7