Package Exports
- @chainlink/contracts/abi/v0.8/AggregatorV3Interface.json
- @chainlink/contracts/abi/v0.8/KeeperRegistrar.json
- @chainlink/contracts/abi/v0.8/KeeperRegistrar2_0.json
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@chainlink/contracts) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Chainlink Smart Contracts
[!IMPORTANT] Since v1.4.0 of the Chainlink contracts, the contracts have been moved to their own repository: chainlink-evm. Prior to that, the contracts were part of the main Chainlink repository
Installation
Foundry (git)
[!WARNING] When installing via git, the ref defaults to master when no tag is given.
$ forge install smartcontractkit/chainlink-evm@<version_tag>Add @chainlink/contracts/=lib/smartcontractkit/chainlink-evm/contracts/ in remappings.txt.
NPM
# pnpm
$ pnpm add @chainlink/contracts# npm
$ npm install @chainlink/contracts --saveAdd @chainlink/contracts/=node_modules/@chainlink/contracts/ in remappings.txt.
Directory Structure
@chainlink/contracts
├── src # Solidity contracts
│ └── v0.8
└── abi # ABI json output
└── v0.8Usage
The solidity smart contracts themselves can be imported via the src directory of @chainlink/contracts:
import {IVerifier} from '@chainlink/contracts/src/v0.8/llo-feeds/v0.5.0/interfaces/IVerifier.sol';Remapping
This repository uses Solidity remappings to resolve imports.
The remapping is defined in the remappings.txt file.
Local Development
Note:
Contracts in dev/ directories or with a typeAndVersion ending in -dev are under active development
and are likely unaudited.
Please refrain from using these in production applications.
# Clone Chainlink repository
$ git clone https://github.com/smartcontractkit/chainlink.git
$ cd contracts/
$ pnpmEach Chainlink project has its own directory under src/ which can be targeted using Foundry profiles.
To test a specific project, run:
# Replace <project> with the product you want to test
export FOUNDRY_PROFILE=<project>
forge testTo test the llo-feeds (data steams) project:
export FOUNDRY_PROFILE=llo-feeds
forge testContributing
Please adhere to the Solidity Style Guide.
Contributions are welcome! Please refer to Chainlink's contributing guidelines for detailed contribution information.
Thank you!
Changesets
We use changesets to manage versioning the contracts.
Every PR that modifies any configuration or code, should most likely accompanied by a changeset file.
To install changesets:
- Install
pnpmif it is not already installed - docs. - Run
pnpm install.
Either after or before you create a commit, run the pnpm changeset command in the contracts directory to create an accompanying changeset entry which will reflect on the CHANGELOG for the next release.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.