diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000000..6db6a5bfa1b --- /dev/null +++ b/.editorconfig @@ -0,0 +1 @@ +insert_final_newline = true diff --git a/.eleventy.js b/.eleventy/.eleventy.js similarity index 100% rename from .eleventy.js rename to .eleventy/.eleventy.js diff --git a/.eleventyignore b/.eleventy/.eleventyignore similarity index 100% rename from .eleventyignore rename to .eleventy/.eleventyignore diff --git a/.firebaserc b/.eleventy/.firebaserc similarity index 100% rename from .firebaserc rename to .eleventy/.firebaserc diff --git a/.eleventy/.gitignore b/.eleventy/.gitignore new file mode 100644 index 00000000000..f56ba774a85 --- /dev/null +++ b/.eleventy/.gitignore @@ -0,0 +1,13 @@ +_site/ +node_modules +.firebase/ +data-source/ +addresses.json +.DS_Store +# Only keep TS version +_src/index.js +_src/keepers-configuration.js +_src/animate-chain-transitions.js +_src/link-to-wallet.js +_src/reference/chainsToBe.json +.test/ diff --git a/LICENSE b/.eleventy/LICENSE similarity index 100% rename from LICENSE rename to .eleventy/LICENSE diff --git a/.eleventy/README.md b/.eleventy/README.md new file mode 100644 index 00000000000..0997fc75348 --- /dev/null +++ b/.eleventy/README.md @@ -0,0 +1,20 @@ +This is the open source project for the Chainlink documentation. + +## Developing + yarn serve + +## Building & Deploying +The site is hosted on a static site CDN. The files are super portable. Builds end up in `_site`. + + yarn deploy + +Make sure you use `yarn` and have a recent version of `node` (see the `package.json` for specific version requirements). + +## Docs architecture +* All docs are markdown and stored in `/docs`. +* Navigation is JSON in `/_data/navigation` +* Pages are processed as Readme.com markdown, and then syntax highlight is applied client-side +* Custom client side code powers the ENS page + +## Contributing +See `CONTRIBUTING.md` \ No newline at end of file diff --git a/_data/navigation.js b/.eleventy/_data/navigation.js similarity index 100% rename from _data/navigation.js rename to .eleventy/_data/navigation.js diff --git a/_data/variables.js b/.eleventy/_data/variables.js similarity index 100% rename from _data/variables.js rename to .eleventy/_data/variables.js diff --git a/_includes/_search.html b/.eleventy/_includes/_search.html similarity index 100% rename from _includes/_search.html rename to .eleventy/_includes/_search.html diff --git a/_includes/banner.liquid b/.eleventy/_includes/banner.liquid similarity index 100% rename from _includes/banner.liquid rename to .eleventy/_includes/banner.liquid diff --git a/_includes/data-quality.md b/.eleventy/_includes/data-quality.md similarity index 100% rename from _includes/data-quality.md rename to .eleventy/_includes/data-quality.md diff --git a/_includes/deprecated-feed.liquid b/.eleventy/_includes/deprecated-feed.liquid similarity index 100% rename from _includes/deprecated-feed.liquid rename to .eleventy/_includes/deprecated-feed.liquid diff --git a/_includes/events.liquid b/.eleventy/_includes/events.liquid similarity index 100% rename from _includes/events.liquid rename to .eleventy/_includes/events.liquid diff --git a/_includes/feed.liquid b/.eleventy/_includes/feed.liquid similarity index 100% rename from _includes/feed.liquid rename to .eleventy/_includes/feed.liquid diff --git a/_includes/main.liquid b/.eleventy/_includes/main.liquid similarity index 100% rename from _includes/main.liquid rename to .eleventy/_includes/main.liquid diff --git a/_includes/nft-floor-feed.liquid b/.eleventy/_includes/nft-floor-feed.liquid similarity index 100% rename from _includes/nft-floor-feed.liquid rename to .eleventy/_includes/nft-floor-feed.liquid diff --git a/_includes/nodes.liquid b/.eleventy/_includes/nodes.liquid similarity index 100% rename from _includes/nodes.liquid rename to .eleventy/_includes/nodes.liquid diff --git a/_includes/por-feed.liquid b/.eleventy/_includes/por-feed.liquid similarity index 100% rename from _includes/por-feed.liquid rename to .eleventy/_includes/por-feed.liquid diff --git a/_includes/samples/APIRequests/APIConsumer.sol b/.eleventy/_includes/samples/APIRequests/APIConsumer.sol similarity index 100% rename from _includes/samples/APIRequests/APIConsumer.sol rename to .eleventy/_includes/samples/APIRequests/APIConsumer.sol diff --git a/_includes/samples/APIRequests/ATestnetConsumer.sol b/.eleventy/_includes/samples/APIRequests/ATestnetConsumer.sol similarity index 100% rename from _includes/samples/APIRequests/ATestnetConsumer.sol rename to .eleventy/_includes/samples/APIRequests/ATestnetConsumer.sol diff --git a/_includes/samples/APIRequests/FetchFromArray.sol b/.eleventy/_includes/samples/APIRequests/FetchFromArray.sol similarity index 100% rename from _includes/samples/APIRequests/FetchFromArray.sol rename to .eleventy/_includes/samples/APIRequests/FetchFromArray.sol diff --git a/_includes/samples/APIRequests/GenericBigWord.sol b/.eleventy/_includes/samples/APIRequests/GenericBigWord.sol similarity index 100% rename from _includes/samples/APIRequests/GenericBigWord.sol rename to .eleventy/_includes/samples/APIRequests/GenericBigWord.sol diff --git a/_includes/samples/APIRequests/GetGasPrice.sol b/.eleventy/_includes/samples/APIRequests/GetGasPrice.sol similarity index 100% rename from _includes/samples/APIRequests/GetGasPrice.sol rename to .eleventy/_includes/samples/APIRequests/GetGasPrice.sol diff --git a/_includes/samples/APIRequests/MultiWordConsumer.sol b/.eleventy/_includes/samples/APIRequests/MultiWordConsumer.sol similarity index 100% rename from _includes/samples/APIRequests/MultiWordConsumer.sol rename to .eleventy/_includes/samples/APIRequests/MultiWordConsumer.sol diff --git a/_includes/samples/Automation/AutomationCounter.sol b/.eleventy/_includes/samples/Automation/AutomationCounter.sol similarity index 100% rename from _includes/samples/Automation/AutomationCounter.sol rename to .eleventy/_includes/samples/Automation/AutomationCounter.sol diff --git a/_includes/samples/Automation/BalancerOffChain.sol b/.eleventy/_includes/samples/Automation/BalancerOffChain.sol similarity index 100% rename from _includes/samples/Automation/BalancerOffChain.sol rename to .eleventy/_includes/samples/Automation/BalancerOffChain.sol diff --git a/_includes/samples/Automation/BalancerOnChain.sol b/.eleventy/_includes/samples/Automation/BalancerOnChain.sol similarity index 100% rename from _includes/samples/Automation/BalancerOnChain.sol rename to .eleventy/_includes/samples/Automation/BalancerOnChain.sol diff --git a/_includes/samples/Automation/EthBalanceMonitor.sol b/.eleventy/_includes/samples/Automation/EthBalanceMonitor.sol similarity index 100% rename from _includes/samples/Automation/EthBalanceMonitor.sol rename to .eleventy/_includes/samples/Automation/EthBalanceMonitor.sol diff --git a/_includes/samples/Automation/UpkeepIDConsumerExample.sol b/.eleventy/_includes/samples/Automation/UpkeepIDConsumerExample.sol similarity index 100% rename from _includes/samples/Automation/UpkeepIDConsumerExample.sol rename to .eleventy/_includes/samples/Automation/UpkeepIDConsumerExample.sol diff --git a/_includes/samples/Automation/example.sol b/.eleventy/_includes/samples/Automation/example.sol similarity index 100% rename from _includes/samples/Automation/example.sol rename to .eleventy/_includes/samples/Automation/example.sol diff --git a/_includes/samples/DataProviders/DnsOwnership.sol b/.eleventy/_includes/samples/DataProviders/DnsOwnership.sol similarity index 100% rename from _includes/samples/DataProviders/DnsOwnership.sol rename to .eleventy/_includes/samples/DataProviders/DnsOwnership.sol diff --git a/_includes/samples/DataProviders/GoogleWeather.sol b/.eleventy/_includes/samples/DataProviders/GoogleWeather.sol similarity index 100% rename from _includes/samples/DataProviders/GoogleWeather.sol rename to .eleventy/_includes/samples/DataProviders/GoogleWeather.sol diff --git a/_includes/samples/FeedRegistry/Denominations.sol b/.eleventy/_includes/samples/FeedRegistry/Denominations.sol similarity index 100% rename from _includes/samples/FeedRegistry/Denominations.sol rename to .eleventy/_includes/samples/FeedRegistry/Denominations.sol diff --git a/_includes/samples/FeedRegistry/PriceConsumer.js b/.eleventy/_includes/samples/FeedRegistry/PriceConsumer.js similarity index 100% rename from _includes/samples/FeedRegistry/PriceConsumer.js rename to .eleventy/_includes/samples/FeedRegistry/PriceConsumer.js diff --git a/_includes/samples/FeedRegistry/PriceConsumer.sol b/.eleventy/_includes/samples/FeedRegistry/PriceConsumer.sol similarity index 100% rename from _includes/samples/FeedRegistry/PriceConsumer.sol rename to .eleventy/_includes/samples/FeedRegistry/PriceConsumer.sol diff --git a/_includes/samples/PriceFeeds/ENSConsumer.js b/.eleventy/_includes/samples/PriceFeeds/ENSConsumer.js similarity index 100% rename from _includes/samples/PriceFeeds/ENSConsumer.js rename to .eleventy/_includes/samples/PriceFeeds/ENSConsumer.js diff --git a/_includes/samples/PriceFeeds/ENSConsumer.sol b/.eleventy/_includes/samples/PriceFeeds/ENSConsumer.sol similarity index 100% rename from _includes/samples/PriceFeeds/ENSConsumer.sol rename to .eleventy/_includes/samples/PriceFeeds/ENSConsumer.sol diff --git a/_includes/samples/PriceFeeds/HistoricalPriceConsumer.js b/.eleventy/_includes/samples/PriceFeeds/HistoricalPriceConsumer.js similarity index 100% rename from _includes/samples/PriceFeeds/HistoricalPriceConsumer.js rename to .eleventy/_includes/samples/PriceFeeds/HistoricalPriceConsumer.js diff --git a/_includes/samples/PriceFeeds/HistoricalPriceConsumer.py b/.eleventy/_includes/samples/PriceFeeds/HistoricalPriceConsumer.py similarity index 100% rename from _includes/samples/PriceFeeds/HistoricalPriceConsumer.py rename to .eleventy/_includes/samples/PriceFeeds/HistoricalPriceConsumer.py diff --git a/_includes/samples/PriceFeeds/HistoricalPriceConsumer.sol b/.eleventy/_includes/samples/PriceFeeds/HistoricalPriceConsumer.sol similarity index 100% rename from _includes/samples/PriceFeeds/HistoricalPriceConsumer.sol rename to .eleventy/_includes/samples/PriceFeeds/HistoricalPriceConsumer.sol diff --git a/_includes/samples/PriceFeeds/NFTFloorPriceConsumerV3.sol b/.eleventy/_includes/samples/PriceFeeds/NFTFloorPriceConsumerV3.sol similarity index 100% rename from _includes/samples/PriceFeeds/NFTFloorPriceConsumerV3.sol rename to .eleventy/_includes/samples/PriceFeeds/NFTFloorPriceConsumerV3.sol diff --git a/_includes/samples/PriceFeeds/PriceConsumerV3.js b/.eleventy/_includes/samples/PriceFeeds/PriceConsumerV3.js similarity index 100% rename from _includes/samples/PriceFeeds/PriceConsumerV3.js rename to .eleventy/_includes/samples/PriceFeeds/PriceConsumerV3.js diff --git a/_includes/samples/PriceFeeds/PriceConsumerV3.py b/.eleventy/_includes/samples/PriceFeeds/PriceConsumerV3.py similarity index 100% rename from _includes/samples/PriceFeeds/PriceConsumerV3.py rename to .eleventy/_includes/samples/PriceFeeds/PriceConsumerV3.py diff --git a/_includes/samples/PriceFeeds/PriceConsumerV3.sol b/.eleventy/_includes/samples/PriceFeeds/PriceConsumerV3.sol similarity index 100% rename from _includes/samples/PriceFeeds/PriceConsumerV3.sol rename to .eleventy/_includes/samples/PriceFeeds/PriceConsumerV3.sol diff --git a/_includes/samples/PriceFeeds/PriceConsumerV3Ethers.js b/.eleventy/_includes/samples/PriceFeeds/PriceConsumerV3Ethers.js similarity index 100% rename from _includes/samples/PriceFeeds/PriceConsumerV3Ethers.js rename to .eleventy/_includes/samples/PriceFeeds/PriceConsumerV3Ethers.js diff --git a/_includes/samples/PriceFeeds/PriceConsumerWithSequencerCheck.sol b/.eleventy/_includes/samples/PriceFeeds/PriceConsumerWithSequencerCheck.sol similarity index 100% rename from _includes/samples/PriceFeeds/PriceConsumerWithSequencerCheck.sol rename to .eleventy/_includes/samples/PriceFeeds/PriceConsumerWithSequencerCheck.sol diff --git a/_includes/samples/PriceFeeds/PriceConverter.sol b/.eleventy/_includes/samples/PriceFeeds/PriceConverter.sol similarity index 100% rename from _includes/samples/PriceFeeds/PriceConverter.sol rename to .eleventy/_includes/samples/PriceFeeds/PriceConverter.sol diff --git a/_includes/samples/PriceFeeds/ReserveConsumerV3.sol b/.eleventy/_includes/samples/PriceFeeds/ReserveConsumerV3.sol similarity index 100% rename from _includes/samples/PriceFeeds/ReserveConsumerV3.sol rename to .eleventy/_includes/samples/PriceFeeds/ReserveConsumerV3.sol diff --git a/_includes/samples/Solana/PriceFeeds/off-chain-read.js b/.eleventy/_includes/samples/Solana/PriceFeeds/off-chain-read.js similarity index 100% rename from _includes/samples/Solana/PriceFeeds/off-chain-read.js rename to .eleventy/_includes/samples/Solana/PriceFeeds/off-chain-read.js diff --git a/_includes/samples/Solana/PriceFeeds/off-chain-read.ts b/.eleventy/_includes/samples/Solana/PriceFeeds/off-chain-read.ts similarity index 100% rename from _includes/samples/Solana/PriceFeeds/off-chain-read.ts rename to .eleventy/_includes/samples/Solana/PriceFeeds/off-chain-read.ts diff --git a/_includes/samples/Solana/PriceFeeds/on-chain-read-anchor.rs b/.eleventy/_includes/samples/Solana/PriceFeeds/on-chain-read-anchor.rs similarity index 100% rename from _includes/samples/Solana/PriceFeeds/on-chain-read-anchor.rs rename to .eleventy/_includes/samples/Solana/PriceFeeds/on-chain-read-anchor.rs diff --git a/_includes/samples/Solana/PriceFeeds/on-chain-read.rs b/.eleventy/_includes/samples/Solana/PriceFeeds/on-chain-read.rs similarity index 100% rename from _includes/samples/Solana/PriceFeeds/on-chain-read.rs rename to .eleventy/_includes/samples/Solana/PriceFeeds/on-chain-read.rs diff --git a/_includes/samples/Tutorials/HelloWorld.sol b/.eleventy/_includes/samples/Tutorials/HelloWorld.sol similarity index 100% rename from _includes/samples/Tutorials/HelloWorld.sol rename to .eleventy/_includes/samples/Tutorials/HelloWorld.sol diff --git a/_includes/samples/Tutorials/Test.sol b/.eleventy/_includes/samples/Tutorials/Test.sol similarity index 100% rename from _includes/samples/Tutorials/Test.sol rename to .eleventy/_includes/samples/Tutorials/Test.sol diff --git a/_includes/samples/VRF/RandomNumberConsumer.sol b/.eleventy/_includes/samples/VRF/RandomNumberConsumer.sol similarity index 100% rename from _includes/samples/VRF/RandomNumberConsumer.sol rename to .eleventy/_includes/samples/VRF/RandomNumberConsumer.sol diff --git a/_includes/samples/VRF/VRFD20.sol b/.eleventy/_includes/samples/VRF/VRFD20.sol similarity index 100% rename from _includes/samples/VRF/VRFD20.sol rename to .eleventy/_includes/samples/VRF/VRFD20.sol diff --git a/_includes/samples/VRF/VRFv2Consumer.sol b/.eleventy/_includes/samples/VRF/VRFv2Consumer.sol similarity index 100% rename from _includes/samples/VRF/VRFv2Consumer.sol rename to .eleventy/_includes/samples/VRF/VRFv2Consumer.sol diff --git a/_includes/samples/VRF/VRFv2DirectFundingConsumer.sol b/.eleventy/_includes/samples/VRF/VRFv2DirectFundingConsumer.sol similarity index 100% rename from _includes/samples/VRF/VRFv2DirectFundingConsumer.sol rename to .eleventy/_includes/samples/VRF/VRFv2DirectFundingConsumer.sol diff --git a/_includes/samples/VRF/VRFv2MultiplePaths.sol b/.eleventy/_includes/samples/VRF/VRFv2MultiplePaths.sol similarity index 100% rename from _includes/samples/VRF/VRFv2MultiplePaths.sol rename to .eleventy/_includes/samples/VRF/VRFv2MultiplePaths.sol diff --git a/_includes/samples/VRF/VRFv2SubscriptionManager.sol b/.eleventy/_includes/samples/VRF/VRFv2SubscriptionManager.sol similarity index 100% rename from _includes/samples/VRF/VRFv2SubscriptionManager.sol rename to .eleventy/_includes/samples/VRF/VRFv2SubscriptionManager.sol diff --git a/_includes/sections/any-api-common-prereq.md b/.eleventy/_includes/sections/any-api-common-prereq.md similarity index 100% rename from _includes/sections/any-api-common-prereq.md rename to .eleventy/_includes/sections/any-api-common-prereq.md diff --git a/_includes/sections/any-api-common-table-contents.md b/.eleventy/_includes/sections/any-api-common-table-contents.md similarity index 100% rename from _includes/sections/any-api-common-table-contents.md rename to .eleventy/_includes/sections/any-api-common-table-contents.md diff --git a/_includes/sections/any-api-common.md b/.eleventy/_includes/sections/any-api-common.md similarity index 100% rename from _includes/sections/any-api-common.md rename to .eleventy/_includes/sections/any-api-common.md diff --git a/_includes/sections/vrf-v2-common.md b/.eleventy/_includes/sections/vrf-v2-common.md similarity index 100% rename from _includes/sections/vrf-v2-common.md rename to .eleventy/_includes/sections/vrf-v2-common.md diff --git a/_includes/sections/vrf-v2-directfunding-common.md b/.eleventy/_includes/sections/vrf-v2-directfunding-common.md similarity index 100% rename from _includes/sections/vrf-v2-directfunding-common.md rename to .eleventy/_includes/sections/vrf-v2-directfunding-common.md diff --git a/_includes/sections/vrf-v2-subscription-common.md b/.eleventy/_includes/sections/vrf-v2-subscription-common.md similarity index 100% rename from _includes/sections/vrf-v2-subscription-common.md rename to .eleventy/_includes/sections/vrf-v2-subscription-common.md diff --git a/_includes/sections/vrf-v2-ui-callout.md b/.eleventy/_includes/sections/vrf-v2-ui-callout.md similarity index 100% rename from _includes/sections/vrf-v2-ui-callout.md rename to .eleventy/_includes/sections/vrf-v2-ui-callout.md diff --git a/_includes/snippets/Keepers/cannotExecute.sol b/.eleventy/_includes/snippets/Keepers/cannotExecute.sol similarity index 100% rename from _includes/snippets/Keepers/cannotExecute.sol rename to .eleventy/_includes/snippets/Keepers/cannotExecute.sol diff --git a/_includes/snippets/Keepers/checkData.sol b/.eleventy/_includes/snippets/Keepers/checkData.sol similarity index 100% rename from _includes/snippets/Keepers/checkData.sol rename to .eleventy/_includes/snippets/Keepers/checkData.sol diff --git a/_includes/snippets/Keepers/configureCheckUpkeep.sol b/.eleventy/_includes/snippets/Keepers/configureCheckUpkeep.sol similarity index 100% rename from _includes/snippets/Keepers/configureCheckUpkeep.sol rename to .eleventy/_includes/snippets/Keepers/configureCheckUpkeep.sol diff --git a/_includes/snippets/Keepers/expensiveComputation.sol b/.eleventy/_includes/snippets/Keepers/expensiveComputation.sol similarity index 100% rename from _includes/snippets/Keepers/expensiveComputation.sol rename to .eleventy/_includes/snippets/Keepers/expensiveComputation.sol diff --git a/_includes/snippets/Keepers/performData.sol b/.eleventy/_includes/snippets/Keepers/performData.sol similarity index 100% rename from _includes/snippets/Keepers/performData.sol rename to .eleventy/_includes/snippets/Keepers/performData.sol diff --git a/_includes/snippets/Keepers/validationOfTriggers1.sol b/.eleventy/_includes/snippets/Keepers/validationOfTriggers1.sol similarity index 100% rename from _includes/snippets/Keepers/validationOfTriggers1.sol rename to .eleventy/_includes/snippets/Keepers/validationOfTriggers1.sol diff --git a/_includes/snippets/Keepers/validationOfTriggers2.sol b/.eleventy/_includes/snippets/Keepers/validationOfTriggers2.sol similarity index 100% rename from _includes/snippets/Keepers/validationOfTriggers2.sol rename to .eleventy/_includes/snippets/Keepers/validationOfTriggers2.sol diff --git a/_includes/snippets/VRF/VRFv2FundAndRequestFunction.sol b/.eleventy/_includes/snippets/VRF/VRFv2FundAndRequestFunction.sol similarity index 100% rename from _includes/snippets/VRF/VRFv2FundAndRequestFunction.sol rename to .eleventy/_includes/snippets/VRF/VRFv2FundAndRequestFunction.sol diff --git a/_includes/squash.js b/.eleventy/_includes/squash.js similarity index 100% rename from _includes/squash.js rename to .eleventy/_includes/squash.js diff --git a/_src/chainlink-developers.png b/.eleventy/_src/chainlink-developers.png similarity index 100% rename from _src/chainlink-developers.png rename to .eleventy/_src/chainlink-developers.png diff --git a/_src/chainlink-developers.svg b/.eleventy/_src/chainlink-developers.svg similarity index 100% rename from _src/chainlink-developers.svg rename to .eleventy/_src/chainlink-developers.svg diff --git a/_src/chainlink-docs.svg b/.eleventy/_src/chainlink-docs.svg similarity index 100% rename from _src/chainlink-docs.svg rename to .eleventy/_src/chainlink-docs.svg diff --git a/_src/chains-metadata.ts b/.eleventy/_src/chains-metadata.ts similarity index 100% rename from _src/chains-metadata.ts rename to .eleventy/_src/chains-metadata.ts diff --git a/_src/deploy-to-github.ts b/.eleventy/_src/deploy-to-github.ts similarity index 100% rename from _src/deploy-to-github.ts rename to .eleventy/_src/deploy-to-github.ts diff --git a/_src/docs.css b/.eleventy/_src/docs.css similarity index 100% rename from _src/docs.css rename to .eleventy/_src/docs.css diff --git a/_src/docsat.js b/.eleventy/_src/docsat.js similarity index 100% rename from _src/docsat.js rename to .eleventy/_src/docsat.js diff --git a/_src/ens.js b/.eleventy/_src/ens.js similarity index 100% rename from _src/ens.js rename to .eleventy/_src/ens.js diff --git a/_src/files/0d7cfd0-Chainlink_Witch.png b/.eleventy/_src/files/0d7cfd0-Chainlink_Witch.png similarity index 100% rename from _src/files/0d7cfd0-Chainlink_Witch.png rename to .eleventy/_src/files/0d7cfd0-Chainlink_Witch.png diff --git a/_src/files/11d7052-Screenshot_2020-11-27_at_10.16.47.png b/.eleventy/_src/files/11d7052-Screenshot_2020-11-27_at_10.16.47.png similarity index 100% rename from _src/files/11d7052-Screenshot_2020-11-27_at_10.16.47.png rename to .eleventy/_src/files/11d7052-Screenshot_2020-11-27_at_10.16.47.png diff --git a/_src/files/2306b8b-Decentralized_Oracles_V3.png b/.eleventy/_src/files/2306b8b-Decentralized_Oracles_V3.png similarity index 100% rename from _src/files/2306b8b-Decentralized_Oracles_V3.png rename to .eleventy/_src/files/2306b8b-Decentralized_Oracles_V3.png diff --git a/_src/files/25d2c8e-Screen_Shot_2020-09-08_at_7.15.50_AM.png b/.eleventy/_src/files/25d2c8e-Screen_Shot_2020-09-08_at_7.15.50_AM.png similarity index 100% rename from _src/files/25d2c8e-Screen_Shot_2020-09-08_at_7.15.50_AM.png rename to .eleventy/_src/files/25d2c8e-Screen_Shot_2020-09-08_at_7.15.50_AM.png diff --git a/_src/files/322e28d-Screenshot_2021-04-08_at_14.34.51.png b/.eleventy/_src/files/322e28d-Screenshot_2021-04-08_at_14.34.51.png similarity index 100% rename from _src/files/322e28d-Screenshot_2021-04-08_at_14.34.51.png rename to .eleventy/_src/files/322e28d-Screenshot_2021-04-08_at_14.34.51.png diff --git a/_src/files/32b02f2-FluxAggregator_Decision_Tree.png b/.eleventy/_src/files/32b02f2-FluxAggregator_Decision_Tree.png similarity index 100% rename from _src/files/32b02f2-FluxAggregator_Decision_Tree.png rename to .eleventy/_src/files/32b02f2-FluxAggregator_Decision_Tree.png diff --git a/_src/files/332bb9c-Screen_Shot_2020-09-08_at_9.21.52_AM.png b/.eleventy/_src/files/332bb9c-Screen_Shot_2020-09-08_at_9.21.52_AM.png similarity index 100% rename from _src/files/332bb9c-Screen_Shot_2020-09-08_at_9.21.52_AM.png rename to .eleventy/_src/files/332bb9c-Screen_Shot_2020-09-08_at_9.21.52_AM.png diff --git a/_src/files/3612878-Chainlink_Elf.png b/.eleventy/_src/files/3612878-Chainlink_Elf.png similarity index 100% rename from _src/files/3612878-Chainlink_Elf.png rename to .eleventy/_src/files/3612878-Chainlink_Elf.png diff --git a/_src/files/399e90d-Simple_Architecture_Diagram_2_V1.png b/.eleventy/_src/files/399e90d-Simple_Architecture_Diagram_2_V1.png similarity index 100% rename from _src/files/399e90d-Simple_Architecture_Diagram_2_V1.png rename to .eleventy/_src/files/399e90d-Simple_Architecture_Diagram_2_V1.png diff --git a/_src/files/429ae12-remix.png b/.eleventy/_src/files/429ae12-remix.png similarity index 100% rename from _src/files/429ae12-remix.png rename to .eleventy/_src/files/429ae12-remix.png diff --git a/_src/files/43ac349-Screenshot_from_2018-12-07_06-37-27.png b/.eleventy/_src/files/43ac349-Screenshot_from_2018-12-07_06-37-27.png similarity index 100% rename from _src/files/43ac349-Screenshot_from_2018-12-07_06-37-27.png rename to .eleventy/_src/files/43ac349-Screenshot_from_2018-12-07_06-37-27.png diff --git a/_src/files/48a267a-Screenshot_20200605_162024.png b/.eleventy/_src/files/48a267a-Screenshot_20200605_162024.png similarity index 100% rename from _src/files/48a267a-Screenshot_20200605_162024.png rename to .eleventy/_src/files/48a267a-Screenshot_20200605_162024.png diff --git a/_src/files/4b62f1c-Screenshot_2020-04-07_at_16.19.07.png b/.eleventy/_src/files/4b62f1c-Screenshot_2020-04-07_at_16.19.07.png similarity index 100% rename from _src/files/4b62f1c-Screenshot_2020-04-07_at_16.19.07.png rename to .eleventy/_src/files/4b62f1c-Screenshot_2020-04-07_at_16.19.07.png diff --git a/_src/files/4ffc692-Screenshot_2021-04-08_at_14.35.42.png b/.eleventy/_src/files/4ffc692-Screenshot_2021-04-08_at_14.35.42.png similarity index 100% rename from _src/files/4ffc692-Screenshot_2021-04-08_at_14.35.42.png rename to .eleventy/_src/files/4ffc692-Screenshot_2021-04-08_at_14.35.42.png diff --git a/_src/files/50b7476-remix.png b/.eleventy/_src/files/50b7476-remix.png similarity index 100% rename from _src/files/50b7476-remix.png rename to .eleventy/_src/files/50b7476-remix.png diff --git a/_src/files/5a589db-7b88b8d-sub-hero-chainlink-diagram.png b/.eleventy/_src/files/5a589db-7b88b8d-sub-hero-chainlink-diagram.png similarity index 100% rename from _src/files/5a589db-7b88b8d-sub-hero-chainlink-diagram.png rename to .eleventy/_src/files/5a589db-7b88b8d-sub-hero-chainlink-diagram.png diff --git a/_src/files/5aed95f-Screenshot_2021-04-08_at_14.36.19.png b/.eleventy/_src/files/5aed95f-Screenshot_2021-04-08_at_14.36.19.png similarity index 100% rename from _src/files/5aed95f-Screenshot_2021-04-08_at_14.36.19.png rename to .eleventy/_src/files/5aed95f-Screenshot_2021-04-08_at_14.36.19.png diff --git a/_src/files/64722ed-remix8.jpg b/.eleventy/_src/files/64722ed-remix8.jpg similarity index 100% rename from _src/files/64722ed-remix8.jpg rename to .eleventy/_src/files/64722ed-remix8.jpg diff --git a/_src/files/6741635-Screenshot_from_2019-05-15_15-38-25.png b/.eleventy/_src/files/6741635-Screenshot_from_2019-05-15_15-38-25.png similarity index 100% rename from _src/files/6741635-Screenshot_from_2019-05-15_15-38-25.png rename to .eleventy/_src/files/6741635-Screenshot_from_2019-05-15_15-38-25.png diff --git a/_src/files/6858cf3-remix006.jpg b/.eleventy/_src/files/6858cf3-remix006.jpg similarity index 100% rename from _src/files/6858cf3-remix006.jpg rename to .eleventy/_src/files/6858cf3-remix006.jpg diff --git a/_src/files/75337bf-Chainlink_Orc.png b/.eleventy/_src/files/75337bf-Chainlink_Orc.png similarity index 100% rename from _src/files/75337bf-Chainlink_Orc.png rename to .eleventy/_src/files/75337bf-Chainlink_Orc.png diff --git a/_src/files/79f4e61-image1.png b/.eleventy/_src/files/79f4e61-image1.png similarity index 100% rename from _src/files/79f4e61-image1.png rename to .eleventy/_src/files/79f4e61-image1.png diff --git a/_src/files/7c7f098-remix.jpg b/.eleventy/_src/files/7c7f098-remix.jpg similarity index 100% rename from _src/files/7c7f098-remix.jpg rename to .eleventy/_src/files/7c7f098-remix.jpg diff --git a/_src/files/85c4ddb-remix.png b/.eleventy/_src/files/85c4ddb-remix.png similarity index 100% rename from _src/files/85c4ddb-remix.png rename to .eleventy/_src/files/85c4ddb-remix.png diff --git a/_src/files/867073d-metamask.png b/.eleventy/_src/files/867073d-metamask.png similarity index 100% rename from _src/files/867073d-metamask.png rename to .eleventy/_src/files/867073d-metamask.png diff --git a/_src/files/881ade6-Simple_Architecture_Diagram_1_V1.png b/.eleventy/_src/files/881ade6-Simple_Architecture_Diagram_1_V1.png similarity index 100% rename from _src/files/881ade6-Simple_Architecture_Diagram_1_V1.png rename to .eleventy/_src/files/881ade6-Simple_Architecture_Diagram_1_V1.png diff --git a/_src/files/8ac3fc1-69a048b-Consumer_UML.svg b/.eleventy/_src/files/8ac3fc1-69a048b-Consumer_UML.svg similarity index 100% rename from _src/files/8ac3fc1-69a048b-Consumer_UML.svg rename to .eleventy/_src/files/8ac3fc1-69a048b-Consumer_UML.svg diff --git a/_src/files/8c35025-Request__Receive_Data.png b/.eleventy/_src/files/8c35025-Request__Receive_Data.png similarity index 100% rename from _src/files/8c35025-Request__Receive_Data.png rename to .eleventy/_src/files/8c35025-Request__Receive_Data.png diff --git a/_src/files/8cfc185-Screenshot_from_2019-06-21_08-29-07.png b/.eleventy/_src/files/8cfc185-Screenshot_from_2019-06-21_08-29-07.png similarity index 100% rename from _src/files/8cfc185-Screenshot_from_2019-06-21_08-29-07.png rename to .eleventy/_src/files/8cfc185-Screenshot_from_2019-06-21_08-29-07.png diff --git a/_src/files/8dbedba-Screen_Shot_2020-09-08_at_7.05.27_AM.png b/.eleventy/_src/files/8dbedba-Screen_Shot_2020-09-08_at_7.05.27_AM.png similarity index 100% rename from _src/files/8dbedba-Screen_Shot_2020-09-08_at_7.05.27_AM.png rename to .eleventy/_src/files/8dbedba-Screen_Shot_2020-09-08_at_7.05.27_AM.png diff --git a/_src/files/8ff4abe-remix7.jpg b/.eleventy/_src/files/8ff4abe-remix7.jpg similarity index 100% rename from _src/files/8ff4abe-remix7.jpg rename to .eleventy/_src/files/8ff4abe-remix7.jpg diff --git a/_src/files/OpenGraph_V3.png b/.eleventy/_src/files/OpenGraph_V3.png similarity index 100% rename from _src/files/OpenGraph_V3.png rename to .eleventy/_src/files/OpenGraph_V3.png diff --git a/_src/files/a4c6c80-85d09b6-19facd8-banner.png b/.eleventy/_src/files/a4c6c80-85d09b6-19facd8-banner.png similarity index 100% rename from _src/files/a4c6c80-85d09b6-19facd8-banner.png rename to .eleventy/_src/files/a4c6c80-85d09b6-19facd8-banner.png diff --git a/_src/files/a8a5ecd-Screenshot_from_2019-05-16_15-39-05.png b/.eleventy/_src/files/a8a5ecd-Screenshot_from_2019-05-16_15-39-05.png similarity index 100% rename from _src/files/a8a5ecd-Screenshot_from_2019-05-16_15-39-05.png rename to .eleventy/_src/files/a8a5ecd-Screenshot_from_2019-05-16_15-39-05.png diff --git a/_src/files/aa0ff6f-Screenshot_2021-04-08_at_14.32.58.png b/.eleventy/_src/files/aa0ff6f-Screenshot_2021-04-08_at_14.32.58.png similarity index 100% rename from _src/files/aa0ff6f-Screenshot_2021-04-08_at_14.32.58.png rename to .eleventy/_src/files/aa0ff6f-Screenshot_2021-04-08_at_14.32.58.png diff --git a/_src/files/ab5762f-end-to-end-diagram.png b/.eleventy/_src/files/ab5762f-end-to-end-diagram.png similarity index 100% rename from _src/files/ab5762f-end-to-end-diagram.png rename to .eleventy/_src/files/ab5762f-end-to-end-diagram.png diff --git a/_src/files/ad5784b-remix.png b/.eleventy/_src/files/ad5784b-remix.png similarity index 100% rename from _src/files/ad5784b-remix.png rename to .eleventy/_src/files/ad5784b-remix.png diff --git a/_src/files/afe3efe-marketlink.jpg b/.eleventy/_src/files/afe3efe-marketlink.jpg similarity index 100% rename from _src/files/afe3efe-marketlink.jpg rename to .eleventy/_src/files/afe3efe-marketlink.jpg diff --git a/_src/files/b6fe1ac-remix005.jpg b/.eleventy/_src/files/b6fe1ac-remix005.jpg similarity index 100% rename from _src/files/b6fe1ac-remix005.jpg rename to .eleventy/_src/files/b6fe1ac-remix005.jpg diff --git a/_src/files/b75c859-Screen_Shot_2021-02-19_at_11.44.44_AM.png b/.eleventy/_src/files/b75c859-Screen_Shot_2021-02-19_at_11.44.44_AM.png similarity index 100% rename from _src/files/b75c859-Screen_Shot_2021-02-19_at_11.44.44_AM.png rename to .eleventy/_src/files/b75c859-Screen_Shot_2021-02-19_at_11.44.44_AM.png diff --git a/_src/files/b8774fe-Screen_Shot_2020-09-08_at_7.10.07_AM.png b/.eleventy/_src/files/b8774fe-Screen_Shot_2020-09-08_at_7.10.07_AM.png similarity index 100% rename from _src/files/b8774fe-Screen_Shot_2020-09-08_at_7.10.07_AM.png rename to .eleventy/_src/files/b8774fe-Screen_Shot_2020-09-08_at_7.10.07_AM.png diff --git a/_src/files/b9d3620-remix004.jpg b/.eleventy/_src/files/b9d3620-remix004.jpg similarity index 100% rename from _src/files/b9d3620-remix004.jpg rename to .eleventy/_src/files/b9d3620-remix004.jpg diff --git a/_src/files/bb28207-metamask.png b/.eleventy/_src/files/bb28207-metamask.png similarity index 100% rename from _src/files/bb28207-metamask.png rename to .eleventy/_src/files/bb28207-metamask.png diff --git a/_src/files/beginner-tutorial-remix-snapshot.png b/.eleventy/_src/files/beginner-tutorial-remix-snapshot.png similarity index 100% rename from _src/files/beginner-tutorial-remix-snapshot.png rename to .eleventy/_src/files/beginner-tutorial-remix-snapshot.png diff --git a/_src/files/c6925db-remix007.jpg b/.eleventy/_src/files/c6925db-remix007.jpg similarity index 100% rename from _src/files/c6925db-remix007.jpg rename to .eleventy/_src/files/c6925db-remix007.jpg diff --git a/_src/files/c6e99c5-Untitled_design_23.png b/.eleventy/_src/files/c6e99c5-Untitled_design_23.png similarity index 100% rename from _src/files/c6e99c5-Untitled_design_23.png rename to .eleventy/_src/files/c6e99c5-Untitled_design_23.png diff --git a/_src/files/d082799-metamask.png b/.eleventy/_src/files/d082799-metamask.png similarity index 100% rename from _src/files/d082799-metamask.png rename to .eleventy/_src/files/d082799-metamask.png diff --git a/_src/files/d24f0f2-remix.png b/.eleventy/_src/files/d24f0f2-remix.png similarity index 100% rename from _src/files/d24f0f2-remix.png rename to .eleventy/_src/files/d24f0f2-remix.png diff --git a/_src/files/d28ea86-Screen_Shot_2020-09-08_at_9.22.21_AM.png b/.eleventy/_src/files/d28ea86-Screen_Shot_2020-09-08_at_9.22.21_AM.png similarity index 100% rename from _src/files/d28ea86-Screen_Shot_2020-09-08_at_9.22.21_AM.png rename to .eleventy/_src/files/d28ea86-Screen_Shot_2020-09-08_at_9.22.21_AM.png diff --git a/_src/files/d2e5225-Screenshot_from_2018-12-17_08-23-16.png b/.eleventy/_src/files/d2e5225-Screenshot_from_2018-12-17_08-23-16.png similarity index 100% rename from _src/files/d2e5225-Screenshot_from_2018-12-17_08-23-16.png rename to .eleventy/_src/files/d2e5225-Screenshot_from_2018-12-17_08-23-16.png diff --git a/_src/files/d5708a0-remix.png b/.eleventy/_src/files/d5708a0-remix.png similarity index 100% rename from _src/files/d5708a0-remix.png rename to .eleventy/_src/files/d5708a0-remix.png diff --git a/_src/files/de9b81c-kovan.gif b/.eleventy/_src/files/de9b81c-kovan.gif similarity index 100% rename from _src/files/de9b81c-kovan.gif rename to .eleventy/_src/files/de9b81c-kovan.gif diff --git a/_src/files/e00834f-metamask.png b/.eleventy/_src/files/e00834f-metamask.png similarity index 100% rename from _src/files/e00834f-metamask.png rename to .eleventy/_src/files/e00834f-metamask.png diff --git a/_src/files/ea-new-bridge.png b/.eleventy/_src/files/ea-new-bridge.png similarity index 100% rename from _src/files/ea-new-bridge.png rename to .eleventy/_src/files/ea-new-bridge.png diff --git a/_src/files/f5122c8-Chainlink_Knight.png b/.eleventy/_src/files/f5122c8-Chainlink_Knight.png similarity index 100% rename from _src/files/f5122c8-Chainlink_Knight.png rename to .eleventy/_src/files/f5122c8-Chainlink_Knight.png diff --git a/_src/files/f8ffdc0-c6925db-remix007.jpg b/.eleventy/_src/files/f8ffdc0-c6925db-remix007.jpg similarity index 100% rename from _src/files/f8ffdc0-c6925db-remix007.jpg rename to .eleventy/_src/files/f8ffdc0-c6925db-remix007.jpg diff --git a/_src/files/faucet-success.png b/.eleventy/_src/files/faucet-success.png similarity index 100% rename from _src/files/faucet-success.png rename to .eleventy/_src/files/faucet-success.png diff --git a/_src/files/fc21723-Screenshot_2020-04-07_at_16.16.07.png b/.eleventy/_src/files/fc21723-Screenshot_2020-04-07_at_16.16.07.png similarity index 100% rename from _src/files/fc21723-Screenshot_2020-04-07_at_16.16.07.png rename to .eleventy/_src/files/fc21723-Screenshot_2020-04-07_at_16.16.07.png diff --git a/_src/files/feed-registry.png b/.eleventy/_src/files/feed-registry.png similarity index 100% rename from _src/files/feed-registry.png rename to .eleventy/_src/files/feed-registry.png diff --git a/_src/files/intermediates-tutorial-01.png b/.eleventy/_src/files/intermediates-tutorial-01.png similarity index 100% rename from _src/files/intermediates-tutorial-01.png rename to .eleventy/_src/files/intermediates-tutorial-01.png diff --git a/_src/files/intermediates-tutorial-02.png b/.eleventy/_src/files/intermediates-tutorial-02.png similarity index 100% rename from _src/files/intermediates-tutorial-02.png rename to .eleventy/_src/files/intermediates-tutorial-02.png diff --git a/_src/files/intermediates-tutorial-03.png b/.eleventy/_src/files/intermediates-tutorial-03.png similarity index 100% rename from _src/files/intermediates-tutorial-03.png rename to .eleventy/_src/files/intermediates-tutorial-03.png diff --git a/_src/files/new-issue-category.png b/.eleventy/_src/files/new-issue-category.png similarity index 100% rename from _src/files/new-issue-category.png rename to .eleventy/_src/files/new-issue-category.png diff --git a/_src/files/voting-issue.png b/.eleventy/_src/files/voting-issue.png similarity index 100% rename from _src/files/voting-issue.png rename to .eleventy/_src/files/voting-issue.png diff --git a/_src/files/webhook-run.png b/.eleventy/_src/files/webhook-run.png similarity index 100% rename from _src/files/webhook-run.png rename to .eleventy/_src/files/webhook-run.png diff --git a/_src/get-latest-price-feed-registry.js b/.eleventy/_src/get-latest-price-feed-registry.js similarity index 100% rename from _src/get-latest-price-feed-registry.js rename to .eleventy/_src/get-latest-price-feed-registry.js diff --git a/_src/get-latest-price.js b/.eleventy/_src/get-latest-price.js similarity index 100% rename from _src/get-latest-price.js rename to .eleventy/_src/get-latest-price.js diff --git a/_src/github.svg b/.eleventy/_src/github.svg similarity index 100% rename from _src/github.svg rename to .eleventy/_src/github.svg diff --git a/_src/images/background-light.jpg b/.eleventy/_src/images/background-light.jpg similarity index 100% rename from _src/images/background-light.jpg rename to .eleventy/_src/images/background-light.jpg diff --git a/_src/images/card-icons/5f75b5e6e24b376ed9ab5c1e_programming-browser.svg b/.eleventy/_src/images/card-icons/5f75b5e6e24b376ed9ab5c1e_programming-browser.svg similarity index 100% rename from _src/images/card-icons/5f75b5e6e24b376ed9ab5c1e_programming-browser.svg rename to .eleventy/_src/images/card-icons/5f75b5e6e24b376ed9ab5c1e_programming-browser.svg diff --git a/_src/images/card-icons/5f75b5fde8d4beb3824522bb_lock.svg b/.eleventy/_src/images/card-icons/5f75b5fde8d4beb3824522bb_lock.svg similarity index 100% rename from _src/images/card-icons/5f75b5fde8d4beb3824522bb_lock.svg rename to .eleventy/_src/images/card-icons/5f75b5fde8d4beb3824522bb_lock.svg diff --git a/_src/images/card-icons/5f75cc9f74f7124d70ad4f0a_file-code-check.svg b/.eleventy/_src/images/card-icons/5f75cc9f74f7124d70ad4f0a_file-code-check.svg similarity index 100% rename from _src/images/card-icons/5f75cc9f74f7124d70ad4f0a_file-code-check.svg rename to .eleventy/_src/images/card-icons/5f75cc9f74f7124d70ad4f0a_file-code-check.svg diff --git a/_src/images/card-icons/5f75ccd99b524261854d093d_multiple-users-network.svg b/.eleventy/_src/images/card-icons/5f75ccd99b524261854d093d_multiple-users-network.svg similarity index 100% rename from _src/images/card-icons/5f75ccd99b524261854d093d_multiple-users-network.svg rename to .eleventy/_src/images/card-icons/5f75ccd99b524261854d093d_multiple-users-network.svg diff --git a/_src/images/card-icons/5f75e7d3f8ef05758ce8c1f5_bulb.svg b/.eleventy/_src/images/card-icons/5f75e7d3f8ef05758ce8c1f5_bulb.svg similarity index 100% rename from _src/images/card-icons/5f75e7d3f8ef05758ce8c1f5_bulb.svg rename to .eleventy/_src/images/card-icons/5f75e7d3f8ef05758ce8c1f5_bulb.svg diff --git a/_src/images/card-icons/5f771e39793e0f78a75547bf_board-game-dice.svg b/.eleventy/_src/images/card-icons/5f771e39793e0f78a75547bf_board-game-dice.svg similarity index 100% rename from _src/images/card-icons/5f771e39793e0f78a75547bf_board-game-dice.svg rename to .eleventy/_src/images/card-icons/5f771e39793e0f78a75547bf_board-game-dice.svg diff --git a/_src/images/card-icons/5f85d14b6782933bd5a70060_decentralized.svg b/.eleventy/_src/images/card-icons/5f85d14b6782933bd5a70060_decentralized.svg similarity index 100% rename from _src/images/card-icons/5f85d14b6782933bd5a70060_decentralized.svg rename to .eleventy/_src/images/card-icons/5f85d14b6782933bd5a70060_decentralized.svg diff --git a/_src/images/card-icons/5f8825a8a76298e280868970_refresh-money.svg b/.eleventy/_src/images/card-icons/5f8825a8a76298e280868970_refresh-money.svg similarity index 100% rename from _src/images/card-icons/5f8825a8a76298e280868970_refresh-money.svg rename to .eleventy/_src/images/card-icons/5f8825a8a76298e280868970_refresh-money.svg diff --git a/_src/images/card-icons/5f96ab4b4db522072b7ff30c_book-bookmark.svg b/.eleventy/_src/images/card-icons/5f96ab4b4db522072b7ff30c_book-bookmark.svg similarity index 100% rename from _src/images/card-icons/5f96ab4b4db522072b7ff30c_book-bookmark.svg rename to .eleventy/_src/images/card-icons/5f96ab4b4db522072b7ff30c_book-bookmark.svg diff --git a/_src/images/card-icons/61095848a2a30f150520167b_keepers.svg b/.eleventy/_src/images/card-icons/61095848a2a30f150520167b_keepers.svg similarity index 100% rename from _src/images/card-icons/61095848a2a30f150520167b_keepers.svg rename to .eleventy/_src/images/card-icons/61095848a2a30f150520167b_keepers.svg diff --git a/_src/images/card-icons/61163fe987f45b67ab88bcfe_common-file-text-chainlink.svg b/.eleventy/_src/images/card-icons/61163fe987f45b67ab88bcfe_common-file-text-chainlink.svg similarity index 100% rename from _src/images/card-icons/61163fe987f45b67ab88bcfe_common-file-text-chainlink.svg rename to .eleventy/_src/images/card-icons/61163fe987f45b67ab88bcfe_common-file-text-chainlink.svg diff --git a/_src/images/card-icons/615d625188a183697b76f712_earth-move.svg b/.eleventy/_src/images/card-icons/615d625188a183697b76f712_earth-move.svg similarity index 100% rename from _src/images/card-icons/615d625188a183697b76f712_earth-move.svg rename to .eleventy/_src/images/card-icons/615d625188a183697b76f712_earth-move.svg diff --git a/_src/images/card-icons/arrow-right.svg b/.eleventy/_src/images/card-icons/arrow-right.svg similarity index 100% rename from _src/images/card-icons/arrow-right.svg rename to .eleventy/_src/images/card-icons/arrow-right.svg diff --git a/_src/images/card-icons/help_avatar.svg b/.eleventy/_src/images/card-icons/help_avatar.svg similarity index 100% rename from _src/images/card-icons/help_avatar.svg rename to .eleventy/_src/images/card-icons/help_avatar.svg diff --git a/_src/images/card-icons/navigation-arrow-right.svg b/.eleventy/_src/images/card-icons/navigation-arrow-right.svg similarity index 100% rename from _src/images/card-icons/navigation-arrow-right.svg rename to .eleventy/_src/images/card-icons/navigation-arrow-right.svg diff --git a/_src/images/card-icons/stackoverflow_avatar.svg b/.eleventy/_src/images/card-icons/stackoverflow_avatar.svg similarity index 100% rename from _src/images/card-icons/stackoverflow_avatar.svg rename to .eleventy/_src/images/card-icons/stackoverflow_avatar.svg diff --git a/_src/images/card-icons/youtube_avatar.svg b/.eleventy/_src/images/card-icons/youtube_avatar.svg similarity index 100% rename from _src/images/card-icons/youtube_avatar.svg rename to .eleventy/_src/images/card-icons/youtube_avatar.svg diff --git a/_src/images/contract-devs/automation/auto-job-scheduler.gif b/.eleventy/_src/images/contract-devs/automation/auto-job-scheduler.gif similarity index 100% rename from _src/images/contract-devs/automation/auto-job-scheduler.gif rename to .eleventy/_src/images/contract-devs/automation/auto-job-scheduler.gif diff --git a/_src/images/contract-devs/automation/auto-ui-home.png b/.eleventy/_src/images/contract-devs/automation/auto-ui-home.png similarity index 100% rename from _src/images/contract-devs/automation/auto-ui-home.png rename to .eleventy/_src/images/contract-devs/automation/auto-ui-home.png diff --git a/_src/images/contract-devs/automation/auto-ui-pick.png b/.eleventy/_src/images/contract-devs/automation/auto-ui-pick.png similarity index 100% rename from _src/images/contract-devs/automation/auto-ui-pick.png rename to .eleventy/_src/images/contract-devs/automation/auto-ui-pick.png diff --git a/_src/images/contract-devs/automation/auto-ui-wallet.png b/.eleventy/_src/images/contract-devs/automation/auto-ui-wallet.png similarity index 100% rename from _src/images/contract-devs/automation/auto-ui-wallet.png rename to .eleventy/_src/images/contract-devs/automation/auto-ui-wallet.png diff --git a/_src/images/contract-devs/automation/automation-add-funds.png b/.eleventy/_src/images/contract-devs/automation/automation-add-funds.png similarity index 100% rename from _src/images/contract-devs/automation/automation-add-funds.png rename to .eleventy/_src/images/contract-devs/automation/automation-add-funds.png diff --git a/_src/images/contract-devs/automation/automation-approve-allowance.png b/.eleventy/_src/images/contract-devs/automation/automation-approve-allowance.png similarity index 100% rename from _src/images/contract-devs/automation/automation-approve-allowance.png rename to .eleventy/_src/images/contract-devs/automation/automation-approve-allowance.png diff --git a/_src/images/contract-devs/automation/automation-confirm-transfer.png b/.eleventy/_src/images/contract-devs/automation/automation-confirm-transfer.png similarity index 100% rename from _src/images/contract-devs/automation/automation-confirm-transfer.png rename to .eleventy/_src/images/contract-devs/automation/automation-confirm-transfer.png diff --git a/_src/images/contract-devs/automation/automation-connect-wallet.png b/.eleventy/_src/images/contract-devs/automation/automation-connect-wallet.png similarity index 100% rename from _src/images/contract-devs/automation/automation-connect-wallet.png rename to .eleventy/_src/images/contract-devs/automation/automation-connect-wallet.png diff --git a/_src/images/contract-devs/automation/automation-cron-expression.png b/.eleventy/_src/images/contract-devs/automation/automation-cron-expression.png similarity index 100% rename from _src/images/contract-devs/automation/automation-cron-expression.png rename to .eleventy/_src/images/contract-devs/automation/automation-cron-expression.png diff --git a/_src/images/contract-devs/automation/automation-overview.png b/.eleventy/_src/images/contract-devs/automation/automation-overview.png similarity index 100% rename from _src/images/contract-devs/automation/automation-overview.png rename to .eleventy/_src/images/contract-devs/automation/automation-overview.png diff --git a/_src/images/contract-devs/automation/automation-pricing-example.png b/.eleventy/_src/images/contract-devs/automation/automation-pricing-example.png similarity index 100% rename from _src/images/contract-devs/automation/automation-pricing-example.png rename to .eleventy/_src/images/contract-devs/automation/automation-pricing-example.png diff --git a/_src/images/contract-devs/automation/automation-pricing.png b/.eleventy/_src/images/contract-devs/automation/automation-pricing.png similarity index 100% rename from _src/images/contract-devs/automation/automation-pricing.png rename to .eleventy/_src/images/contract-devs/automation/automation-pricing.png diff --git a/_src/images/contract-devs/automation/automation-register.png b/.eleventy/_src/images/contract-devs/automation/automation-register.png similarity index 100% rename from _src/images/contract-devs/automation/automation-register.png rename to .eleventy/_src/images/contract-devs/automation/automation-register.png diff --git a/_src/images/contract-devs/automation/automation-registration-submitted.png b/.eleventy/_src/images/contract-devs/automation/automation-registration-submitted.png similarity index 100% rename from _src/images/contract-devs/automation/automation-registration-submitted.png rename to .eleventy/_src/images/contract-devs/automation/automation-registration-submitted.png diff --git a/_src/images/contract-devs/automation/automation-time-based-trigger.png b/.eleventy/_src/images/contract-devs/automation/automation-time-based-trigger.png similarity index 100% rename from _src/images/contract-devs/automation/automation-time-based-trigger.png rename to .eleventy/_src/images/contract-devs/automation/automation-time-based-trigger.png diff --git a/_src/images/contract-devs/automation/automation-trigger-selection.png b/.eleventy/_src/images/contract-devs/automation/automation-trigger-selection.png similarity index 100% rename from _src/images/contract-devs/automation/automation-trigger-selection.png rename to .eleventy/_src/images/contract-devs/automation/automation-trigger-selection.png diff --git a/_src/images/contract-devs/automation/automation-upkeep-details.png b/.eleventy/_src/images/contract-devs/automation/automation-upkeep-details.png similarity index 100% rename from _src/images/contract-devs/automation/automation-upkeep-details.png rename to .eleventy/_src/images/contract-devs/automation/automation-upkeep-details.png diff --git a/_src/images/contract-devs/automation/automation_intro.gif b/.eleventy/_src/images/contract-devs/automation/automation_intro.gif similarity index 100% rename from _src/images/contract-devs/automation/automation_intro.gif rename to .eleventy/_src/images/contract-devs/automation/automation_intro.gif diff --git a/_src/images/contract-devs/automation/balancerOffChain1-gas.png b/.eleventy/_src/images/contract-devs/automation/balancerOffChain1-gas.png similarity index 100% rename from _src/images/contract-devs/automation/balancerOffChain1-gas.png rename to .eleventy/_src/images/contract-devs/automation/balancerOffChain1-gas.png diff --git a/_src/images/contract-devs/automation/balancerOffChain1-history.png b/.eleventy/_src/images/contract-devs/automation/balancerOffChain1-history.png similarity index 100% rename from _src/images/contract-devs/automation/balancerOffChain1-history.png rename to .eleventy/_src/images/contract-devs/automation/balancerOffChain1-history.png diff --git a/_src/images/contract-devs/automation/balancerOffChain2-gas.png b/.eleventy/_src/images/contract-devs/automation/balancerOffChain2-gas.png similarity index 100% rename from _src/images/contract-devs/automation/balancerOffChain2-gas.png rename to .eleventy/_src/images/contract-devs/automation/balancerOffChain2-gas.png diff --git a/_src/images/contract-devs/automation/balancerOffChain2-history.png b/.eleventy/_src/images/contract-devs/automation/balancerOffChain2-history.png similarity index 100% rename from _src/images/contract-devs/automation/balancerOffChain2-history.png rename to .eleventy/_src/images/contract-devs/automation/balancerOffChain2-history.png diff --git a/_src/images/contract-devs/automation/balancerOffChain3-gas.png b/.eleventy/_src/images/contract-devs/automation/balancerOffChain3-gas.png similarity index 100% rename from _src/images/contract-devs/automation/balancerOffChain3-gas.png rename to .eleventy/_src/images/contract-devs/automation/balancerOffChain3-gas.png diff --git a/_src/images/contract-devs/automation/balancerOffChain3-history.png b/.eleventy/_src/images/contract-devs/automation/balancerOffChain3-history.png similarity index 100% rename from _src/images/contract-devs/automation/balancerOffChain3-history.png rename to .eleventy/_src/images/contract-devs/automation/balancerOffChain3-history.png diff --git a/_src/images/contract-devs/automation/balancerOnChain-gas.png b/.eleventy/_src/images/contract-devs/automation/balancerOnChain-gas.png similarity index 100% rename from _src/images/contract-devs/automation/balancerOnChain-gas.png rename to .eleventy/_src/images/contract-devs/automation/balancerOnChain-gas.png diff --git a/_src/images/contract-devs/automation/balancerOnChain-history.png b/.eleventy/_src/images/contract-devs/automation/balancerOnChain-history.png similarity index 100% rename from _src/images/contract-devs/automation/balancerOnChain-history.png rename to .eleventy/_src/images/contract-devs/automation/balancerOnChain-history.png diff --git a/_src/images/contract-devs/automation/balancerOnChain-withdraw.png b/.eleventy/_src/images/contract-devs/automation/balancerOnChain-withdraw.png similarity index 100% rename from _src/images/contract-devs/automation/balancerOnChain-withdraw.png rename to .eleventy/_src/images/contract-devs/automation/balancerOnChain-withdraw.png diff --git a/_src/images/contract-devs/automation/icon-automation.svg b/.eleventy/_src/images/contract-devs/automation/icon-automation.svg similarity index 100% rename from _src/images/contract-devs/automation/icon-automation.svg rename to .eleventy/_src/images/contract-devs/automation/icon-automation.svg diff --git a/_src/images/contract-devs/automation/job-scheduler.gif b/.eleventy/_src/images/contract-devs/automation/job-scheduler.gif similarity index 100% rename from _src/images/contract-devs/automation/job-scheduler.gif rename to .eleventy/_src/images/contract-devs/automation/job-scheduler.gif diff --git a/_src/images/contract-devs/automation/network.png b/.eleventy/_src/images/contract-devs/automation/network.png similarity index 100% rename from _src/images/contract-devs/automation/network.png rename to .eleventy/_src/images/contract-devs/automation/network.png diff --git a/_src/images/contract-devs/generic-banner.png b/.eleventy/_src/images/contract-devs/generic-banner.png similarity index 100% rename from _src/images/contract-devs/generic-banner.png rename to .eleventy/_src/images/contract-devs/generic-banner.png diff --git a/_src/images/contract-devs/metamask-1.png b/.eleventy/_src/images/contract-devs/metamask-1.png similarity index 100% rename from _src/images/contract-devs/metamask-1.png rename to .eleventy/_src/images/contract-devs/metamask-1.png diff --git a/_src/images/contract-devs/metamask-2.png b/.eleventy/_src/images/contract-devs/metamask-2.png similarity index 100% rename from _src/images/contract-devs/metamask-2.png rename to .eleventy/_src/images/contract-devs/metamask-2.png diff --git a/_src/images/contract-devs/price-aggr.png b/.eleventy/_src/images/contract-devs/price-aggr.png similarity index 100% rename from _src/images/contract-devs/price-aggr.png rename to .eleventy/_src/images/contract-devs/price-aggr.png diff --git a/_src/images/contract-devs/qr.png b/.eleventy/_src/images/contract-devs/qr.png similarity index 100% rename from _src/images/contract-devs/qr.png rename to .eleventy/_src/images/contract-devs/qr.png diff --git a/_src/images/dag_example.png b/.eleventy/_src/images/dag_example.png similarity index 100% rename from _src/images/dag_example.png rename to .eleventy/_src/images/dag_example.png diff --git a/_src/images/data-feed/cross-chain-reserves.webp b/.eleventy/_src/images/data-feed/cross-chain-reserves.webp similarity index 100% rename from _src/images/data-feed/cross-chain-reserves.webp rename to .eleventy/_src/images/data-feed/cross-chain-reserves.webp diff --git a/_src/images/data-feed/getRoundData-sequence.png b/.eleventy/_src/images/data-feed/getRoundData-sequence.png similarity index 100% rename from _src/images/data-feed/getRoundData-sequence.png rename to .eleventy/_src/images/data-feed/getRoundData-sequence.png diff --git a/_src/images/data-feed/l2-diagram-arbitrum.svg b/.eleventy/_src/images/data-feed/l2-diagram-arbitrum.svg similarity index 100% rename from _src/images/data-feed/l2-diagram-arbitrum.svg rename to .eleventy/_src/images/data-feed/l2-diagram-arbitrum.svg diff --git a/_src/images/data-feed/l2-diagram-arbitrum.webp b/.eleventy/_src/images/data-feed/l2-diagram-arbitrum.webp similarity index 100% rename from _src/images/data-feed/l2-diagram-arbitrum.webp rename to .eleventy/_src/images/data-feed/l2-diagram-arbitrum.webp diff --git a/_src/images/data-feed/l2-diagram-optimism-metis.svg b/.eleventy/_src/images/data-feed/l2-diagram-optimism-metis.svg similarity index 100% rename from _src/images/data-feed/l2-diagram-optimism-metis.svg rename to .eleventy/_src/images/data-feed/l2-diagram-optimism-metis.svg diff --git a/_src/images/data-feed/l2-diagram-optimism-metis.webp b/.eleventy/_src/images/data-feed/l2-diagram-optimism-metis.webp similarity index 100% rename from _src/images/data-feed/l2-diagram-optimism-metis.webp rename to .eleventy/_src/images/data-feed/l2-diagram-optimism-metis.webp diff --git a/_src/images/data-feed/off-chain-reserves.webp b/.eleventy/_src/images/data-feed/off-chain-reserves.webp similarity index 100% rename from _src/images/data-feed/off-chain-reserves.webp rename to .eleventy/_src/images/data-feed/off-chain-reserves.webp diff --git a/_src/images/data-feed/seq-down-1.svg b/.eleventy/_src/images/data-feed/seq-down-1.svg similarity index 100% rename from _src/images/data-feed/seq-down-1.svg rename to .eleventy/_src/images/data-feed/seq-down-1.svg diff --git a/_src/images/data-feed/seq-down-1.webp b/.eleventy/_src/images/data-feed/seq-down-1.webp similarity index 100% rename from _src/images/data-feed/seq-down-1.webp rename to .eleventy/_src/images/data-feed/seq-down-1.webp diff --git a/_src/images/data-feed/seq-down-2.svg b/.eleventy/_src/images/data-feed/seq-down-2.svg similarity index 100% rename from _src/images/data-feed/seq-down-2.svg rename to .eleventy/_src/images/data-feed/seq-down-2.svg diff --git a/_src/images/data-feed/seq-down-2.webp b/.eleventy/_src/images/data-feed/seq-down-2.webp similarity index 100% rename from _src/images/data-feed/seq-down-2.webp rename to .eleventy/_src/images/data-feed/seq-down-2.webp diff --git a/_src/images/discord.svg b/.eleventy/_src/images/discord.svg similarity index 100% rename from _src/images/discord.svg rename to .eleventy/_src/images/discord.svg diff --git a/_src/images/getting-started/compileHelloWorld.png b/.eleventy/_src/images/getting-started/compileHelloWorld.png similarity index 100% rename from _src/images/getting-started/compileHelloWorld.png rename to .eleventy/_src/images/getting-started/compileHelloWorld.png diff --git a/_src/images/getting-started/compilePriceConsumerV3.png b/.eleventy/_src/images/getting-started/compilePriceConsumerV3.png similarity index 100% rename from _src/images/getting-started/compilePriceConsumerV3.png rename to .eleventy/_src/images/getting-started/compilePriceConsumerV3.png diff --git a/_src/images/getting-started/confirmTransaction.png b/.eleventy/_src/images/getting-started/confirmTransaction.png similarity index 100% rename from _src/images/getting-started/confirmTransaction.png rename to .eleventy/_src/images/getting-started/confirmTransaction.png diff --git a/_src/images/getting-started/connectRemix.png b/.eleventy/_src/images/getting-started/connectRemix.png similarity index 100% rename from _src/images/getting-started/connectRemix.png rename to .eleventy/_src/images/getting-started/connectRemix.png diff --git a/_src/images/getting-started/deployHelloWorld.png b/.eleventy/_src/images/getting-started/deployHelloWorld.png similarity index 100% rename from _src/images/getting-started/deployHelloWorld.png rename to .eleventy/_src/images/getting-started/deployHelloWorld.png diff --git a/_src/images/getting-started/deployPriceConsumerV3.png b/.eleventy/_src/images/getting-started/deployPriceConsumerV3.png similarity index 100% rename from _src/images/getting-started/deployPriceConsumerV3.png rename to .eleventy/_src/images/getting-started/deployPriceConsumerV3.png diff --git a/_src/images/getting-started/deployedContract.png b/.eleventy/_src/images/getting-started/deployedContract.png similarity index 100% rename from _src/images/getting-started/deployedContract.png rename to .eleventy/_src/images/getting-started/deployedContract.png diff --git a/_src/images/getting-started/deployedContractPriceConsumerV3.png b/.eleventy/_src/images/getting-started/deployedContractPriceConsumerV3.png similarity index 100% rename from _src/images/getting-started/deployedContractPriceConsumerV3.png rename to .eleventy/_src/images/getting-started/deployedContractPriceConsumerV3.png diff --git a/_src/images/getting-started/fundedWallet.png b/.eleventy/_src/images/getting-started/fundedWallet.png similarity index 100% rename from _src/images/getting-started/fundedWallet.png rename to .eleventy/_src/images/getting-started/fundedWallet.png diff --git a/_src/images/getting-started/getLatestPrice.png b/.eleventy/_src/images/getting-started/getLatestPrice.png similarity index 100% rename from _src/images/getting-started/getLatestPrice.png rename to .eleventy/_src/images/getting-started/getLatestPrice.png diff --git a/_src/images/getting-started/metamaskImportTokens.webp b/.eleventy/_src/images/getting-started/metamaskImportTokens.webp similarity index 100% rename from _src/images/getting-started/metamaskImportTokens.webp rename to .eleventy/_src/images/getting-started/metamaskImportTokens.webp diff --git a/_src/images/getting-started/openMetaMask.png b/.eleventy/_src/images/getting-started/openMetaMask.png similarity index 100% rename from _src/images/getting-started/openMetaMask.png rename to .eleventy/_src/images/getting-started/openMetaMask.png diff --git a/_src/images/getting-started/runHelloWorld.png b/.eleventy/_src/images/getting-started/runHelloWorld.png similarity index 100% rename from _src/images/getting-started/runHelloWorld.png rename to .eleventy/_src/images/getting-started/runHelloWorld.png diff --git a/_src/images/getting-started/runHelloWorldAgain.png b/.eleventy/_src/images/getting-started/runHelloWorldAgain.png similarity index 100% rename from _src/images/getting-started/runHelloWorldAgain.png rename to .eleventy/_src/images/getting-started/runHelloWorldAgain.png diff --git a/_src/images/getting-started/runUpdateMessage.png b/.eleventy/_src/images/getting-started/runUpdateMessage.png similarity index 100% rename from _src/images/getting-started/runUpdateMessage.png rename to .eleventy/_src/images/getting-started/runUpdateMessage.png diff --git a/_src/images/getting-started/selectGoerli.webp b/.eleventy/_src/images/getting-started/selectGoerli.webp similarity index 100% rename from _src/images/getting-started/selectGoerli.webp rename to .eleventy/_src/images/getting-started/selectGoerli.webp diff --git a/_src/images/getting-started/selectPriceConsumerV3.png b/.eleventy/_src/images/getting-started/selectPriceConsumerV3.png similarity index 100% rename from _src/images/getting-started/selectPriceConsumerV3.png rename to .eleventy/_src/images/getting-started/selectPriceConsumerV3.png diff --git a/_src/images/getting-started/selectSolidityCompiler.png b/.eleventy/_src/images/getting-started/selectSolidityCompiler.png similarity index 100% rename from _src/images/getting-started/selectSolidityCompiler.png rename to .eleventy/_src/images/getting-started/selectSolidityCompiler.png diff --git a/_src/images/getting-started/selectSolidityDeploy.png b/.eleventy/_src/images/getting-started/selectSolidityDeploy.png similarity index 100% rename from _src/images/getting-started/selectSolidityDeploy.png rename to .eleventy/_src/images/getting-started/selectSolidityDeploy.png diff --git a/_src/images/getting-started/selectWeb3.png b/.eleventy/_src/images/getting-started/selectWeb3.png similarity index 100% rename from _src/images/getting-started/selectWeb3.png rename to .eleventy/_src/images/getting-started/selectWeb3.png diff --git a/_src/images/link.svg b/.eleventy/_src/images/link.svg similarity index 100% rename from _src/images/link.svg rename to .eleventy/_src/images/link.svg diff --git a/_src/images/logos/arbitrum.svg b/.eleventy/_src/images/logos/arbitrum.svg similarity index 100% rename from _src/images/logos/arbitrum.svg rename to .eleventy/_src/images/logos/arbitrum.svg diff --git a/_src/images/logos/avalanche.svg b/.eleventy/_src/images/logos/avalanche.svg similarity index 100% rename from _src/images/logos/avalanche.svg rename to .eleventy/_src/images/logos/avalanche.svg diff --git a/_src/images/logos/bnb-chain.svg b/.eleventy/_src/images/logos/bnb-chain.svg similarity index 100% rename from _src/images/logos/bnb-chain.svg rename to .eleventy/_src/images/logos/bnb-chain.svg diff --git a/_src/images/logos/chainlink.svg b/.eleventy/_src/images/logos/chainlink.svg similarity index 100% rename from _src/images/logos/chainlink.svg rename to .eleventy/_src/images/logos/chainlink.svg diff --git a/_src/images/logos/ethereum.svg b/.eleventy/_src/images/logos/ethereum.svg similarity index 100% rename from _src/images/logos/ethereum.svg rename to .eleventy/_src/images/logos/ethereum.svg diff --git a/_src/images/logos/fantom.svg b/.eleventy/_src/images/logos/fantom.svg similarity index 100% rename from _src/images/logos/fantom.svg rename to .eleventy/_src/images/logos/fantom.svg diff --git a/_src/images/logos/gnosis-chain.svg b/.eleventy/_src/images/logos/gnosis-chain.svg similarity index 100% rename from _src/images/logos/gnosis-chain.svg rename to .eleventy/_src/images/logos/gnosis-chain.svg diff --git a/_src/images/logos/harmony.svg b/.eleventy/_src/images/logos/harmony.svg similarity index 100% rename from _src/images/logos/harmony.svg rename to .eleventy/_src/images/logos/harmony.svg diff --git a/_src/images/logos/heco.svg b/.eleventy/_src/images/logos/heco.svg similarity index 100% rename from _src/images/logos/heco.svg rename to .eleventy/_src/images/logos/heco.svg diff --git a/_src/images/logos/klaytn.svg b/.eleventy/_src/images/logos/klaytn.svg similarity index 100% rename from _src/images/logos/klaytn.svg rename to .eleventy/_src/images/logos/klaytn.svg diff --git a/_src/images/logos/metis.png b/.eleventy/_src/images/logos/metis.png similarity index 100% rename from _src/images/logos/metis.png rename to .eleventy/_src/images/logos/metis.png diff --git a/_src/images/logos/moonbeam.svg b/.eleventy/_src/images/logos/moonbeam.svg similarity index 100% rename from _src/images/logos/moonbeam.svg rename to .eleventy/_src/images/logos/moonbeam.svg diff --git a/_src/images/logos/moonriver.svg b/.eleventy/_src/images/logos/moonriver.svg similarity index 100% rename from _src/images/logos/moonriver.svg rename to .eleventy/_src/images/logos/moonriver.svg diff --git a/_src/images/logos/optimism.svg b/.eleventy/_src/images/logos/optimism.svg similarity index 100% rename from _src/images/logos/optimism.svg rename to .eleventy/_src/images/logos/optimism.svg diff --git a/_src/images/logos/polygon.svg b/.eleventy/_src/images/logos/polygon.svg similarity index 100% rename from _src/images/logos/polygon.svg rename to .eleventy/_src/images/logos/polygon.svg diff --git a/_src/images/logos/solana.svg b/.eleventy/_src/images/logos/solana.svg similarity index 100% rename from _src/images/logos/solana.svg rename to .eleventy/_src/images/logos/solana.svg diff --git a/_src/images/price-feed-conversion-equation.gif b/.eleventy/_src/images/price-feed-conversion-equation.gif similarity index 100% rename from _src/images/price-feed-conversion-equation.gif rename to .eleventy/_src/images/price-feed-conversion-equation.gif diff --git a/_src/images/reddit.svg b/.eleventy/_src/images/reddit.svg similarity index 100% rename from _src/images/reddit.svg rename to .eleventy/_src/images/reddit.svg diff --git a/_src/images/stackexchange.svg b/.eleventy/_src/images/stackexchange.svg similarity index 100% rename from _src/images/stackexchange.svg rename to .eleventy/_src/images/stackexchange.svg diff --git a/_src/images/stackoverflow.svg b/.eleventy/_src/images/stackoverflow.svg similarity index 100% rename from _src/images/stackoverflow.svg rename to .eleventy/_src/images/stackoverflow.svg diff --git a/_src/images/telegram.svg b/.eleventy/_src/images/telegram.svg similarity index 100% rename from _src/images/telegram.svg rename to .eleventy/_src/images/telegram.svg diff --git a/_src/images/twitter.svg b/.eleventy/_src/images/twitter.svg similarity index 100% rename from _src/images/twitter.svg rename to .eleventy/_src/images/twitter.svg diff --git a/_src/images/vrf/deployWithSubscriptionId.png b/.eleventy/_src/images/vrf/deployWithSubscriptionId.png similarity index 100% rename from _src/images/vrf/deployWithSubscriptionId.png rename to .eleventy/_src/images/vrf/deployWithSubscriptionId.png diff --git a/_src/images/vrf/getContractAddress.png b/.eleventy/_src/images/vrf/getContractAddress.png similarity index 100% rename from _src/images/vrf/getContractAddress.png rename to .eleventy/_src/images/vrf/getContractAddress.png diff --git a/_src/images/vrf/v2-direct-funding-e2e.webp b/.eleventy/_src/images/vrf/v2-direct-funding-e2e.webp similarity index 100% rename from _src/images/vrf/v2-direct-funding-e2e.webp rename to .eleventy/_src/images/vrf/v2-direct-funding-e2e.webp diff --git a/_src/images/vrf/v2-subscription-e2e.webp b/.eleventy/_src/images/vrf/v2-subscription-e2e.webp similarity index 100% rename from _src/images/vrf/v2-subscription-e2e.webp rename to .eleventy/_src/images/vrf/v2-subscription-e2e.webp diff --git a/_src/images/vrf/v2-ui-consumers.png b/.eleventy/_src/images/vrf/v2-ui-consumers.png similarity index 100% rename from _src/images/vrf/v2-ui-consumers.png rename to .eleventy/_src/images/vrf/v2-ui-consumers.png diff --git a/_src/images/vrf/v2-ui-history-events.png b/.eleventy/_src/images/vrf/v2-ui-history-events.png similarity index 100% rename from _src/images/vrf/v2-ui-history-events.png rename to .eleventy/_src/images/vrf/v2-ui-history-events.png diff --git a/_src/images/vrf/v2-ui-history-failed.png b/.eleventy/_src/images/vrf/v2-ui-history-failed.png similarity index 100% rename from _src/images/vrf/v2-ui-history-failed.png rename to .eleventy/_src/images/vrf/v2-ui-history-failed.png diff --git a/_src/images/vrf/v2-ui-overview.png b/.eleventy/_src/images/vrf/v2-ui-overview.png similarity index 100% rename from _src/images/vrf/v2-ui-overview.png rename to .eleventy/_src/images/vrf/v2-ui-overview.png diff --git a/_src/images/vrf/v2-ui-pending.png b/.eleventy/_src/images/vrf/v2-ui-pending.png similarity index 100% rename from _src/images/vrf/v2-ui-pending.png rename to .eleventy/_src/images/vrf/v2-ui-pending.png diff --git a/_src/images/vrf/v2-ui-recent-fulfill.png b/.eleventy/_src/images/vrf/v2-ui-recent-fulfill.png similarity index 100% rename from _src/images/vrf/v2-ui-recent-fulfill.png rename to .eleventy/_src/images/vrf/v2-ui-recent-fulfill.png diff --git a/_src/images/wechat.svg b/.eleventy/_src/images/wechat.svg similarity index 100% rename from _src/images/wechat.svg rename to .eleventy/_src/images/wechat.svg diff --git a/_src/images/youtube.svg b/.eleventy/_src/images/youtube.svg similarity index 100% rename from _src/images/youtube.svg rename to .eleventy/_src/images/youtube.svg diff --git a/_src/index.ts b/.eleventy/_src/index.ts similarity index 100% rename from _src/index.ts rename to .eleventy/_src/index.ts diff --git a/_src/keepers-abi.ts b/.eleventy/_src/keepers-abi.ts similarity index 100% rename from _src/keepers-abi.ts rename to .eleventy/_src/keepers-abi.ts diff --git a/_src/keepers-configuration.ts b/.eleventy/_src/keepers-configuration.ts similarity index 100% rename from _src/keepers-configuration.ts rename to .eleventy/_src/keepers-configuration.ts diff --git a/_src/link-to-wallet.ts b/.eleventy/_src/link-to-wallet.ts similarity index 100% rename from _src/link-to-wallet.ts rename to .eleventy/_src/link-to-wallet.ts diff --git a/_src/notification.ts b/.eleventy/_src/notification.ts similarity index 100% rename from _src/notification.ts rename to .eleventy/_src/notification.ts diff --git a/_src/prism-jpv2.js b/.eleventy/_src/prism-jpv2.js similarity index 100% rename from _src/prism-jpv2.js rename to .eleventy/_src/prism-jpv2.js diff --git a/_src/prism.css b/.eleventy/_src/prism.css similarity index 100% rename from _src/prism.css rename to .eleventy/_src/prism.css diff --git a/_src/prism.js b/.eleventy/_src/prism.js similarity index 100% rename from _src/prism.js rename to .eleventy/_src/prism.js diff --git a/_src/reference/chains.json b/.eleventy/_src/reference/chains.json similarity index 100% rename from _src/reference/chains.json rename to .eleventy/_src/reference/chains.json diff --git a/_src/reference/linkNameSymbol.json b/.eleventy/_src/reference/linkNameSymbol.json similarity index 100% rename from _src/reference/linkNameSymbol.json rename to .eleventy/_src/reference/linkNameSymbol.json diff --git a/_src/scroll.ts b/.eleventy/_src/scroll.ts similarity index 100% rename from _src/scroll.ts rename to .eleventy/_src/scroll.ts diff --git a/_src/subscribe.ts b/.eleventy/_src/subscribe.ts similarity index 100% rename from _src/subscribe.ts rename to .eleventy/_src/subscribe.ts diff --git a/_src/sul.js b/.eleventy/_src/sul.js similarity index 100% rename from _src/sul.js rename to .eleventy/_src/sul.js diff --git a/_src/tab.ts b/.eleventy/_src/tab.ts similarity index 100% rename from _src/tab.ts rename to .eleventy/_src/tab.ts diff --git a/_tools/linkcheck.ts b/.eleventy/_tools/linkcheck.ts similarity index 100% rename from _tools/linkcheck.ts rename to .eleventy/_tools/linkcheck.ts diff --git a/_tools/networks.ts b/.eleventy/_tools/networks.ts similarity index 98% rename from _tools/networks.ts rename to .eleventy/_tools/networks.ts index 6e175449c0b..bf7a880e7b5 100644 --- a/_tools/networks.ts +++ b/.eleventy/_tools/networks.ts @@ -59,11 +59,11 @@ export const NETWORKS = [ { page: "gnosis-chain", title: "Gnosis Chain (xDai) Data Feeds", - networkStatusUrl: "https://blockscout.com/xdai/mainnet/", + networkStatusUrl: "https://gnosisscan.io/", networks: [ { name: "Gnosis Chain Mainnet", - url: "https://blockscout.com/poa/xdai/address/%s", + url: "https://gnosisscan.io/address/%s", source: "directory-xdai-mainnet.json", networkType: "mainnet", }, diff --git a/_tools/process-data.ts b/.eleventy/_tools/process-data.ts similarity index 100% rename from _tools/process-data.ts rename to .eleventy/_tools/process-data.ts diff --git a/docs/404.md b/.eleventy/docs/404.md similarity index 100% rename from docs/404.md rename to .eleventy/docs/404.md diff --git a/docs/any-api/api-reference.md b/.eleventy/docs/any-api/api-reference.md similarity index 100% rename from docs/any-api/api-reference.md rename to .eleventy/docs/any-api/api-reference.md diff --git a/docs/any-api/data-providers/dns-ownership.md b/.eleventy/docs/any-api/data-providers/dns-ownership.md similarity index 100% rename from docs/any-api/data-providers/dns-ownership.md rename to .eleventy/docs/any-api/data-providers/dns-ownership.md diff --git a/docs/any-api/data-providers/google-weather.md b/.eleventy/docs/any-api/data-providers/google-weather.md similarity index 100% rename from docs/any-api/data-providers/google-weather.md rename to .eleventy/docs/any-api/data-providers/google-weather.md diff --git a/docs/any-api/data-providers/introduction.md b/.eleventy/docs/any-api/data-providers/introduction.md similarity index 100% rename from docs/any-api/data-providers/introduction.md rename to .eleventy/docs/any-api/data-providers/introduction.md diff --git a/docs/any-api/find-oracle.md b/.eleventy/docs/any-api/find-oracle.md similarity index 100% rename from docs/any-api/find-oracle.md rename to .eleventy/docs/any-api/find-oracle.md diff --git a/docs/any-api/get-request/examples/array-response.md b/.eleventy/docs/any-api/get-request/examples/array-response.md similarity index 100% rename from docs/any-api/get-request/examples/array-response.md rename to .eleventy/docs/any-api/get-request/examples/array-response.md diff --git a/docs/any-api/get-request/examples/existing-job-request.md b/.eleventy/docs/any-api/get-request/examples/existing-job-request.md similarity index 100% rename from docs/any-api/get-request/examples/existing-job-request.md rename to .eleventy/docs/any-api/get-request/examples/existing-job-request.md diff --git a/docs/any-api/get-request/examples/large-responses.md b/.eleventy/docs/any-api/get-request/examples/large-responses.md similarity index 100% rename from docs/any-api/get-request/examples/large-responses.md rename to .eleventy/docs/any-api/get-request/examples/large-responses.md diff --git a/docs/any-api/get-request/examples/multi-variable-responses.md b/.eleventy/docs/any-api/get-request/examples/multi-variable-responses.md similarity index 100% rename from docs/any-api/get-request/examples/multi-variable-responses.md rename to .eleventy/docs/any-api/get-request/examples/multi-variable-responses.md diff --git a/docs/any-api/get-request/examples/single-word-response.md b/.eleventy/docs/any-api/get-request/examples/single-word-response.md similarity index 100% rename from docs/any-api/get-request/examples/single-word-response.md rename to .eleventy/docs/any-api/get-request/examples/single-word-response.md diff --git a/docs/any-api/get-request/introduction.md b/.eleventy/docs/any-api/get-request/introduction.md similarity index 100% rename from docs/any-api/get-request/introduction.md rename to .eleventy/docs/any-api/get-request/introduction.md diff --git a/docs/any-api/introduction.md b/.eleventy/docs/any-api/introduction.md similarity index 100% rename from docs/any-api/introduction.md rename to .eleventy/docs/any-api/introduction.md diff --git a/docs/any-api/testnet-oracles.md b/.eleventy/docs/any-api/testnet-oracles.md similarity index 100% rename from docs/any-api/testnet-oracles.md rename to .eleventy/docs/any-api/testnet-oracles.md diff --git a/docs/architecture-overview/architecture-decentralized-model.md b/.eleventy/docs/architecture-overview/architecture-decentralized-model.md similarity index 100% rename from docs/architecture-overview/architecture-decentralized-model.md rename to .eleventy/docs/architecture-overview/architecture-decentralized-model.md diff --git a/docs/architecture-overview/architecture-overview.md b/.eleventy/docs/architecture-overview/architecture-overview.md similarity index 100% rename from docs/architecture-overview/architecture-overview.md rename to .eleventy/docs/architecture-overview/architecture-overview.md diff --git a/docs/architecture-overview/architecture-request-model.md b/.eleventy/docs/architecture-overview/architecture-request-model.md similarity index 100% rename from docs/architecture-overview/architecture-request-model.md rename to .eleventy/docs/architecture-overview/architecture-request-model.md diff --git a/docs/architecture-overview/off-chain-reporting.md b/.eleventy/docs/architecture-overview/off-chain-reporting.md similarity index 100% rename from docs/architecture-overview/off-chain-reporting.md rename to .eleventy/docs/architecture-overview/off-chain-reporting.md diff --git a/docs/chainlink-automation/automation-economics.md b/.eleventy/docs/chainlink-automation/automation-economics.md similarity index 100% rename from docs/chainlink-automation/automation-economics.md rename to .eleventy/docs/chainlink-automation/automation-economics.md diff --git a/docs/chainlink-automation/automation-release-notes.md b/.eleventy/docs/chainlink-automation/automation-release-notes.md similarity index 100% rename from docs/chainlink-automation/automation-release-notes.md rename to .eleventy/docs/chainlink-automation/automation-release-notes.md diff --git a/docs/chainlink-automation/compatible-contracts.md b/.eleventy/docs/chainlink-automation/compatible-contracts.md similarity index 100% rename from docs/chainlink-automation/compatible-contracts.md rename to .eleventy/docs/chainlink-automation/compatible-contracts.md diff --git a/docs/chainlink-automation/faqs.md b/.eleventy/docs/chainlink-automation/faqs.md similarity index 100% rename from docs/chainlink-automation/faqs.md rename to .eleventy/docs/chainlink-automation/faqs.md diff --git a/docs/chainlink-automation/flexible-upkeeps.md b/.eleventy/docs/chainlink-automation/flexible-upkeeps.md similarity index 100% rename from docs/chainlink-automation/flexible-upkeeps.md rename to .eleventy/docs/chainlink-automation/flexible-upkeeps.md diff --git a/docs/chainlink-automation/introduction.md b/.eleventy/docs/chainlink-automation/introduction.md similarity index 100% rename from docs/chainlink-automation/introduction.md rename to .eleventy/docs/chainlink-automation/introduction.md diff --git a/docs/chainlink-automation/job-scheduler.md b/.eleventy/docs/chainlink-automation/job-scheduler.md similarity index 100% rename from docs/chainlink-automation/job-scheduler.md rename to .eleventy/docs/chainlink-automation/job-scheduler.md diff --git a/docs/chainlink-automation/manage-upkeeps.md b/.eleventy/docs/chainlink-automation/manage-upkeeps.md similarity index 100% rename from docs/chainlink-automation/manage-upkeeps.md rename to .eleventy/docs/chainlink-automation/manage-upkeeps.md diff --git a/docs/chainlink-automation/overview.md b/.eleventy/docs/chainlink-automation/overview.md similarity index 100% rename from docs/chainlink-automation/overview.md rename to .eleventy/docs/chainlink-automation/overview.md diff --git a/.eleventy/docs/chainlink-automation/register-upkeep.md b/.eleventy/docs/chainlink-automation/register-upkeep.md new file mode 100644 index 00000000000..49134efb556 --- /dev/null +++ b/.eleventy/docs/chainlink-automation/register-upkeep.md @@ -0,0 +1,99 @@ +--- +layout: nodes.liquid +section: ethereum +date: Last Modified +title: 'Register a Custom Logic Upkeep' +whatsnext: + { 'Create a compatible contract for custom logic Upkeep': '/docs/chainlink-automation/compatible-contracts/' } +--- + +## Overview + +This guide explains how to register a custom logic Upkeep that uses a [compatible contract](../compatible-contracts). You can register it using the Chainlink Automation App or from within a contract that you deploy. + +**Topics** + +- [Register an Upkeep using the Chainlink Automation App](#register-an-upkeep-using-the-chainlink-automation-app) +- [Register an Upkeep using your own deployed contract](#register-an-upkeep-using-your-own-deployed-contract) + +## Register an Upkeep using the Chainlink Automation App + +
+ Open the Chainlink Automation App +
+ +1. **Click the Register New Upkeep button** + ![Click Register New Upkeep](/images/contract-devs/automation/auto-ui-home.png) + +1. **Connect your wallet** using the _Connect Wallet_ choose a network. For a list of supported networks, see the [Supported Blockchain Networks](../supported-networks) section. The Chainlink Automation App also lists the currently supported networks. + ![Connect With Metamask](/images/contract-devs/automation/auto-ui-wallet.png) + +1. **Select the custom logic trigger** + +1. **Provide the address of your [compatible contract](../compatible-contracts)** You do not need to verify the contract on-chain, but it must be [compatible](../compatible-contracts/) with the `AutomationCompatibleInterface` contract. + +1. **Complete the required details:** + + - **Upkeep name**: This will be publicly visible in the Chainlink Automation app. + - **Gas limit**: This is the maximum amount of gas that your transaction requires to execute on chain. This limit cannot exceed the `performGasLimit` value configured on the [registry](/docs/chainlink-automation/supported-networks/#configurations). Before the network executes your transaction on chain, it simulates the transaction. If the gas required to execute your transaction exceeds the gas limit that you specified, your transaction will not be confirmed. Developers also have the ability to update `performGasLimit` for an upkeep. Consider running your function on a testnet to see how much gas it uses before you select a gas limit. This can be changed afterwards. + - **Starting balance (LINK)**: Specify a LINK starting balance to fund your upkeep. See the [LINK Token Contracts](/docs/link-token-contracts/) page to find the correct contract address and access faucets for testnet LINK. This field is required. You must have LINK before you can use the Chainlink Automation service. + - **Check data**: This field is provided as an input for when your `checkUpkeep` function is simulated. Either leave this field blank or specify a hexadecimal value starting with `0x`. To learn how to make flexible upkeeps using `checkData`, see the [Flexible Upkeeps](../flexible-upkeeps) guide. + - **Your email address**: This email address will be encrypted and is used to send you an email when your upkeep is underfunded. + + > 🚧 Funding Upkeep + > + > You should fund your contract with more LINK that you anticipate you will need. The network will not check or perform your Upkeep if your balance is too low based on current exchange rates. View the [Automation economics](../automation-economics) page to learn more about the cost of using Chainlink Automation. + + > 🚧 ERC677 Link + > + > Fund your Upkeep with more LINK than you anticipate you will need. The network will not check or perform your upkeep if your balance is too low based on current exchange rates. View the [Automation Economics](../automation-economics) page to learn more about the cost of using Chainlink Automation. + + > 🚧 Testing and best practices + > + > Follow the [best practices](../compatible-contracts/#best-practices) when creating a compatible contract and test your upkeep on a testnet before deploying it to a mainnet. + +1. **Click `Register upkeep`** and confirm the transaction in MetaMask. + ![Upkeep Registration Success Message](/images/contract-devs/automation/automation-registration-submitted.png) + +Your upkeeps will be displayed in your list of **Active Upkeeps**. You must monitor the balance of your upkeep. If the balance drops below the **minimum balance**, the Chainlink Automation Network will not perform the Upkeep. See [Managing Upkeeps](../manage-upkeeps) to learn how to manage your upkeeps. + +## Register an Upkeep using your own deployed contract + +You can dynamically create and manage Upkeeps from within your own dApp. To do this you will need to keep track of the Upkeep ID as your contract will use this to subsequently interact with the Chainlink Automation registry. The following example displays a smart contract that can create an Upkeep and determine the Upkeep ID. Note your contract must be compatible and you will need [ERC-677 LINK](../../link-token-contracts/) to fund the upkeep. You can also program your Upkeep to check its own balance and fund itself by interacting with the registry. + +### Prerequisites + +Find the following addresses for your network: + +- Correct [LINK token contract](../../link-token-contracts/) +- [Registry and registrar addresses for your network](../supported-networks/#registry-and-registrar-addresses) + +Optionally, you can fetch the LINK address and registrar address from the intended registry at run-time. + +> 📘 Make sure your contract has enough [ERC-677 LINK](../../link-token-contracts/) to fund the Upkeep at creation. _The minimum amount is 5 LINK._ + +### Code example + +```solidity +{% include 'samples/Automation/UpkeepIDConsumerExample.sol' %} +``` + +
+ Open in Remix + What is Remix? +
+ +### `registerAndPredictID` Parameters + +| Name | Description | +| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `name` | Name of Upkeep | +| `encryptedEmail` | Not in use in programmatic registration. Please specify with `0x` | +| `upkeepContract` | Address of Keepers-compatible contract that will be automated | +| `gasLimit` | The maximum amount of gas that will be used to execute your function on-chain | +| `adminAddress` | Address for Upkeep administrator. Upkeep administrator can fund contract. | +| `checkData` | ABI-encoded fixed and specified at Upkeep registration and used in every checkUpkeep. Can be empty (0x) | +| `amount` | The amount of LINK (in Wei) to fund your Upkeep. The minimum amount is 5 LINK. To fund 5 LINK please set this to 5000000000000000000 | +| `source` | Not in use in programmatic registration. Please specify with `0`. | + +Refer to the [Supported Networks](../supported-networks/#registry-and-registrar-addresses) page to find the correct registry and registrar addresses for your contract. diff --git a/docs/chainlink-automation/supported-networks.html b/.eleventy/docs/chainlink-automation/supported-networks.html similarity index 100% rename from docs/chainlink-automation/supported-networks.html rename to .eleventy/docs/chainlink-automation/supported-networks.html diff --git a/docs/chainlink-automation/util-overview.md b/.eleventy/docs/chainlink-automation/util-overview.md similarity index 100% rename from docs/chainlink-automation/util-overview.md rename to .eleventy/docs/chainlink-automation/util-overview.md diff --git a/docs/chainlink-automation/utility-contracts.md b/.eleventy/docs/chainlink-automation/utility-contracts.md similarity index 100% rename from docs/chainlink-automation/utility-contracts.md rename to .eleventy/docs/chainlink-automation/utility-contracts.md diff --git a/docs/data-feeds/deprecating-feeds.md b/.eleventy/docs/data-feeds/deprecating-feeds.md similarity index 96% rename from docs/data-feeds/deprecating-feeds.md rename to .eleventy/docs/data-feeds/deprecating-feeds.md index c3bd1e49fdb..c7189f6fb0e 100644 --- a/docs/data-feeds/deprecating-feeds.md +++ b/.eleventy/docs/data-feeds/deprecating-feeds.md @@ -18,4 +18,4 @@ For status updates regarding Data Feeds, users should join the official Chainlin Users with additional questions are encouraged to reach out [here](https://chainlinkcommunity.typeform.com/s/dataFeedQs). -A list of data feeds designated for deprecation along with their corresponding shutdown date can be found below. \ No newline at end of file +A list of data feeds designated for deprecation along with their corresponding shutdown date can be found below. diff --git a/docs/data-feeds/ens.html b/.eleventy/docs/data-feeds/ens.html similarity index 100% rename from docs/data-feeds/ens.html rename to .eleventy/docs/data-feeds/ens.html diff --git a/docs/data-feeds/feed-registry/feed-registry-functions.md b/.eleventy/docs/data-feeds/feed-registry/feed-registry-functions.md similarity index 100% rename from docs/data-feeds/feed-registry/feed-registry-functions.md rename to .eleventy/docs/data-feeds/feed-registry/feed-registry-functions.md diff --git a/docs/data-feeds/feed-registry/index.html b/.eleventy/docs/data-feeds/feed-registry/index.html similarity index 100% rename from docs/data-feeds/feed-registry/index.html rename to .eleventy/docs/data-feeds/feed-registry/index.html diff --git a/docs/data-feeds/index.md b/.eleventy/docs/data-feeds/index.md similarity index 100% rename from docs/data-feeds/index.md rename to .eleventy/docs/data-feeds/index.md diff --git a/docs/data-feeds/l2-sequencer-feeds.md b/.eleventy/docs/data-feeds/l2-sequencer-feeds.md similarity index 98% rename from docs/data-feeds/l2-sequencer-feeds.md rename to .eleventy/docs/data-feeds/l2-sequencer-feeds.md index a35ac15340c..9c0d3532b89 100644 --- a/docs/data-feeds/l2-sequencer-feeds.md +++ b/.eleventy/docs/data-feeds/l2-sequencer-feeds.md @@ -30,7 +30,7 @@ You can find proxy addresses for the L2 sequencer feeds at the following address - Arbitrum Goerli testnet: [0x4da69F028a5790fCCAfe81a75C0D24f46ceCDd69](https://goerli-rollup-explorer.arbitrum.io/address/0x4da69F028a5790fCCAfe81a75C0D24f46ceCDd69) - Optimism: - Optimism mainnet: [0x371EAD81c9102C9BF4874A9075FFFf170F2Ee389](https://optimistic.etherscan.io/address/0x371EAD81c9102C9BF4874A9075FFFf170F2Ee389) - - Optimism Goerli testnet: [0x4C4814aa04433e0FB31310379a4D6946D5e1D353](https://blockscout.com/optimism/goerli/address/0x4C4814aa04433e0FB31310379a4D6946D5e1D353) + - Optimism Goerli testnet: [0x4C4814aa04433e0FB31310379a4D6946D5e1D353](https://goerli-optimism.etherscan.io/address/0x4C4814aa04433e0FB31310379a4D6946D5e1D353) - Metis: - Andromeda mainnet: [0x58218ea7422255EBE94e56b504035a784b7AA204](https://andromeda-explorer.metis.io/address/0x58218ea7422255EBE94e56b504035a784b7AA204) diff --git a/docs/data-feeds/nft-floor-price/addresses.md b/.eleventy/docs/data-feeds/nft-floor-price/addresses.md similarity index 100% rename from docs/data-feeds/nft-floor-price/addresses.md rename to .eleventy/docs/data-feeds/nft-floor-price/addresses.md diff --git a/docs/data-feeds/nft-floor-price/index.md b/.eleventy/docs/data-feeds/nft-floor-price/index.md similarity index 100% rename from docs/data-feeds/nft-floor-price/index.md rename to .eleventy/docs/data-feeds/nft-floor-price/index.md diff --git a/docs/data-feeds/price-feeds/addresses.md b/.eleventy/docs/data-feeds/price-feeds/addresses.md similarity index 100% rename from docs/data-feeds/price-feeds/addresses.md rename to .eleventy/docs/data-feeds/price-feeds/addresses.md diff --git a/docs/data-feeds/price-feeds/api-reference.md b/.eleventy/docs/data-feeds/price-feeds/api-reference.md similarity index 100% rename from docs/data-feeds/price-feeds/api-reference.md rename to .eleventy/docs/data-feeds/price-feeds/api-reference.md diff --git a/docs/data-feeds/price-feeds/historical-data.html b/.eleventy/docs/data-feeds/price-feeds/historical-data.html similarity index 100% rename from docs/data-feeds/price-feeds/historical-data.html rename to .eleventy/docs/data-feeds/price-feeds/historical-data.html diff --git a/docs/data-feeds/price-feeds/index.html b/.eleventy/docs/data-feeds/price-feeds/index.html similarity index 100% rename from docs/data-feeds/price-feeds/index.html rename to .eleventy/docs/data-feeds/price-feeds/index.html diff --git a/docs/data-feeds/proof-of-reserve/addresses.md b/.eleventy/docs/data-feeds/proof-of-reserve/addresses.md similarity index 100% rename from docs/data-feeds/proof-of-reserve/addresses.md rename to .eleventy/docs/data-feeds/proof-of-reserve/addresses.md diff --git a/docs/data-feeds/proof-of-reserve/index.md b/.eleventy/docs/data-feeds/proof-of-reserve/index.md similarity index 100% rename from docs/data-feeds/proof-of-reserve/index.md rename to .eleventy/docs/data-feeds/proof-of-reserve/index.md diff --git a/docs/data-feeds/selecting-data-feeds.md b/.eleventy/docs/data-feeds/selecting-data-feeds.md similarity index 100% rename from docs/data-feeds/selecting-data-feeds.md rename to .eleventy/docs/data-feeds/selecting-data-feeds.md diff --git a/docs/ethereum.md b/.eleventy/docs/ethereum.md similarity index 100% rename from docs/ethereum.md rename to .eleventy/docs/ethereum.md diff --git a/docs/home.html b/.eleventy/docs/home.html similarity index 100% rename from docs/home.html rename to .eleventy/docs/home.html diff --git a/docs/resources/acquire-link.md b/.eleventy/docs/resources/acquire-link.md similarity index 100% rename from docs/resources/acquire-link.md rename to .eleventy/docs/resources/acquire-link.md diff --git a/docs/resources/contributing-to-chainlink.md b/.eleventy/docs/resources/contributing-to-chainlink.md similarity index 100% rename from docs/resources/contributing-to-chainlink.md rename to .eleventy/docs/resources/contributing-to-chainlink.md diff --git a/docs/resources/create-a-chainlinked-project.md b/.eleventy/docs/resources/create-a-chainlinked-project.md similarity index 100% rename from docs/resources/create-a-chainlinked-project.md rename to .eleventy/docs/resources/create-a-chainlinked-project.md diff --git a/docs/resources/developer-communications.html b/.eleventy/docs/resources/developer-communications.html similarity index 100% rename from docs/resources/developer-communications.html rename to .eleventy/docs/resources/developer-communications.html diff --git a/docs/resources/example-projects.md b/.eleventy/docs/resources/example-projects.md similarity index 100% rename from docs/resources/example-projects.md rename to .eleventy/docs/resources/example-projects.md diff --git a/docs/resources/fund-your-contract.md b/.eleventy/docs/resources/fund-your-contract.md similarity index 100% rename from docs/resources/fund-your-contract.md rename to .eleventy/docs/resources/fund-your-contract.md diff --git a/docs/resources/getting-help.md b/.eleventy/docs/resources/getting-help.md similarity index 100% rename from docs/resources/getting-help.md rename to .eleventy/docs/resources/getting-help.md diff --git a/docs/resources/glossary.md b/.eleventy/docs/resources/glossary.md similarity index 100% rename from docs/resources/glossary.md rename to .eleventy/docs/resources/glossary.md diff --git a/docs/resources/hackathon-resources.md b/.eleventy/docs/resources/hackathon-resources.md similarity index 100% rename from docs/resources/hackathon-resources.md rename to .eleventy/docs/resources/hackathon-resources.md diff --git a/docs/resources/hackathon-rules-waiver-and-release.md b/.eleventy/docs/resources/hackathon-rules-waiver-and-release.md similarity index 100% rename from docs/resources/hackathon-rules-waiver-and-release.md rename to .eleventy/docs/resources/hackathon-rules-waiver-and-release.md diff --git a/docs/resources/link-token-contracts.md b/.eleventy/docs/resources/link-token-contracts.md similarity index 98% rename from docs/resources/link-token-contracts.md rename to .eleventy/docs/resources/link-token-contracts.md index bc5b134ac89..552e38e05dc 100644 --- a/docs/resources/link-token-contracts.md +++ b/.eleventy/docs/resources/link-token-contracts.md @@ -146,11 +146,11 @@ xDAI is used to pay for transactions on Gnosis Chain mainnet. Use the [xDai Brid | Parameter | Value | | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `ETH_CHAIN_ID` | `100` | -| Address | `0xE2e73A1c69ecF83F464EFCE6A5be353a37cA09b2` | +| Address | `0xE2e73A1c69ecF83F464EFCE6A5be353a37cA09b2` | | Name | Chainlink Token on Gnosis Chain (xDai) | | Symbol | LINK | | Decimals | 18 | -| Network status | [blockscout.com/xdai/mainnet](https://blockscout.com/xdai/mainnet/) | +| Network status | [gnosisscan.io/](https://gnosisscan.io/) | ## Avalanche @@ -230,13 +230,13 @@ ETH is used to pay for transactions on the Arbitrum mainnet. You can use the [Ar Testnet ETH is used to pay for transactions on Arbitrum Goerli. Use the [Arbitrum Bridge](https://bridge.arbitrum.io/) to transfer testnet ETH and LINK from Ethereum Goerli to Arbitrum Goerli. -| Parameter | Value | -| :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `ETH_CHAIN_ID` | `421613` | +| Parameter | Value | +| :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `ETH_CHAIN_ID` | `421613` | | Address | `0xd14838a68e8afbade5efb411d5871ea0011afd28` | -| Name | Chainlink Token on Arbitrum Goerli | -| Symbol | LINK | -| Decimals | 18 | +| Name | Chainlink Token on Arbitrum Goerli | +| Symbol | LINK | +| Decimals | 18 | ## HECO Chain diff --git a/docs/solana.md b/.eleventy/docs/solana.md similarity index 100% rename from docs/solana.md rename to .eleventy/docs/solana.md diff --git a/docs/solana/data-feeds/data-feeds-solana.md b/.eleventy/docs/solana/data-feeds/data-feeds-solana.md similarity index 100% rename from docs/solana/data-feeds/data-feeds-solana.md rename to .eleventy/docs/solana/data-feeds/data-feeds-solana.md diff --git a/docs/solana/data-feeds/using-data-feeds-off-chain.md b/.eleventy/docs/solana/data-feeds/using-data-feeds-off-chain.md similarity index 100% rename from docs/solana/data-feeds/using-data-feeds-off-chain.md rename to .eleventy/docs/solana/data-feeds/using-data-feeds-off-chain.md diff --git a/docs/solana/data-feeds/using-data-feeds-solana.md b/.eleventy/docs/solana/data-feeds/using-data-feeds-solana.md similarity index 100% rename from docs/solana/data-feeds/using-data-feeds-solana.md rename to .eleventy/docs/solana/data-feeds/using-data-feeds-solana.md diff --git a/docs/solana/overview.md b/.eleventy/docs/solana/overview.md similarity index 100% rename from docs/solana/overview.md rename to .eleventy/docs/solana/overview.md diff --git a/docs/vrf/v1/api-reference.md b/.eleventy/docs/vrf/v1/api-reference.md similarity index 100% rename from docs/vrf/v1/api-reference.md rename to .eleventy/docs/vrf/v1/api-reference.md diff --git a/docs/vrf/v1/best-practices.md b/.eleventy/docs/vrf/v1/best-practices.md similarity index 100% rename from docs/vrf/v1/best-practices.md rename to .eleventy/docs/vrf/v1/best-practices.md diff --git a/docs/vrf/v1/examples/get-a-random-number.md b/.eleventy/docs/vrf/v1/examples/get-a-random-number.md similarity index 100% rename from docs/vrf/v1/examples/get-a-random-number.md rename to .eleventy/docs/vrf/v1/examples/get-a-random-number.md diff --git a/docs/vrf/v1/introduction.md b/.eleventy/docs/vrf/v1/introduction.md similarity index 100% rename from docs/vrf/v1/introduction.md rename to .eleventy/docs/vrf/v1/introduction.md diff --git a/docs/vrf/v1/security.md b/.eleventy/docs/vrf/v1/security.md similarity index 100% rename from docs/vrf/v1/security.md rename to .eleventy/docs/vrf/v1/security.md diff --git a/docs/vrf/v1/supported-networks.md b/.eleventy/docs/vrf/v1/supported-networks.md similarity index 100% rename from docs/vrf/v1/supported-networks.md rename to .eleventy/docs/vrf/v1/supported-networks.md diff --git a/docs/vrf/v2/best-practices.md b/.eleventy/docs/vrf/v2/best-practices.md similarity index 100% rename from docs/vrf/v2/best-practices.md rename to .eleventy/docs/vrf/v2/best-practices.md diff --git a/docs/vrf/v2/direct-funding/design.md b/.eleventy/docs/vrf/v2/direct-funding/design.md similarity index 100% rename from docs/vrf/v2/direct-funding/design.md rename to .eleventy/docs/vrf/v2/direct-funding/design.md diff --git a/docs/vrf/v2/direct-funding/examples/get-a-random-number.md b/.eleventy/docs/vrf/v2/direct-funding/examples/get-a-random-number.md similarity index 100% rename from docs/vrf/v2/direct-funding/examples/get-a-random-number.md rename to .eleventy/docs/vrf/v2/direct-funding/examples/get-a-random-number.md diff --git a/docs/vrf/v2/direct-funding/migration-from-v1.md b/.eleventy/docs/vrf/v2/direct-funding/migration-from-v1.md similarity index 100% rename from docs/vrf/v2/direct-funding/migration-from-v1.md rename to .eleventy/docs/vrf/v2/direct-funding/migration-from-v1.md diff --git a/docs/vrf/v2/direct-funding/supported-networks.md b/.eleventy/docs/vrf/v2/direct-funding/supported-networks.md similarity index 100% rename from docs/vrf/v2/direct-funding/supported-networks.md rename to .eleventy/docs/vrf/v2/direct-funding/supported-networks.md diff --git a/docs/vrf/v2/introduction.md b/.eleventy/docs/vrf/v2/introduction.md similarity index 100% rename from docs/vrf/v2/introduction.md rename to .eleventy/docs/vrf/v2/introduction.md diff --git a/docs/vrf/v2/security.md b/.eleventy/docs/vrf/v2/security.md similarity index 100% rename from docs/vrf/v2/security.md rename to .eleventy/docs/vrf/v2/security.md diff --git a/docs/vrf/v2/subscription/design.md b/.eleventy/docs/vrf/v2/subscription/design.md similarity index 100% rename from docs/vrf/v2/subscription/design.md rename to .eleventy/docs/vrf/v2/subscription/design.md diff --git a/docs/vrf/v2/subscription/examples/get-a-random-number.md b/.eleventy/docs/vrf/v2/subscription/examples/get-a-random-number.md similarity index 100% rename from docs/vrf/v2/subscription/examples/get-a-random-number.md rename to .eleventy/docs/vrf/v2/subscription/examples/get-a-random-number.md diff --git a/docs/vrf/v2/subscription/examples/programmatic-subscription.md b/.eleventy/docs/vrf/v2/subscription/examples/programmatic-subscription.md similarity index 100% rename from docs/vrf/v2/subscription/examples/programmatic-subscription.md rename to .eleventy/docs/vrf/v2/subscription/examples/programmatic-subscription.md diff --git a/docs/vrf/v2/subscription/migration-from-v1.md b/.eleventy/docs/vrf/v2/subscription/migration-from-v1.md similarity index 100% rename from docs/vrf/v2/subscription/migration-from-v1.md rename to .eleventy/docs/vrf/v2/subscription/migration-from-v1.md diff --git a/docs/vrf/v2/subscription/supported-networks.md b/.eleventy/docs/vrf/v2/subscription/supported-networks.md similarity index 100% rename from docs/vrf/v2/subscription/supported-networks.md rename to .eleventy/docs/vrf/v2/subscription/supported-networks.md diff --git a/docs/vrf/v2/subscription/ui.md b/.eleventy/docs/vrf/v2/subscription/ui.md similarity index 100% rename from docs/vrf/v2/subscription/ui.md rename to .eleventy/docs/vrf/v2/subscription/ui.md diff --git a/firebase-addresses.json b/.eleventy/firebase-addresses.json similarity index 100% rename from firebase-addresses.json rename to .eleventy/firebase-addresses.json diff --git a/firebase.json b/.eleventy/firebase.json similarity index 100% rename from firebase.json rename to .eleventy/firebase.json diff --git a/.eleventy/hardhat.config.ts b/.eleventy/hardhat.config.ts new file mode 100644 index 00000000000..58eca2ba898 --- /dev/null +++ b/.eleventy/hardhat.config.ts @@ -0,0 +1,22 @@ +// This configuration file sets up the paths and compilers so we can test our solidity samples + +require("@nomiclabs/hardhat-waffle"); + +module.exports = { + paths: { + root: "./", + sources: "./_includes/samples", + cache: "./.test/cache", + artifacts: "./.test/artifacts", + }, + solidity: { + compilers: [ + {version: "0.4.24"}, + {version: "0.6.6"}, + {version: "0.6.12"}, + {version: "0.7.6"}, + {version: "0.8.6"}, + {version: "0.8.7"}, + ], + }, +}; diff --git a/.eleventy/package.json b/.eleventy/package.json new file mode 100644 index 00000000000..677bbe243fa --- /dev/null +++ b/.eleventy/package.json @@ -0,0 +1,66 @@ +{ + "name": "chainlink-docs", + "version": "1.0.0", + "description": "", + "private": true, + "scripts": { + "test": "npx hardhat compile", + "serve": "NODE_ENV=development concurrently \"watchify _src/index.ts -p [ tsify ] -o _src/index.js\" \"watchify _src/keepers-configuration.ts -p [ tsify ] -o _src/keepers-configuration.js\" \"watchify _src/animate-chain-transitions.ts -p [ tsify ] -o _src/animate-chain-transitions.js\" \"watchify _src/link-to-wallet.ts -p [ tinyify --no-flat ] -p [ tsify ] -o _src/link-to-wallet.js\" \"npx @11ty/eleventy --serve --port=4200\"", + "build": "browserify _src/index.ts -t [ uglifyify ] -p [ tsify ] -o _src/index.js && browserify _src/keepers-configuration.ts -t [ uglifyify ] -p [ tsify ] -o _src/keepers-configuration.js && browserify _src/animate-chain-transitions.ts -t [ uglifyify ] -p [ tsify ] -o _src/animate-chain-transitions.js && browserify _src/link-to-wallet.ts -p [ tinyify --no-flat ] -p [ tsify ] -o _src/link-to-wallet.js && rm -rf _site && npx @11ty/eleventy", + "deploy": "yarn build && firebase deploy", + "process": "yarn ts-node _tools/process-data.ts", + "linkcheck": "yarn ts-node _tools/linkcheck.ts", + "compare-chains-metadata": "npx ts-node _src/chains-metadata.ts" + }, + "keywords": [ + "chainlink", + "documentation" + ], + "author": "Stephen Fluin", + "license": "MIT", + "dependencies": { + "@11ty/eleventy": "^1.0.1", + "@chainlink/contracts": "^0.5.1", + "@metamask/detect-provider": "^1.2.0", + "@metamask/providers": "^9.0.0", + "@nomiclabs/hardhat-ethers": "^2.1.0", + "@nomiclabs/hardhat-waffle": "^2.0.3", + "@openzeppelin/contracts": "^4.7.3", + "@readme/markdown": "^6.47.0", + "@readme/variable": "^15.1.0", + "@types/node": "^18.6.1", + "browserify": "^17.0.0", + "concurrently": "^7.3.0", + "dart-linkcheck": "^2.0.15", + "date-fns": "^2.29.1", + "eleventy-plugin-youtube-embed": "^1.7.1", + "ethereum-waffle": "^3.4.4", + "ethers": "^5.6.9", + "firebase-tools": "^11.4.0", + "graphql": "^16.5.0", + "hardhat": "^2.10.1", + "html-minifier": "^4.0.0", + "lodash": "^4.17.21", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "tinyify": "~3.0.0", + "ts-node": "^10.9.1", + "tsify": "^5.0.4", + "typescript": "^4.7.4", + "uglifyify": "^5.0.2", + "watchify": "^4.0.0" + }, + "engines": { + "node": "^16" + }, + "engineStrict": true, + "prettier": { + "semi": true, + "trailingComma": "es5", + "singleQuote": true, + "printWidth": 120 + }, + "devDependencies": { + "@types/lodash": "^4.14.182" + } +} diff --git a/search-index.njk b/.eleventy/search-index.njk similarity index 100% rename from search-index.njk rename to .eleventy/search-index.njk diff --git a/sitemap.njk b/.eleventy/sitemap.njk similarity index 100% rename from sitemap.njk rename to .eleventy/sitemap.njk diff --git a/.eleventy/tsconfig.json b/.eleventy/tsconfig.json new file mode 100644 index 00000000000..c320b78ae5f --- /dev/null +++ b/.eleventy/tsconfig.json @@ -0,0 +1,73 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Basic Options */ + // "incremental": true, /* Enable incremental compilation */ + "target": "es5" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, + "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, + // "lib": [], /* Specify library files to be included in the compilation. */ + // "allowJs": true, /* Allow javascript files to be compiled. */ + // "checkJs": true, /* Report errors in .js files. */ + // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', 'react', 'react-jsx' or 'react-jsxdev'. */ + // "declaration": true, /* Generates corresponding '.d.ts' file. */ + // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + // "sourceMap": true, /* Generates corresponding '.map' file. */ + // "outFile": "./", /* Concatenate and emit output to single file. */ + // "outDir": "./", /* Redirect output structure to the directory. */ + // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ + // "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + + /* Strict Type-Checking Options */ + "strict": true /* Enable all strict type-checking options. */, + // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* Enable strict null checks. */ + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ + // "noPropertyAccessFromIndexSignature": true, /* Require undeclared properties from index signatures to use element accesses. */ + + /* Module Resolution Options */ + // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, + "resolveJsonModule": true, + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + + /* Experimental Options */ + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + + /* Advanced Options */ + "skipLibCheck": true /* Skip type checking of declaration files. */, + "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ + }, + "exclude": ["_site", "_includes"] +} diff --git a/yarn.lock b/.eleventy/yarn.lock similarity index 100% rename from yarn.lock rename to .eleventy/yarn.lock diff --git a/.env.example b/.env.example new file mode 100644 index 00000000000..0fc57dd934c --- /dev/null +++ b/.env.example @@ -0,0 +1,3 @@ +ALGOLIA_APP_ID=I9A62UQS9Z +ALGOLIA_WRITE_API_KEY= +ALGOLIA_INDEX_NAME=docs-test \ No newline at end of file diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 00000000000..431dc0d283d --- /dev/null +++ b/.eslintignore @@ -0,0 +1,17 @@ +dist +.cache +.test +node_modules +.github +.changeset +src/features/redirects/redirects.json +scripts/reference/chainsToBe.json +scripts/**/*.js +data-source +typechain-types +.eleventy +public/snippets +public/search-index.json +public/samples +package.json +package-lock.json diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000000..8b940b61140 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,17 @@ +module.exports = { + env: { + browser: true, + es2021: true, + node: true, + }, + extends: ["standard", "eslint:recommended", "plugin:@typescript-eslint/recommended", "prettier"], + parser: "@typescript-eslint/parser", + parserOptions: { + ecmaVersion: "latest", + sourceType: "module", + }, + plugins: ["@typescript-eslint", "prettier"], + rules: { + "prettier/prettier": [2], + }, +} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 14e272a4a60..00000000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: Build and Deploy -on: - push: - branches: - - main - -jobs: - build: - name: Build - runs-on: ubuntu-latest - steps: - - name: Checkout Repo - uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f - - name: Install Dependencies - run: yarn - - name: Build - run: yarn build - - name: Deploy to Firebase - uses: w9jds/firebase-action@94389a881adad57284e35860f5d258ab262dcd91 - with: - args: deploy --only hosting - env: - FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/chainlink-automation-config.yml b/.github/workflows/chainlink-automation-config.yml new file mode 100644 index 00000000000..ee6947f89b6 --- /dev/null +++ b/.github/workflows/chainlink-automation-config.yml @@ -0,0 +1,53 @@ +name: Check if chainlink automation config is up to date + +on: + schedule: + - cron: '59 23 * * */7' + branches: + - main + - astro-holding-branch + - documentation-redesign + + workflow_dispatch: + +jobs: + check-chainlink-automation-config: + permissions: + pull-requests: write + contents: write + name: Check if chainlinnk automation config is up to date + runs-on: ubuntu-latest + defaults: + run: + working-directory: ./ + steps: + - name: Checkout Repo + uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 + - name: Install Dependencies + run: npm i + - name: Compare current config with the deployed one + run: npm run sync-chainlink-automation-config + - name: Check if new config file + id: compare_configs + run: | + set -x + if test -f "./src/features/chainlink-automation/data/chainlink-automation-configTOBE.json"; then + cp "./src/features/chainlink-automation/data/chainlink-automation-configTOBE.json" "./src/features/chainlink-automation/data/chainlink-automation-config.json" + echo "::set-output name=createPR::true" + timestamp=$(date +%Y%m%d%H%M) + echo "::set-output name=timestamp::${timestamp}" + fi + - if: ${{ steps.compare_configs.outputs.createPR }} + id: chainlink_automation_config_pr + name: Create pull request + uses: peter-evans/create-pull-request@9825ae65b1cb54b543b938503728b432a0176d29 # v3.1.0 + with: + branch: 'chainlink_automation_config/pr-${{ steps.compare_configs.outputs.timestamp }}' + commit-message: 'chainlink automation config updated' + token: ${{ secrets.GITHUB_TOKEN }} + title: 'Update chainlink automation config ${{ steps.compare_configs.outputs.timestamp }}' + delete-branch: true + body: 'New chainlink automation config available. Please review and merge' + labels: | + enhancement + ready to merge diff --git a/.github/workflows/chains-metadata.yml b/.github/workflows/chains-metadata.yml index 3629c481e0f..c2036438869 100644 --- a/.github/workflows/chains-metadata.yml +++ b/.github/workflows/chains-metadata.yml @@ -12,19 +12,22 @@ jobs: contents: write name: Check if chains metadata is up to date runs-on: ubuntu-latest + defaults: + run: + working-directory: ./ steps: - name: Checkout Repo uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 - name: Install Dependencies - run: yarn + run: npm i - name: Compare current chains metadata with the source - run: yarn compare-chains-metadata + run: npm run compare-chains-metadata - name: Check if new chains metadata file id: compare_chains run: | set -x - if test -f "./_src/reference/chainsToBe.json"; then - cp "./_src/reference/chainsToBe.json" "./_src/reference/chains.json" + if test -f ".scripts/reference/chainsToBe.json"; then + cp ".scripts/reference/chainsToBe.json" ".scripts/reference/chains.json" echo "::set-output name=createPR::true" timestamp=$(date +%Y%m%d%H%M) echo "::set-output name=timestamp::${timestamp}" diff --git a/.github/workflows/process-feeds.yml b/.github/workflows/process-feeds.yml deleted file mode 100644 index a5f89d81b26..00000000000 --- a/.github/workflows/process-feeds.yml +++ /dev/null @@ -1,33 +0,0 @@ -name: Build and Publish Feed Resources - -on: - schedule: - - cron: "*/30 * * * *" - -jobs: - build-feeds: - name: Update latest feed data from source repo - runs-on: ubuntu-latest - steps: - - name: Checkout Repo - uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f - - name: Install Dependencies - run: yarn - - name: Checkout Data Source Repo - uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f - with: - repository: smartcontractkit/reference-data-directory - path: data-source - token: ${{ secrets.GH_API_KEY }} - # - name: Read Data Source - # run: cat data-source/package.json - - name: Process Data - run: yarn process - - name: Deploy to Firebase - uses: w9jds/firebase-action@94389a881adad57284e35860f5d258ab262dcd91 - with: - - args: -c firebase-addresses.json deploy --only hosting - env: - FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }} - PROJECT_ID: cl-docs-addresses diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index cd6820917a2..e77eaf6847a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,19 +1,26 @@ name: Test -on: - [push, pull_request] +on: [push, pull_request] jobs: test: name: Test runs-on: ubuntu-latest + defaults: + run: + working-directory: ./ steps: - name: Checkout Repo uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f - name: Install Dependencies - run: yarn + run: npm i + - name: Check Solidity Compilation + run: npm run sol:compile + - name: Check Solidity Solhint + run: npm run lint-solc + - name: Check Eslint + run: npm run lint - name: Build - run: yarn build + run: npm run build + # TODO: fix css files throwing 404 errors - name: Check Links - run: yarn linkcheck - - name: Check Solidity - run: yarn test + run: npm run linkcheck \ No newline at end of file diff --git a/.github/workflows/update-algolia-index.yml b/.github/workflows/update-algolia-index.yml new file mode 100644 index 00000000000..3aa06a31e1c --- /dev/null +++ b/.github/workflows/update-algolia-index.yml @@ -0,0 +1,46 @@ +name: Update algolia index + +on: [push] + +jobs: + update-prod-index: + if: ${{ github.ref == 'refs/heads/main' }} + name: Update algolia index + runs-on: ubuntu-latest + env: + ALGOLIA_APP_ID: ${{ secrets.ALGOLIA_APP_ID }} + ALGOLIA_WRITE_API_KEY: ${{ secrets.ALGOLIA_WRITE_API_KEY }} + ALGOLIA_INDEX_NAME: docs-ui + defaults: + run: + working-directory: ./ + steps: + - name: Checkout Repo + uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f + - name: Install Dependencies + run: npm i + - name: Build + run: npm run build + - name: Update index + run: npm run update-algolia-index + + update-staging-index: + if: ${{ github.ref != 'refs/heads/main' }} + name: Update algolia staging index + runs-on: ubuntu-latest + env: + ALGOLIA_APP_ID: ${{ secrets.ALGOLIA_APP_ID }} + ALGOLIA_WRITE_API_KEY: ${{ secrets.ALGOLIA_WRITE_API_KEY }} + ALGOLIA_INDEX_NAME: docs-test + defaults: + run: + working-directory: ./ + steps: + - name: Checkout Repo + uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f + - name: Install Dependencies + run: npm i + - name: Build + run: npm run build + - name: Update index + run: npm run update-algolia-index diff --git a/.gitignore b/.gitignore index f56ba774a85..6e3752f267c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,13 +1,36 @@ -_site/ -node_modules -.firebase/ +# build output +dist/ + +# dependencies +node_modules/ + +temp/ + +# logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# environment variables +.env +.env.production + +# macOS-specific files +.DS_Store + +# Docs scripts files data-source/ addresses.json -.DS_Store -# Only keep TS version -_src/index.js -_src/keepers-configuration.js -_src/animate-chain-transitions.js -_src/link-to-wallet.js -_src/reference/chainsToBe.json +scripts/*.js +src/config/*.js + +public/search-index.json + +*TOBE.json .test/ +typechain-types/ + +.tmp + +.cache diff --git a/.husky/clear b/.husky/clear new file mode 100755 index 00000000000..9ced979932a --- /dev/null +++ b/.husky/clear @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +npx --no -- commitlint --edit "" diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 00000000000..36af219892f --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npx lint-staged diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 00000000000..f274881e5fd --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +v16.16.0 diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000000..cad8cac24a8 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,13 @@ +dist +.cache +.test +node_modules +.github +.changeset +scripts/reference/chainsToBe.json +scripts/**/*.js +data-source +typechain-types +.eleventy +public/snippets +public/search-index.json diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000000..3a34cdff424 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,19 @@ +{ + "semi": false, + "singleQuote": false, + "tabWidth": 2, + "trailingComma": "es5", + "printWidth": 120, + "overrides": [ + { + "files": "*.sol", + "options": { + "printWidth": 80, + "tabWidth": 4, + "useTabs": false, + "singleQuote": false, + "bracketSpacing": false + } + } + ] +} diff --git a/.solhint.json b/.solhint.json new file mode 100644 index 00000000000..36f9346be3b --- /dev/null +++ b/.solhint.json @@ -0,0 +1,9 @@ +{ + "extends": "solhint:recommended", + "plugins": ["prettier"], + "rules": { + "prettier/prettier": "error", + "compiler-version": ["error", ">=0.4.0"], + "func-visibility": ["warn", { "ignoreConstructors": true }] + } +} diff --git a/.solhintignore b/.solhintignore new file mode 100644 index 00000000000..33826fe6da9 --- /dev/null +++ b/.solhintignore @@ -0,0 +1,4 @@ +node_modules +data-source +scripts +src \ No newline at end of file diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 00000000000..eedff58c83c --- /dev/null +++ b/.tool-versions @@ -0,0 +1 @@ +nodejs 16.16.0 diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 00000000000..2efbb29cf42 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,10 @@ +{ + "recommendations": [ + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", + "NomicFoundation.hardhat-solidity", + "astro-build.astro-vscode", + "unifiedjs.vscode-mdx" + ], + "unwantedRecommendations": [] +} diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 00000000000..d6422097621 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,11 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "command": "./node_modules/.bin/astro dev", + "name": "Development server", + "request": "launch", + "type": "node-terminal" + } + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000000..d3c9ee09bc3 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,17 @@ +{ + "files.associations": { + "*.mdx": "mdx" + }, + "editor.formatOnSave": true, + "solidity.formatter": "prettier", // This is the default so it might be missing. + "prettier.documentSelectors": ["**/*.astro"], + "[solidity]": { + "editor.defaultFormatter": "NomicFoundation.hardhat-solidity" + }, + "[astro]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "eslint.enable": true, + "eslint.validate": ["javascript", "typescript"], + "eslint.alwaysShowStatus": true +} diff --git a/CODEOWNERS b/CODEOWNERS index 917b374cbcd..d0ae0140009 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1 +1 @@ -* @StephenFluin @dwightjl @ritika-b @aelmanaa +* @dwightjl @ritika-b @aelmanaa diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ae3a4c63d2f..fe09a7597f5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -62,67 +62,19 @@ Lastly, force push the changes to your branch to have a clean history: git push -f ``` -Here's a [complete example](https://twitter.com/stephenfluin/status/1009904095073718275) of git squashing. - It's easier to use `git --amend` while working on your PR first. Avoiding multiple commits is much cleaner and easier than fixing them. ## Adding a new chain feed -Feed data for various chains comes from a private GitHub repository, processed regularly on the server via `process-feeds.yml` and published as JSON. This JSON is loaded by each of the `feed.liquid` based pages. - -To test a new feed locally, get access to the private repo, then clone it into `data-source`, and then run `yarn process`. +Data Feeds information comes from a private GitHub repository that processed and updated automatically. ## Checking Links -To check the site for broken links, [install `linkcheck`](https://github.com/filiph/linkcheck/), serve the site locally and point to the executable in the command below and run: - -``` -./path-to-link-check.exe :4200 -``` +To check the site for broken links, run `npm run linkcheck`. ## Adding or updating code samples -The main code samples are stored in `/_includes/samples` directory. If you need to edit or add new code samples, do it in the corresponding nested folder. If Chainlink introduces a new product or feature, create a new folder and place your code sample there. - -To embed a code sample in the documentation, use the following format: - -```solidity -{% include 'samples/APIRequests/APIConsumer.sol' %} -``` - -Note, you have to include only samples that represent the main Chainlink products. The following code shoudn't be included in `/_includes/samples` directory: - -- JSON or TOML descriptions and outputs -- API functions -- Code samples that are broken down into smaller pieces -- Shell, bash, or text commands -- Tables, blocks, or similar markdown structures - -## Adding Link token addresses for new EVM chains - -When Chainlink is deployed on a new EVM chain, the link token address must be added to [link-token-contract page](./docs/Developer%20Reference/link-token-contracts.md). -To allow the users to directly add the link contract to their metamask wallet, please follow this structure when adding a hyperlink containing a link token address: - -```html -`` - - -``` - -In addition: - -- Check that the `chainId` is defined in [chains.json](./_src/reference/chains.json). If it doesn't exist then: - - Go to [chainid.network](https://chainid.network/chains.json) and look for the chainId. E.g. on mainnet, look for _"chainId":1,_. Note that [chainid.network](https://chainid.network/chains.json) is maintained under this [repo](https://github.com/ethereum-lists/chains). - - Copy only the nested object you are looking for. E.g. on mainnet , you will copy `{"name":"Ethereum Mainnet","chain":"ETH","icon":"ethereum","rpc":["https://mainnet.infura.io/v3/${INFURA_API_KEY}","wss://mainnet.infura.io/ws/v3/${INFURA_API_KEY}","https://api.mycryptoapi.com/eth","https://cloudflare-eth.com"],"faucets":[],"nativeCurrency":{"name":"Ether","symbol":"ETH","decimals":18},"infoURL":"https://ethereum.org","shortName":"eth","chainId":1,"networkId":1,"slip44":60,"ens":{"registry":"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e"},"explorers":[{"name":"etherscan","url":"https://etherscan.io","standard":"EIP3091"}]}` - - Append the copied value to the array in [chains.json](./_src/reference/chains.json). -- Complete [linkNameSymbol.json](./_src/reference/linkNameSymbol.json). It contains a simple mapping chainId --> {name,symbol} and that is used to interact with the link contract on the right chain, fetch the name and the symbol and compare it with the expected values; mitigating the risk of typo when adding the link contract address. To do so: - - Go to the block explorer on the right chain. E.g. on mainnet, [Etherscan Chainlink Token](https://etherscan.io/token/0x514910771AF9Ca656af840dff83E8264EcF986CA). - - Click on _Contract_ then _Read Contract_. - - Click on _name_ and _symbol_. Copy the values returned. E.g. on mainnet, you will get respectively _ChainLink Token_ and _LINK_. - - Append the info (chainId,name,symbol) to the array in [linkNameSymbol.json](./_src/reference/linkNameSymbol.json). E.g. for mainnet, you would append `"1": { "name": "ChainLink Token", "symbol": "LINK" }` +The main code samples are stored in the `/public/samples/` directory. ## Style Guide @@ -131,6 +83,4 @@ In addition: - When referring to dropdown menus or a sequence of dropdown events, bold the relevant entities. Example: Go to **Menu Name** > **Option**. Do not use quotes. - Use markdown over HTML wherever possible. - When writing an additional note, start it with **Note:**. -- Use color highlighting when you add warnings, requirements, notes of deprecation/service removal. For guidance on using color highlighting, see https://rdmd.readme.io/docs/callouts. -- For a comprehensive guide on how to write tutorials, use our [template guide](/TEMPLATE.md). -- Use a consistent voice. When writing documentation, avoid first person plural (we) and opt for second person singular (you). Avoid passive voice. +- Use a consistent voice. When writing documentation, avoid first person plural "we" and opt for second person singular "you". Avoid passive voice. diff --git a/README.md b/README.md index 0997fc75348..47a8160e26b 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,13 @@ + This is the open source project for the Chainlink documentation. ## Developing - yarn serve - -## Building & Deploying -The site is hosted on a static site CDN. The files are super portable. Builds end up in `_site`. - - yarn deploy -Make sure you use `yarn` and have a recent version of `node` (see the `package.json` for specific version requirements). +``` +npm install && npm run dev +``` ## Docs architecture -* All docs are markdown and stored in `/docs`. -* Navigation is JSON in `/_data/navigation` -* Pages are processed as Readme.com markdown, and then syntax highlight is applied client-side -* Custom client side code powers the ENS page -## Contributing -See `CONTRIBUTING.md` \ No newline at end of file +- All docs are markdown and stored in `/src/pages`. +- Navigation is JSON in `/src/config/sidebar.ts` diff --git a/TEMPLATE.md b/TEMPLATE.md deleted file mode 100644 index caf420a34bd..00000000000 --- a/TEMPLATE.md +++ /dev/null @@ -1,111 +0,0 @@ ---- -layout: nodes.liquid -section: ethereum -date: Last Modified -title: "[insert title here]" -permalink: "[insert path here]" -excerpt: "Smart Contracts and Chainlink" -whatsnext: {"[insert hyperlink title]":"insert path to hyperlink", "":""} -metadata: - image: - 0: "insert image here" ---- -*This doc is meant to be used as a template for creating a tutorial doc. Contributors should emulate the structure of this document when creating new pages. The content of this doc comes from the [Getting Started Guides](https://github.com/smartcontractkit/documentation/tree/main/docs/Introduction/getting-started/).* - -*Prerequisites should have its own block at the beginning of the tutorial. Tell the user what tools are required, what knowledge they should already have, and where to go if they need previous reading. Provide links to the other docs pages.* - -> 📘 Prerequisites -> -> This tutorial requires .... If you're unfamiliar with these concepts, follow ... -> or -> New to []? We'll walk you through... - -*If a tutorial has a corresponding YouTube tutorial, link it at the beginning of the page.* -

- https://www.youtube.com/watch?v=rFXSEEQG9YE -

- -*If a portion of the YouTube video is deprecated or out-of-date, add a note alerting the user.* - -> 🚧 The video uses a seed phrase to request randomness. This feature is deprecated. Refer to the code in this tutorial for the most up to date procedures. - -# Overview - -*Write 1-4 sentences on what this tutorial covers. Focus on the end result of the tutorial and the overarching concepts a user will learn and implement. Throughout the entire document, use second person singular (you). This should be consistent throughout the entire document, but exceptions can be made. Avoid passive voice as well. Remember, anyone reading the tutorial should interpret it as a source of truth. Make sure to write in a voice which is factual and objective.* - -*Example:* -In this tutorial, you will write and deploy a Chainlink smart contract to an Ethereum testnet. - -**Topics** - -*Table of contents are generated automatically using vscode markdown: https://github.com/yzhang-gh/vscode-markdown make sure settings are changed so that only header1 are in TOC.* - -+ [1. What are smart contracts? What are data feeds?](#1-what-are-smart-contracts-what-are-data-feeds) -+ [2. What language is a smart contract written in?](#2-what-language-is-a-smart-contract-written-in) -+ [3. What does a smart contract look like?](#3-what-does-a-smart-contract-look-like) -+ [4. Further Reading](#4-further-reading) - -*Remember to number each main header and use questions when possible. Make questions succinct and bold key terms in the answers. Link to relevant articles where possible and make sure there are no gaps in learning. Users should be able to use the article as a source of truth and not have to rely on external searches to understand the material of the article. Example:* - -# 1. What are smart contracts? What are data feeds? - -When deployed to a blockchain, a **smart contract** is a set of instructions that can be executed without intervention from third parties. The code of a smart contract determines how it responds to input, just like the code of any other computer program. - -A valuable feature of smart contracts is that they can store and manage on-chain assets (like [ETH or ERC20 tokens](https://ethereum.org/en/developers/docs/standards/tokens/erc-20/)), just like you can with an Ethereum wallet. Because they have an on-chain address like a wallet, they can do everything any other address can. This opens the door for programming automated actions when receiving and transferring assets. - -*Notice how users are given external links to read more about concepts such as ETH or ERC20 tokens. They do not have to undertake a separate search.* - -Smart contracts can connect to real-world market prices of assets to produce powerful applications. Chainlink's **[Data Feeds](/docs/data-feeds/)** feature allows users to quickly and securely connect smart contracts to such assets in a single call. - -# 2. What language is a smart contract written in? - -... - -# 3. What does a smart contract look like? - -*For code samples, be thorough. Redundancy is better than assuming the user have sufficient knowledge on a certain topic. Create markdown code samples wherever applicable. Provide a detailed explanation about what each code sample does.* - -The structure of a smart contract is similar to that of a _class_ in Javascript, with a few differences. Let's take a look at this `HelloWorld` example. - -```solidity -pragma solidity 0.8.7; - -contract HelloWorld { - string public message; - - constructor(string memory initialMessage) { - message = initialMessage; - } - - function updateMessage(string memory newMessage) public { - message = newMessage; - } -} -``` - -*Subheadings don't need to be numbered. If a step of the tutorial doesn't need its own heading, it's best to make a subheading. Example:* - -## Define the Version - -The first thing that every Solidity file must have is the Solidity version definition. The version HelloWorld.sol is using is 0.8.7, defined by `pragma solidity 0.8.7;` - -You can see the latest versions of the Solidity compiler [here](https://github.com/ethereum/solc-bin/blob/gh-pages/bin/list.txt/?target=_blank). You may also notice Solidity files containing definitions with multiple versions of Solidity: - -```solidity -pragma solidity >=0.7.0 <0.9.0; -``` -This means that the code is written for Solidity version 0.7.0, or a newer version of the language up to, but not including version 0.9.0. The `pragma` selects the compiler, which defines how the code is treated. - -... - -*As a final step, include further reading with relevant blog posts and link users to other tutorials. Example:* - -# 4. Further Reading - -To learn more about data feeds, read the Data Feed blog posts: - -- [Build a dApp on Gnosis Chain With Secure Data Feeds](https://blog.chain.link/build-a-dapp-on-xdai-chain-with-secure-data-feeds/) -- [Build a dApp on Binance Smart Chain With Secure Data Feeds](https://blog.chain.link/build-a-dapp-on-binance-smart-chain-with-secure-data-feeds/) -- [The 3 Levels of Data Aggregation in Chainlink Price Feeds](https://blog.chain.link/levels-of-data-aggregation-in-chainlink-price-feeds/) - -To explore more applications for data feeds, check out our [other tutorials](/docs/other-tutorials/#data-feeds-applications). diff --git a/_src/animate-chain-transitions.ts b/_src/animate-chain-transitions.ts deleted file mode 100644 index 9f3e52fc20e..00000000000 --- a/_src/animate-chain-transitions.ts +++ /dev/null @@ -1,28 +0,0 @@ -document.addEventListener('DOMContentLoaded', () => { - const faders: HTMLDivElement[] = []; - document.querySelectorAll('.fader').forEach(element => { - faders.push(element); - }); - // Setup any faders on the page - for(let fader of faders) { - // Setup to only show first one - (fader.children[0]).style.opacity = '1'; - for(let i = 1;ifader.children[i]).style.opacity = '0'; - } - - // Fade the current to the next every interval - let currentFader = 0; - - setInterval(() => { - let nextFader = currentFader + 1; - if(nextFader >= fader.children.length) { - nextFader = 0; - } - (fader.children[currentFader]).style.opacity = '0'; - (fader.children[nextFader]).style.opacity = '1'; - currentFader = nextFader; - }, 2500); - } - -}); diff --git a/astro.config.ts b/astro.config.ts new file mode 100644 index 00000000000..078187d15be --- /dev/null +++ b/astro.config.ts @@ -0,0 +1,44 @@ +import { defineConfig } from "astro/config" +import preact from "@astrojs/preact" +import react from "@astrojs/react" +import { astroCallouts } from "./integrations/astro-callouts" +import { solidityRemixCode } from "./integrations/solidity-remix" +import { youtubeEmbed } from "./integrations/youtube-embed" +import mdx from "@astrojs/mdx" +import rehypeSlug from "rehype-slug" +import rehypeAutolinkHeadings from "rehype-autolink-headings" +import sitemap from "@astrojs/sitemap" + +import partytown from "@astrojs/partytown" + +// https://astro.build/config +export default defineConfig({ + site: "https://docs.chain.link", + legacy: { + astroFlavoredMarkdown: true, + }, + integrations: [ + preact(), + react(), + sitemap({ changefreq: "daily" }), + astroCallouts(), + solidityRemixCode(), + youtubeEmbed(), + mdx(), + partytown({}), + ], + markdown: { + drafts: true, + rehypePlugins: [ + rehypeSlug, + [ + rehypeAutolinkHeadings, + { + behavior: "prepend", + }, + ], + ], + syntaxHighlight: "prism", + extendDefaultPlugins: true, + }, +}) diff --git a/docs/chainlink-automation/register-upkeep.md b/docs/chainlink-automation/register-upkeep.md deleted file mode 100644 index 961d0de8ac5..00000000000 --- a/docs/chainlink-automation/register-upkeep.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -layout: nodes.liquid -section: ethereum -date: Last Modified -title: 'Register a Custom Logic Upkeep' -whatsnext: - { - 'Create a compatible contract for custom logic Upkeep': '/docs/chainlink-automation/compatible-contracts/', - } ---- - -## Overview - -This guide explains how to register a custom logic Upkeep that uses a [compatible contract](../compatible-contracts). You can register it using the Chainlink Automation App or from within a contract that you deploy. - -**Topics** -+ [Register an Upkeep using the Chainlink Automation App](#register-an-upkeep-using-the-chainlink-automation-app) -+ [Register an Upkeep using your own deployed contract](#register-an-upkeep-using-your-own-deployed-contract) - -## Register an Upkeep using the Chainlink Automation App - - - -1. **Click the Register New Upkeep button** - ![Click Register New Upkeep](/images/contract-devs/automation/auto-ui-home.png) - -1. **Connect your wallet** using the *Connect Wallet* choose a network. For a list of supported networks, see the [Supported Blockchain Networks](../supported-networks) section. The Chainlink Automation App also lists the currently supported networks. - ![Connect With Metamask](/images/contract-devs/automation/auto-ui-wallet.png) - -1. **Select the custom logic trigger** - -1. **Provide the address of your [compatible contract](../compatible-contracts)** You do not need to verify the contract on-chain, but it must be [compatible](../compatible-contracts/) with the `AutomationCompatibleInterface` contract. - -1. **Complete the required details:** - - - **Upkeep name**: This will be publicly visible in the Chainlink Automation app. - - **Gas limit**: This is the maximum amount of gas that your transaction requires to execute on chain. This limit cannot exceed the `performGasLimit` value configured on the [registry](/docs/chainlink-automation/supported-networks/#configurations). Before the network executes your transaction on chain, it simulates the transaction. If the gas required to execute your transaction exceeds the gas limit that you specified, your transaction will not be confirmed. Developers also have the ability to update `performGasLimit` for an upkeep. Consider running your function on a testnet to see how much gas it uses before you select a gas limit. This can be changed afterwards. - - **Starting balance (LINK)**: Specify a LINK starting balance to fund your upkeep. See the [LINK Token Contracts](/docs/link-token-contracts/) page to find the correct contract address and access faucets for testnet LINK. This field is required. You must have LINK before you can use the Chainlink Automation service. - - **Check data**: This field is provided as an input for when your `checkUpkeep` function is simulated. Either leave this field blank or specify a hexadecimal value starting with `0x`. To learn how to make flexible upkeeps using `checkData`, see the [Flexible Upkeeps](../flexible-upkeeps) guide. - - **Your email address**: This email address will be encrypted and is used to send you an email when your upkeep is underfunded. - - > 🚧 Funding Upkeep - > - > You should fund your contract with more LINK that you anticipate you will need. The network will not check or perform your Upkeep if your balance is too low based on current exchange rates. View the [Automation economics](../automation-economics) page to learn more about the cost of using Chainlink Automation. - - > 🚧 ERC677 Link - > - > Fund your Upkeep with more LINK than you anticipate you will need. The network will not check or perform your upkeep if your balance is too low based on current exchange rates. View the [Automation Economics](../automation-economics) page to learn more about the cost of using Chainlink Automation. - - > 🚧 Testing and best practices - > - > Follow the [best practices](../compatible-contracts/#best-practices) when creating a compatible contract and test your upkeep on a testnet before deploying it to a mainnet. - -1. **Click `Register upkeep`** and confirm the transaction in MetaMask. - ![Upkeep Registration Success Message](/images/contract-devs/automation/automation-registration-submitted.png) - -Your upkeeps will be displayed in your list of **Active Upkeeps**. You must monitor the balance of your upkeep. If the balance drops below the **minimum balance**, the Chainlink Automation Network will not perform the Upkeep. See [Managing Upkeeps](../manage-upkeeps) to learn how to manage your upkeeps. - -## Register an Upkeep using your own deployed contract - -You can dynamically create and manage Upkeeps from within your own dApp. To do this you will need to keep track of the Upkeep ID as your contract will use this to subsequently interact with the Chainlink Automation registry. The following example displays a smart contract that can create an Upkeep and determine the Upkeep ID. Note your contract must be compatible and you will need [ERC-677 LINK](../../link-token-contracts/) to fund the upkeep. You can also program your Upkeep to check its own balance and fund itself by interacting with the registry. - - -### Prerequisites - -Find the following addresses for your network: - -- Correct [LINK token contract](../../link-token-contracts/) -- [Registry and registrar addresses for your network](../supported-networks/#registry-and-registrar-addresses) - -Optionally, you can fetch the LINK address and registrar address from the intended registry at run-time. - -> 📘 Make sure your contract has enough [ERC-677 LINK](../../link-token-contracts/) to fund the Upkeep at creation. _The minimum amount is 5 LINK._ - -### Code example - -```solidity -{% include 'samples/Automation/UpkeepIDConsumerExample.sol' %} -``` - - - -### `registerAndPredictID` Parameters - -| Name | Description | -| ---------------------- | -------------------------------------------------------------------- | -| `name` | Name of Upkeep | -| `encryptedEmail` | Not in use in programmatic registration. Please specify with `0x` | -| `upkeepContract` | Address of Keepers-compatible contract that will be automated | -| `gasLimit` | The maximum amount of gas that will be used to execute your function on-chain | -| `adminAddress` | Address for Upkeep administrator. Upkeep administrator can fund contract. | -| `checkData` | ABI-encoded fixed and specified at Upkeep registration and used in every checkUpkeep. Can be empty (0x) | -| `amount` | The amount of LINK (in Wei) to fund your Upkeep. The minimum amount is 5 LINK. To fund 5 LINK please set this to 5000000000000000000 | -| `source` | Not in use in programmatic registration. Please specify with `0`. | - -Refer to the [Supported Networks](../supported-networks/#registry-and-registrar-addresses) page to find the correct registry and registrar addresses for your contract. diff --git a/docs/chainlink-nodes/chainlink-nodes.md b/docs/chainlink-nodes/chainlink-nodes.md deleted file mode 100644 index 6b243a0db29..00000000000 --- a/docs/chainlink-nodes/chainlink-nodes.md +++ /dev/null @@ -1,110 +0,0 @@ ---- -layout: nodes.liquid -section: nodeOperator -date: Last Modified -title: "Chainlink Nodes" -permalink: /chainlink-nodes/ ---- - -
-
-
-

- Operating a Chainlink node allows you to be part of the Chainlink Network, helping developers build hybrid smart contracts, giving them access to real-world data and services. -

-

- Learn more about Chainlink nodes with our step‑by‑step tutorials and documentation: -

-
-
-
-
- -

Set Up a Chainlink Node

-

Install and Run your own node on a local machine or remote server.

- -
- Learn More - Right arrow -
-
-
-
-
-
- -

Fulfill Your First Job Request

-

- Deploy an Oracle contract and make job requests to your node. -

- -
- Learn More - Right arrow -
-
-
-
-
-
- -

Add External Adapters to Your Node

-

- Bring high-quality data and premium web APIs to contract developers. -

- -
- Learn More - Right arrow -
-
-
-
-
-
-
-
- -
-

New to Chainlink and Smart Contracts?

-

- Learn the basics in the Getting Started Guide. Build your first smart contract on Ethereum. -

- - Getting Started Guide - -
-
- -
-
diff --git a/docs/chainlink-nodes/external-adapters/external-adapters.md b/docs/chainlink-nodes/external-adapters/external-adapters.md deleted file mode 100644 index a2ae8f38be5..00000000000 --- a/docs/chainlink-nodes/external-adapters/external-adapters.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: nodes.liquid -section: nodeOperator -date: Last Modified -title: "External Adapters Introduction" -permalink: "docs/external-adapters/" -whatsnext: {"External Adapters in Solidity":"/docs/contract-creators/", "Building External Adapters":"/docs/developers/", "Bridges: Adding External Adapters to Nodes":"/docs/node-operators/"} ---- -External adapters are how Chainlink enables easy integration of custom computations and specialized APIs. External adapters are services which the core of the Chainlink node communicates via its API with a simple JSON specification. If you want a step by step, be sure to check out our [blog post](https://blog.chain.link/build-and-use-external-adapters/). - -Information on external adapters is broken up into three main categories: contract creators, developers, and node operators. -- [Contract Creators](../contract-creators/) will need to know how to specify an external adapter in their request for external data. -- [Developers](../developers/) will need to know how to implement an external adapter for an API. -- [Node Operators](../node-operators/) will need to know how to add an external adapter to their node so that they can provide specialized services to smart contracts. \ No newline at end of file diff --git a/docs/chainlink-nodes/job-specs/direct-request-get-string.md b/docs/chainlink-nodes/job-specs/direct-request-get-string.md deleted file mode 100644 index 3ead891c027..00000000000 --- a/docs/chainlink-nodes/job-specs/direct-request-get-string.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: nodes.liquid -section: nodeOperator -date: Last Modified -title: 'GET > String Example Job Spec' -permalink: 'docs/direct-request-get-string/' ---- - -This is an example v2 (TOML) job spec for returning a _string_ in one Chainlink API Call. Note that the job calls the `fulfillOracleRequest2` function. If you are a node operator, use an [Operator contract](https://github.com/smartcontractkit/chainlink/blob/develop/contracts/src/v0.7/Operator.sol) with this job. -To test it from a smart contract, see this [Example](/docs/any-api/get-request/examples/api-array-response/). - -```jpv2 -{% include 'samples/NodeOperators/jobs/get-string.toml' %} -``` diff --git a/docs/chainlink-nodes/proof-of-reserves-btc.md b/docs/chainlink-nodes/proof-of-reserves-btc.md deleted file mode 100644 index b62ebdd7c51..00000000000 --- a/docs/chainlink-nodes/proof-of-reserves-btc.md +++ /dev/null @@ -1,560 +0,0 @@ ---- -layout: nodes.liquid -section: nodeOperator -date: Last Modified -title: "Proof of Reserves (BTC)" -permalink: "docs/proof-of-reserves-btc/" -hidden: true ---- -In order to contribute to the price aggregator contract, you will need to run external adapters for the provider you have been assigned. The Chainlink team will let you know which API to provide, and you can use this page as a guide for adding jobs to your node. - -External adapters can be found [here](https://github.com/smartcontractkit/external-adapters-js). - -Follow the instructions in the README to run the adapter in your infrastructure. You may need to obtain an API key for the data provider assigned to you. Follow [these instructions](../node-operators/) for adding the external adapter as a bridge to your node. - -First, add a test job to your node which uses the Web initiator so that you can validate that the job will run successfully. Rename bridge names if required. - -```json Test RenVM & Blockcypher -{ - "initiators": [ - { - "type": "web" - } - ], - "tasks": [ - { - "type": "renvm-address-set", - "params": { - "network": "mainnet", - "tokenOrContract": "btc" - } - }, - { - "type": "copy", - "params": { - "copyPath": [ - "result" - ] - } - }, - { - "type": "blockcypher", - "params": { - "dataPath": "result", - "endpoint": "balance", - "confirmations": 6 - } - }, - { - "type": "copy", - "params": { - "copyPath": [ - "result" - ] - } - }, - { - "type": "reduce", - "params": { - "reducer": "sum", - "dataPath": "result", - "valuePath": "balance", - "initialValue": 0 - } - }, - { - "type": "copy", - "params": { - "copyPath": [ - "result" - ] - } - }, - { - "type": "ethint256" - } - ] -} -``` -```json Test wBTC & Blockcypher -{ - "initiators": [ - { - "type": "web" - } - ], - "tasks": [ - { - "type": "wbtc-address-set", - "params": { - "network": "mainnet", - "tokenOrContract": "btc" - } - }, - { - "type": "copy", - "params": { - "copyPath": [ - "result" - ] - } - }, - { - "type": "blockcypher", - "params": { - "dataPath": "result", - "endpoint": "balance", - "confirmations": 6 - } - }, - { - "type": "copy", - "params": { - "copyPath": [ - "result" - ] - } - }, - { - "type": "reduce", - "params": { - "reducer": "sum", - "dataPath": "result", - "valuePath": "balance", - "initialValue": 0 - } - }, - { - "type": "copy", - "params": { - "copyPath": [ - "result" - ] - } - }, - { - "type": "ethint256" - } - ] -} -``` -```json Test RenVM & Blockchain.com -{ - "initiators": [ - { - "type": "web" - } - ], - "tasks": [ - { - "type": "renvm-address-set", - "params": { - "network": "mainnet", - "tokenOrContract": "btc" - } - }, - { - "type": "copy", - "params": { - "copyPath": [ - "result" - ] - } - }, - { - "type": "blockchain-com", - "params": { - "dataPath": "result", - "endpoint": "balance", - "confirmations": 0 - } - }, - { - "type": "copy", - "params": { - "copyPath": [ - "result" - ] - } - }, - { - "type": "reduce", - "params": { - "reducer": "sum", - "dataPath": "result", - "valuePath": "balance", - "initialValue": 0 - } - }, - { - "type": "copy", - "params": { - "copyPath": [ - "result" - ] - } - }, - { - "type": "ethint256" - } - ] -} -``` -```json Test wBTC & Blockchain.com -{ - "initiators": [ - { - "type": "web" - } - ], - "tasks": [ - { - "type": "wbtc-address-set", - "params": { - "network": "mainnet", - "tokenOrContract": "btc" - } - }, - { - "type": "copy", - "params": { - "copyPath": [ - "result" - ] - } - }, - { - "type": "blockchain-com", - "params": { - "dataPath": "result", - "endpoint": "balance", - "confirmations": 0 - } - }, - { - "type": "copy", - "params": { - "copyPath": [ - "result" - ] - } - }, - { - "type": "reduce", - "params": { - "reducer": "sum", - "dataPath": "result", - "valuePath": "balance", - "initialValue": 0 - } - }, - { - "type": "copy", - "params": { - "copyPath": [ - "result" - ] - } - }, - { - "type": "ethint256" - } - ] -} -``` - -On the Job Spec Detail page for the job, click the Run button. You should see a green bar at the top that the node Successfully created job run . Click on that Job Run ID and verify that all tasks have been Completed with green check marks. -[block:image] -{ - "images": [ - { - "image": [ - "/files/8cfc185-Screenshot_from_2019-06-21_08-29-07.png", - "Screenshot from 2019-06-21 08-29-07.png", - 1894, - 806, - "#fafafb" - ] - } - ] -} -[/block] -If the test job has ran successfully, add the following job to your node. Rename bridge names if required. Replace the following values: -- `YOUR_ORACLE_CONTRACT_ADDRESS` with your oracle contract address - -```json RenVM & Blockcypher -{ - "initiators": [ - { - "type": "runlog", - "params": { - "address": "YOUR_ORACLE_CONTRACT_ADDRESS" - } - } - ], - "tasks": [ - { - "type": "renvm-address-set", - "params": { - "network": "mainnet", - "tokenOrContract": "btc" - } - }, - { - "type": "copy", - "params": { - "copyPath": [ - "result" - ] - } - }, - { - "type": "blockcypher", - "params": { - "dataPath": "result", - "endpoint": "balance", - "confirmations": 6 - } - }, - { - "type": "copy", - "params": { - "copyPath": [ - "result" - ] - } - }, - { - "type": "reduce", - "params": { - "reducer": "sum", - "dataPath": "result", - "valuePath": "balance", - "initialValue": 0 - } - }, - { - "type": "copy", - "params": { - "copyPath": [ - "result" - ] - } - }, - { - "type": "ethint256" - }, - { - "type": "ethtx" - } - ] -} -``` -```json wBTC & Blockcypher -{ - "initiators": [ - { - "type": "runlog", - "params": { - "address": "YOUR_ORACLE_CONTRACT_ADDRESS" - } - } - ], - "tasks": [ - { - "type": "wbtc-address-set", - "params": { - "network": "mainnet", - "tokenOrContract": "btc" - } - }, - { - "type": "copy", - "params": { - "copyPath": [ - "result" - ] - } - }, - { - "type": "blockcypher", - "params": { - "dataPath": "result", - "endpoint": "balance", - "confirmations": 6 - } - }, - { - "type": "copy", - "params": { - "copyPath": [ - "result" - ] - } - }, - { - "type": "reduce", - "params": { - "reducer": "sum", - "dataPath": "result", - "valuePath": "balance", - "initialValue": 0 - } - }, - { - "type": "copy", - "params": { - "copyPath": [ - "result" - ] - } - }, - { - "type": "ethint256" - }, - { - "type": "ethtx" - } - ] -} -``` -```json RenVM & Blockchain.com -{ - "initiators": [ - { - "type": "runlog", - "params": { - "address": "YOUR_ORACLE_CONTRACT_ADDRESS" - } - } - ], - "tasks": [ - { - "type": "renvm-address-set", - "params": { - "network": "mainnet", - "tokenOrContract": "btc" - } - }, - { - "type": "copy", - "params": { - "copyPath": [ - "result" - ] - } - }, - { - "type": "blockchain-com", - "params": { - "dataPath": "result", - "endpoint": "balance", - "confirmations": 0 - } - }, - { - "type": "copy", - "params": { - "copyPath": [ - "result" - ] - } - }, - { - "type": "reduce", - "params": { - "reducer": "sum", - "dataPath": "result", - "valuePath": "balance", - "initialValue": 0 - } - }, - { - "type": "copy", - "params": { - "copyPath": [ - "result" - ] - } - }, - { - "type": "ethint256" - }, - { - "type": "ethtx" - } - ] -} -``` -```json wBTC & Blockchain.com -{ - "initiators": [ - { - "type": "runlog", - "params": { - "address": "YOUR_ORACLE_CONTRACT_ADDRESS" - } - } - ], - "tasks": [ - { - "type": "wbtc-address-set", - "params": { - "network": "mainnet", - "tokenOrContract": "btc" - } - }, - { - "type": "copy", - "params": { - "copyPath": [ - "result" - ] - } - }, - { - "type": "blockchain-com", - "params": { - "dataPath": "result", - "endpoint": "balance", - "confirmations": 0 - } - }, - { - "type": "copy", - "params": { - "copyPath": [ - "result" - ] - } - }, - { - "type": "reduce", - "params": { - "reducer": "sum", - "dataPath": "result", - "valuePath": "balance", - "initialValue": 0 - } - }, - { - "type": "copy", - "params": { - "copyPath": [ - "result" - ] - } - }, - { - "type": "ethint256" - }, - { - "type": "ethtx" - } - ] -} -``` - -Once added, open a PR with the Job ID associated with the job above. Base this PR off the branch of the PR sent to you by the Chainlink team. - -Make sure that your `MINIMUM_CONTRACT_PAYMENT_LINK_JUELS` environment variable is low enough to accept the payment amount from the aggregator contract on mainnet. diff --git a/docs/getting-started/advanced-tutorial.md b/docs/getting-started/advanced-tutorial.md deleted file mode 100644 index 2f3d6d8025a..00000000000 --- a/docs/getting-started/advanced-tutorial.md +++ /dev/null @@ -1,170 +0,0 @@ ---- -layout: nodes.liquid -section: gettingStarted -date: Last Modified -title: 'API Calls: Using Any API' -permalink: 'docs/advanced-tutorial/' -excerpt: 'Calling APIs from Smart Contracts' -whatsnext: - { - 'Make a GET Request': '/docs/any-api/get-request/introduction/', - 'Make an Existing Job Request': '/docs/any-api/get-request/examples/existing-job-request/', - } -metadata: - image: - 0: '/files/04b8e56-cl.png' ---- - -> 📘 Requirements -> -> This guide requires basic knowledge about smart contracts. If you are new to smart contract development, read the [Consuming Data Feeds](/docs/consuming-data-feeds/) and [Random Numbers](/docs/intermediates-tutorial/) guides before you begin. - -

- https://www.youtube.com/watch?v=ay4rXZhAefs -

- -## Overview - -In this guide, you will learn how to request data from a public API in a smart contract. This includes understanding what Tasks and External adapters are and how Oracle Jobs use them. You will also learn how to find the Oracle Jobs and Tasks for your contract and how to request data from an Oracle Job. - -**Topics** - -- [Overview](#overview) -- [1. How does the request and receive cycle work for API calls?](#1-how-does-the-request-and-receive-cycle-work-for-api-calls) -- [2. What are jobs?](#2-what-are-jobs) -- [3. What are Tasks?](#3-what-are-tasks) - - [Tasks](#tasks) - - [Contract Example](#contract-example) - - [External Adapters](#external-adapters) -- [4. How can I use an Oracle Data Service?](#4-how-can-i-use-an-oracle-data-service) -- [5. Further Reading](#5-further-reading) - -## 1. How does the request and receive cycle work for API calls? - -The request and receive cycle describes how a smart contract requests data from an oracle and receives the response in a separate transaction. If you need a refresher, check out the [Basic Request Model](../architecture-request-model/). - -For contracts that use [Chainlink VRF](/docs/vrf/v2/introduction/), you request randomness from a VRF oracle and then await the response. The fulfillment function is already given to us from the `VRFConsumerBase` contract, so oracles already know where to send the response to. However, with API calls, the contract itself _defines_ which function it wants to receive the response to. - -Before creating any code, you should understand how Oracle jobs can get data on-chain. - -## 2. What are jobs? - -Chainlink nodes require [**Jobs**](/docs/jobs/) to do anything useful. In the case of a Request and Receive job, the [Direct Request](/docs/jobs/types/direct-request/) job monitors the blockchain for a request from a smart contract. Once it catches a request, it runs the tasks (both core and external adapters) that the job is configured to run and eventually returns the response to the requesting contract. - -## 3. What are Tasks? - -Each oracle job has a configured set of tasks it must complete when it is run. These tasks are split into two subcategories: - -- [**Tasks**](/docs/tasks/) - These are tasks that come built-in to each node. (examples: http, ethabidecode, etc). -- [**External Adapters**](/docs/external-adapters/) - These are custom adapters built by node operators and community members, which perform specific tasks like calling a particular endpoint with a specific set of parameters (like authentication secrets that shouldn't be publicly visible). - -### Tasks - -If a job needs to make a GET request to an API, find a specific unsigned integer field in a JSON response, then submit that back to the requesting contract, it would need a job containing the following Tasks: - -- [HTTP](/docs/jobs/task-types/http/) calls the API. the `method` must be set to _GET_. -- [JSON Parse](/docs/jobs/task-types/jsonparse/) parses the JSON and extracts a value at a given keypath. -- [Multiply](/docs/jobs/task-types/multiply/) multiplies the input by a multiplier. Used to remove the decimals. -- [ETH ABI Encode](/docs/jobs/task-types/eth-abi-encode/) converts the data to a bytes payload according to ETH ABI encoding. -- [ETH Tx](/docs/jobs/task-types/eth-tx/) submits the transaction to the chain, completing the cycle. - -The job specs example can be found [here](/docs/direct-request-get-uint256/). -Let's walk through a real example, where you will retrieve 24 volumes of the [ETH/USD pair](https://min-api.cryptocompare.com/data/pricemultifull?fsyms=ETH&tsyms=USD) from the cryptocompare API. - -1. [HTTP](/docs/jobs/task-types/http/) calls the API and returns the body of an HTTP GET result for [ETH/USD pair](https://min-api.cryptocompare.com/data/pricemultifull?fsyms=ETH&tsyms=USD). Example: - -```json -{"RAW": - {"ETH": - {"USD": - { - ..., - "VOLUMEDAYTO":953806939.7194247, - "VOLUME24HOUR":703946.0675653099, - "VOLUME24HOURTO":1265826345.488568 - ..., - } - } - } -} -``` - -2. [JSON Parse](/docs/jobs/task-types/jsonparse/) walks a specified `path` (`"RAW,ETH,USD,VOLUME24HOUR"`) and returns the value found at that result. Example: `703946.0675653099` - -3. [Multiply](/docs/jobs/task-types/multiply/) parses the input into a float and multiplies it by the 10^18. Example: `703946067565309900000000` - -4. [ETH ABI Encode](/docs/jobs/task-types/eth-abi-encode/) formats the input into an integer and then converts it into Solidity's `uint256` format. Example: `0xc618a1e4` - -5. [ETH Tx](/docs/jobs/task-types/eth-tx/) takes the given input, places it into the data field of the transaction, signs a transaction, and broadcasts it to the network. Example: [transaction result](https://goerli.etherscan.io/tx/0x5f2023b665e0ae336665ded73fafa90ef752ac33487b9240f34b82f93a77c8ca) - -**Note: Some tasks accept parameters to be passed to them to inform them how to run.** Example: [JSON Parse](/docs/jobs/task-types/jsonparse/) accepts a `path` parameter which informs the task where to find the data in the JSON object. - -Let's see what this looks like in a contract: - -### Contract Example - -```solidity -{% include 'samples/APIRequests/APIConsumer.sol' %} -``` - - - -Here is a breakdown of each component of this contract: - -1. Constructor: This sets up the contract with the Oracle address, Job ID, and LINK fee that the oracle charges for the job. -2. `requestVolumeData` functions: This builds and sends a request - which includes the fulfillment functions selector - to the oracle. Notice how it adds the `get`, `path` and `times` parameters. These are read by the Tasks in the job to perform correctly. `get` is used by [HTTP](/docs/jobs/task-types/http/), `path` is used by [JSON Parse](/docs/jobs/task-types/jsonparse/) and `times` is used by [Multiply](/docs/jobs/task-types/multiply/). -3. `fulfill` function: This is where the result is sent upon the Oracle Job's completion. - -**Note:** The calling contract should own enough LINK to pay the fee, which by default is 0.1 LINK. You can use [this tutorial](/docs/fund-your-contract/) to learn how to fund your contract. - -This is an example of a basic HTTP GET request. However, it requires defining the API URL directly in the smart contract. This can, in fact, be extracted and configured on the Job level inside the Oracle node. You can follow the _APIConsumer_ tutorial [here](/docs/any-api/get-request/examples/single-word-response/). - -### External Adapters - -Here are some examples nodes with external adapters: - -- [Google Weather Data](https://docs.chain.link/docs/any-api/data-providers/google-weather/) -- [Associated Press](https://market.link/nodes/The%20Associated%20Press/integrations) - -If all the parameters are defined within the Oracle job, the only things a smart contract needs to define to consume are: - -- JobId -- Oracle address -- LINK fee -- Fulfillment function - -This will make your smart contract much more succinct. The `requestVolumeData` function from the code example [above](#contract-example) would look more like this: - -```solidity -function requestVolumeData() public returns (bytes32 requestId) { - Chainlink.Request memory req = buildChainlinkRequest(jobId, address(this), this.fulfill.selector); - - // Extra parameters don't need to be defined here because they are already defined in the job - - return sendChainlinkRequest(req, fee); -} -``` - -You can follow a full _Existing Job Tutorial_ [here](/docs/any-api/get-request/examples/existing-job-request/). -More on External Adapters can be found [here](/docs/external-adapters/). - -## 4. How can I use an Oracle Data Service? - -Chainlink has facilitated the launch of several new oracle data services that allow dApps to access rich data from external data sources. For instance, you can create a smart contract that checks Google's DNS service to determine if a given domain is owned by a given blockchain address using oracle job without having to specify the URL inside the contract. - -Join the [operator-requests discord channel](https://discord.gg/eGcxsdZzKR) to directly communicate with community node operators. - -A full example on Goerli testnet can be found [here](/docs/any-api/data-providers/dns-ownership/). - -## 5. Further Reading - -To learn more about connecting smart contracts to external APIs, read our blog posts: - -- [Connect a Smart Contract to the Twitter API](https://blog.chain.link/connect-smart-contract-to-twitter-api/) -- [Connect a Tesla Vehicle API to a Smart Contract](https://blog.chain.link/create-tesla-smart-contract-rental/) -- [OAuth and API Authentication in Smart Contracts](https://blog.chain.link/oauth-and-api-authentication-in-smart-contracts-2/) - -To explore more applications of external API requests, check out our [other tutorials](/docs/other-tutorials/#api-requests). diff --git a/hardhat.config.ts b/hardhat.config.ts index 58eca2ba898..6ca76dfb031 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -1,22 +1,24 @@ // This configuration file sets up the paths and compilers so we can test our solidity samples -require("@nomiclabs/hardhat-waffle"); +import { HardhatUserConfig } from "hardhat/config" +import "@nomicfoundation/hardhat-toolbox" -module.exports = { +const config: HardhatUserConfig = { paths: { root: "./", - sources: "./_includes/samples", + sources: "./public/samples", cache: "./.test/cache", artifacts: "./.test/artifacts", }, solidity: { compilers: [ - {version: "0.4.24"}, - {version: "0.6.6"}, - {version: "0.6.12"}, - {version: "0.7.6"}, - {version: "0.8.6"}, - {version: "0.8.7"}, + { version: "0.4.24" }, + { version: "0.6.6" }, + { version: "0.6.12" }, + { version: "0.7.6" }, + { version: "0.8.7" }, ], }, -}; +} + +export default config diff --git a/integrations/astro-callouts.ts b/integrations/astro-callouts.ts new file mode 100644 index 00000000000..b02f729dd58 --- /dev/null +++ b/integrations/astro-callouts.ts @@ -0,0 +1,93 @@ +/** + * Astro's implementation of callouts + * https://github.com/withastro/docs/blob/main/integrations/astro-asides.ts + */ + +import type { AstroIntegration } from "astro" +import type * as mdast from "mdast" +import type * as unified from "unified" +import { h } from "hastscript" +import remarkDirective from "remark-directive" +import { visit } from "unist-util-visit" +import { remove } from "unist-util-remove" + +const AsideTagname = "AutoImportedAside" + +/** + * remark plugin that converts blocks delimited with `:::` into instances of + * the `