v0.2.7 Release - 9 November 2025
This release adds support for a new Data Streams billing mechanism.
@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()andenableOnChainBilling()functionsgetBillingMechanism()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-ccipto1.6.2version - Bumped
@chainlink/contractsto1.5.0version - 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
- DEVREL-144 : Data Streams billing mechanism by @andrejrakic in #47
- v0.2.7 Release by @andrejrakic in #50
Full Changelog: v0.2.6...v0.2.7
