Пожалуйста, обратите внимание на то, что цепочка, любая API, удаляется из этого стартового набора, потому что Cheatslink Любой API в настоящее время заменяется функциями Cheaplink. Пожалуйста, найдите стартовый комплект для функций Chainlink здесь
Внедрение следующих 3 функций цепочки с использованием среды разработки Hardhat:
Для функций цепочки, пожалуйста, перейдите в эти наборы Tarter: Hardhat | Литейный завод (скоро)
Для цепной связи CCIP (прототокол взаимодействия поперечной цепи), пожалуйста, перейдите в эти стартовые комплекты: Hardhat | Литейный завод
Рекомендуется, чтобы вы прошли через документацию по началу работы, прежде чем продолжить здесь.
git --version
и увидеть ответ, такой как git version xxx
node --version
и получите выход, например: vx.xx
npm
yarn --version
и получить выход, такой как: xxx
Если вы знакомы с
npx
иnpm
вместоyarn
, вы можете использоватьnpx
для выполнения иnpm
для установки зависимостей.
После установки всех требований запустите следующее:
git clone https://github.com/smartcontractkit/hardhat-starter-kit/
cd hardhat-starter-kit
Затем:
npm install
Рекомендация состоит в том, чтобы использовать NPM 7 или более поздней версии. Если вы используете более старую версию NPM, вам также необходимо установить все пакеты, используемые на инструментарии.
npm install --save-dev @nomicfoundation/hardhat-toolbox @nomicfoundation/hardhat-network-helpers @nomicfoundation/hardhat-chai-matchers @nomiclabs/hardhat-ethers @nomiclabs/hardhat-etherscan chai ethers hardhat-gas-reporter solidity-coverage @typechain/hardhat typechain @typechain/ethers-v5 @ethersproject/abi @ethersproject/providers
Это также, если вы используете пряжу.
yarn add --dev @nomicfoundation/hardhat-toolbox @nomicfoundation/hardhat-network-helpers @nomicfoundation/hardhat-chai-matchers @nomiclabs/hardhat-ethers @nomiclabs/hardhat-etherscan chai ethers hardhat-gas-reporter solidity-coverage @typechain/hardhat typechain @typechain/ethers-v5 @ethersproject/abi @ethersproject/providers
npx hardhat test
или
npm run test
или
yarn test
Чтобы использовать TypeScript, запустите:
git checkout typescript
npm install
Если вы запустите npx hardhat --help
вы получите вывод всех задач, которые вы можете выполнить.
npm run deploy
Это развернет ваши контракты в локальную сеть. Кроме того, если он в локальной сети, он будет развернуть фиктивные контракты на цепь для вас, чтобы взаимодействовать. Если вы хотите взаимодействовать с развернутыми контрактами, перейдите к взаимодействию с развернутыми контрактами.
Одним из лучших способов тестирования и взаимодействия с интеллектуальными контрактами является использование локальной сети. Чтобы запустить локальную сеть со всеми вашими контрактами, выполните следующую команду:
npx hardhat node
Вы получите локальный блокчейн, частные ключи, развернутые контракты (из сценариев папки deployment
) и конечная точка, которая потенциально добавляет в кошелек EVM.
В вашем hardhat.config.js
вы увидите раздел, как:
module.exports = {
defaultNetwork: "hardhat",
networks: {
В этом разделе файла вы определяете, с какими сетями вы хотите взаимодействовать. Вы можете прочитать больше обо всем этом файле в документации Hardhat.
Чтобы взаимодействовать с живой или тестовой сетью, вам понадобится:
Давайте посмотрим на пример настройки их с помощью Sepolia Testnet.
Во -первых, нам нужно будет установить переменные среды. Мы можем сделать это, установив их в нашем файле .env
(создайте его, если его там нет). Вы также можете прочитать больше о переменных окружающей среды из связанного блога Twilio. Вы найдете образец того, как будет выглядеть этот файл в .env.example
ВАЖНО: Убедитесь, что вы не выставите ключи, которые вы вкладываете в этот файл
.env
. Под этим я имею в виду, не подталкивайте их к общественному репо, и, пожалуйста, старайтесь держать их ключи, которые вы используете в разработке, не связанные с какими -либо реальными фондами.
SEPOLIA_RPC_URL
.Вы можете получить его бесплатно от алхимии, Infura или Moralis. Это ваше соединение с блокчейном.
PRIVATE_KEY
. Это ваш личный ключ из вашего кошелька, то есть Metamask. Это необходимо для развертывания контрактов в общественных сетях. Вместо этого вы можете вместо этого установить переменную среды MNEMONIC
среды с некоторыми изменениями в hardhat.config.js
.
ПРЕДУПРЕЖДЕНИЕ
При разработке лучшая практика - использовать метамаску, которая не связана с какими -либо реальными деньгами. Хороший способ сделать это - сделать новый профиль браузера (на Chrome, Brave, Firefox и т. Д.) И установить Metamask в этот браузер и никогда не отправлять эти деньги кошелька.
Не совершайте и не взимайте какие -либо изменения в файлах .env, которые могут содержать конфиденциальную информацию, такую как закрытый ключ! Если эта информация достигает публичного репозитория GitHub, кто -то может использовать ее, чтобы проверить, есть ли у вас какие -либо фонды MainNet в этом адресе кошелька, и украсть их!
.env
Пример:
SEPOLIA_RPC_URL='https://sepolia.infura.io/v3/asdfadsfafdadf'
PRIVATE_KEY='abcdef'
bash
example:
export SEPOLIA_RPC_URL='https://sepolia.infura.io/v3/asdfadsfafdadf'
export PRIVATE_KEY='abcdef'
Вы также можете использовать
MNEMONIC
вместо переменной средыPRIVATE_KEY
, не покинув раздел наhardhat.config.js
и комментируя строкуPRIVATE_KEY
. Однако это не рекомендуется.
Для других сетей, таких как Mainnet и Polygon, вы можете использовать разные переменные среды для вашего URL -адреса RPC и вашего личного ключа. Смотрите hardhat.config.js
, чтобы узнать больше.
Перейдите к смесителям цепей и получите немного ETH и ссылки. Пожалуйста, следуйте документации Cheaplink, если незнакомы.
Зайдите на страницу подписки VRF и создайте новую подписку. Сохраните свой идентификатор подписки и поместите его в файл helper-hardhat-config.js
в качестве subscriptionId
Теперь вы должны быть все настройки! Вы можете запустить любую команду и просто пройти --network sepolia
!
Для развертывания контрактов:
npm run deploy --network sepolia
Для запуска испытательных тестов TestNet
npm run test-staging
Если вы хотите запустить тесты в раздвоенной сети, выполните следующие действия:
MAINNET_RPC_URL
, которая подключается к MainNet.FORKING_BLOCK_NUMBER
. В случае игнорирования он будет использовать последний блок каждый раз, что может привести к проверке несоответствия.enabled
флаг на true
/ false
, чтобы включить / отключить функцию развязки forking: {
url: MAINNET_RPC_URL,
blockNumber: FORKING_BLOCK_NUMBER,
enabled: false,
}
Тесты расположены в испытательном каталоге и разделены между модульными тестами и тестами на стадию/тестовой сети. Модульные тесты должны выполняться только в местных средах, а проведенные тесты должны работать только в живых средах.
Чтобы запустить модульные тесты:
npx hardhat test
или
npm run test
или
yarn test
Для запуска стационарных тестов в сети Sepolia:
npx hardhat test --network sepolia
или
npm run test-staging
Поскольку все тесты написаны таким образом, чтобы быть независимыми друг от друга, вы можете сэкономить время, запустив их параллельно. Убедитесь, что AUTO_FUND=false
Inside .env
-файл. Есть некоторые ограничения с параллельным тестированием, читайте больше о них здесь
Для проведения тестов параллельно:
npx hardhat test --parallel
или
npm run test --parallel
После развертывания ваших контрактов результаты развертывания дадут вам адреса контракта по мере их развертывания. Затем вы можете использовать эти адреса контракта в сочетании с задачами Hardhat для выполнения операций по каждому контракту.
Цена подает потребительский контракт с одной задачей, чтобы прочитать последнюю цену указанного контракта на кормление цены.
npx hardhat read-price-feed --contract insert-contract-address-here --network network
Контракт VRFConsumer имеет две задачи, одна для запроса случайного числа, и одна для чтения результата запроса случайных чисел. Как объяснено в документации разработчика, есть два метода:
Сначала прочитайте документы, чтобы понять, какой метод наиболее подходит для вашего варианта использования.
Чтобы начать, перейдите на страницу подписки VRF и создайте новую подписку. Сохраните свой идентификатор подписки и поместите его в файл helper-hardhat-config.js
в качестве subscriptionId
:
5 : {
// rest of the config
subscriptionId : "777"
}
Затем разверните своего потребителя контракта VRF V2 в сеть вашей недавней подписки, используя идентификатор подписки в качестве аргумента конструктора.
npm run deploy --network network
Наконец, вам нужно еще раз перейти на страницу подписки и добавить адрес развернутого контракта в качестве нового потребителя. После того, как это будет сделано, вы можете выполнить запрос VRF с задачей-запросом-номером:
npx hardhat request-random-number --contract insert-contract-address-here --network network
После того, как вы успешно сделали запрос на случайное число, вы сможете увидеть результат с помощью задачи с чистым числом:
npx hardhat read-random-number --contract insert-contract-address-here --network network
Разверните своего потребителя контракта VRF V2 в сеть.
npm run deploy --network network
или (если вы используете пряжу)
yarn deploy --network network
Теперь вы должны финансировать свой потребительский контракт с помощью Tolkens:
npx hardhat transfer-link --recipient insert-contract-address-here --amount insert-amount-in-juels-here --network network
После того, как это будет сделано, вы можете выполнить запрос VRF с задачей-запросом-номером:
npx hardhat request-random-number-direct-funding --callbackgaslimit insert-callback-gas-limit-here --requestconfirmations insert-request-confirmations-here --numwords insert-number-words-here --contract insert-contract-address-here --network network
После того, как вы успешно сделали запрос на случайное число, вы сможете увидеть результат с помощью задачи с чистым числом:
npx hardhat read-random-number-direct-funding --contract insert-contract-address-here --network network
Контракт AutomationCounter - это простой контракт с автоматизацией цепочки, который просто поддерживает переменную счетчика, которая увеличивается каждый раз, когда задача выполнения выполнения выполняется автоматизацией цепочки. Как только контракт будет развернут, вы должны отправиться на https://automation.chain.link/, чтобы зарегистрировать его для содержания, затем вы можете использовать задачу ниже, чтобы просмотреть переменную счетчика, которая увеличивается с помощью автоматизации цепной связи.
npx hardhat read-automation-counter --contract insert-contract-address-here --network network
You'll need an ETHERSCAN_API_KEY
environment variable. Вы можете получить один из сайта API Etherscan.
npx hardhat verify --network <NETWORK> <CONTRACT_ADDRESS> <CONSTRUCTOR_PARAMETERS>
пример:
npx hardhat verify --network sepolia 0x9279791897f112a41FfDa267ff7DbBC46b96c296 "0x694AA1769357215DE4FAC081bf1f309aDC325306"
Это приведет ваши умные контракты.
npm run lint:fix
Это отформатирует как ваш JavaScript, так и прочность, чтобы выглядеть лучше.
npm run format
To estimate gas, just set a REPORT_GAS
environment variable to true, and then run:
npx hardhat test
Если вы хотите увидеть цены на газ в долларах США или в другой валюте, добавьте COINMARKETCAP_API_KEY
из Coinmarketcap.
Чтобы увидеть меру в процентах от степени, в которой исходный код смарт -контракта выполняется при запуске конкретного набора тестов, тип
npm run coverage
Мы собираемся использовать Echidna в качестве инструмента тестирования пузырьков. Вам необходимо установить Docker с выделенной не менее 8 ГБ виртуальной памяти (чтобы обновить этот параметр перейти к настройкам-> Resources-> Advanced-> Memory ).
Чтобы запустить экземплярный запуск Echidna
npm run fuzzing
Если вы используете его в первый раз, вам нужно будет подождать, пока Docker скачивает для нас изображение Eth-Security Toolbox.
Чтобы начать пузырь
echidna-test /src/contracts/test/fuzzing/AutomationCounterEchidnaTest.sol --contract AutomationCounterEchidnaTest --config /src/contracts/test/fuzzing/config.yaml
Выйти из типа эхидны
exit
Вклад всегда приветствуются! Откройте PR или проблему!