使用ethers.js和zksync-web3创建zk应用程

概述

在建立zk应用程序时,ethers.js是最常用的工具之一。然而,为了使用zk协议,我们还需要一个官方的依赖项——zksync-web3。本文将介绍如何结合使用ethers.js和zksync-web3来建立zk应用程序,以及在此过程中需要注意的事项。

准备

在开始之前,需先安装以下依赖项:

  • Node.js(最好是v12.x及以上版本)
  • npm或yarn
  • ethers.js
  • zksync-web3

请注意,本文将不会对ethers.js进行过多解释。如果需要了解更多关于ethers.js的信息,请参考@WTFAcademy_的课程。

步骤一:创建ethers.js实例

在使用ethers.js时,我们需要先创建一个Provider和一个Signer。Provider用于与以太坊网络进行通信,而Signer用于对交易进行签名。

1
2
3
4
5
6
const ethers = require('ethers');
// 创建Provider
const provider = new ethers.providers.JsonRpcProvider('https://rinkeby.infura.io/v3/your-project-id');
// 创建Signer
const privateKey = '0x123456...';
const signer = new ethers.Wallet(privateKey, provider);

步骤二:创建zksync-web3实例

在使用zksync时,我们需要先创建一个Provider和一个Wallet。Wallet用于管理用户资产,而Provider用于与zksync网络进行通信。

1
2
3
4
5
const Zksync = require('zksync-web3');
// 创建Provider
const syncProvider = await Zksync.getDefaultProvider('rinkeby');
// 创建Wallet
const syncWallet = await Zksync.Wallet.fromEthSigner(signer, syncProvider);

步骤三:连接zksync

在完成了前面的步骤后,我们就可以连接zksync网络了。

1
await syncWallet.connect();

步骤四:构建zk交易

现在,我们可以使用sdk来构建zk交易了。例如,下面的代码演示了如何在zksync上进行ETH转账。

1
2
3
4
5
6
7
8
9
const amount = ethers.utils.parseEther('0.01');
const fee = await syncWallet.getTransactionFee('Transfer', 'ETH');
const transfer = await syncWallet.syncTransfer({
to: '0x123456789...',
token: 'ETH',
amount,
fee
});
await transfer.awaitReceipt();

步骤五:断开连接

完成了所有工作后,我们需要将终止连接。

1
await syncWallet.disconnect();

总结

通过本文,我们学习了如何使用ethers.js和zksync-web3来建立zk应用程序。请注意,zksync-web3需要与ethers.js一起使用,其提供了一种更安全的方法来管理用户资产和签署zk交易。希望这篇文章能够帮助你创造出更安全的应用程序!