diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 96c4698729d..22debbd5d23 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -86,7 +86,7 @@ jobs:
run: npm run sol:fmt:check
- name: Check Solidity Compilation
- run: forge build --sizes
+ run: npm run sol:compile
- name: Check Solidity Linting
run: npm run lint-solc
diff --git a/README.md b/README.md
index ba855dc9ce9..ffc4061eeb5 100644
--- a/README.md
+++ b/README.md
@@ -27,6 +27,26 @@ npm install && npm run dev
- Navigation is JSON in `/src/config/sidebar.ts`
- SEO metadata implementation: See [SEO Metadata Guide](SEO_METADATA_GUIDE.md) for technical writers
+### Version Overrides for Solidity Samples
+
+To use different package versions for specific sample files (e.g., for tutorials requiring specific versions), edit `version-overrides.json`:
+
+```json
+{
+ "overrides": [
+ {
+ "file": "samples/CCIP/example.sol",
+ "reason": "Tutorial requires specific version",
+ "versions": {
+ "@chainlink/contracts": "1.5.0"
+ }
+ }
+ ]
+}
+```
+
+See TypeScript types in `src/scripts/helper/pin-solver-dist.ts` for structure.
+
## Deploy Preview
This repo is configured to automatically create a preview environment on Vercel when a PR is opened. After the deployment is approved, the Vercel bot will leave a comment with a link to the preview on your PR.
diff --git a/foundry.toml b/foundry.toml
index 3eae2b988f7..9ddbb1152ba 100644
--- a/foundry.toml
+++ b/foundry.toml
@@ -1,6 +1,6 @@
-# This configuration file sets up the paths and compilers so we can test our solidity samples
+# Main project configuration - compiles all samples except CCIP
+# CCIP samples use their own foundry.toml in public/samples/CCIP/
[profile.default]
-# Let Forge download/choose solc per file's pragma automatically
auto_detect_solc = true
evm_version = 'paris'
@@ -9,11 +9,9 @@ out = ".test/artifacts"
cache_path = ".test/cache"
libs = ["lib", "node_modules"]
-# Optimization settings
optimizer = true
optimizer_runs = 1_000_000
-# Test environment defaults
bytecode_hash = "none"
ffi = false
gas_price = 1
@@ -33,5 +31,3 @@ wrap_comments = true
[lint]
lint_on_build = false
-
-# See more config options https://github.com/foundry-rs/foundry/tree/master/config
diff --git a/package-lock.json b/package-lock.json
index 6f18c108324..0e3f2489024 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -18,10 +18,11 @@
"@astrojs/react": "^4.4.2",
"@astrojs/sitemap": "^3.6.0",
"@astrojs/vercel": "^8.2.11",
- "@chainlink/cl-search-frontend": "^0.12.0",
+ "@chainlink/cl-search-frontend": "^0.12.1",
"@chainlink/components": "^0.4.18",
"@chainlink/contracts": "1.5.0",
- "@chainlink/contracts-ccip": "1.6.3",
+ "@chainlink/contracts-1.4.0": "npm:@chainlink/contracts@1.4.0",
+ "@chainlink/contracts-ccip": "1.6.1",
"@chainlink/design-system": "^0.2.8",
"@chainlink/local": "0.2.7-beta",
"@chainlink/solana-sdk": "^0.2.2",
@@ -1293,9 +1294,9 @@
}
},
"node_modules/@chainlink/cl-search-frontend": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/@chainlink/cl-search-frontend/-/cl-search-frontend-0.12.0.tgz",
- "integrity": "sha512-T0lpAZCP6QpCQHZldXGYIKJbXgE+fozbVeaB+pZZrW7KbV9c6fDYO9hVNmLiQkWWxIUVow59LT0zUO2dG6mC4w==",
+ "version": "0.12.1",
+ "resolved": "https://registry.npmjs.org/@chainlink/cl-search-frontend/-/cl-search-frontend-0.12.1.tgz",
+ "integrity": "sha512-l/5hz8qsoIXpFt82iX0Hrw6tQC/CSaKXmZKah8A8XkC+REmMyC6FtQLNKBdHsLnuJ/EwnjyEGGhMNe26RjLsQA==",
"dependencies": {
"@algolia/client-search": "^5.17.1",
"dompurify": "^3.2.6",
@@ -1312,41 +1313,1809 @@
"react-dom": ">=18.0.0"
}
},
- "node_modules/@chainlink/components": {
- "version": "0.4.18",
- "resolved": "https://registry.npmjs.org/@chainlink/components/-/components-0.4.18.tgz",
- "integrity": "sha512-x6DGq4YHPnLVY1Cwe0hYqj4T+6ekX8wDl7Jwxz91N2nubVp/pZCNOJVFcGTnIrcf+y5PEgPJZHu1qtob2ewqhQ==",
- "license": "ISC",
+ "node_modules/@chainlink/components": {
+ "version": "0.4.18",
+ "resolved": "https://registry.npmjs.org/@chainlink/components/-/components-0.4.18.tgz",
+ "integrity": "sha512-x6DGq4YHPnLVY1Cwe0hYqj4T+6ekX8wDl7Jwxz91N2nubVp/pZCNOJVFcGTnIrcf+y5PEgPJZHu1qtob2ewqhQ==",
+ "license": "ISC",
+ "dependencies": {
+ "@chainlink/design-system": "0.2.8",
+ "@floating-ui/react": "0.22.2",
+ "@radix-ui/react-dialog": "1.0.5",
+ "@radix-ui/react-dropdown-menu": "2.0.6",
+ "@radix-ui/react-navigation-menu": "1.1.3",
+ "@radix-ui/react-popover": "1.1.1",
+ "@radix-ui/react-slot": "1.0.2",
+ "@radix-ui/react-tooltip": "1.0.7",
+ "@tailwindcss/container-queries": "0.1.1",
+ "class-variance-authority": "0.7.0",
+ "clsx": "2.1.1",
+ "ethers": "5.7.2",
+ "lucide-react": "0.390.0",
+ "react": "18.3.1",
+ "react-dom": "18.3.1",
+ "react-modal": "3.16.1",
+ "react-transition-group": "4.4.5",
+ "tailwind-merge": "2.3.0",
+ "tailwindcss": "3.4.4",
+ "tailwindcss-animate": "1.0.7"
+ },
+ "peerDependencies": {
+ "next": "^14.2.4"
+ }
+ },
+ "node_modules/@chainlink/components/node_modules/ethers": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz",
+ "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@ethersproject/abi": "5.7.0",
+ "@ethersproject/abstract-provider": "5.7.0",
+ "@ethersproject/abstract-signer": "5.7.0",
+ "@ethersproject/address": "5.7.0",
+ "@ethersproject/base64": "5.7.0",
+ "@ethersproject/basex": "5.7.0",
+ "@ethersproject/bignumber": "5.7.0",
+ "@ethersproject/bytes": "5.7.0",
+ "@ethersproject/constants": "5.7.0",
+ "@ethersproject/contracts": "5.7.0",
+ "@ethersproject/hash": "5.7.0",
+ "@ethersproject/hdnode": "5.7.0",
+ "@ethersproject/json-wallets": "5.7.0",
+ "@ethersproject/keccak256": "5.7.0",
+ "@ethersproject/logger": "5.7.0",
+ "@ethersproject/networks": "5.7.1",
+ "@ethersproject/pbkdf2": "5.7.0",
+ "@ethersproject/properties": "5.7.0",
+ "@ethersproject/providers": "5.7.2",
+ "@ethersproject/random": "5.7.0",
+ "@ethersproject/rlp": "5.7.0",
+ "@ethersproject/sha2": "5.7.0",
+ "@ethersproject/signing-key": "5.7.0",
+ "@ethersproject/solidity": "5.7.0",
+ "@ethersproject/strings": "5.7.0",
+ "@ethersproject/transactions": "5.7.0",
+ "@ethersproject/units": "5.7.0",
+ "@ethersproject/wallet": "5.7.0",
+ "@ethersproject/web": "5.7.1",
+ "@ethersproject/wordlists": "5.7.0"
+ }
+ },
+ "node_modules/@chainlink/contracts": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@chainlink/contracts/-/contracts-1.5.0.tgz",
+ "integrity": "sha512-1fGJwjvivqAxvVOTqZUEXGR54CATtg0vjcXgSIk4Cfoad2nUhSG/qaWHXjLg1CkNTeOoteoxGQcpP/HiA5HsUA==",
+ "license": "BUSL-1.1",
+ "dependencies": {
+ "@arbitrum/nitro-contracts": "3.0.0",
+ "@changesets/cli": "^2.29.6",
+ "@changesets/get-github-info": "^0.6.0",
+ "@eslint/eslintrc": "^3.3.1",
+ "@eth-optimism/contracts": "0.6.0",
+ "@openzeppelin/contracts-4.7.3": "npm:@openzeppelin/contracts@4.7.3",
+ "@openzeppelin/contracts-4.8.3": "npm:@openzeppelin/contracts@4.8.3",
+ "@openzeppelin/contracts-4.9.6": "npm:@openzeppelin/contracts@4.9.6",
+ "@openzeppelin/contracts-5.0.2": "npm:@openzeppelin/contracts@5.0.2",
+ "@openzeppelin/contracts-5.1.0": "npm:@openzeppelin/contracts@5.1.0",
+ "@openzeppelin/contracts-upgradeable": "4.9.6",
+ "@scroll-tech/contracts": "2.0.0",
+ "@zksync/contracts": "github:matter-labs/era-contracts#446d391d34bdb48255d5f8fef8a8248925fc98b9",
+ "semver": "^7.7.2"
+ },
+ "engines": {
+ "node": ">=22",
+ "pnpm": ">=10"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0": {
+ "name": "@chainlink/contracts",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@chainlink/contracts/-/contracts-1.4.0.tgz",
+ "integrity": "sha512-SpNCJ0TPOI6pa2l702Wk4WIP8ccw5ARcRP1E/ZTqaFffXNoZeF03WhsVL8f3l3OTRFA9Z40O5KcZzmJmZQkoFA==",
+ "license": "BUSL-1.1",
+ "dependencies": {
+ "@arbitrum/nitro-contracts": "3.0.0",
+ "@changesets/cli": "~2.28.1",
+ "@changesets/get-github-info": "^0.6.0",
+ "@eth-optimism/contracts": "0.6.0",
+ "@openzeppelin/contracts": "4.9.6",
+ "@openzeppelin/contracts-upgradeable": "4.9.6",
+ "@scroll-tech/contracts": "0.1.0",
+ "@zksync/contracts": "github:matter-labs/era-contracts#446d391d34bdb48255d5f8fef8a8248925fc98b9",
+ "semver": "^7.7.1"
+ },
+ "engines": {
+ "node": ">=18",
+ "pnpm": ">=10"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@changesets/cli": {
+ "version": "2.28.1",
+ "resolved": "https://registry.npmjs.org/@changesets/cli/-/cli-2.28.1.tgz",
+ "integrity": "sha512-PiIyGRmSc6JddQJe/W1hRPjiN4VrMvb2VfQ6Uydy2punBioQrsxppyG5WafinKcW1mT0jOe/wU4k9Zy5ff21AA==",
+ "license": "MIT",
+ "dependencies": {
+ "@changesets/apply-release-plan": "^7.0.10",
+ "@changesets/assemble-release-plan": "^6.0.6",
+ "@changesets/changelog-git": "^0.2.1",
+ "@changesets/config": "^3.1.1",
+ "@changesets/errors": "^0.2.0",
+ "@changesets/get-dependents-graph": "^2.1.3",
+ "@changesets/get-release-plan": "^4.0.8",
+ "@changesets/git": "^3.0.2",
+ "@changesets/logger": "^0.1.1",
+ "@changesets/pre": "^2.0.2",
+ "@changesets/read": "^0.6.3",
+ "@changesets/should-skip-package": "^0.1.2",
+ "@changesets/types": "^6.1.0",
+ "@changesets/write": "^0.4.0",
+ "@manypkg/get-packages": "^1.1.3",
+ "ansi-colors": "^4.1.3",
+ "ci-info": "^3.7.0",
+ "enquirer": "^2.4.1",
+ "external-editor": "^3.1.0",
+ "fs-extra": "^7.0.1",
+ "mri": "^1.2.0",
+ "p-limit": "^2.2.0",
+ "package-manager-detector": "^0.2.0",
+ "picocolors": "^1.1.0",
+ "resolve-from": "^5.0.0",
+ "semver": "^7.5.3",
+ "spawndamnit": "^3.0.1",
+ "term-size": "^2.1.0"
+ },
+ "bin": {
+ "changeset": "bin.js"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@eth-optimism/contracts": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.6.0.tgz",
+ "integrity": "sha512-vQ04wfG9kMf1Fwy3FEMqH2QZbgS0gldKhcBeBUPfO8zu68L61VI97UDXmsMQXzTsEAxK8HnokW3/gosl4/NW3w==",
+ "license": "MIT",
+ "dependencies": {
+ "@eth-optimism/core-utils": "0.12.0",
+ "@ethersproject/abstract-provider": "^5.7.0",
+ "@ethersproject/abstract-signer": "^5.7.0"
+ },
+ "peerDependencies": {
+ "ethers": "^5"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/abi": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.8.0.tgz",
+ "integrity": "sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@ethersproject/address": "^5.8.0",
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/constants": "^5.8.0",
+ "@ethersproject/hash": "^5.8.0",
+ "@ethersproject/keccak256": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/strings": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/abstract-provider": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.8.0.tgz",
+ "integrity": "sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/networks": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/transactions": "^5.8.0",
+ "@ethersproject/web": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/abstract-signer": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.8.0.tgz",
+ "integrity": "sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@ethersproject/abstract-provider": "^5.8.0",
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/address": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.8.0.tgz",
+ "integrity": "sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/keccak256": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/rlp": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/base64": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.8.0.tgz",
+ "integrity": "sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@ethersproject/bytes": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/basex": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.8.0.tgz",
+ "integrity": "sha512-PIgTszMlDRmNwW9nhS6iqtVfdTAKosA7llYXNmGPw4YAI1PUyMv28988wAb41/gHF/WqGdoLv0erHaRcHRKW2Q==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/bignumber": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.8.0.tgz",
+ "integrity": "sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "bn.js": "^5.2.1"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/bytes": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.8.0.tgz",
+ "integrity": "sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@ethersproject/logger": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/constants": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.8.0.tgz",
+ "integrity": "sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@ethersproject/bignumber": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/contracts": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.8.0.tgz",
+ "integrity": "sha512-0eFjGz9GtuAi6MZwhb4uvUM216F38xiuR0yYCjKJpNfSEy4HUM8hvqqBj9Jmm0IUz8l0xKEhWwLIhPgxNY0yvQ==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@ethersproject/abi": "^5.8.0",
+ "@ethersproject/abstract-provider": "^5.8.0",
+ "@ethersproject/abstract-signer": "^5.8.0",
+ "@ethersproject/address": "^5.8.0",
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/constants": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/transactions": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/hash": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.8.0.tgz",
+ "integrity": "sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@ethersproject/abstract-signer": "^5.8.0",
+ "@ethersproject/address": "^5.8.0",
+ "@ethersproject/base64": "^5.8.0",
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/keccak256": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/strings": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/hdnode": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.8.0.tgz",
+ "integrity": "sha512-4bK1VF6E83/3/Im0ERnnUeWOY3P1BZml4ZD3wcH8Ys0/d1h1xaFt6Zc+Dh9zXf9TapGro0T4wvO71UTCp3/uoA==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@ethersproject/abstract-signer": "^5.8.0",
+ "@ethersproject/basex": "^5.8.0",
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/pbkdf2": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/sha2": "^5.8.0",
+ "@ethersproject/signing-key": "^5.8.0",
+ "@ethersproject/strings": "^5.8.0",
+ "@ethersproject/transactions": "^5.8.0",
+ "@ethersproject/wordlists": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/json-wallets": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.8.0.tgz",
+ "integrity": "sha512-HxblNck8FVUtNxS3VTEYJAcwiKYsBIF77W15HufqlBF9gGfhmYOJtYZp8fSDZtn9y5EaXTE87zDwzxRoTFk11w==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@ethersproject/abstract-signer": "^5.8.0",
+ "@ethersproject/address": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/hdnode": "^5.8.0",
+ "@ethersproject/keccak256": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/pbkdf2": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/random": "^5.8.0",
+ "@ethersproject/strings": "^5.8.0",
+ "@ethersproject/transactions": "^5.8.0",
+ "aes-js": "3.0.0",
+ "scrypt-js": "3.0.1"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/keccak256": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.8.0.tgz",
+ "integrity": "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@ethersproject/bytes": "^5.8.0",
+ "js-sha3": "0.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/logger": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.8.0.tgz",
+ "integrity": "sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/networks": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.8.0.tgz",
+ "integrity": "sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@ethersproject/logger": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/pbkdf2": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.8.0.tgz",
+ "integrity": "sha512-wuHiv97BrzCmfEaPbUFpMjlVg/IDkZThp9Ri88BpjRleg4iePJaj2SW8AIyE8cXn5V1tuAaMj6lzvsGJkGWskg==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/sha2": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/properties": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.8.0.tgz",
+ "integrity": "sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@ethersproject/logger": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/providers": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.8.0.tgz",
+ "integrity": "sha512-3Il3oTzEx3o6kzcg9ZzbE+oCZYyY+3Zh83sKkn4s1DZfTUjIegHnN2Cm0kbn9YFy45FDVcuCLLONhU7ny0SsCw==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@ethersproject/abstract-provider": "^5.8.0",
+ "@ethersproject/abstract-signer": "^5.8.0",
+ "@ethersproject/address": "^5.8.0",
+ "@ethersproject/base64": "^5.8.0",
+ "@ethersproject/basex": "^5.8.0",
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/constants": "^5.8.0",
+ "@ethersproject/hash": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/networks": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/random": "^5.8.0",
+ "@ethersproject/rlp": "^5.8.0",
+ "@ethersproject/sha2": "^5.8.0",
+ "@ethersproject/strings": "^5.8.0",
+ "@ethersproject/transactions": "^5.8.0",
+ "@ethersproject/web": "^5.8.0",
+ "bech32": "1.1.4",
+ "ws": "8.18.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/random": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.8.0.tgz",
+ "integrity": "sha512-E4I5TDl7SVqyg4/kkA/qTfuLWAQGXmSOgYyO01So8hLfwgKvYK5snIlzxJMk72IFdG/7oh8yuSqY2KX7MMwg+A==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/rlp": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.8.0.tgz",
+ "integrity": "sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/sha2": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.8.0.tgz",
+ "integrity": "sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "hash.js": "1.1.7"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/signing-key": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.8.0.tgz",
+ "integrity": "sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "bn.js": "^5.2.1",
+ "elliptic": "6.6.1",
+ "hash.js": "1.1.7"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/solidity": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.8.0.tgz",
+ "integrity": "sha512-4CxFeCgmIWamOHwYN9d+QWGxye9qQLilpgTU0XhYs1OahkclF+ewO+3V1U0mvpiuQxm5EHHmv8f7ClVII8EHsA==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/keccak256": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/sha2": "^5.8.0",
+ "@ethersproject/strings": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/strings": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.8.0.tgz",
+ "integrity": "sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/constants": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/transactions": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.8.0.tgz",
+ "integrity": "sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@ethersproject/address": "^5.8.0",
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/constants": "^5.8.0",
+ "@ethersproject/keccak256": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/rlp": "^5.8.0",
+ "@ethersproject/signing-key": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/units": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.8.0.tgz",
+ "integrity": "sha512-lxq0CAnc5kMGIiWW4Mr041VT8IhNM+Pn5T3haO74XZWFulk7wH1Gv64HqE96hT4a7iiNMdOCFEBgaxWuk8ETKQ==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/constants": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/wallet": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.8.0.tgz",
+ "integrity": "sha512-G+jnzmgg6UxurVKRKvw27h0kvG75YKXZKdlLYmAHeF32TGUzHkOFd7Zn6QHOTYRFWnfjtSSFjBowKo7vfrXzPA==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@ethersproject/abstract-provider": "^5.8.0",
+ "@ethersproject/abstract-signer": "^5.8.0",
+ "@ethersproject/address": "^5.8.0",
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/hash": "^5.8.0",
+ "@ethersproject/hdnode": "^5.8.0",
+ "@ethersproject/json-wallets": "^5.8.0",
+ "@ethersproject/keccak256": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/random": "^5.8.0",
+ "@ethersproject/signing-key": "^5.8.0",
+ "@ethersproject/transactions": "^5.8.0",
+ "@ethersproject/wordlists": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/web": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.8.0.tgz",
+ "integrity": "sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@ethersproject/base64": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/strings": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@ethersproject/wordlists": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.8.0.tgz",
+ "integrity": "sha512-2df9bbXicZws2Sb5S6ET493uJ0Z84Fjr3pC4tu/qlnZERibZCeUVuqdtt+7Tv9xxhUxHoIekIA7avrKUWHrezg==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/hash": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/strings": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@openzeppelin/contracts": {
+ "version": "4.9.6",
+ "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.9.6.tgz",
+ "integrity": "sha512-xSmezSupL+y9VkHZJGDoCBpmnB2ogM13ccaYDWqJTfS3dbuHkgjuwDFUmaFauBCboQMGB/S5UqUl2y54X99BmA==",
+ "license": "MIT"
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/@scroll-tech/contracts": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/@scroll-tech/contracts/-/contracts-0.1.0.tgz",
+ "integrity": "sha512-aBbDOc3WB/WveZdpJYcrfvMYMz7ZTEiW8M9XMJLba8p9FAR5KGYB/cV+8+EUsq3MKt7C1BfR+WnXoTVdvwIY6w==",
+ "license": "MIT"
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/aes-js": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz",
+ "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/elliptic": {
+ "version": "6.6.1",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz",
+ "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==",
+ "license": "MIT",
+ "dependencies": {
+ "bn.js": "^4.11.9",
+ "brorand": "^1.1.0",
+ "hash.js": "^1.0.0",
+ "hmac-drbg": "^1.0.1",
+ "inherits": "^2.0.4",
+ "minimalistic-assert": "^1.0.1",
+ "minimalistic-crypto-utils": "^1.0.1"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/elliptic/node_modules/bn.js": {
+ "version": "4.12.2",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz",
+ "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==",
+ "license": "MIT"
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/ethers": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.8.0.tgz",
+ "integrity": "sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@ethersproject/abi": "5.8.0",
+ "@ethersproject/abstract-provider": "5.8.0",
+ "@ethersproject/abstract-signer": "5.8.0",
+ "@ethersproject/address": "5.8.0",
+ "@ethersproject/base64": "5.8.0",
+ "@ethersproject/basex": "5.8.0",
+ "@ethersproject/bignumber": "5.8.0",
+ "@ethersproject/bytes": "5.8.0",
+ "@ethersproject/constants": "5.8.0",
+ "@ethersproject/contracts": "5.8.0",
+ "@ethersproject/hash": "5.8.0",
+ "@ethersproject/hdnode": "5.8.0",
+ "@ethersproject/json-wallets": "5.8.0",
+ "@ethersproject/keccak256": "5.8.0",
+ "@ethersproject/logger": "5.8.0",
+ "@ethersproject/networks": "5.8.0",
+ "@ethersproject/pbkdf2": "5.8.0",
+ "@ethersproject/properties": "5.8.0",
+ "@ethersproject/providers": "5.8.0",
+ "@ethersproject/random": "5.8.0",
+ "@ethersproject/rlp": "5.8.0",
+ "@ethersproject/sha2": "5.8.0",
+ "@ethersproject/signing-key": "5.8.0",
+ "@ethersproject/solidity": "5.8.0",
+ "@ethersproject/strings": "5.8.0",
+ "@ethersproject/transactions": "5.8.0",
+ "@ethersproject/units": "5.8.0",
+ "@ethersproject/wallet": "5.8.0",
+ "@ethersproject/web": "5.8.0",
+ "@ethersproject/wordlists": "5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/semver": {
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@chainlink/contracts-1.4.0/node_modules/ws": {
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
+ "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@chainlink/contracts-ccip/-/contracts-ccip-1.6.1.tgz",
+ "integrity": "sha512-2ainz7DhzSPyUTD01e0roRHQ4V895peJ6rlu+GgxOYCZVFVtuwXEbT27ByyaJSFsB9ZubAtu1zhAijuL0OwPzw==",
+ "license": "BUSL-1.1",
+ "dependencies": {
+ "@chainlink/contracts": "1.4.0",
+ "@changesets/cli": "^2.29.5",
+ "@changesets/get-github-info": "^0.6.0",
+ "semver": "^7.7.2"
+ },
+ "engines": {
+ "node": ">=20",
+ "pnpm": ">=10"
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@chainlink/contracts": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@chainlink/contracts/-/contracts-1.4.0.tgz",
+ "integrity": "sha512-SpNCJ0TPOI6pa2l702Wk4WIP8ccw5ARcRP1E/ZTqaFffXNoZeF03WhsVL8f3l3OTRFA9Z40O5KcZzmJmZQkoFA==",
+ "license": "BUSL-1.1",
+ "dependencies": {
+ "@arbitrum/nitro-contracts": "3.0.0",
+ "@changesets/cli": "~2.28.1",
+ "@changesets/get-github-info": "^0.6.0",
+ "@eth-optimism/contracts": "0.6.0",
+ "@openzeppelin/contracts": "4.9.6",
+ "@openzeppelin/contracts-upgradeable": "4.9.6",
+ "@scroll-tech/contracts": "0.1.0",
+ "@zksync/contracts": "github:matter-labs/era-contracts#446d391d34bdb48255d5f8fef8a8248925fc98b9",
+ "semver": "^7.7.1"
+ },
+ "engines": {
+ "node": ">=18",
+ "pnpm": ">=10"
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@chainlink/contracts/node_modules/@changesets/cli": {
+ "version": "2.28.1",
+ "resolved": "https://registry.npmjs.org/@changesets/cli/-/cli-2.28.1.tgz",
+ "integrity": "sha512-PiIyGRmSc6JddQJe/W1hRPjiN4VrMvb2VfQ6Uydy2punBioQrsxppyG5WafinKcW1mT0jOe/wU4k9Zy5ff21AA==",
+ "license": "MIT",
+ "dependencies": {
+ "@changesets/apply-release-plan": "^7.0.10",
+ "@changesets/assemble-release-plan": "^6.0.6",
+ "@changesets/changelog-git": "^0.2.1",
+ "@changesets/config": "^3.1.1",
+ "@changesets/errors": "^0.2.0",
+ "@changesets/get-dependents-graph": "^2.1.3",
+ "@changesets/get-release-plan": "^4.0.8",
+ "@changesets/git": "^3.0.2",
+ "@changesets/logger": "^0.1.1",
+ "@changesets/pre": "^2.0.2",
+ "@changesets/read": "^0.6.3",
+ "@changesets/should-skip-package": "^0.1.2",
+ "@changesets/types": "^6.1.0",
+ "@changesets/write": "^0.4.0",
+ "@manypkg/get-packages": "^1.1.3",
+ "ansi-colors": "^4.1.3",
+ "ci-info": "^3.7.0",
+ "enquirer": "^2.4.1",
+ "external-editor": "^3.1.0",
+ "fs-extra": "^7.0.1",
+ "mri": "^1.2.0",
+ "p-limit": "^2.2.0",
+ "package-manager-detector": "^0.2.0",
+ "picocolors": "^1.1.0",
+ "resolve-from": "^5.0.0",
+ "semver": "^7.5.3",
+ "spawndamnit": "^3.0.1",
+ "term-size": "^2.1.0"
+ },
+ "bin": {
+ "changeset": "bin.js"
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@eth-optimism/contracts": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.6.0.tgz",
+ "integrity": "sha512-vQ04wfG9kMf1Fwy3FEMqH2QZbgS0gldKhcBeBUPfO8zu68L61VI97UDXmsMQXzTsEAxK8HnokW3/gosl4/NW3w==",
+ "license": "MIT",
+ "dependencies": {
+ "@eth-optimism/core-utils": "0.12.0",
+ "@ethersproject/abstract-provider": "^5.7.0",
+ "@ethersproject/abstract-signer": "^5.7.0"
+ },
+ "peerDependencies": {
+ "ethers": "^5"
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/abi": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.8.0.tgz",
+ "integrity": "sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@ethersproject/address": "^5.8.0",
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/constants": "^5.8.0",
+ "@ethersproject/hash": "^5.8.0",
+ "@ethersproject/keccak256": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/strings": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/abstract-provider": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.8.0.tgz",
+ "integrity": "sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/networks": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/transactions": "^5.8.0",
+ "@ethersproject/web": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/abstract-signer": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.8.0.tgz",
+ "integrity": "sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@ethersproject/abstract-provider": "^5.8.0",
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/address": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.8.0.tgz",
+ "integrity": "sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/keccak256": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/rlp": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/base64": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.8.0.tgz",
+ "integrity": "sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@ethersproject/bytes": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/basex": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.8.0.tgz",
+ "integrity": "sha512-PIgTszMlDRmNwW9nhS6iqtVfdTAKosA7llYXNmGPw4YAI1PUyMv28988wAb41/gHF/WqGdoLv0erHaRcHRKW2Q==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/bignumber": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.8.0.tgz",
+ "integrity": "sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "bn.js": "^5.2.1"
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/bytes": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.8.0.tgz",
+ "integrity": "sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@ethersproject/logger": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/constants": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.8.0.tgz",
+ "integrity": "sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@ethersproject/bignumber": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/contracts": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.8.0.tgz",
+ "integrity": "sha512-0eFjGz9GtuAi6MZwhb4uvUM216F38xiuR0yYCjKJpNfSEy4HUM8hvqqBj9Jmm0IUz8l0xKEhWwLIhPgxNY0yvQ==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@ethersproject/abi": "^5.8.0",
+ "@ethersproject/abstract-provider": "^5.8.0",
+ "@ethersproject/abstract-signer": "^5.8.0",
+ "@ethersproject/address": "^5.8.0",
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/constants": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/transactions": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/hash": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.8.0.tgz",
+ "integrity": "sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@ethersproject/abstract-signer": "^5.8.0",
+ "@ethersproject/address": "^5.8.0",
+ "@ethersproject/base64": "^5.8.0",
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/keccak256": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/strings": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/hdnode": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.8.0.tgz",
+ "integrity": "sha512-4bK1VF6E83/3/Im0ERnnUeWOY3P1BZml4ZD3wcH8Ys0/d1h1xaFt6Zc+Dh9zXf9TapGro0T4wvO71UTCp3/uoA==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@ethersproject/abstract-signer": "^5.8.0",
+ "@ethersproject/basex": "^5.8.0",
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/pbkdf2": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/sha2": "^5.8.0",
+ "@ethersproject/signing-key": "^5.8.0",
+ "@ethersproject/strings": "^5.8.0",
+ "@ethersproject/transactions": "^5.8.0",
+ "@ethersproject/wordlists": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/json-wallets": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.8.0.tgz",
+ "integrity": "sha512-HxblNck8FVUtNxS3VTEYJAcwiKYsBIF77W15HufqlBF9gGfhmYOJtYZp8fSDZtn9y5EaXTE87zDwzxRoTFk11w==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@ethersproject/abstract-signer": "^5.8.0",
+ "@ethersproject/address": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/hdnode": "^5.8.0",
+ "@ethersproject/keccak256": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/pbkdf2": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/random": "^5.8.0",
+ "@ethersproject/strings": "^5.8.0",
+ "@ethersproject/transactions": "^5.8.0",
+ "aes-js": "3.0.0",
+ "scrypt-js": "3.0.1"
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/keccak256": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.8.0.tgz",
+ "integrity": "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@ethersproject/bytes": "^5.8.0",
+ "js-sha3": "0.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/logger": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.8.0.tgz",
+ "integrity": "sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/networks": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.8.0.tgz",
+ "integrity": "sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@ethersproject/logger": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/pbkdf2": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.8.0.tgz",
+ "integrity": "sha512-wuHiv97BrzCmfEaPbUFpMjlVg/IDkZThp9Ri88BpjRleg4iePJaj2SW8AIyE8cXn5V1tuAaMj6lzvsGJkGWskg==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/sha2": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/properties": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.8.0.tgz",
+ "integrity": "sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@ethersproject/logger": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/providers": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.8.0.tgz",
+ "integrity": "sha512-3Il3oTzEx3o6kzcg9ZzbE+oCZYyY+3Zh83sKkn4s1DZfTUjIegHnN2Cm0kbn9YFy45FDVcuCLLONhU7ny0SsCw==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@ethersproject/abstract-provider": "^5.8.0",
+ "@ethersproject/abstract-signer": "^5.8.0",
+ "@ethersproject/address": "^5.8.0",
+ "@ethersproject/base64": "^5.8.0",
+ "@ethersproject/basex": "^5.8.0",
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/constants": "^5.8.0",
+ "@ethersproject/hash": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/networks": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/random": "^5.8.0",
+ "@ethersproject/rlp": "^5.8.0",
+ "@ethersproject/sha2": "^5.8.0",
+ "@ethersproject/strings": "^5.8.0",
+ "@ethersproject/transactions": "^5.8.0",
+ "@ethersproject/web": "^5.8.0",
+ "bech32": "1.1.4",
+ "ws": "8.18.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/random": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.8.0.tgz",
+ "integrity": "sha512-E4I5TDl7SVqyg4/kkA/qTfuLWAQGXmSOgYyO01So8hLfwgKvYK5snIlzxJMk72IFdG/7oh8yuSqY2KX7MMwg+A==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/rlp": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.8.0.tgz",
+ "integrity": "sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/sha2": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.8.0.tgz",
+ "integrity": "sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "hash.js": "1.1.7"
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/signing-key": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.8.0.tgz",
+ "integrity": "sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "bn.js": "^5.2.1",
+ "elliptic": "6.6.1",
+ "hash.js": "1.1.7"
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/solidity": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.8.0.tgz",
+ "integrity": "sha512-4CxFeCgmIWamOHwYN9d+QWGxye9qQLilpgTU0XhYs1OahkclF+ewO+3V1U0mvpiuQxm5EHHmv8f7ClVII8EHsA==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/keccak256": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/sha2": "^5.8.0",
+ "@ethersproject/strings": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/strings": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.8.0.tgz",
+ "integrity": "sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/constants": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/transactions": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.8.0.tgz",
+ "integrity": "sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@ethersproject/address": "^5.8.0",
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/constants": "^5.8.0",
+ "@ethersproject/keccak256": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/rlp": "^5.8.0",
+ "@ethersproject/signing-key": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/units": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.8.0.tgz",
+ "integrity": "sha512-lxq0CAnc5kMGIiWW4Mr041VT8IhNM+Pn5T3haO74XZWFulk7wH1Gv64HqE96hT4a7iiNMdOCFEBgaxWuk8ETKQ==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/constants": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/wallet": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.8.0.tgz",
+ "integrity": "sha512-G+jnzmgg6UxurVKRKvw27h0kvG75YKXZKdlLYmAHeF32TGUzHkOFd7Zn6QHOTYRFWnfjtSSFjBowKo7vfrXzPA==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@ethersproject/abstract-provider": "^5.8.0",
+ "@ethersproject/abstract-signer": "^5.8.0",
+ "@ethersproject/address": "^5.8.0",
+ "@ethersproject/bignumber": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/hash": "^5.8.0",
+ "@ethersproject/hdnode": "^5.8.0",
+ "@ethersproject/json-wallets": "^5.8.0",
+ "@ethersproject/keccak256": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/random": "^5.8.0",
+ "@ethersproject/signing-key": "^5.8.0",
+ "@ethersproject/transactions": "^5.8.0",
+ "@ethersproject/wordlists": "^5.8.0"
+ }
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/web": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.8.0.tgz",
+ "integrity": "sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
"dependencies": {
- "@chainlink/design-system": "0.2.8",
- "@floating-ui/react": "0.22.2",
- "@radix-ui/react-dialog": "1.0.5",
- "@radix-ui/react-dropdown-menu": "2.0.6",
- "@radix-ui/react-navigation-menu": "1.1.3",
- "@radix-ui/react-popover": "1.1.1",
- "@radix-ui/react-slot": "1.0.2",
- "@radix-ui/react-tooltip": "1.0.7",
- "@tailwindcss/container-queries": "0.1.1",
- "class-variance-authority": "0.7.0",
- "clsx": "2.1.1",
- "ethers": "5.7.2",
- "lucide-react": "0.390.0",
- "react": "18.3.1",
- "react-dom": "18.3.1",
- "react-modal": "3.16.1",
- "react-transition-group": "4.4.5",
- "tailwind-merge": "2.3.0",
- "tailwindcss": "3.4.4",
- "tailwindcss-animate": "1.0.7"
- },
- "peerDependencies": {
- "next": "^14.2.4"
+ "@ethersproject/base64": "^5.8.0",
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/strings": "^5.8.0"
}
},
- "node_modules/@chainlink/components/node_modules/ethers": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz",
- "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==",
+ "node_modules/@chainlink/contracts-ccip/node_modules/@ethersproject/wordlists": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.8.0.tgz",
+ "integrity": "sha512-2df9bbXicZws2Sb5S6ET493uJ0Z84Fjr3pC4tu/qlnZERibZCeUVuqdtt+7Tv9xxhUxHoIekIA7avrKUWHrezg==",
"funding": [
{
"type": "individual",
@@ -1358,81 +3127,102 @@
}
],
"license": "MIT",
+ "peer": true,
"dependencies": {
- "@ethersproject/abi": "5.7.0",
- "@ethersproject/abstract-provider": "5.7.0",
- "@ethersproject/abstract-signer": "5.7.0",
- "@ethersproject/address": "5.7.0",
- "@ethersproject/base64": "5.7.0",
- "@ethersproject/basex": "5.7.0",
- "@ethersproject/bignumber": "5.7.0",
- "@ethersproject/bytes": "5.7.0",
- "@ethersproject/constants": "5.7.0",
- "@ethersproject/contracts": "5.7.0",
- "@ethersproject/hash": "5.7.0",
- "@ethersproject/hdnode": "5.7.0",
- "@ethersproject/json-wallets": "5.7.0",
- "@ethersproject/keccak256": "5.7.0",
- "@ethersproject/logger": "5.7.0",
- "@ethersproject/networks": "5.7.1",
- "@ethersproject/pbkdf2": "5.7.0",
- "@ethersproject/properties": "5.7.0",
- "@ethersproject/providers": "5.7.2",
- "@ethersproject/random": "5.7.0",
- "@ethersproject/rlp": "5.7.0",
- "@ethersproject/sha2": "5.7.0",
- "@ethersproject/signing-key": "5.7.0",
- "@ethersproject/solidity": "5.7.0",
- "@ethersproject/strings": "5.7.0",
- "@ethersproject/transactions": "5.7.0",
- "@ethersproject/units": "5.7.0",
- "@ethersproject/wallet": "5.7.0",
- "@ethersproject/web": "5.7.1",
- "@ethersproject/wordlists": "5.7.0"
+ "@ethersproject/bytes": "^5.8.0",
+ "@ethersproject/hash": "^5.8.0",
+ "@ethersproject/logger": "^5.8.0",
+ "@ethersproject/properties": "^5.8.0",
+ "@ethersproject/strings": "^5.8.0"
}
},
- "node_modules/@chainlink/contracts": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@chainlink/contracts/-/contracts-1.5.0.tgz",
- "integrity": "sha512-1fGJwjvivqAxvVOTqZUEXGR54CATtg0vjcXgSIk4Cfoad2nUhSG/qaWHXjLg1CkNTeOoteoxGQcpP/HiA5HsUA==",
- "license": "BUSL-1.1",
+ "node_modules/@chainlink/contracts-ccip/node_modules/@openzeppelin/contracts": {
+ "version": "4.9.6",
+ "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.9.6.tgz",
+ "integrity": "sha512-xSmezSupL+y9VkHZJGDoCBpmnB2ogM13ccaYDWqJTfS3dbuHkgjuwDFUmaFauBCboQMGB/S5UqUl2y54X99BmA==",
+ "license": "MIT"
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/@scroll-tech/contracts": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/@scroll-tech/contracts/-/contracts-0.1.0.tgz",
+ "integrity": "sha512-aBbDOc3WB/WveZdpJYcrfvMYMz7ZTEiW8M9XMJLba8p9FAR5KGYB/cV+8+EUsq3MKt7C1BfR+WnXoTVdvwIY6w==",
+ "license": "MIT"
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/aes-js": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz",
+ "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/elliptic": {
+ "version": "6.6.1",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz",
+ "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==",
+ "license": "MIT",
"dependencies": {
- "@arbitrum/nitro-contracts": "3.0.0",
- "@changesets/cli": "^2.29.6",
- "@changesets/get-github-info": "^0.6.0",
- "@eslint/eslintrc": "^3.3.1",
- "@eth-optimism/contracts": "0.6.0",
- "@openzeppelin/contracts-4.7.3": "npm:@openzeppelin/contracts@4.7.3",
- "@openzeppelin/contracts-4.8.3": "npm:@openzeppelin/contracts@4.8.3",
- "@openzeppelin/contracts-4.9.6": "npm:@openzeppelin/contracts@4.9.6",
- "@openzeppelin/contracts-5.0.2": "npm:@openzeppelin/contracts@5.0.2",
- "@openzeppelin/contracts-5.1.0": "npm:@openzeppelin/contracts@5.1.0",
- "@openzeppelin/contracts-upgradeable": "4.9.6",
- "@scroll-tech/contracts": "2.0.0",
- "@zksync/contracts": "github:matter-labs/era-contracts#446d391d34bdb48255d5f8fef8a8248925fc98b9",
- "semver": "^7.7.2"
- },
- "engines": {
- "node": ">=22",
- "pnpm": ">=10"
+ "bn.js": "^4.11.9",
+ "brorand": "^1.1.0",
+ "hash.js": "^1.0.0",
+ "hmac-drbg": "^1.0.1",
+ "inherits": "^2.0.4",
+ "minimalistic-assert": "^1.0.1",
+ "minimalistic-crypto-utils": "^1.0.1"
}
},
- "node_modules/@chainlink/contracts-ccip": {
- "version": "1.6.3",
- "resolved": "https://registry.npmjs.org/@chainlink/contracts-ccip/-/contracts-ccip-1.6.3.tgz",
- "integrity": "sha512-O5YPQ0u7kR+fqvYNOYMNdRc0ISFyX2a8GH8F21yxCu+xgN4/ukxjfHQSKZfLf5YyE6efUPDcqyXBqF9pkWOCUA==",
- "license": "BUSL-1.1",
+ "node_modules/@chainlink/contracts-ccip/node_modules/elliptic/node_modules/bn.js": {
+ "version": "4.12.2",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz",
+ "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==",
+ "license": "MIT"
+ },
+ "node_modules/@chainlink/contracts-ccip/node_modules/ethers": {
+ "version": "5.8.0",
+ "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.8.0.tgz",
+ "integrity": "sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2"
+ },
+ {
+ "type": "individual",
+ "url": "https://www.buymeacoffee.com/ricmoo"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "@chainlink/contracts": "1.5.0",
- "@changesets/cli": "^2.29.7",
- "@changesets/get-github-info": "^0.6.0",
- "@openzeppelin/contracts-4.8.3": "npm:@openzeppelin/contracts@4.8.3",
- "@openzeppelin/contracts-5.0.2": "npm:@openzeppelin/contracts@5.0.2",
- "semver": "^7.7.2"
- },
- "engines": {
- "node": ">=20",
- "pnpm": ">=10"
+ "@ethersproject/abi": "5.8.0",
+ "@ethersproject/abstract-provider": "5.8.0",
+ "@ethersproject/abstract-signer": "5.8.0",
+ "@ethersproject/address": "5.8.0",
+ "@ethersproject/base64": "5.8.0",
+ "@ethersproject/basex": "5.8.0",
+ "@ethersproject/bignumber": "5.8.0",
+ "@ethersproject/bytes": "5.8.0",
+ "@ethersproject/constants": "5.8.0",
+ "@ethersproject/contracts": "5.8.0",
+ "@ethersproject/hash": "5.8.0",
+ "@ethersproject/hdnode": "5.8.0",
+ "@ethersproject/json-wallets": "5.8.0",
+ "@ethersproject/keccak256": "5.8.0",
+ "@ethersproject/logger": "5.8.0",
+ "@ethersproject/networks": "5.8.0",
+ "@ethersproject/pbkdf2": "5.8.0",
+ "@ethersproject/properties": "5.8.0",
+ "@ethersproject/providers": "5.8.0",
+ "@ethersproject/random": "5.8.0",
+ "@ethersproject/rlp": "5.8.0",
+ "@ethersproject/sha2": "5.8.0",
+ "@ethersproject/signing-key": "5.8.0",
+ "@ethersproject/solidity": "5.8.0",
+ "@ethersproject/strings": "5.8.0",
+ "@ethersproject/transactions": "5.8.0",
+ "@ethersproject/units": "5.8.0",
+ "@ethersproject/wallet": "5.8.0",
+ "@ethersproject/web": "5.8.0",
+ "@ethersproject/wordlists": "5.8.0"
}
},
"node_modules/@chainlink/contracts-ccip/node_modules/semver": {
@@ -1447,6 +3237,28 @@
"node": ">=10"
}
},
+ "node_modules/@chainlink/contracts-ccip/node_modules/ws": {
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
+ "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@chainlink/contracts/node_modules/@eth-optimism/contracts": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.6.0.tgz",
@@ -19988,6 +21800,38 @@
"webextension-polyfill": "^0.10.0 || ^0.11.0 || ^0.12.0"
}
},
+ "node_modules/external-editor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
+ "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
+ "license": "MIT",
+ "dependencies": {
+ "chardet": "^0.7.0",
+ "iconv-lite": "^0.4.24",
+ "tmp": "^0.0.33"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/external-editor/node_modules/chardet": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
+ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
+ "license": "MIT"
+ },
+ "node_modules/external-editor/node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/eyes": {
"version": "0.1.8",
"resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz",
diff --git a/package.json b/package.json
index d4da58341f0..c12968472e4 100644
--- a/package.json
+++ b/package.json
@@ -26,10 +26,14 @@
"update-algolia-index": "tsc scripts/update-algolia-index.ts --resolveJsonModule && node scripts/update-algolia-index.js",
"sync-chainlink-automation-config": "tsx --require tsconfig-paths/register src/scripts/chainlink-automation/networks-config.ts",
"find-nonchecksummed-addresses": "tsx --require tsconfig-paths/register src/scripts/helper/find-nonchecksummed-addresses.ts",
- "sol:compile": "forge compile",
- "sol:clean": "forge clean",
- "sol:fmt": "forge fmt",
- "sol:fmt:check": "forge fmt --check",
+ "sol:compile": "npm run sol:clean && npm run sol:compile:main && npm run sol:compile:ccip",
+ "sol:compile:main": "forge compile --skip '*/CCIP/*'",
+ "sol:compile:ccip": "cd public/samples/CCIP && forge compile",
+ "sol:clean": "forge clean && npm run sol:clean:ccip",
+ "sol:clean:ccip": "cd public/samples/CCIP && forge clean",
+ "sol:fmt": "forge fmt && npm run sol:fmt:ccip",
+ "sol:fmt:ccip": "cd public/samples/CCIP && forge fmt",
+ "sol:fmt:check": "forge fmt --check && cd public/samples/CCIP && forge fmt --check",
"format:check": "prettier --check .",
"format:fix": "prettier --write .",
"lint": "eslint .",
@@ -62,7 +66,8 @@
"@chainlink/cl-search-frontend": "^0.12.1",
"@chainlink/components": "^0.4.18",
"@chainlink/contracts": "1.5.0",
- "@chainlink/contracts-ccip": "1.6.3",
+ "@chainlink/contracts-1.4.0": "npm:@chainlink/contracts@1.4.0",
+ "@chainlink/contracts-ccip": "1.6.1",
"@chainlink/design-system": "^0.2.8",
"@chainlink/local": "0.2.7-beta",
"@chainlink/solana-sdk": "^0.2.2",
diff --git a/public/samples/CCIP/Acknowledger.sol b/public/samples/CCIP/Acknowledger.sol
index facad367618..32a4ff1cb39 100644
--- a/public/samples/CCIP/Acknowledger.sol
+++ b/public/samples/CCIP/Acknowledger.sol
@@ -4,7 +4,7 @@ pragma solidity 0.8.24;
import {CCIPReceiver} from "@chainlink/contracts-ccip/contracts/applications/CCIPReceiver.sol";
import {IRouterClient} from "@chainlink/contracts-ccip/contracts/interfaces/IRouterClient.sol";
import {Client} from "@chainlink/contracts-ccip/contracts/libraries/Client.sol";
-import {OwnerIsCreator} from "@chainlink/contracts/src/v0.8/shared/access/OwnerIsCreator.sol";
+import {OwnerIsCreator} from "@chainlink/contracts@1.4.0/src/v0.8/shared/access/OwnerIsCreator.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
diff --git a/public/samples/CCIP/MessageTracker.sol b/public/samples/CCIP/MessageTracker.sol
index 3f1ceeaa969..fbe83c5e0fc 100644
--- a/public/samples/CCIP/MessageTracker.sol
+++ b/public/samples/CCIP/MessageTracker.sol
@@ -4,7 +4,7 @@ pragma solidity 0.8.24;
import {CCIPReceiver} from "@chainlink/contracts-ccip/contracts/applications/CCIPReceiver.sol";
import {IRouterClient} from "@chainlink/contracts-ccip/contracts/interfaces/IRouterClient.sol";
import {Client} from "@chainlink/contracts-ccip/contracts/libraries/Client.sol";
-import {OwnerIsCreator} from "@chainlink/contracts/src/v0.8/shared/access/OwnerIsCreator.sol";
+import {OwnerIsCreator} from "@chainlink/contracts@1.4.0/src/v0.8/shared/access/OwnerIsCreator.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
diff --git a/public/samples/CCIP/Messenger.sol b/public/samples/CCIP/Messenger.sol
index 7328eb1985d..9417eb85a25 100644
--- a/public/samples/CCIP/Messenger.sol
+++ b/public/samples/CCIP/Messenger.sol
@@ -4,7 +4,7 @@ pragma solidity 0.8.24;
import {CCIPReceiver} from "@chainlink/contracts-ccip/contracts/applications/CCIPReceiver.sol";
import {IRouterClient} from "@chainlink/contracts-ccip/contracts/interfaces/IRouterClient.sol";
import {Client} from "@chainlink/contracts-ccip/contracts/libraries/Client.sol";
-import {OwnerIsCreator} from "@chainlink/contracts/src/v0.8/shared/access/OwnerIsCreator.sol";
+import {OwnerIsCreator} from "@chainlink/contracts@1.4.0/src/v0.8/shared/access/OwnerIsCreator.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
diff --git a/public/samples/CCIP/ProgrammableDefensiveTokenTransfers.sol b/public/samples/CCIP/ProgrammableDefensiveTokenTransfers.sol
index 0698c162943..351686f1780 100644
--- a/public/samples/CCIP/ProgrammableDefensiveTokenTransfers.sol
+++ b/public/samples/CCIP/ProgrammableDefensiveTokenTransfers.sol
@@ -4,7 +4,7 @@ pragma solidity 0.8.24;
import {CCIPReceiver} from "@chainlink/contracts-ccip/contracts/applications/CCIPReceiver.sol";
import {IRouterClient} from "@chainlink/contracts-ccip/contracts/interfaces/IRouterClient.sol";
import {Client} from "@chainlink/contracts-ccip/contracts/libraries/Client.sol";
-import {OwnerIsCreator} from "@chainlink/contracts/src/v0.8/shared/access/OwnerIsCreator.sol";
+import {OwnerIsCreator} from "@chainlink/contracts@1.4.0/src/v0.8/shared/access/OwnerIsCreator.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
diff --git a/public/samples/CCIP/ProgrammableTokenTransfers.sol b/public/samples/CCIP/ProgrammableTokenTransfers.sol
index 03aa313e5ad..273a7c7835b 100644
--- a/public/samples/CCIP/ProgrammableTokenTransfers.sol
+++ b/public/samples/CCIP/ProgrammableTokenTransfers.sol
@@ -4,7 +4,7 @@ pragma solidity 0.8.24;
import {CCIPReceiver} from "@chainlink/contracts-ccip/contracts/applications/CCIPReceiver.sol";
import {IRouterClient} from "@chainlink/contracts-ccip/contracts/interfaces/IRouterClient.sol";
import {Client} from "@chainlink/contracts-ccip/contracts/libraries/Client.sol";
-import {OwnerIsCreator} from "@chainlink/contracts/src/v0.8/shared/access/OwnerIsCreator.sol";
+import {OwnerIsCreator} from "@chainlink/contracts@1.4.0/src/v0.8/shared/access/OwnerIsCreator.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
diff --git a/public/samples/CCIP/ProgrammableTokenTransfersLowGasLimit.sol b/public/samples/CCIP/ProgrammableTokenTransfersLowGasLimit.sol
index 949159da4fa..a1c6a98a448 100644
--- a/public/samples/CCIP/ProgrammableTokenTransfersLowGasLimit.sol
+++ b/public/samples/CCIP/ProgrammableTokenTransfersLowGasLimit.sol
@@ -4,7 +4,7 @@ pragma solidity 0.8.24;
import {CCIPReceiver} from "@chainlink/contracts-ccip/contracts/applications/CCIPReceiver.sol";
import {IRouterClient} from "@chainlink/contracts-ccip/contracts/interfaces/IRouterClient.sol";
import {Client} from "@chainlink/contracts-ccip/contracts/libraries/Client.sol";
-import {OwnerIsCreator} from "@chainlink/contracts/src/v0.8/shared/access/OwnerIsCreator.sol";
+import {OwnerIsCreator} from "@chainlink/contracts@1.4.0/src/v0.8/shared/access/OwnerIsCreator.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
diff --git a/public/samples/CCIP/Sender.sol b/public/samples/CCIP/Sender.sol
index 595de1de296..0623795b109 100644
--- a/public/samples/CCIP/Sender.sol
+++ b/public/samples/CCIP/Sender.sol
@@ -4,8 +4,8 @@ pragma solidity 0.8.24;
import {IRouterClient} from "@chainlink/contracts-ccip/contracts/interfaces/IRouterClient.sol";
import {Client} from "@chainlink/contracts-ccip/contracts/libraries/Client.sol";
-import {OwnerIsCreator} from "@chainlink/contracts/src/v0.8/shared/access/OwnerIsCreator.sol";
-import {LinkTokenInterface} from "@chainlink/contracts/src/v0.8/shared/interfaces/LinkTokenInterface.sol";
+import {OwnerIsCreator} from "@chainlink/contracts@1.4.0/src/v0.8/shared/access/OwnerIsCreator.sol";
+import {LinkTokenInterface} from "@chainlink/contracts@1.4.0/src/v0.8/shared/interfaces/LinkTokenInterface.sol";
/**
* THIS IS AN EXAMPLE CONTRACT THAT USES HARDCODED VALUES FOR CLARITY.
diff --git a/public/samples/CCIP/TokenTransferor.sol b/public/samples/CCIP/TokenTransferor.sol
index 4616f7891f3..17e763bc5fe 100644
--- a/public/samples/CCIP/TokenTransferor.sol
+++ b/public/samples/CCIP/TokenTransferor.sol
@@ -4,7 +4,7 @@ pragma solidity 0.8.24;
import {IRouterClient} from "@chainlink/contracts-ccip/contracts/interfaces/IRouterClient.sol";
import {Client} from "@chainlink/contracts-ccip/contracts/libraries/Client.sol";
-import {OwnerIsCreator} from "@chainlink/contracts/src/v0.8/shared/access/OwnerIsCreator.sol";
+import {OwnerIsCreator} from "@chainlink/contracts@1.4.0/src/v0.8/shared/access/OwnerIsCreator.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
diff --git a/public/samples/CCIP/foundry.toml b/public/samples/CCIP/foundry.toml
new file mode 100644
index 00000000000..e689d4a28a1
--- /dev/null
+++ b/public/samples/CCIP/foundry.toml
@@ -0,0 +1,34 @@
+# CCIP Isolated Project - Uses @chainlink/contracts@1.4.0
+[profile.default]
+solc_version = "0.8.24"
+auto_detect_solc = false
+evm_version = 'paris'
+
+src = "."
+out = "../../../.test/artifacts-ccip"
+cache_path = "../../../.test/cache-ccip"
+libs = ["../../../lib", "../../../node_modules"]
+
+optimizer = true
+optimizer_runs = 1_000_000
+
+bytecode_hash = "none"
+ffi = false
+gas_price = 1
+block_timestamp = 1234567890
+block_number = 12345
+
+[profile.ci]
+verbosity = 2
+
+[fmt]
+tab_width = 2
+multiline_func_header = "params_first"
+sort_imports = true
+single_line_statement_blocks = "preserve"
+number_underscore = "thousands"
+wrap_comments = true
+
+[lint]
+lint_on_build = false
+
diff --git a/public/samples/CCIP/remappings.txt b/public/samples/CCIP/remappings.txt
new file mode 100644
index 00000000000..142d1762d9d
--- /dev/null
+++ b/public/samples/CCIP/remappings.txt
@@ -0,0 +1,4 @@
+@chainlink/contracts/src/v0.8/=../../../node_modules/@chainlink/contracts-1.4.0/src/v0.8/
+@chainlink/contracts@1.4.0/=../../../node_modules/@chainlink/contracts-1.4.0/
+@chainlink/contracts-ccip/contracts/=../../../node_modules/@chainlink/contracts-ccip/contracts/
+@openzeppelin/contracts/=../../../node_modules/@openzeppelin/contracts/
diff --git a/public/samples/CCIP/usdc/Receiver.sol b/public/samples/CCIP/usdc/Receiver.sol
index 94b5942e89c..485329e01ab 100644
--- a/public/samples/CCIP/usdc/Receiver.sol
+++ b/public/samples/CCIP/usdc/Receiver.sol
@@ -3,7 +3,7 @@ pragma solidity 0.8.24;
import {CCIPReceiver} from "@chainlink/contracts-ccip/contracts/applications/CCIPReceiver.sol";
import {Client} from "@chainlink/contracts-ccip/contracts/libraries/Client.sol";
-import {OwnerIsCreator} from "@chainlink/contracts/src/v0.8/shared/access/OwnerIsCreator.sol";
+import {OwnerIsCreator} from "@chainlink/contracts@1.4.0/src/v0.8/shared/access/OwnerIsCreator.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
diff --git a/public/samples/CCIP/usdc/Sender.sol b/public/samples/CCIP/usdc/Sender.sol
index 40328000806..40da86f51ec 100644
--- a/public/samples/CCIP/usdc/Sender.sol
+++ b/public/samples/CCIP/usdc/Sender.sol
@@ -4,7 +4,7 @@ pragma solidity 0.8.24;
import {IRouterClient} from "@chainlink/contracts-ccip/contracts/interfaces/IRouterClient.sol";
import {Client} from "@chainlink/contracts-ccip/contracts/libraries/Client.sol";
-import {OwnerIsCreator} from "@chainlink/contracts/src/v0.8/shared/access/OwnerIsCreator.sol";
+import {OwnerIsCreator} from "@chainlink/contracts@1.4.0/src/v0.8/shared/access/OwnerIsCreator.sol";
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
diff --git a/remappings.txt b/remappings.txt
index f23985cdab9..d976b814519 100644
--- a/remappings.txt
+++ b/remappings.txt
@@ -1,5 +1,7 @@
+@chainlink/contracts-ccip/contracts/=node_modules/@chainlink/contracts-ccip/contracts/
+@chainlink/contracts@1.4.0/=node_modules/@chainlink/contracts-1.4.0/
+@chainlink/contracts/src/v0.8/=node_modules/@chainlink/contracts/src/v0.8/
@chainlink/contracts=node_modules/@chainlink/contracts
-@chainlink/contracts-ccip/contracts=node_modules/@chainlink/contracts-ccip/contracts
@chainlink/local=node_modules/@chainlink/local
@openzeppelin/contracts=node_modules/@openzeppelin/contracts
@openzeppelin/contracts@4.7.3=node_modules/@openzeppelin/contracts-4.7.3
diff --git a/src/config/sidebar/__tests__/__snapshots__/ccip-dynamic.test.ts.snap b/src/config/sidebar/__tests__/__snapshots__/ccip-dynamic.test.ts.snap
index de5d35d85a7..029002b33c8 100644
--- a/src/config/sidebar/__tests__/__snapshots__/ccip-dynamic.test.ts.snap
+++ b/src/config/sidebar/__tests__/__snapshots__/ccip-dynamic.test.ts.snap
@@ -760,180 +760,6 @@ exports[`CCIP Sidebar Configuration Snapshot should match the expected sidebar s
"evm",
],
"children": [
- {
- "children": [
- {
- "title": "Client Library",
- "url": "ccip/api-reference/evm/v1.6.3/client",
- },
- {
- "title": "Internal Library",
- "url": "ccip/api-reference/evm/v1.6.3/internal",
- },
- {
- "title": "ITypeAndVersion",
- "url": "ccip/api-reference/evm/v1.6.3/i-type-and-version",
- },
- {
- "title": "IRouterClient",
- "url": "ccip/api-reference/evm/v1.6.3/i-router-client",
- },
- {
- "title": "FeeQuoter",
- "url": "ccip/api-reference/evm/v1.6.3/fee-quoter",
- },
- {
- "title": "CCIPReceiver",
- "url": "ccip/api-reference/evm/v1.6.3/ccip-receiver",
- },
- {
- "title": "Pool Library",
- "url": "ccip/api-reference/evm/v1.6.3/pool",
- },
- {
- "title": "TokenPool",
- "url": "ccip/api-reference/evm/v1.6.3/token-pool",
- },
- {
- "title": "BurnMintTokenPool",
- "url": "ccip/api-reference/evm/v1.6.3/burn-mint-token-pool",
- },
- {
- "title": "BurnMintTokenPoolAbstract",
- "url": "ccip/api-reference/evm/v1.6.3/burn-mint-token-pool-abstract",
- },
- {
- "title": "BurnFromMintTokenPool",
- "url": "ccip/api-reference/evm/v1.6.3/burn-from-mint-token-pool",
- },
- {
- "title": "LockReleaseTokenPool",
- "url": "ccip/api-reference/evm/v1.6.3/lock-release-token-pool",
- },
- {
- "title": "TokenAdminRegistry",
- "url": "ccip/api-reference/evm/v1.6.3/token-admin-registry",
- },
- {
- "title": "RegistryModuleOwnerCustom",
- "url": "ccip/api-reference/evm/v1.6.3/registry-module-owner-custom",
- },
- {
- "title": "BurnMintERC20",
- "url": "ccip/api-reference/evm/v1.6.3/burn-mint-erc20",
- },
- {
- "title": "RateLimiter Library",
- "url": "ccip/api-reference/evm/v1.6.3/rate-limiter",
- },
- {
- "title": "Errors",
- "url": "ccip/api-reference/evm/v1.6.3/errors",
- },
- {
- "title": "Events",
- "url": "ccip/api-reference/evm/v1.6.3/events",
- },
- {
- "title": "Ownable2Step",
- "url": "ccip/api-reference/evm/v1.6.3/ownable-2-step",
- },
- {
- "title": "Ownable2StepMsgSender",
- "url": "ccip/api-reference/evm/v1.6.3/ownable-2-step-msg-sender",
- },
- ],
- "isCollapsible": true,
- "title": "v1.6.3 (Latest)",
- "url": "ccip/api-reference/evm/v1.6.3",
- },
- {
- "children": [
- {
- "title": "Client Library",
- "url": "ccip/api-reference/evm/v1.6.2/client",
- },
- {
- "title": "Internal Library",
- "url": "ccip/api-reference/evm/v1.6.2/internal",
- },
- {
- "title": "ITypeAndVersion",
- "url": "ccip/api-reference/evm/v1.6.2/i-type-and-version",
- },
- {
- "title": "IRouterClient",
- "url": "ccip/api-reference/evm/v1.6.2/i-router-client",
- },
- {
- "title": "FeeQuoter",
- "url": "ccip/api-reference/evm/v1.6.2/fee-quoter",
- },
- {
- "title": "CCIPReceiver",
- "url": "ccip/api-reference/evm/v1.6.2/ccip-receiver",
- },
- {
- "title": "Pool Library",
- "url": "ccip/api-reference/evm/v1.6.2/pool",
- },
- {
- "title": "TokenPool",
- "url": "ccip/api-reference/evm/v1.6.2/token-pool",
- },
- {
- "title": "BurnMintTokenPool",
- "url": "ccip/api-reference/evm/v1.6.2/burn-mint-token-pool",
- },
- {
- "title": "BurnMintTokenPoolAbstract",
- "url": "ccip/api-reference/evm/v1.6.2/burn-mint-token-pool-abstract",
- },
- {
- "title": "BurnFromMintTokenPool",
- "url": "ccip/api-reference/evm/v1.6.2/burn-from-mint-token-pool",
- },
- {
- "title": "LockReleaseTokenPool",
- "url": "ccip/api-reference/evm/v1.6.2/lock-release-token-pool",
- },
- {
- "title": "TokenAdminRegistry",
- "url": "ccip/api-reference/evm/v1.6.2/token-admin-registry",
- },
- {
- "title": "RegistryModuleOwnerCustom",
- "url": "ccip/api-reference/evm/v1.6.2/registry-module-owner-custom",
- },
- {
- "title": "BurnMintERC20",
- "url": "ccip/api-reference/evm/v1.6.2/burn-mint-erc20",
- },
- {
- "title": "RateLimiter Library",
- "url": "ccip/api-reference/evm/v1.6.2/rate-limiter",
- },
- {
- "title": "Errors",
- "url": "ccip/api-reference/evm/v1.6.2/errors",
- },
- {
- "title": "Events",
- "url": "ccip/api-reference/evm/v1.6.2/events",
- },
- {
- "title": "Ownable2Step",
- "url": "ccip/api-reference/evm/v1.6.2/ownable-2-step",
- },
- {
- "title": "Ownable2StepMsgSender",
- "url": "ccip/api-reference/evm/v1.6.2/ownable-2-step-msg-sender",
- },
- ],
- "isCollapsible": true,
- "title": "v1.6.2",
- "url": "ccip/api-reference/evm/v1.6.2",
- },
{
"chainTypes": [
"evm",
@@ -1021,7 +847,7 @@ exports[`CCIP Sidebar Configuration Snapshot should match the expected sidebar s
},
],
"isCollapsible": true,
- "title": "v1.6.1",
+ "title": "v1.6.1 (Latest)",
"url": "ccip/api-reference/evm/v1.6.1",
},
{
diff --git a/src/config/sidebar/ccip-dynamic.ts b/src/config/sidebar/ccip-dynamic.ts
index ebc240bdd65..77a458a94fd 100644
--- a/src/config/sidebar/ccip-dynamic.ts
+++ b/src/config/sidebar/ccip-dynamic.ts
@@ -607,20 +607,20 @@ export const CCIP_SIDEBAR_CONTENT: SectionEntry[] = [
url: "ccip/api-reference/evm",
chainTypes: ["evm"],
children: [
- {
- title: "v1.6.3 (Latest)",
- url: "ccip/api-reference/evm/v1.6.3",
- isCollapsible: true,
- children: evmCcipV163Contents,
- },
- {
- title: "v1.6.2",
- url: "ccip/api-reference/evm/v1.6.2",
- isCollapsible: true,
- children: evmCcipV162Contents,
- },
- {
- title: "v1.6.1",
+ // {
+ // title: "v1.6.3 (Latest)",
+ // url: "ccip/api-reference/evm/v1.6.3",
+ // isCollapsible: true,
+ // children: evmCcipV163Contents,
+ // },
+ // {
+ // title: "v1.6.2",
+ // url: "ccip/api-reference/evm/v1.6.2",
+ // isCollapsible: true,
+ // children: evmCcipV162Contents,
+ // },
+ {
+ title: "v1.6.1 (Latest)",
url: "ccip/api-reference/evm/v1.6.1",
isCollapsible: true,
chainTypes: ["evm"],
diff --git a/src/config/versions/index.ts b/src/config/versions/index.ts
index 03d4ed79460..52df3efbf18 100644
--- a/src/config/versions/index.ts
+++ b/src/config/versions/index.ts
@@ -23,11 +23,11 @@ export const VERSIONS = {
ccip: {
// Split versions by VM type
evm: {
- LATEST: "v1.6.3",
- ALL: ["v1.6.3", "v1.6.2", "v1.6.1", "v1.6.0", "v1.5.1", "v1.5.0"] as const,
+ LATEST: "v1.6.1",
+ ALL: [/* "v1.6.3", "v1.6.2", */ "v1.6.1", "v1.6.0", "v1.5.1", "v1.5.0"] as const,
RELEASE_DATES: {
- "v1.6.3": "2025-11-05T00:00:00Z", // 5 November 2025
- "v1.6.2": "2025-10-06T00:00:00Z", // 6 October 2025
+ // "v1.6.3": "2025-11-05T00:00:00Z", // 5 November 2025
+ // "v1.6.2": "2025-10-06T00:00:00Z", // 6 October 2025
"v1.6.1": "2025-09-08T00:00:00Z", // 8 September 2025
"v1.6.0": "2025-05-19T00:00:00Z", // 19 May 2025
"v1.5.0": "2023-10-04T00:00:00Z", // 4 October 2023
diff --git a/src/content/ccip/api-reference/evm/index.mdx b/src/content/ccip/api-reference/evm/index.mdx
index 16bfbebddc3..ce776d4d2ee 100644
--- a/src/content/ccip/api-reference/evm/index.mdx
+++ b/src/content/ccip/api-reference/evm/index.mdx
@@ -13,15 +13,7 @@ import { Aside } from "@components"
### Latest Release
-- **[CCIP v1.6.3](/ccip/api-reference/evm/v1.6.3)** (Current Version)
- - Added support for SUI based extraArgs and validation
- - Added TON chain family selector definition for EVM and Solana
-
-- **[CCIP v1.6.2](/ccip/api-reference/evm/v1.6.2)**
- - Added support for USDC Token Pool on Solana
- - Added support for FactoryBurnMintERC20 on Hyperliquid
-
-- **[CCIP v1.6.1](/ccip/api-reference/evm/v1.6.1)**
+- **[CCIP v1.6.1](/ccip/api-reference/evm/v1.6.1)** (Current Version)
- Pool Library: `ReleaseOrMintInV1.amount` renamed to `sourceDenominatedAmount`
- TokenPool events: `Locked`/`Burned` and `Released`/`Minted` replaced by unified `LockedOrBurned` and `ReleasedOrMinted`
- Rate limiting: added `OutboundRateLimitConsumed` and `InboundRateLimitConsumed` events for monitoring consumption
diff --git a/src/content/ccip/api-reference/evm/v1.6.1/fee-quoter.mdx b/src/content/ccip/api-reference/evm/v1.6.1/fee-quoter.mdx
index f0a23b287e7..ec6ba9e6c4f 100644
--- a/src/content/ccip/api-reference/evm/v1.6.1/fee-quoter.mdx
+++ b/src/content/ccip/api-reference/evm/v1.6.1/fee-quoter.mdx
@@ -211,21 +211,6 @@ error InvalidSVMExtraArgsWritableBitmap(uint64 accountIsWritableBitmap, uint256
| `accountIsWritableBitmap` | `uint64` | The provided writable bitmap |
| `numAccounts` | `uint256` | Number of accounts in the extra args |
-### TooManySuiExtraArgsReceiverObjectIds
-
-```solidity
-error TooManySuiExtraArgsReceiverObjectIds(uint256 numReceiverObjectIds, uint256 maxReceiverObjectIds);
-```
-
-
-
-**Parameters**
-
-| Name | Type | Description |
-| ---------------------- | --------- | --------------------------------------------- |
-| `numReceiverObjectIds` | `uint256` | Number of receiver object IDs provided |
-| `maxReceiverObjectIds` | `uint256` | Maximum allowed number of receiver object IDs |
-
### InvalidChainFamilySelector
```solidity
diff --git a/src/content/ccip/api-reference/evm/v1.6.1/lock-release-token-pool.mdx b/src/content/ccip/api-reference/evm/v1.6.1/lock-release-token-pool.mdx
index ef41eb6af80..d01b3adbae4 100644
--- a/src/content/ccip/api-reference/evm/v1.6.1/lock-release-token-pool.mdx
+++ b/src/content/ccip/api-reference/evm/v1.6.1/lock-release-token-pool.mdx
@@ -51,6 +51,36 @@ event LiquidityTransferred(address indexed from, uint256 amount);
| `from` | `address` | Yes | The source pool address |
| `amount` | `uint256` | No | The amount of liquidity transferred |
+### LiquidityAdded
+
+```solidity
+event LiquidityAdded(address indexed provider, uint256 indexed amount);
+```
+
+
+
+**Parameters**
+
+| Name | Type | Indexed | Description |
+| ---------- | --------- | ------- | ------------------------------------- |
+| `provider` | `address` | Yes | The address providing the liquidity |
+| `amount` | `uint256` | Yes | The amount of liquidity added to pool |
+
+### LiquidityRemoved
+
+```solidity
+event LiquidityRemoved(address indexed provider, uint256 indexed amount);
+```
+
+
+
+**Parameters**
+
+| Name | Type | Indexed | Description |
+| ---------- | --------- | ------- | ----------------------------------------- |
+| `provider` | `address` | Yes | The address withdrawing the liquidity |
+| `amount` | `uint256` | Yes | The amount of liquidity removed from pool |
+
### RebalancerSet
```solidity
@@ -76,27 +106,8 @@ error InsufficientLiquidity();
-### LiquidityNotAccepted
-
-```solidity
-error LiquidityNotAccepted();
-```
-
-
-
## State Variables
-### i_acceptLiquidity
-
-```solidity
-bool internal immutable i_acceptLiquidity;
-```
-
-
-
### s_rebalancer
```solidity
@@ -115,30 +126,6 @@ string public constant override typeAndVersion = "LockReleaseTokenPool 1.6.1";
## Functions
-### canAcceptLiquidity
-
-Determines whether the pool can accept external liquidity.
-
-```solidity
-function canAcceptLiquidity() external view returns (bool);
-```
-
-
-
-**Returns**
-
-| Type | Description |
-| ------ | ------------------------------------------- |
-| `bool` | True if the pool accepts external liquidity |
-
### constructor
```solidity
@@ -147,7 +134,6 @@ constructor(
uint8 localTokenDecimals,
address[] memory allowlist,
address rmnProxy,
- bool acceptLiquidity,
address router
) TokenPool(token, localTokenDecimals, allowlist, rmnProxy, router);
```
@@ -160,20 +146,18 @@ Initializes the token pool with its configuration parameters:
- Configures decimal precision for local tokens
- Establishes the initial whitelist
- Links to the RMN proxy and router
-- Sets the liquidity acceptance policy
**Parameters**
-| Name | Type | Description |
-| -------------------- | ----------- | ------------------------------------------- |
-| `token` | `IERC20` | The token contract to manage |
-| `localTokenDecimals` | `uint8` | The decimal precision for the local token |
-| `allowlist` | `address[]` | Initial list of authorized addresses |
-| `rmnProxy` | `address` | Address of the RMN proxy contract |
-| `acceptLiquidity` | `bool` | Whether the pool accepts external liquidity |
-| `router` | `address` | Address of the router contract |
+| Name | Type | Description |
+| -------------------- | ----------- | ----------------------------------------- |
+| `token` | `IERC20` | The token contract to manage |
+| `localTokenDecimals` | `uint8` | The decimal precision for the local token |
+| `allowlist` | `address[]` | Initial list of authorized addresses |
+| `rmnProxy` | `address` | Address of the RMN proxy contract |
+| `router` | `address` | Address of the router contract |
### getRebalancer
diff --git a/src/content/ccip/api-reference/evm/v1.6.1/token-admin-registry.mdx b/src/content/ccip/api-reference/evm/v1.6.1/token-admin-registry.mdx
index 5e8f4f1d0ce..8e0b86c3f4e 100644
--- a/src/content/ccip/api-reference/evm/v1.6.1/token-admin-registry.mdx
+++ b/src/content/ccip/api-reference/evm/v1.6.1/token-admin-registry.mdx
@@ -35,6 +35,86 @@ Note: This contract is designed as a customer-facing interface and stores substa
+## Events
+
+### AdministratorTransferred
+
+```solidity
+event AdministratorTransferred(address indexed token, address indexed newAdmin);
+```
+
+
+
+**Parameters**
+
+| Name | Type | Indexed | Description |
+| ---------- | --------- | ------- | ------------------------------------- |
+| `token` | `address` | Yes | The token whose administrator changed |
+| `newAdmin` | `address` | Yes | The address of the new administrator |
+
+### AdministratorTransferRequested
+
+```solidity
+event AdministratorTransferRequested(address indexed token, address indexed currentAdmin, address indexed newAdmin);
+```
+
+
+
+**Parameters**
+
+| Name | Type | Indexed | Description |
+| -------------- | --------- | ------- | --------------------------------- |
+| `token` | `address` | Yes | The token for the transfer |
+| `currentAdmin` | `address` | Yes | The current administrator address |
+| `newAdmin` | `address` | Yes | The proposed new administrator |
+
+### PoolSet
+
+```solidity
+event PoolSet(address indexed token, address indexed previousPool, address indexed newPool);
+```
+
+
+
+**Parameters**
+
+| Name | Type | Indexed | Description |
+| -------------- | --------- | ------- | ---------------------------- |
+| `token` | `address` | Yes | The token whose pool changed |
+| `previousPool` | `address` | Yes | The previous pool address |
+| `newPool` | `address` | Yes | The new pool address |
+
+### RegistryModuleAdded
+
+```solidity
+event RegistryModuleAdded(address module);
+```
+
+
+
+**Parameters**
+
+| Name | Type | Indexed | Description |
+| -------- | --------- | ------- | ------------------------- |
+| `module` | `address` | No | The address of the module |
+
+### RegistryModuleRemoved
+
+```solidity
+event RegistryModuleRemoved(address indexed module);
+```
+
+
+
+**Parameters**
+
+| Name | Type | Indexed | Description |
+| -------- | --------- | ------- | ------------------------- |
+| `module` | `address` | Yes | The address of the module |
+
## Functions
### acceptAdminRole
@@ -582,7 +662,7 @@ EnumerableSet.AddressSet internal s_tokens;
### typeAndVersion
```solidity
-string public constant override typeAndVersion = "TokenAdminRegistry 1.6.1";
+string public constant override typeAndVersion = "TokenAdminRegistry 1.5.0";
```
diff --git a/src/content/ccip/api-reference/evm/v1.6.1/token-pool.mdx b/src/content/ccip/api-reference/evm/v1.6.1/token-pool.mdx
index a8d7d915d3f..196c4b4c270 100644
--- a/src/content/ccip/api-reference/evm/v1.6.1/token-pool.mdx
+++ b/src/content/ccip/api-reference/evm/v1.6.1/token-pool.mdx
@@ -124,15 +124,17 @@ event ChainRemoved(uint64 remoteChainSelector);
Emitted when tokens are locked or burned by the pool as part of an outbound cross-chain transfer.
```solidity
-event LockedOrBurned(address indexed sender, uint256 amount);
+event LockedOrBurned(uint64 indexed remoteChainSelector, address token, address sender, uint256 amount);
```
**Parameters**
-| Name | Type | Indexed | Description |
-| -------- | --------- | ------- | ---------------------------------------------- |
-| `sender` | `address` | Yes | The address initiating the lock/burn operation |
-| `amount` | `uint256` | No | The amount of tokens locked or burned |
+| Name | Type | Indexed | Description |
+| --------------------- | --------- | ------- | ----------------------------------------------- |
+| `remoteChainSelector` | `uint64` | Yes | The destination chain selector |
+| `token` | `address` | No | The address of the token being locked or burned |
+| `sender` | `address` | No | The address initiating the lock/burn operation |
+| `amount` | `uint256` | No | The amount of tokens locked or burned |
### RemotePoolAdded
@@ -154,16 +156,18 @@ event RemotePoolAdded(uint64 indexed remoteChainSelector, bytes remotePoolAddres
Emitted when tokens are released or minted by the pool as part of an inbound cross-chain transfer.
```solidity
-event ReleasedOrMinted(address indexed sender, address indexed recipient, uint256 amount);
+event ReleasedOrMinted(uint64 indexed remoteChainSelector, address token, address sender, address recipient, uint256 amount);
```
**Parameters**
-| Name | Type | Indexed | Description |
-| ----------- | --------- | ------- | --------------------------------------------------- |
-| `sender` | `address` | Yes | The address initiating the release/mint operation |
-| `recipient` | `address` | Yes | The address receiving the released or minted tokens |
-| `amount` | `uint256` | No | The amount of tokens released or minted |
+| Name | Type | Indexed | Description |
+| --------------------- | --------- | ------- | --------------------------------------------------- |
+| `remoteChainSelector` | `uint64` | Yes | The source chain selector |
+| `token` | `address` | No | The address of the token being released or minted |
+| `sender` | `address` | No | The address initiating the release/mint operation |
+| `recipient` | `address` | No | The address receiving the released or minted tokens |
+| `amount` | `uint256` | No | The amount of tokens released or minted |
### RemotePoolRemoved
@@ -223,7 +227,7 @@ event OutboundRateLimitConsumed(uint64 indexed remoteChainSelector, address toke
| --------------------- | --------- | ------- | --------------------------------------------- |
| `remoteChainSelector` | `uint64` | Yes | The destination chain selector |
| `token` | `address` | No | The address of the token being sent |
-| `amount` | `uint64` | No | The amount of tokens consuming the rate limit |
+| `amount` | `uint256` | No | The amount of tokens consuming the rate limit |
### InboundRateLimitConsumed
diff --git a/src/content/ccip/billing.mdx b/src/content/ccip/billing.mdx
index 70c41b6f128..9c6ecdc2ae9 100644
--- a/src/content/ccip/billing.mdx
+++ b/src/content/ccip/billing.mdx
@@ -17,7 +17,7 @@ import { Billing, TokenCalculator } from "@features/ccip/components/billing"
page.
-The CCIP billing model uses the `feeToken` specified in the [message](/ccip/api-reference/evm/v1.6.2/client#evm2anymessage) to pay a single fee on the source blockchain. CCIP uses a gas-locked fee payment mechanism to help ensure the reliable execution of cross-chain transactions regardless of destination blockchain gas spikes. For developers, this means you can simply pay on the source blockchain and CCIP will take care of execution on the destination blockchain.
+The CCIP billing model uses the `feeToken` specified in the [message](/ccip/api-reference/evm/v1.6.1/client#evm2anymessage) to pay a single fee on the source blockchain. CCIP uses a gas-locked fee payment mechanism to help ensure the reliable execution of cross-chain transactions regardless of destination blockchain gas spikes. For developers, this means you can simply pay on the source blockchain and CCIP will take care of execution on the destination blockchain.
CCIP supports fee payments in LINK and in alternative assets, including blockchain-native gas tokens and their ERC-20 wrapped versions. The payment model for CCIP is designed to significantly reduce friction for users and quickly scale CCIP to more blockchains by supporting fee payments that originate across a multitude of blockchains over time.
@@ -33,7 +33,7 @@ The fee is calculated by the following formula:
Where:
- - `fee`: The total fee for processing a [CCIP message](/ccip/api-reference/evm/v1.6.2/client#evm2anymessage). **Note:** Users can call the [getFee](/ccip/api-reference/evm/v1.6.2/i-router-client#getfee) function to estimate the fee.
+ - `fee`: The total fee for processing a [CCIP message](/ccip/api-reference/evm/v1.6.1/client#evm2anymessage). **Note:** Users can call the [getFee](/ccip/api-reference/evm/v1.6.1/i-router-client#getfee) function to estimate the fee.
- `blockchain fee`: This represents an estimation of the gas cost the node operators will pay to deliver the CCIP message to the destination blockchain.
- `network fee`: The fee paid to RMN node operators running the [Decentralized Oracle Network](/ccip/concepts/architecture/key-concepts#decentralized-oracle-network-don).
@@ -65,9 +65,9 @@ Where:
Where:
- - `gas limit`: This specifies the maximum amount of gas CCIP can consume to execute [ccipReceive()](/ccip/api-reference/evm/v1.6.2/ccip-receiver#ccipreceive) on the receiver contract located on the destination blockchain. Users set the gas limit in the [extra argument field](/ccip/api-reference/evm/v1.6.2/client#genericextraargsv2) of the CCIP message. **Note:** Remember to [carefully estimate the `gasLimit` that you set](/ccip/concepts/best-practices/evm#setting-gaslimit) for your destination contract so CCIP can have enough gas to execute `ccipReceive()`. Any unspent gas from this user-set limit is not refunded.
+ - `gas limit`: This specifies the maximum amount of gas CCIP can consume to execute [ccipReceive()](/ccip/api-reference/evm/v1.6.1/ccip-receiver#ccipreceive) on the receiver contract located on the destination blockchain. Users set the gas limit in the [extra argument field](/ccip/api-reference/evm/v1.6.1/client#genericextraargsv2) of the CCIP message. **Note:** Remember to [carefully estimate the `gasLimit` that you set](/ccip/concepts/best-practices/evm#setting-gaslimit) for your destination contract so CCIP can have enough gas to execute `ccipReceive()`. Any unspent gas from this user-set limit is not refunded.
- `destination gas overhead`: This is the fixed gas cost incurred on the destination blockchain by CCIP (Committing DON + Executing DON) and Risk Management Network.
- - `destination gas per payload`: This variable gas depends on the length of the data field in the [CCIP message](/ccip/api-reference/evm/v1.6.2/client#evm2anymessage). If there is no payload (CCIP only transfers tokens), the value is `0`.
+ - `destination gas per payload`: This variable gas depends on the length of the data field in the [CCIP message](/ccip/api-reference/evm/v1.6.1/client#evm2anymessage). If there is no payload (CCIP only transfers tokens), the value is `0`.
- `gas for token transfers`: This variable gas cost is for transferring tokens onto the destination blockchain. If there are no token transfers, the value is `0`.
#### Data availability cost
diff --git a/src/content/ccip/concepts/best-practices/evm.mdx b/src/content/ccip/concepts/best-practices/evm.mdx
index 35d0c4d4a12..70c1146ed6f 100644
--- a/src/content/ccip/concepts/best-practices/evm.mdx
+++ b/src/content/ccip/concepts/best-practices/evm.mdx
@@ -28,19 +28,19 @@ Before you deploy your cross-chain dApps to mainnet, make sure that your dApps f
## Verify destination chain
-Before calling the router's `ccipSend` [function](/ccip/api-reference/evm/v1.6.2/i-router-client#ccipsend), ensure that your code allows users to send CCIP messages to trusted destination chains.
+Before calling the router's `ccipSend` [function](/ccip/api-reference/evm/v1.6.1/i-router-client#ccipsend), ensure that your code allows users to send CCIP messages to trusted destination chains.
**Example**: For an example of how to verify the destination chain, refer to the [Transfer Tokens with Data - Defensive](/ccip/tutorials/evm/programmable-token-transfers-defensive#tutorial) example.
## Verify source chain
-When implementing the `ccipReceive` [method](/ccip/api-reference/evm/v1.6.2/ccip-receiver#ccipreceive) in a contract residing on the destination chain, ensure to verify the source chain of the incoming CCIP message. This verification ensures that CCIP messages can only be received from trusted source chains.
+When implementing the `ccipReceive` [method](/ccip/api-reference/evm/v1.6.1/ccip-receiver#ccipreceive) in a contract residing on the destination chain, ensure to verify the source chain of the incoming CCIP message. This verification ensures that CCIP messages can only be received from trusted source chains.
**Example**: For an example of how to verify the source chain, refer to the [Transfer Tokens with Data - Defensive](/ccip/tutorials/evm/programmable-token-transfers-defensive#tutorial) example.
## Verify sender
-When implementing the `ccipReceive` [method](/ccip/api-reference/evm/v1.6.2/ccip-receiver#ccipreceive) in a contract residing on the destination chain, it's important to validate the sender of the incoming CCIP message. This check ensures that CCIP messages are received only from trusted sender addresses.
+When implementing the `ccipReceive` [method](/ccip/api-reference/evm/v1.6.1/ccip-receiver#ccipreceive) in a contract residing on the destination chain, it's important to validate the sender of the incoming CCIP message. This check ensures that CCIP messages are received only from trusted sender addresses.
**Note**: Depending on your use case, this verification might not always be necessary.
@@ -48,13 +48,13 @@ When implementing the `ccipReceive` [method](/ccip/api-reference/evm/v1.6.2/ccip
## Verify router addresses
-When you implement the `ccipReceive` [method](/ccip/api-reference/evm/v1.6.2/ccip-receiver#ccipreceive) in the contract residing on the destination chain, validate that the `msg.sender` is the correct router address. This verification ensures that only the router contract can call the `ccipReceive` function on the receiver contract and is for developers that want to restrict which accounts are allowed to call `ccipReceive`.
+When you implement the `ccipReceive` [method](/ccip/api-reference/evm/v1.6.1/ccip-receiver#ccipreceive) in the contract residing on the destination chain, validate that the `msg.sender` is the correct router address. This verification ensures that only the router contract can call the `ccipReceive` function on the receiver contract and is for developers that want to restrict which accounts are allowed to call `ccipReceive`.
**Example**: For an example of how to verify the router, refer to the [Transfer Tokens with Data - Defensive](/ccip/tutorials/evm/programmable-token-transfers-defensive#tutorial) example.
## Using `extraArgs`
-The purpose of [`extraArgs`](/ccip/api-reference/evm/v1.6.2/client#genericextraargsv2) is to allow compatibility with future CCIP upgrades. To get this benefit, make sure that `extraArgs` is mutable in production deployments. This allows you to build it offchain and pass it in a call to a function or store it in a variable that you can update on-demand.
+The purpose of [`extraArgs`](/ccip/api-reference/evm/v1.6.1/client#genericextraargsv2) is to allow compatibility with future CCIP upgrades. To get this benefit, make sure that `extraArgs` is mutable in production deployments. This allows you to build it offchain and pass it in a call to a function or store it in a variable that you can update on-demand.
If `extraArgs` are left empty, a default of _200000_ `gasLimit` will be set.
@@ -75,7 +75,7 @@ To estimate the accurate gas limit for your destination contract, consider the f
### Setting `allowOutOfOrderExecution`
-The `allowOutOfOrderExecution` parameter enables you to control the execution order of your messages on the destination blockchain. This parameter is part of [`GenericExtraArgsV2`](/ccip/api-reference/evm/v1.6.2/client#genericextraargsv2) and is available only on lanes where the **Out of Order Execution** property is set to **Optional** or **Required**. Refer to the [CCIP Directory](/ccip/directory) to determine if your target lane supports this feature.
+The `allowOutOfOrderExecution` parameter enables you to control the execution order of your messages on the destination blockchain. This parameter is part of [`GenericExtraArgsV2`](/ccip/api-reference/evm/v1.6.1/client#genericextraargsv2) and is available only on lanes where the **Out of Order Execution** property is set to **Optional** or **Required**. Refer to the [CCIP Directory](/ccip/directory) to determine if your target lane supports this feature.
#### Best Practices
@@ -163,7 +163,7 @@ Monitoring the health of your token pool's liquidity is essential for ensuring t
### Use the `provideLiquidity` and `withdrawLiquidity` Functions Properly
-In pools like the **LockReleaseTokenPool**, liquidity providers can add and remove liquidity using the [`provideLiquidity`](/ccip/api-reference/evm/v1.6.2/lock-release-token-pool#provideliquidity) and [`withdrawLiquidity`](/ccip/api-reference/evm/v1.6.2/lock-release-token-pool#withdrawliquidity) functions.
+In pools like the **LockReleaseTokenPool**, liquidity providers can add and remove liquidity using the [`provideLiquidity`](/ccip/api-reference/evm/v1.6.1/lock-release-token-pool#provideliquidity) and [`withdrawLiquidity`](/ccip/api-reference/evm/v1.6.1/lock-release-token-pool#withdrawliquidity) functions.
- **Best Practice**: Only trusted entities, such as a designated rebalancer, should be allowed to manage liquidity. Make sure to configure liquidity controls securely to prevent unauthorized liquidity manipulation.
diff --git a/src/content/ccip/concepts/cross-chain-token/evm/token-pools.mdx b/src/content/ccip/concepts/cross-chain-token/evm/token-pools.mdx
index 0e8b2c144d7..36bf52164b6 100644
--- a/src/content/ccip/concepts/cross-chain-token/evm/token-pools.mdx
+++ b/src/content/ccip/concepts/cross-chain-token/evm/token-pools.mdx
@@ -25,12 +25,12 @@ When CCIP interacts with your token pools, it expects the presence of the follow
1. **Sending Tokens (Source)**:
- This must include the following function: `lockOrBurn(Pool.LockOrBurnInV1 calldata lockOrBurnIn) external returns (Pool.LockOrBurnOutV1 memory)`.
- This function locks or burns tokens depending on the implementation of the token pool.
- - See implementation details in [`TokenPool.lockOrBurn`](/ccip/api-reference/evm/v1.6.2/token-pool#lockorburn).
+ - See implementation details in [`TokenPool.lockOrBurn`](/ccip/api-reference/evm/v1.6.1/token-pool#lockorburn).
1. **Receiving Tokens (Destination)**:
- This must include the following function: `releaseOrMint(Pool.ReleaseOrMintInV1 calldata releaseOrMintIn) external returns (Pool.ReleaseOrMintOutV1 memory)`.
- This function releases or mints tokens depending on the implementation of the token pool.
- - See implementation details in [`TokenPool.releaseOrMint`](/ccip/api-reference/evm/v1.6.2/token-pool#releaseormint).
+ - See implementation details in [`TokenPool.releaseOrMint`](/ccip/api-reference/evm/v1.6.1/token-pool#releaseormint).
### Gas Requirements
diff --git a/src/content/ccip/concepts/manual-execution.mdx b/src/content/ccip/concepts/manual-execution.mdx
index cce8d2832f3..278b7ea1daf 100644
--- a/src/content/ccip/concepts/manual-execution.mdx
+++ b/src/content/ccip/concepts/manual-execution.mdx
@@ -28,7 +28,7 @@ In general, messages are successfully delivered and processed via CCIP as descri
- The receiver contract on the destination blockchain reverted due to an unhandled exception such as a logical error.
- For token pools, if the combined execution of the required functions (`balanceOf` checks and `releaseOrMint`) exceeds the default gas limit of **90,000 gas** on the destination blockchain, CCIP execution will fail. Read the Token pools [common requirements](/ccip/concepts/cross-chain-token/evm/token-pools#common-requirements) to learn more.
- - The receiver contract on the destination blockchain reverted due to the gas limit being insufficient to execute the triggered function (Note: The gas limit value is set in the [extraArgs](/ccip/api-reference/evm/v1.6.2/client#genericextraargsv2) param of the message).
+ - The receiver contract on the destination blockchain reverted due to the gas limit being insufficient to execute the triggered function (Note: The gas limit value is set in the [extraArgs](/ccip/api-reference/evm/v1.6.1/client#genericextraargsv2) param of the message).
The flowchart below displays the process of a cross-chain transaction, detailing the steps involved in the manual execution:
@@ -45,7 +45,7 @@ The flowchart below displays the process of a cross-chain transaction, detailing
1. The execution on the destination blockchain works as follows:
1. If the message involves token transfers, the tokens are first transferred to the receiver. **Important:** If the combined execution of the required functions (`balanceOf` checks of the token contract and `releaseOrMint` of the token pool contract) exceeds the default gas limit of **90,000 gas** on the destination blockchain, CCIP execution will fail, and the transaction will become eligible for manual execution. It is highly recommended to design your token pools to stay within this gas limit to avoid execution failure. Read the Token Pools [common requirements](/ccip/concepts/cross-chain-token/evm/token-pools#common-requirements) to learn more.
- If the receiver is an EOA, then this transaction is considered complete with no further processing.
- - If the receiver is a smart contract, the [ccipReceive](/ccip/api-reference/evm/v1.6.2/ccip-receiver#ccipreceive) function is invoked after the token transfer. The ccipReceive function processes the CCIP message and any user-specified logic in the receiver contract. The execution of the CCIP message is atomic (all or none). If the ccipReceive function successfully executes, then all aspects of the transaction are complete, and there is no revert. If, however, there is an issue in the receiver execution due to insufficient gas limit or unhandled exceptions, the attempted token transfer will also revert. The transaction then becomes eligible for manual execution.
+ - If the receiver is a smart contract, the [ccipReceive](/ccip/api-reference/evm/v1.6.1/ccip-receiver#ccipreceive) function is invoked after the token transfer. The ccipReceive function processes the CCIP message and any user-specified logic in the receiver contract. The execution of the CCIP message is atomic (all or none). If the ccipReceive function successfully executes, then all aspects of the transaction are complete, and there is no revert. If, however, there is an issue in the receiver execution due to insufficient gas limit or unhandled exceptions, the attempted token transfer will also revert. The transaction then becomes eligible for manual execution.
1. If the message does not involve token transfers, only arbitrary messaging, and the receiver execution fails due to gas limits or unhandled exceptions, the transaction becomes eligible for manual execution.
diff --git a/src/content/ccip/getting-started/evm.mdx b/src/content/ccip/getting-started/evm.mdx
index 76a90c423a9..96d0822ddee 100644
--- a/src/content/ccip/getting-started/evm.mdx
+++ b/src/content/ccip/getting-started/evm.mdx
@@ -177,24 +177,24 @@ When deploying the contract, you define the router address and the LINK contract
The router address provides functions that are required for this example:
-- The `getFee` [function](/ccip/api-reference/evm/v1.6.2/i-router-client#getfee) to estimate the CCIP fees.
-- The `ccipSend` [function](/ccip/api-reference/evm/v1.6.2/i-router-client#ccipsend) to send CCIP messages.
+- The `getFee` [function](/ccip/api-reference/evm/v1.6.1/i-router-client#getfee) to estimate the CCIP fees.
+- The `ccipSend` [function](/ccip/api-reference/evm/v1.6.1/i-router-client#ccipsend) to send CCIP messages.
#### Sending data
The `sendMessage` function completes several operations:
-1. Construct a CCIP-compatible message using the `EVM2AnyMessage` [struct](/ccip/api-reference/evm/v1.6.2/client#evm2anymessage):
+1. Construct a CCIP-compatible message using the `EVM2AnyMessage` [struct](/ccip/api-reference/evm/v1.6.1/client#evm2anymessage):
- The `receiver` address is encoded in bytes format to accommodate non-EVM destination blockchains with distinct address formats. The encoding is achieved through [abi.encode](https://docs.soliditylang.org/en/develop/abi-spec.html).
- The `data` is encoded from a string text to bytes using [abi.encode](https://docs.soliditylang.org/en/develop/abi-spec.html).
- - The `tokenAmounts` is an array. Each element comprises a [struct](/ccip/api-reference/evm/v1.6.2/client#evmtokenamount) that contains the token address and amount. In this example, the array is empty because no tokens are sent.
+ - The `tokenAmounts` is an array. Each element comprises a [struct](/ccip/api-reference/evm/v1.6.1/client#evmtokenamount) that contains the token address and amount. In this example, the array is empty because no tokens are sent.
- The `extraArgs` specify the `gasLimit` for relaying the CCIP message to the recipient contract on the destination blockchain. In this example, the `gasLimit` is set to `200000`.
- The `feeToken` designates the token address used for CCIP fees. Here, `address(linkToken)` signifies payment in LINK.
-1. Compute the fees by invoking the router's `getFee` [function](/ccip/api-reference/evm/v1.6.2/i-router-client#getfee).
+1. Compute the fees by invoking the router's `getFee` [function](/ccip/api-reference/evm/v1.6.1/i-router-client#getfee).
1. Ensure that your contract balance in LINK is enough to cover the fees.
1. Grant the router contract permission to deduct the fees from the contract's LINK balance.
-1. Dispatch the CCIP message to the destination chain by executing the router's `ccipSend` [function](/ccip/api-reference/evm/v1.6.2/i-router-client#ccipsend).
+1. Dispatch the CCIP message to the destination chain by executing the router's `ccipSend` [function](/ccip/api-reference/evm/v1.6.1/i-router-client#ccipsend).
@@ -206,15 +206,15 @@ The smart contract in this tutorial is designed to interact with CCIP to receive
#### Initializing the contract
-When you deploy the contract, you define the router address. The receiver contract inherits from the [CCIPReceiver.sol](/ccip/api-reference/evm/v1.6.2/ccip-receiver) contract, which uses the router address.
+When you deploy the contract, you define the router address. The receiver contract inherits from the [CCIPReceiver.sol](/ccip/api-reference/evm/v1.6.1/ccip-receiver) contract, which uses the router address.
#### Receiving data
On the destination blockchain:
-1. The CCIP Router invokes the `ccipReceive` [function](/ccip/api-reference/evm/v1.6.2/ccip-receiver#ccipreceive). **Note**: This function is protected by the `onlyRouter` [modifier](/ccip/api-reference/evm/v1.6.2/ccip-receiver#onlyrouter), which ensures that only the router can call the receiver contract.
-1. The `ccipReceive` [function](/ccip/api-reference/evm/v1.6.2/ccip-receiver#ccipreceive) calls an internal function `_ccipReceive` [function](/ccip/api-reference/evm/v1.6.2/ccip-receiver#_ccipreceive). The receiver contract implements this function.
-1. This `_ccipReceive` [function](/ccip/api-reference/evm/v1.6.2/ccip-receiver#_ccipreceive) expects an `Any2EVMMessage` [struct](/ccip/api-reference/evm/v1.6.2/client#any2evmmessage) that contains the following values:
+1. The CCIP Router invokes the `ccipReceive` [function](/ccip/api-reference/evm/v1.6.1/ccip-receiver#ccipreceive). **Note**: This function is protected by the `onlyRouter` [modifier](/ccip/api-reference/evm/v1.6.1/ccip-receiver#onlyrouter), which ensures that only the router can call the receiver contract.
+1. The `ccipReceive` [function](/ccip/api-reference/evm/v1.6.1/ccip-receiver#ccipreceive) calls an internal function `_ccipReceive` [function](/ccip/api-reference/evm/v1.6.1/ccip-receiver#_ccipreceive). The receiver contract implements this function.
+1. This `_ccipReceive` [function](/ccip/api-reference/evm/v1.6.1/ccip-receiver#_ccipreceive) expects an `Any2EVMMessage` [struct](/ccip/api-reference/evm/v1.6.1/client#any2evmmessage) that contains the following values:
- The CCIP `messageId`.
- The `sourceChainSelector`.
- The `sender` address in bytes format. The sender is a contract deployed on an EVM-compatible blockchain, so the address is decoded from bytes to an Ethereum address using the [ABI specification](https://docs.soliditylang.org/en/v0.8.20/abi-spec.html).
@@ -226,6 +226,6 @@ The example was simplified for learning purposes. For production code, use the f
- Validate the source chain.
- Depending on your use case, analyze whether you should validate the sender address.
-Note that the receiver contract in this example inherits from the base contract [CCIPReceiver.sol](/ccip/api-reference/evm/v1.6.2/ccip-receiver), which uses the `onlyRouter` [modifier](/ccip/api-reference/evm/v1.6.2/ccip-receiver#onlyrouter) to ensure that only the router can call the `ccipReceive` [function](/ccip/api-reference/evm/v1.6.2/ccip-receiver#ccipreceive).
+Note that the receiver contract in this example inherits from the base contract [CCIPReceiver.sol](/ccip/api-reference/evm/v1.6.1/ccip-receiver), which uses the `onlyRouter` [modifier](/ccip/api-reference/evm/v1.6.1/ccip-receiver#onlyrouter) to ensure that only the router can call the `ccipReceive` [function](/ccip/api-reference/evm/v1.6.1/ccip-receiver#ccipreceive).
diff --git a/src/content/ccip/service-limits/evm.mdx b/src/content/ccip/service-limits/evm.mdx
index 84202d3fd65..f5ad21fff10 100644
--- a/src/content/ccip/service-limits/evm.mdx
+++ b/src/content/ccip/service-limits/evm.mdx
@@ -28,8 +28,8 @@ import CcipCommon from "@features/ccip/CcipCommon.astro"
| Item | Description | Limit |
| -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- |
-| Maximum message `data` length | `data` payload sent within the [CCIP message](/ccip/api-reference/evm/v1.6.2/client#evm2anymessage) | 30 kilobytes |
-| Message Execution Gas Limit | User specified [gas limit](/ccip/api-reference/evm/v1.6.2/client#genericextraargsv2)
Exception: Lanes originating from CORN have a maximum gas limit of 500,000. | 3,000,000 |
+| Maximum message `data` length | `data` payload sent within the [CCIP message](/ccip/api-reference/evm/v1.6.1/client#evm2anymessage) | 30 kilobytes |
+| Message Execution Gas Limit | User specified [gas limit](/ccip/api-reference/evm/v1.6.1/client#genericextraargsv2)
Exception: Lanes originating from CORN have a maximum gas limit of 500,000. | 3,000,000 |
| Maximum number of tokens | Maximum number of distinct tokens a user can transfer in a single transaction. | 1 |
| Token Pool Execution Gas Limit | Maximum gas for executing the combined steps in token pools during cross-chain transfers, including: (1) `balanceOf` check before minting/releasing, (2) `releaseOrMint` function, and (3) `balanceOf` check after minting/releasing. For more details on building custom token pools and handling gas constraints, refer to the [Token Pools documentation](/ccip/concepts/cross-chain-token/evm/token-pools#common-requirements). | 90,000 |
@@ -37,8 +37,8 @@ import CcipCommon from "@features/ccip/CcipCommon.astro"
| Item | Description | Limit |
| -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- |
-| Maximum message `data` length | `data` payload sent within the [CCIP message](/ccip/api-reference/evm/v1.6.2/client#evm2anymessage) | 30 kilobytes |
-| Message Execution Gas Limit | User specified [gas limit](/ccip/api-reference/evm/v1.6.2/client#genericextraargsv2)
Exception: Lanes originating from CORN have a maximum gas limit of 500,000. | 3,000,000 |
+| Maximum message `data` length | `data` payload sent within the [CCIP message](/ccip/api-reference/evm/v1.6.1/client#evm2anymessage) | 30 kilobytes |
+| Message Execution Gas Limit | User specified [gas limit](/ccip/api-reference/evm/v1.6.1/client#genericextraargsv2)
Exception: Lanes originating from CORN have a maximum gas limit of 500,000. | 3,000,000 |
| Maximum number of tokens | Maximum number of distinct tokens a user can transfer in a single transaction | 1 |
| Token Pool Execution Gas Limit | Maximum gas for executing the combined steps in token pools during cross-chain transfers, including: (1) `balanceOf` check before minting/releasing, (2) `releaseOrMint` function, and (3) `balanceOf` check after minting/releasing. For more details on building custom token pools and handling gas constraints, refer to the [Token Pools documentation](/ccip/concepts/cross-chain-token/evm/token-pools#common-requirements). | 90,000 |
diff --git a/src/content/ccip/tutorials/aptos/destination/build-messages.mdx b/src/content/ccip/tutorials/aptos/destination/build-messages.mdx
index a0e44160b50..02c07ee607a 100644
--- a/src/content/ccip/tutorials/aptos/destination/build-messages.mdx
+++ b/src/content/ccip/tutorials/aptos/destination/build-messages.mdx
@@ -28,7 +28,7 @@ This guide explains how to construct CCIP Messages from Ethereum Virtual Machine
## CCIP Message Structure
-CCIP messages from EVM are built using the [`EVM2AnyMessage`](/ccip/api-reference/evm/v1.6.2/client#evm2anymessage) struct from the [`Client.sol`](/ccip/api-reference/evm/v1.6.2/client) library. The `EVM2AnyMessage` struct is defined as follows:
+CCIP messages from EVM are built using the [`EVM2AnyMessage`](/ccip/api-reference/evm/v1.6.1/client#evm2anymessage) struct from the [`Client.sol`](/ccip/api-reference/evm/v1.6.1/client) library. The `EVM2AnyMessage` struct is defined as follows:
```solidity
struct EVM2AnyMessage {
@@ -98,7 +98,7 @@ const arbitraryMessageData = hexlify(toUtf8Bytes("Hello Aptos"))
## extraArgs
-For Aptos-bound messages, the `extraArgs` parameter is a byte string composed of a 4-byte tag (`0x181dcf10`) prepended to the ABI-encoded tuple `(uint256 gasLimit, bool allowOutOfOrderExecution)`. This format is specified in the [`GenericExtraArgsV2`](/ccip/api-reference/evm/v1.6.2/client#genericextraargsv2) reference.
+For Aptos-bound messages, the `extraArgs` parameter is a byte string composed of a 4-byte tag (`0x181dcf10`) prepended to the ABI-encoded tuple `(uint256 gasLimit, bool allowOutOfOrderExecution)`. This format is specified in the [`GenericExtraArgsV2`](/ccip/api-reference/evm/v1.6.1/client#genericextraargsv2) reference.
### gasLimit
@@ -298,7 +298,7 @@ These tutorials provide complete, working examples using the concepts covered in
## Further Resources
-- [**CCIP EVM Client API Reference**](/ccip/api-reference/evm/v1.6.2/client): Complete technical details about the `EVM2AnyMessage` struct, helper functions, and message construction on EVM chains.
+- [**CCIP EVM Client API Reference**](/ccip/api-reference/evm/v1.6.1/client): Complete technical details about the `EVM2AnyMessage` struct, helper functions, and message construction on EVM chains.
- **Aptos TS-SDK Docs**: For more information on building the receiving Aptos module, refer to the [official Aptos TS-SDK docs](https://aptos.dev/en/build/sdks/ts-sdk).
diff --git a/src/content/ccip/tutorials/aptos/destination/token-transfers.mdx b/src/content/ccip/tutorials/aptos/destination/token-transfers.mdx
index a25f7ef572d..dedaa4299bf 100644
--- a/src/content/ccip/tutorials/aptos/destination/token-transfers.mdx
+++ b/src/content/ccip/tutorials/aptos/destination/token-transfers.mdx
@@ -58,7 +58,7 @@ In this section, you'll execute a token transfer from Ethereum Sepolia to Aptos
### Token Transfer Configuration
-The core of the transfer is configuring the [`EVM2AnyMessage`](/ccip/api-reference/evm/v1.6.2/client#evm2anymessage) correctly. The script handles this for you by calling a `buildCCIPMessage` function. Here's what the configuration looks like within the script:
+The core of the transfer is configuring the [`EVM2AnyMessage`](/ccip/api-reference/evm/v1.6.1/client#evm2anymessage) correctly. The script handles this for you by calling a `buildCCIPMessage` function. Here's what the configuration looks like within the script:
```typescript
// Inside the transferTokenPayNative function for example:
@@ -123,11 +123,11 @@ The `evm2aptos/ccipSendTokenRouter.ts` script automates the entire cross-chain t
1. **Selects Chain Configuration**: Selects the correct RPC URL and contract addresses for the Ethereum Sepolia testnet based on the `--sourceChain sepolia` argument.
1. **Builds the CCIP Message**: Configures the message with the parameters shown above.
-1. **Calculates Fees**: Calls the [`getFee`](/ccip/api-reference/evm/v1.6.2/i-router-client#getfee) function on the source chain's Router to determine the required CCIP fee.
+1. **Calculates Fees**: Calls the [`getFee`](/ccip/api-reference/evm/v1.6.1/i-router-client#getfee) function on the source chain's Router to determine the required CCIP fee.
1. **Approves Tokens**:
- Approves the Router to spend the CCIP-BnM tokens you are transferring.
- If paying with LINK, it also approves the Router to spend the required amount of LINK tokens for the fee.
-1. **Executes Transfer**: Calls the [`ccipSend`](/ccip/api-reference/evm/v1.6.2/i-router-client#ccipsend) function on the CCIP Router contract to initiate the cross-chain transfer, sending native tokens for the fee if specified.
+1. **Executes Transfer**: Calls the [`ccipSend`](/ccip/api-reference/evm/v1.6.1/i-router-client#ccipsend) function on the CCIP Router contract to initiate the cross-chain transfer, sending native tokens for the fee if specified.
1. **Returns Message ID**: Parses the transaction receipt to find and display the `CCIPMessageSent` event and its unique `messageId`.
## Running the Token Transfer
diff --git a/src/content/ccip/tutorials/evm/ccipreceive-gaslimit.mdx b/src/content/ccip/tutorials/evm/ccipreceive-gaslimit.mdx
index 347ab0428f4..e7b48b9fd10 100644
--- a/src/content/ccip/tutorials/evm/ccipreceive-gaslimit.mdx
+++ b/src/content/ccip/tutorials/evm/ccipreceive-gaslimit.mdx
@@ -15,7 +15,7 @@ metadata:
import CcipCommon from "@features/ccip/CcipCommon.astro"
import { Aside } from "@components"
-When constructing a [CCIP message](/ccip/api-reference/evm/v1.6.2/client#evm2anymessage), it's crucial to set the gas limit accurately. The gas limit represents the maximum amount of gas consumed to execute the [`ccipReceive`](/ccip/api-reference/evm/v1.6.2/ccip-receiver#ccipreceive) function on the CCIP Receiver, which influences the transaction fees for sending a CCIP message. Notably, unused gas is not reimbursed, making it essential to estimate the gas limit carefully:
+When constructing a [CCIP message](/ccip/api-reference/evm/v1.6.1/client#evm2anymessage), it's crucial to set the gas limit accurately. The gas limit represents the maximum amount of gas consumed to execute the [`ccipReceive`](/ccip/api-reference/evm/v1.6.1/ccip-receiver#ccipreceive) function on the CCIP Receiver, which influences the transaction fees for sending a CCIP message. Notably, unused gas is not reimbursed, making it essential to estimate the gas limit carefully:
- Setting the gas limit too low will cause the transaction to revert when CCIP calls `ccipReceive` on the CCIP Receiver, which requires a manual re-execution with an increased gas limit. For more details about this scenario, read the [Manual Execution](/ccip/tutorials/evm/manual-execution) guide.
- Conversely, an excessively high gas limit leads to higher fees.
diff --git a/src/content/ccip/tutorials/evm/cross-chain-tokens/index.mdx b/src/content/ccip/tutorials/evm/cross-chain-tokens/index.mdx
index 77ae56f7238..e4c5f5249dc 100644
--- a/src/content/ccip/tutorials/evm/cross-chain-tokens/index.mdx
+++ b/src/content/ccip/tutorials/evm/cross-chain-tokens/index.mdx
@@ -38,7 +38,7 @@ In the following tutorials, we will walk through each step of the process to giv
### Key Steps to Keep in Mind:
1. **Token Deployment**: If the token is not yet deployed, you'll deploy an [ERC20-compatible token](/ccip/concepts/cross-chain-token/evm/tokens).
-2. **Admin Registration**: The token administrator must be registered in the [`TokenAdminRegistry`](/ccip/api-reference/evm/v1.6.2/token-admin-registry) via self-service.
+2. **Admin Registration**: The token administrator must be registered in the [`TokenAdminRegistry`](/ccip/api-reference/evm/v1.6.1/token-admin-registry) via self-service.
3. **Pool Deployment and Configuration**: [Token pools](/ccip/concepts/cross-chain-token/evm/token-pools#common-requirements) are deployed, linked to tokens, and configured to manage cross-chain token transfers.
The tutorials will implement the logic of this process, which involves deploying and configuring token pools and registering administrative roles, step-by-step.
diff --git a/src/content/ccip/tutorials/evm/cross-chain-tokens/register-from-safe-burn-mint-hardhat.mdx b/src/content/ccip/tutorials/evm/cross-chain-tokens/register-from-safe-burn-mint-hardhat.mdx
index f03cf02a144..e4f2b6505b8 100644
--- a/src/content/ccip/tutorials/evm/cross-chain-tokens/register-from-safe-burn-mint-hardhat.mdx
+++ b/src/content/ccip/tutorials/evm/cross-chain-tokens/register-from-safe-burn-mint-hardhat.mdx
@@ -78,16 +78,16 @@ We will cover the following key steps:
1. **Deploying Tokens**: You will deploy your [`BurnMintERC20`](https://github.com/smartcontractkit/chainlink-evm/blob/contracts-solidity/1.5.0/contracts/src/v0.8/shared/token/ERC20/BurnMintERC20.sol) tokens on the Ethereum Sepolia and BASE Sepolia testnets and transfer ownership to the Safe account.
-1. **Deploying Token Pools**: Once your tokens are deployed, you will deploy [`BurnMintTokenPool`](/ccip/api-reference/evm/v1.6.2/burn-mint-token-pool) token pools on Ethereum Sepolia and BASE Sepolia. The Safe account will own each token pool.
+1. **Deploying Token Pools**: Once your tokens are deployed, you will deploy [`BurnMintTokenPool`](/ccip/api-reference/evm/v1.6.1/burn-mint-token-pool) token pools on Ethereum Sepolia and BASE Sepolia. The Safe account will own each token pool.
1. **Claiming and Accepting the Admin Role**: This is a two-step process that will be managed using the Safe multi-signature account. It involves creating and signing multiple meta-transactions off-chain before executing them on-chain to register Safe as the token admin and accept the admin role for managing the tokens and token pools.
- 1. You will call the [`RegistryModuleOwnerCustom`](/ccip/api-reference/evm/v1.6.2/registry-module-owner-custom) contract's [`registerAdminViaGetCCIPAdmin`](/ccip/api-reference/evm/v1.6.2/registry-module-owner-custom#registeradminviagetccipadmin) function to register the Safe as the token admin. This role is required to enable your token in CCIP.
+ 1. You will call the [`RegistryModuleOwnerCustom`](/ccip/api-reference/evm/v1.6.1/registry-module-owner-custom) contract's [`registerAdminViaGetCCIPAdmin`](/ccip/api-reference/evm/v1.6.1/registry-module-owner-custom#registeradminviagetccipadmin) function to register the Safe as the token admin. This role is required to enable your token in CCIP.
- 1. Once claimed, you will call the [`TokenAdminRegistry`](/ccip/api-reference/evm/v1.6.2/token-admin-registry) contract's [`acceptAdminRole`](/ccip/api-reference/evm/v1.6.2/token-admin-registry#acceptadminrole) function to complete the registration process.
+ 1. Once claimed, you will call the [`TokenAdminRegistry`](/ccip/api-reference/evm/v1.6.1/token-admin-registry) contract's [`acceptAdminRole`](/ccip/api-reference/evm/v1.6.1/token-admin-registry#acceptadminrole) function to complete the registration process.
Meta-transactions are used here to batch these two actions, allowing both steps to be executed efficiently. The meta-transactions are created off-chain and signed by each of the two required Safe owners. This off-chain signing process reduces gas costs and enhances security, as the transactions are only broadcasted to the blockchain once all required signatures are collected.
-1. **Linking Tokens to Pools**: You will use the Safe account to call the [`TokenAdminRegistry`](/ccip/api-reference/evm/v1.6.2/token-admin-registry) contract's [`setPool`](/ccip/api-reference/evm/v1.6.2/token-admin-registry#setpool) function to associate each token with its respective token pool.
+1. **Linking Tokens to Pools**: You will use the Safe account to call the [`TokenAdminRegistry`](/ccip/api-reference/evm/v1.6.1/token-admin-registry) contract's [`setPool`](/ccip/api-reference/evm/v1.6.1/token-admin-registry#setpool) function to associate each token with its respective token pool.
1. **Configuring Token Pools**: You will configure each token pool by setting cross-chain transfer parameters, such as token pool rate limits and enabled destination chains, using multisig transactions through the Safe account.
diff --git a/src/content/ccip/tutorials/evm/cross-chain-tokens/update-rate-limiters-foundry.mdx b/src/content/ccip/tutorials/evm/cross-chain-tokens/update-rate-limiters-foundry.mdx
index 61b9e7904a2..88d1cd41b11 100644
--- a/src/content/ccip/tutorials/evm/cross-chain-tokens/update-rate-limiters-foundry.mdx
+++ b/src/content/ccip/tutorials/evm/cross-chain-tokens/update-rate-limiters-foundry.mdx
@@ -38,7 +38,7 @@ This tutorial will guide you through the process of updating the rate limiter se
- [Register from an EOA (Burn & Mint)](/ccip/tutorials/evm/cross-chain-tokens/register-from-eoa-burn-mint-hardhat)
- [Register from an EOA (Lock & Mint)](/ccip/tutorials/evm/cross-chain-tokens/register-from-eoa-lock-mint-hardhat)
-- **Admin access**: Ensure you have the necessary privileges to call the [setChainRateLimiterConfig](/ccip/api-reference/evm/v1.6.2/token-pool#setchainratelimiterconfig) function for your token pools.
+- **Admin access**: Ensure you have the necessary privileges to call the [setChainRateLimiterConfig](/ccip/api-reference/evm/v1.6.1/token-pool#setchainratelimiterconfig) function for your token pools.
## Before You Begin
@@ -228,7 +228,7 @@ This means there are currently no restrictions on token transfers. In the next s
### Update rate limiter settings
-Use the `UpdateRateLimiters` script to update the rate limiter configurations for an existing chain connection in your token pool. This script interacts with the [`setChainRateLimiterConfig`](/ccip/api-reference/evm/v1.6.2/token-pool#setchainratelimiterconfig) function of the `TokenPool` contract, allowing you to adjust the rate limits without altering other configurations like remote pool addresses.
+Use the `UpdateRateLimiters` script to update the rate limiter configurations for an existing chain connection in your token pool. This script interacts with the [`setChainRateLimiterConfig`](/ccip/api-reference/evm/v1.6.1/token-pool#setchainratelimiterconfig) function of the `TokenPool` contract, allowing you to adjust the rate limits without altering other configurations like remote pool addresses.
The `UpdateRateLimiters` task allows you to:
diff --git a/src/content/ccip/tutorials/evm/cross-chain-tokens/update-rate-limiters-hardhat.mdx b/src/content/ccip/tutorials/evm/cross-chain-tokens/update-rate-limiters-hardhat.mdx
index ba9d7df438f..bc0797ec1c1 100644
--- a/src/content/ccip/tutorials/evm/cross-chain-tokens/update-rate-limiters-hardhat.mdx
+++ b/src/content/ccip/tutorials/evm/cross-chain-tokens/update-rate-limiters-hardhat.mdx
@@ -38,7 +38,7 @@ This tutorial will guide you through the process of updating the rate limiter se
- [Register from an EOA (Burn & Mint)](/ccip/tutorials/evm/cross-chain-tokens/register-from-eoa-burn-mint-hardhat)
- [Register from an EOA (Lock & Mint)](/ccip/tutorials/evm/cross-chain-tokens/register-from-eoa-lock-mint-hardhat)
-- **Admin access**: Ensure you have the necessary privileges to call the [setChainRateLimiterConfig](/ccip/api-reference/evm/v1.6.2/token-pool#setchainratelimiterconfig) function for your token pools.
+- **Admin access**: Ensure you have the necessary privileges to call the [setChainRateLimiterConfig](/ccip/api-reference/evm/v1.6.1/token-pool#setchainratelimiterconfig) function for your token pools.
## Before You Begin
@@ -231,7 +231,7 @@ Below is an explanation of the parameters used:
### Update rate limiter settings
-Use the `updateRateLimiters` task to update the rate limiter configurations for an existing chain connection in your token pool. This task specifically interacts with the [`setChainRateLimiterConfig`](/ccip/api-reference/evm/v1.6.2/token-pool#setchainratelimiterconfig) function of the `TokenPool` contract, allowing you to adjust the rate limits without altering other configurations like remote pool addresses.
+Use the `updateRateLimiters` task to update the rate limiter configurations for an existing chain connection in your token pool. This task specifically interacts with the [`setChainRateLimiterConfig`](/ccip/api-reference/evm/v1.6.1/token-pool#setchainratelimiterconfig) function of the `TokenPool` contract, allowing you to adjust the rate limits without altering other configurations like remote pool addresses.
The `updateRateLimiters` task allows you to:
diff --git a/src/content/ccip/tutorials/evm/programmable-token-transfers-defensive.mdx b/src/content/ccip/tutorials/evm/programmable-token-transfers-defensive.mdx
index bcd9abfb483..0b5d6141d56 100644
--- a/src/content/ccip/tutorials/evm/programmable-token-transfers-defensive.mdx
+++ b/src/content/ccip/tutorials/evm/programmable-token-transfers-defensive.mdx
@@ -206,7 +206,7 @@ Upon receiving a message on the destination blockchain, the `ccipReceive` functi
Here's the step-by-step breakdown of the process:
1. Entrance through `ccipReceive`:
- - The `ccipReceive` function is invoked with an `Any2EVMMessage` [struct](/ccip/api-reference/evm/v1.6.2/client#any2evmmessage) containing the message to be processed.
+ - The `ccipReceive` function is invoked with an `Any2EVMMessage` [struct](/ccip/api-reference/evm/v1.6.1/client#any2evmmessage) containing the message to be processed.
- Security checks ensure the call is from the authorized router, an allowlisted source chain, and an allowlisted sender.
1. Processing Message:
diff --git a/src/content/ccip/tutorials/evm/programmable-token-transfers.mdx b/src/content/ccip/tutorials/evm/programmable-token-transfers.mdx
index 47b99e87d29..470b74c0aab 100644
--- a/src/content/ccip/tutorials/evm/programmable-token-transfers.mdx
+++ b/src/content/ccip/tutorials/evm/programmable-token-transfers.mdx
@@ -226,20 +226,20 @@ When deploying the contract, we define the router address and LINK contract addr
Defining the router address is useful for the following:
- Sender part:
- - Calls the router's `getFee` [function](/ccip/api-reference/evm/v1.6.2/i-router-client#getfee) to estimate the CCIP fees.
- - Calls the router's `ccipSend` [function](/ccip/api-reference/evm/v1.6.2/i-router-client#ccipsend) to send CCIP messages.
+ - Calls the router's `getFee` [function](/ccip/api-reference/evm/v1.6.1/i-router-client#getfee) to estimate the CCIP fees.
+ - Calls the router's `ccipSend` [function](/ccip/api-reference/evm/v1.6.1/i-router-client#ccipsend) to send CCIP messages.
- Receiver part:
- - The contract inherits from [CCIPReceiver](/ccip/api-reference/evm/v1.6.2/ccip-receiver), which serves as a base contract for receiver contracts. This contract requires that child contracts implement the `_ccipReceive` [function](/ccip/api-reference/evm/v1.6.2/ccip-receiver#_ccipreceive). `_ccipReceive` is called by the `ccipReceive` [function](/ccip/api-reference/evm/v1.6.2/ccip-receiver#ccipreceive), which ensures that only the router can deliver CCIP messages to the receiver contract.
+ - The contract inherits from [CCIPReceiver](/ccip/api-reference/evm/v1.6.1/ccip-receiver), which serves as a base contract for receiver contracts. This contract requires that child contracts implement the `_ccipReceive` [function](/ccip/api-reference/evm/v1.6.1/ccip-receiver#_ccipreceive). `_ccipReceive` is called by the `ccipReceive` [function](/ccip/api-reference/evm/v1.6.1/ccip-receiver#ccipreceive), which ensures that only the router can deliver CCIP messages to the receiver contract.
### Transferring tokens and data and pay in LINK
The `sendMessagePayLINK` function undertakes six primary operations:
-1. Call the `_buildCCIPMessage` private function to construct a CCIP-compatible message using the `EVM2AnyMessage` [struct](/ccip/api-reference/evm/v1.6.2/client#any2evmmessage):
+1. Call the `_buildCCIPMessage` private function to construct a CCIP-compatible message using the `EVM2AnyMessage` [struct](/ccip/api-reference/evm/v1.6.1/client#any2evmmessage):
- The `_receiver` address is encoded in bytes to accommodate non-EVM destination blockchains with distinct address formats. The encoding is achieved through [abi.encode](https://docs.soliditylang.org/en/develop/abi-spec.html).
- The `data` is encoded from a `string` to `bytes` using [abi.encode](https://docs.soliditylang.org/en/develop/abi-spec.html).
- - The `tokenAmounts` is an array, with each element comprising an `EVMTokenAmount` [struct](/ccip/api-reference/evm/v1.6.2/client#evmtokenamount) containing the token address and amount. The array contains one element where the `_token` (token address) and `_amount` (token amount) are passed by the user when calling the `sendMessagePayLINK` function.
+ - The `tokenAmounts` is an array, with each element comprising an `EVMTokenAmount` [struct](/ccip/api-reference/evm/v1.6.1/client#evmtokenamount) containing the token address and amount. The array contains one element where the `_token` (token address) and `_amount` (token amount) are passed by the user when calling the `sendMessagePayLINK` function.
- The `extraArgs` specifies the `gasLimit` for relaying the message to the recipient contract on the destination blockchain. In this example, the `gasLimit` is set to `200000.
- The `_feeTokenAddress` designates the token address used for CCIP fees. Here, `address(linkToken)` signifies payment in LINK.
@@ -247,11 +247,11 @@ The `sendMessagePayLINK` function undertakes six primary operations:
-1. Computes the fees by invoking the router's `getFee` [function](/ccip/api-reference/evm/v1.6.2/i-router-client#getfee).
+1. Computes the fees by invoking the router's `getFee` [function](/ccip/api-reference/evm/v1.6.1/i-router-client#getfee).
1. Ensures your contract balance in LINK is enough to cover the fees.
1. Grants the router contract permission to deduct the fees from the contract's LINK balance.
1. Grants the router contract permission to deduct the amount from the contract's _CCIP-BnM_ balance.
-1. Dispatches the CCIP message to the destination chain by executing the router's `ccipSend` [function](/ccip/api-reference/evm/v1.6.2/i-router-client#ccipsend).
+1. Dispatches the CCIP message to the destination chain by executing the router's `ccipSend` [function](/ccip/api-reference/evm/v1.6.1/i-router-client#ccipsend).
**Note**: As a security measure, the `sendMessagePayLINK` function is protected by the `onlyAllowlistedDestinationChain`, ensuring the contract owner has allowlisted a destination chain.
@@ -259,10 +259,10 @@ The `sendMessagePayLINK` function undertakes six primary operations:
The `sendMessagePayNative` function undertakes five primary operations:
-1. Call the `_buildCCIPMessage` private function to construct a CCIP-compatible message using the `EVM2AnyMessage` [struct](/ccip/api-reference/evm/v1.6.2/client#any2evmmessage):
+1. Call the `_buildCCIPMessage` private function to construct a CCIP-compatible message using the `EVM2AnyMessage` [struct](/ccip/api-reference/evm/v1.6.1/client#any2evmmessage):
- The `_receiver` address is encoded in bytes to accommodate non-EVM destination blockchains with distinct address formats. The encoding is achieved through [abi.encode](https://docs.soliditylang.org/en/develop/abi-spec.html).
- The `data` is encoded from a `string` to `bytes` using [abi.encode](https://docs.soliditylang.org/en/develop/abi-spec.html).
- - The `tokenAmounts` is an array, with each element comprising an `EVMTokenAmount` [struct](/ccip/api-reference/evm/v1.6.2/client#evmtokenamount) containing the token address and amount. The array contains one element where the `_token` (token address) and `_amount` (token amount) are passed by the user when calling the `sendMessagePayNative` function.
+ - The `tokenAmounts` is an array, with each element comprising an `EVMTokenAmount` [struct](/ccip/api-reference/evm/v1.6.1/client#evmtokenamount) containing the token address and amount. The array contains one element where the `_token` (token address) and `_amount` (token amount) are passed by the user when calling the `sendMessagePayNative` function.
- The `extraArgs` specifies the `gasLimit` for relaying the message to the recipient contract on the destination blockchain. In this example, the `gasLimit` is set to `200000.
- The `_feeTokenAddress` designates the token address used for CCIP fees. Here, `address(0)` signifies payment in native gas tokens (ETH).
@@ -270,16 +270,16 @@ The `sendMessagePayNative` function undertakes five primary operations:
-1. Computes the fees by invoking the router's `getFee` [function](/ccip/api-reference/evm/v1.6.2/i-router-client#getfee).
+1. Computes the fees by invoking the router's `getFee` [function](/ccip/api-reference/evm/v1.6.1/i-router-client#getfee).
1. Ensures your contract balance in native gas is enough to cover the fees.
1. Grants the router contract permission to deduct the amount from the contract's _CCIP-BnM_ balance.
-1. Dispatches the CCIP message to the destination chain by executing the router's `ccipSend` [function](/ccip/api-reference/evm/v1.6.2/i-router-client#ccipsend). **Note**: `msg.value` is set because you pay in native gas.
+1. Dispatches the CCIP message to the destination chain by executing the router's `ccipSend` [function](/ccip/api-reference/evm/v1.6.1/i-router-client#ccipsend). **Note**: `msg.value` is set because you pay in native gas.
**Note**: As a security measure, the `sendMessagePayNative` function is protected by the `onlyAllowlistedDestinationChain`, ensuring the contract owner has allowlisted a destination chain.
### Receiving messages
-On the destination blockchain, the router invokes the `_ccipReceive` [function](/ccip/api-reference/evm/v1.6.2/ccip-receiver#_ccipreceive) which expects a `Any2EVMMessage` [struct](/ccip/api-reference/evm/v1.6.2/client#any2evmmessage) that contains:
+On the destination blockchain, the router invokes the `_ccipReceive` [function](/ccip/api-reference/evm/v1.6.1/ccip-receiver#_ccipreceive) which expects a `Any2EVMMessage` [struct](/ccip/api-reference/evm/v1.6.1/client#any2evmmessage) that contains:
- The CCIP `messageId`.
- The `sourceChainSelector`.
@@ -289,7 +289,7 @@ On the destination blockchain, the router invokes the `_ccipReceive` [function](
**Note**: Three important security measures are applied:
-- `_ccipReceive` is called by the `ccipReceive` [function](/ccip/api-reference/evm/v1.6.2/ccip-receiver#ccipreceive), which ensures that only the router can deliver CCIP messages to the receiver contract. See the `onlyRouter` [modifier](/ccip/api-reference/evm/v1.6.2/ccip-receiver#onlyrouter) for more information.
+- `_ccipReceive` is called by the `ccipReceive` [function](/ccip/api-reference/evm/v1.6.1/ccip-receiver#ccipreceive), which ensures that only the router can deliver CCIP messages to the receiver contract. See the `onlyRouter` [modifier](/ccip/api-reference/evm/v1.6.1/ccip-receiver#onlyrouter) for more information.
- The modifier `onlyAllowlisted` ensures that only a call from an allowlisted source chain and sender is accepted.
diff --git a/src/content/ccip/tutorials/evm/send-arbitrary-data.mdx b/src/content/ccip/tutorials/evm/send-arbitrary-data.mdx
index e26180e8396..96524c8f90a 100644
--- a/src/content/ccip/tutorials/evm/send-arbitrary-data.mdx
+++ b/src/content/ccip/tutorials/evm/send-arbitrary-data.mdx
@@ -201,20 +201,20 @@ When deploying the contract, we define the router address and LINK contract addr
Defining the router address is useful for the following:
- Sender part:
- - Calls the router's `getFee` [function](/ccip/api-reference/evm/v1.6.2/i-router-client#getfee) to estimate the CCIP fees.
- - Calls the router's `ccipSend` [function](/ccip/api-reference/evm/v1.6.2/i-router-client#ccipsend) to send CCIP messages.
+ - Calls the router's `getFee` [function](/ccip/api-reference/evm/v1.6.1/i-router-client#getfee) to estimate the CCIP fees.
+ - Calls the router's `ccipSend` [function](/ccip/api-reference/evm/v1.6.1/i-router-client#ccipsend) to send CCIP messages.
- Receiver part:
- - The contract inherits from [CCIPReceiver](/ccip/api-reference/evm/v1.6.2/ccip-receiver), which serves as a base contract for receiver contracts. This contract requires that child contracts implement the `_ccipReceive` [function](/ccip/api-reference/evm/v1.6.2/ccip-receiver#_ccipreceive). `_ccipReceive` is called by the `ccipReceive` [function](/ccip/api-reference/evm/v1.6.2/ccip-receiver#ccipreceive), which ensures that only the router can deliver CCIP messages to the receiver contract.
+ - The contract inherits from [CCIPReceiver](/ccip/api-reference/evm/v1.6.1/ccip-receiver), which serves as a base contract for receiver contracts. This contract requires that child contracts implement the `_ccipReceive` [function](/ccip/api-reference/evm/v1.6.1/ccip-receiver#_ccipreceive). `_ccipReceive` is called by the `ccipReceive` [function](/ccip/api-reference/evm/v1.6.1/ccip-receiver#ccipreceive), which ensures that only the router can deliver CCIP messages to the receiver contract.
### Sending data and pay in LINK
The `sendMessagePayLINK` function undertakes five primary operations:
-1. Call the `_buildCCIPMessage` private function to construct a CCIP-compatible message using the `EVM2AnyMessage` [struct](/ccip/api-reference/evm/v1.6.2/client#any2evmmessage):
+1. Call the `_buildCCIPMessage` private function to construct a CCIP-compatible message using the `EVM2AnyMessage` [struct](/ccip/api-reference/evm/v1.6.1/client#any2evmmessage):
- The `_receiver` address is encoded in bytes to accommodate non-EVM destination blockchains with distinct address formats. The encoding is achieved through [abi.encode](https://docs.soliditylang.org/en/develop/abi-spec.html).
- The `data` is encoded from a `string` to `bytes` using [abi.encode](https://docs.soliditylang.org/en/develop/abi-spec.html).
- - The `tokenAmounts` is an empty `EVMTokenAmount` [struct](/ccip/api-reference/evm/v1.6.2/client#evmtokenamount) array as no tokens are transferred.
+ - The `tokenAmounts` is an empty `EVMTokenAmount` [struct](/ccip/api-reference/evm/v1.6.1/client#evmtokenamount) array as no tokens are transferred.
- The `extraArgs` specifies the `gasLimit` for relaying the message to the recipient contract on the destination blockchain. In this example, the `gasLimit` is set to `200000`.
- The `_feeTokenAddress` designates the token address used for CCIP fees. Here, `address(linkToken)` signifies payment in LINK.
@@ -222,10 +222,10 @@ The `sendMessagePayLINK` function undertakes five primary operations:
-1. Computes the fees by invoking the router's `getFee` [function](/ccip/api-reference/evm/v1.6.2/i-router-client#getfee).
+1. Computes the fees by invoking the router's `getFee` [function](/ccip/api-reference/evm/v1.6.1/i-router-client#getfee).
1. Ensures your contract balance in LINK is enough to cover the fees.
1. Grants the router contract permission to deduct the fees from the contract's LINK balance.
-1. Dispatches the CCIP message to the destination chain by executing the router's `ccipSend` [function](/ccip/api-reference/evm/v1.6.2/i-router-client#ccipsend).
+1. Dispatches the CCIP message to the destination chain by executing the router's `ccipSend` [function](/ccip/api-reference/evm/v1.6.1/i-router-client#ccipsend).
**Note**: As a security measure, the `sendMessagePayLINK` function is protected by the `onlyAllowlistedDestinationChain`, ensuring the contract owner has allowlisted a destination chain.
@@ -233,10 +233,10 @@ The `sendMessagePayLINK` function undertakes five primary operations:
The `sendMessagePayNative` function undertakes four primary operations:
-1. Call the `_buildCCIPMessage` private function to construct a CCIP-compatible message using the `EVM2AnyMessage` [struct](/ccip/api-reference/evm/v1.6.2/client#any2evmmessage):
+1. Call the `_buildCCIPMessage` private function to construct a CCIP-compatible message using the `EVM2AnyMessage` [struct](/ccip/api-reference/evm/v1.6.1/client#any2evmmessage):
- The `_receiver` address is encoded in bytes to accommodate non-EVM destination blockchains with distinct address formats. The encoding is achieved through [abi.encode](https://docs.soliditylang.org/en/develop/abi-spec.html).
- The `data` is encoded from a `string` to `bytes` using [abi.encode](https://docs.soliditylang.org/en/develop/abi-spec.html).
- - The `tokenAmounts` is an empty `EVMTokenAmount` [struct](/ccip/api-reference/evm/v1.6.2/client#evmtokenamount) array as no tokens are transferred.
+ - The `tokenAmounts` is an empty `EVMTokenAmount` [struct](/ccip/api-reference/evm/v1.6.1/client#evmtokenamount) array as no tokens are transferred.
- The `extraArgs` specifies the `gasLimit` for relaying the message to the recipient contract on the destination blockchain. In this example, the `gasLimit` is set to `200000`.
- The `_feeTokenAddress` designates the token address used for CCIP fees. Here, `address(0)` signifies payment in native gas tokens (ETH).
@@ -244,15 +244,15 @@ The `sendMessagePayNative` function undertakes four primary operations:
-1. Computes the fees by invoking the router's `getFee` [function](/ccip/api-reference/evm/v1.6.2/i-router-client#getfee).
+1. Computes the fees by invoking the router's `getFee` [function](/ccip/api-reference/evm/v1.6.1/i-router-client#getfee).
1. Ensures your contract balance in native gas is enough to cover the fees.
-1. Dispatches the CCIP message to the destination chain by executing the router's `ccipSend` [function](/ccip/api-reference/evm/v1.6.2/i-router-client#ccipsend). **Note**: `msg.value` is set because you pay in native gas.
+1. Dispatches the CCIP message to the destination chain by executing the router's `ccipSend` [function](/ccip/api-reference/evm/v1.6.1/i-router-client#ccipsend). **Note**: `msg.value` is set because you pay in native gas.
**Note**: As a security measure, the `sendMessagePayNative` function is protected by the `onlyAllowlistedDestinationChain`, ensuring the contract owner has allowlisted a destination chain.
### Receiving data
-On the destination blockchain, the router invokes the `ccipReceive` [function](/ccip/api-reference/evm/v1.6.2/ccip-receiver#ccipreceive) which expects an `Any2EVMMessage` [struct](/ccip/api-reference/evm/v1.6.2/client#any2evmmessage) that contains:
+On the destination blockchain, the router invokes the `ccipReceive` [function](/ccip/api-reference/evm/v1.6.1/ccip-receiver#ccipreceive) which expects an `Any2EVMMessage` [struct](/ccip/api-reference/evm/v1.6.1/client#any2evmmessage) that contains:
- The CCIP `messageId`.
- The `sourceChainSelector`.
@@ -261,7 +261,7 @@ On the destination blockchain, the router invokes the `ccipReceive` [function](/
This example applies three important security measures:
-- `_ccipReceive` is called by the `ccipReceive` [function](/ccip/api-reference/evm/v1.6.2/ccip-receiver#ccipreceive), which ensures that only the router can deliver CCIP messages to the receiver contract. See the `onlyRouter` [modifier](/ccip/api-reference/evm/v1.6.2/ccip-receiver#onlyrouter) for more information.
+- `_ccipReceive` is called by the `ccipReceive` [function](/ccip/api-reference/evm/v1.6.1/ccip-receiver#ccipreceive), which ensures that only the router can deliver CCIP messages to the receiver contract. See the `onlyRouter` [modifier](/ccip/api-reference/evm/v1.6.1/ccip-receiver#onlyrouter) for more information.
- The modifier `onlyAllowlisted` ensures that only a call from an allowlisted source chain and sender is accepted.
diff --git a/src/content/ccip/tutorials/evm/transfer-tokens-from-contract.mdx b/src/content/ccip/tutorials/evm/transfer-tokens-from-contract.mdx
index 5ee8ae73bc7..48651a9e3ee 100644
--- a/src/content/ccip/tutorials/evm/transfer-tokens-from-contract.mdx
+++ b/src/content/ccip/tutorials/evm/transfer-tokens-from-contract.mdx
@@ -205,10 +205,10 @@ When you deploy the contract, you define the router address and LINK contract ad
The `transferTokensPayLINK` function undertakes six primary operations:
-1. Call the `_buildCCIPMessage` private function to construct a CCIP-compatible message using the `EVM2AnyMessage` [struct](/ccip/api-reference/evm/v1.6.2/client#any2evmmessage):
+1. Call the `_buildCCIPMessage` private function to construct a CCIP-compatible message using the `EVM2AnyMessage` [struct](/ccip/api-reference/evm/v1.6.1/client#any2evmmessage):
- The `_receiver` address is encoded in bytes to accommodate non-EVM destination blockchains with distinct address formats. The encoding is achieved through [abi.encode](https://docs.soliditylang.org/en/develop/abi-spec.html).
- The `data` is empty because you only transfer tokens.
- - The `tokenAmounts` is an array, with each element comprising a [`EVMTokenAmount` struct](/ccip/api-reference/evm/v1.6.2/client#evmtokenamount) that contains the token address and amount. The array contains one element where the `_token` (token address) and `_amount` (token amount) are passed by the user when calling the `transferTokensPayLINK` function.
+ - The `tokenAmounts` is an array, with each element comprising a [`EVMTokenAmount` struct](/ccip/api-reference/evm/v1.6.1/client#evmtokenamount) that contains the token address and amount. The array contains one element where the `_token` (token address) and `_amount` (token amount) are passed by the user when calling the `transferTokensPayLINK` function.
- The `extraArgs` specifies the `gasLimit` for relaying the message to the recipient contract on the destination blockchain. In this example, the `gasLimit` is set to `0` because the contract only transfers tokens and does not expect function calls on the destination blockchain.
- The `_feeTokenAddress` designates the token address used for CCIP fees. Here, `address(linkToken)` signifies payment in LINK.
@@ -216,11 +216,11 @@ The `transferTokensPayLINK` function undertakes six primary operations:
-1. Computes the fees by invoking the router's `getFee` [function](/ccip/api-reference/evm/v1.6.2/i-router-client#getfee).
+1. Computes the fees by invoking the router's `getFee` [function](/ccip/api-reference/evm/v1.6.1/i-router-client#getfee).
1. Ensures your contract balance in LINK is enough to cover the fees.
1. Grants the router contract permission to deduct the fees from the contract's LINK balance.
1. Grants the router contract permission to deduct the amount from the contract's _CCIP-BnM_ balance.
-1. Dispatches the CCIP message to the destination chain by executing the router's `ccipSend` [function](/ccip/api-reference/evm/v1.6.2/i-router-client#ccipsend).
+1. Dispatches the CCIP message to the destination chain by executing the router's `ccipSend` [function](/ccip/api-reference/evm/v1.6.1/i-router-client#ccipsend).
**Note**: As a security measure, the `transferTokensPayLINK` function is protected by the `onlyAllowlistedChain` to ensure the contract owner has allowlisted a destination chain.
@@ -228,10 +228,10 @@ The `transferTokensPayLINK` function undertakes six primary operations:
The `transferTokensPayNative` function undertakes five primary operations:
-1. Call the `_buildCCIPMessage` private function to construct a CCIP-compatible message using the `EVM2AnyMessage` [struct](/ccip/api-reference/evm/v1.6.2/client#any2evmmessage):
+1. Call the `_buildCCIPMessage` private function to construct a CCIP-compatible message using the `EVM2AnyMessage` [struct](/ccip/api-reference/evm/v1.6.1/client#any2evmmessage):
- The `_receiver` address is encoded in bytes to accommodate non-EVM destination blockchains with distinct address formats. The encoding is achieved through [abi.encode](https://docs.soliditylang.org/en/develop/abi-spec.html).
- The `data` is empty because you only transfer tokens.
- - The `tokenAmounts` is an array, with each element comprising an `EVMTokenAmount` [struct](/ccip/api-reference/evm/v1.6.2/client#evmtokenamount) containing the token address and amount. The array contains one element where the `_token` (token address) and `_amount` (token amount) are passed by the user when calling the `transferTokensPayNative` function.
+ - The `tokenAmounts` is an array, with each element comprising an `EVMTokenAmount` [struct](/ccip/api-reference/evm/v1.6.1/client#evmtokenamount) containing the token address and amount. The array contains one element where the `_token` (token address) and `_amount` (token amount) are passed by the user when calling the `transferTokensPayNative` function.
- The `extraArgs` specifies the `gasLimit` for relaying the message to the recipient contract on the destination blockchain. In this example, the `gasLimit` is set to `0` because the contract only transfers tokens and does not expect function calls on the destination blockchain.
- The `_feeTokenAddress` designates the token address used for CCIP fees. Here, `address(0)` signifies payment in native gas tokens (ETH).
@@ -239,10 +239,10 @@ The `transferTokensPayNative` function undertakes five primary operations:
-1. Computes the fees by invoking the router's `getFee` [function](/ccip/api-reference/evm/v1.6.2/i-router-client#getfee).
+1. Computes the fees by invoking the router's `getFee` [function](/ccip/api-reference/evm/v1.6.1/i-router-client#getfee).
1. Ensures your contract balance in native gas is enough to cover the fees.
1. Grants the router contract permission to deduct the amount from the contract's _CCIP-BnM_ balance.
-1. Dispatches the CCIP message to the destination chain by executing the router's `ccipSend` [function](/ccip/api-reference/evm/v1.6.2/i-router-client#ccipsend). **Note**: `msg.value` is set because you pay in native gas.
+1. Dispatches the CCIP message to the destination chain by executing the router's `ccipSend` [function](/ccip/api-reference/evm/v1.6.1/i-router-client#ccipsend). **Note**: `msg.value` is set because you pay in native gas.
**Note**: As a security measure, the `transferTokensPayNative` function is protected by the `onlyAllowlistedChain`, ensuring the contract owner has allowlisted a destination chain.
diff --git a/src/content/ccip/tutorials/evm/usdc.mdx b/src/content/ccip/tutorials/evm/usdc.mdx
index 547f2d8b154..3edeb44db87 100644
--- a/src/content/ccip/tutorials/evm/usdc.mdx
+++ b/src/content/ccip/tutorials/evm/usdc.mdx
@@ -41,7 +41,7 @@ Projects using Bridged USDC can easily migrate to Native USDC once their blockch
### How CCIP Works with USDC
-Chainlink CCIP maintains a consistent [API](/ccip/api-reference/evm/v1.6.2/i-router-client) regardless of whether the transfer involves Native USDC or Bridged USDC. Here's how it operates in both scenarios:
+Chainlink CCIP maintains a consistent [API](/ccip/api-reference/evm/v1.6.1/i-router-client) regardless of whether the transfer involves Native USDC or Bridged USDC. Here's how it operates in both scenarios:
- The sender has to interact with the CCIP router to initiate a cross-chain transaction, similar to the process for any other token transfers. See the [Transfer Tokens](/ccip/tutorials/evm/transfer-tokens-from-contract) guide to learn more.
- The process uses the same onchain components including the Router, OnRamp, Commit Store, OffRamp, and Token Pool.
diff --git a/src/content/ccip/tutorials/svm/cross-chain-tokens/direct-mint-authority.mdx b/src/content/ccip/tutorials/svm/cross-chain-tokens/direct-mint-authority.mdx
index 434443dfd91..984ee883c2d 100644
--- a/src/content/ccip/tutorials/svm/cross-chain-tokens/direct-mint-authority.mdx
+++ b/src/content/ccip/tutorials/svm/cross-chain-tokens/direct-mint-authority.mdx
@@ -137,7 +137,7 @@ https://sepolia.etherscan.io/address/0x5D74645E854922009723a817fe4e417A80E7c709#
This command:
-- Deploys a [BurnMintERC20](/ccip/api-reference/evm/v1.6.2/burn-mint-erc20) contract with 18 decimals
+- Deploys a [BurnMintERC20](/ccip/api-reference/evm/v1.6.1/burn-mint-erc20) contract with 18 decimals
- Grants your EOA mint and burn privileges for testing
- Verifies the contract on Etherscan for transparency
- Sets up the foundation for cross-chain operations
@@ -216,7 +216,7 @@ https://sepolia.etherscan.io/address/0x817FdAa9e7cd30C4838a82eEA7f09217C6d8c885#
This command:
-- Deploys a [BurnMintTokenPool](/ccip/api-reference/evm/v1.6.2/burn-mint-token-pool) contract
+- Deploys a [BurnMintTokenPool](/ccip/api-reference/evm/v1.6.1/burn-mint-token-pool) contract
- Links it to your ERC20 token
- **Grants the pool additional mint/burn privileges** (your EOA retains its privileges)
- **Multiple Minters**: Both your EOA and the pool can mint tokens independently
@@ -323,7 +323,7 @@ npx hardhat claimAdmin \
This command:
-- Calls the [RegistryModuleOwnerCustom](/ccip/api-reference/evm/v1.6.2/registry-module-owner-custom) contract
+- Calls the [RegistryModuleOwnerCustom](/ccip/api-reference/evm/v1.6.1/registry-module-owner-custom) contract
- Registers you as the pending administrator
- Uses the token's `getCCIPAdmin()` function to verify ownership
- Prepares for the acceptance step
diff --git a/src/content/ccip/tutorials/svm/cross-chain-tokens/lock-release-multisig.mdx b/src/content/ccip/tutorials/svm/cross-chain-tokens/lock-release-multisig.mdx
index 584bf160bfd..083e54be54f 100644
--- a/src/content/ccip/tutorials/svm/cross-chain-tokens/lock-release-multisig.mdx
+++ b/src/content/ccip/tutorials/svm/cross-chain-tokens/lock-release-multisig.mdx
@@ -2503,7 +2503,7 @@ echo "ā SOL ALT: $SOL_ADDRESS_LOOKUP_TABLE"
### Step 2: Configure Cross-Chain Settings
-Configure the Ethereum pool to recognize the Solana chain and set production rate limits using [`applyChainUpdates`](/ccip/api-reference/evm/v1.6.2/token-pool#applychainupdates).
+Configure the Ethereum pool to recognize the Solana chain and set production rate limits using [`applyChainUpdates`](/ccip/api-reference/evm/v1.6.1/token-pool#applychainupdates).