2. **部署脚本**: 在 `scripts` 目录下创建一个新文件 `deploy.ts`,并添加以下内容:
```typescript
import { zkSyncProvider, Wallet } from "zksync-web3";
import * as ethers from "ethers";
import { HardhatRuntimeEnvironment } from "hardhat/types";
import { Deployer } from "@matterlabs/hardhat-zksync-deploy";
async function main() {
console.log("Deploying contract to zkSync");
// Initialize the wallet.
const wallet = new Wallet("<YOUR_PRIVATE_KEY>");
// Create a deployer instance.
const deployer = await Deployer.create({
provider: await zkSyncProvider(),
wallet
});
// Get the contract factory.
const contractFactory = await deployer.getContractFactory("HelloWorld");
// Deploy the contract.
const contract = await deployer.deploy(contractFactory, ["Hello, zkSync!"]);
console.log(`Contract deployed to: ${contract.address}`);
}
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});
npx hardhat --network zkSyncTestnet run scripts/deploy.ts
这将把 “Hello World” 合约部署到zkSync Testnet上。
部署完成后,您可以通过以下方式验证合约是否成功部署:
zksync-web3
提供的 API 与合约进行交互,例如查询 message
变量的值。以下是一个示例代码:
import { Provider, utils } from "zksync-web3";
async function main() {
const provider = await Provider.getDefaultProvider("mainnet");
const contract = new utils.Contract(
"<CONTRACT_ADDRESS>",
[
"function message() view returns (string memory)"
],
provider
);
const message = await contract.message();
console.log(`Current message: ${message}`);
}
main().catch((error) =>