📜  在 bsc testnet hardhat 上部署合约 (1)

📅  最后修改于: 2023-12-03 15:07:37.380000             🧑  作者: Mango

在 bsc testnet hardhat 上部署合约

在Binance Smart Chain Testnet上部署智能合约是开发者的一项关键任务。以下是一些步骤和提示来协助您完成这项任务。

前提条件

在开始部署智能合约之前,请确保完成以下步骤:

  • 在您的计算机上安装了Node.js,并具有npm包管理器的使用权限
  • 在您的计算机上安装了Solidity编译器
  • 拥有Binance Smart Chain测试网络的Gas提供者账户
  • 拥有Ether或BNB用于支付Gas费
步骤
步骤 1: 准备工作
  1. 在终端中安装Hardhat。
npm install --save-dev hardhat
  1. 安装Hardhat的Binance Smart Chain插件。
npm i --save-dev @nomiclabs/hardhat-bsc
  1. 安装Hardhat的Buidler-deploy插件,用于智能合约部署。
npm install --save-dev @nomiclabs/hardhat-ethers ethers @nomiclabs/buidler-deploy
  1. 创建一个新目录并进行初始化。
mkdir my-project
cd my-project
npx hardhat
  1. 选择创建一个新的项目,这将在项目根目录生成一个hardhat.config.js文件。
步骤 2: 编写智能合约
  1. 在项目根目录下创建一个名为contracts的文件夹。
  2. contracts文件夹下创建一个名为MyContract.sol的Solidity文件。
  3. 编写智能合约代码。下面是一个简单的示例:
pragma solidity ^0.8.0;

contract MyContract {
    string public myString = "Hello World!";
}
步骤 3: 编译智能合约

在部署智能合约之前,必须将Solidity代码编译为EVM字节码。

  1. 在终端中,输入以下命令来编译智能合约。
npx hardhat compile
  1. 如果智能合约成功编译,将在项目根目录的artifacts文件夹中生成JSON ABI和字节码文件。
步骤 4: 配置部署账户

hardhat.config.js文件中添加Binance Smart Chain测试网络的私钥。

/**
 * @type import('hardhat/config').HardhatUserConfig
 */
require('@nomiclabs/hardhat-bsc');

const ALCHEMY_API_KEY = 'your_alchemy_api_key';

module.exports = {
  solidity: '0.8.4',
  networks: {
    bscTestnet: {
      url: `https://eth-binance-chain-testnet.alchemyapi.io/v2/${ALCHEMY_API_KEY}`,
      accounts: [`0x${process.env.PRIVATE_KEY}`]
    }
  }
}
步骤 5: 部署智能合约
  1. 在终端中输入以下命令来部署智能合约。
npx hardhat run --network bscTestnet scripts/deploy.js
  1. 如果部署成功,将显示智能合约地址。
// deploy.js
async function main() {
  const MyContract = await ethers.getContractFactory("MyContract");
  const myContract = await MyContract.deploy();

  console.log("MyContract deployed to:", myContract.address);
}

main()
  .then(() => process.exit(0))
  .catch(error => {
    console.error(error);
    process.exit(1);
  });
结论

通过本文,您应该可以掌握如何在Binance Smart Chain Testnet上部署智能合约。Hardhat提供了一个简单而强大的工具,可以使该过程变得更加容易和高效。