— введение
— Развертывание в живой сети
— Развертывание в удаленных сетях
— hardhat Tutorials , hardhat 教程
— Контакт 联系方式
— введение
Когда вы будете готовы поделиться своим dApp с другими людьми, вы, возможно, захотите развернуть его в живой сети. Таким образом, другие смогут получить доступ к экземпляру, который не запущен локально на вашей системе.
Сеть «mainnet» Ethereum работает с реальными деньгами, но существуют отдельные сети «testnet», которые этого не делают. Эти тестовые сети предоставляют общие среды, которые хорошо имитируют сценарий реального мира, не ставя на карту реальные деньги, и у Ethereum их несколько, например Goerli и Sepolia. Мы рекомендуем вам развертывать свои контракты в тестовой сети Goerli.
На программном уровне развертывание в тестовой сети — это то же самое, что и развертывание в mainnet. Разница лишь в том, к какой сети вы подключаетесь. Давайте рассмотрим, как будет выглядеть код для развертывания ваших контрактов с помощью ethers.js.
Основные используемые понятия — это Signer, ContractFactory и Contract, о которых мы рассказывали в разделе тестирования. Здесь нет ничего нового по сравнению с тестированием, учитывая, что при тестировании контрактов вы фактически выполняете развертывание в сети разработки. Это делает код очень похожим или даже одинаковым.
— Развертывание в реальной сети
Давайте создадим новый каталог scripts
внутри каталога корня проекта и вставим следующее в файл deploy.js
в этом каталоге:
async function main() {
const [deployer] = await ethers.getSigners();
console.log("Deploying contracts with the account:", deployer.address);
console.log("Account balance:", (await deployer.getBalance()).toString());
const Token = await ethers.getContractFactory("Token");
const token = await Token.deploy();
console.log("Token address:", token.address);
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});
Чтобы указать Hardhat на подключение к определенной сети Ethereum, вы можете использовать параметр --network
при запуске любой задачи, как показано ниже:
npx hardhat run scripts/deploy.js --network <network-name>
В нашей текущей конфигурации запуск без параметра --network
приведет к тому, что код будет запущен против встроенного экземпляра Hardhat Network. В этом сценарии развертывание фактически теряется, когда Hardhat завершает работу, но все же полезно проверить, что наш код развертывания работает:
$ npx hardhat run scripts/deploy.js
Deploying contracts with the account: 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
Account balance: 10000000000000000000000
Token address: 0x5FbDB2315678afecb367f032d93F642f64180aa3
— Развертывание в удаленных сетях
Для развертывания в удаленной сети, такой как mainnet или любой testnet, вам нужно добавить запись network
в файл hardhat.config.js
. В этом примере мы будем использовать Goerli, но вы можете добавить любую сеть аналогичным образом:
require("@nomicfoundation/hardhat-toolbox");
// Go to https://www.alchemyapi.io, sign up, create
// a new App in its dashboard, and replace "KEY" with its key
const ALCHEMY_API_KEY = "KEY";
// Replace this private key with your Goerli account private key
// To export your private key from Metamask, open Metamask and
// go to Account Details > Export Private Key
// Beware: NEVER put real Ether into testing accounts
const GOERLI_PRIVATE_KEY = "YOUR GOERLI PRIVATE KEY";
module.exports = {
solidity: "0.8.9",
networks: {
goerli: {
url: `https://eth-goerli.alchemyapi.io/v2/${ALCHEMY_API_KEY}`,
accounts: [GOERLI_PRIVATE_KEY]
}
}
};
Мы используем Alchemy, но указание url
на любой узел или шлюз Ethereum будет работать. Возьмите свой ALCHEMY_API_KEY
и возвращайтесь.
Для развертывания на Goerli вам нужно отправить немного эфира Goerli на адрес, который будет выполнять развертывание. Вы можете получить эфир testnet из крана — сервиса, который бесплатно распространяет test-ETH. Вот некоторые из них для Goerli:
- Кран Chainlink
- Кран алхимии Гёрли
Перед проведением транзакций вам придется изменить сеть Metamask на Goerli.
Наконец, запустите:
npx hardhat run scripts/deploy.js --network goerli
Если все прошло успешно, вы должны увидеть развернутый адрес контракта.
— hardhat Tutorials , hardhat 教程
CN 中文 Github hardhat 教程 : github.com/565ee/hardhat_CN
CN 中文 CSDN hardhat 教程 : blog.csdn.net/wx468116118
EN 英文 Github hardhat Tutorials : github.com/565ee/hardhat_EN
— Контакт 联系方式
Домашняя страница : 565.ee
GitHub : github.com/565ee
Электронная почта : 565.eee@gmail.com
Facebook : facebook.com/565.ee
Twitter : twitter.com/565_eee
Telegram : t.me/ee_565