如何開始在 zkSync 上開發(2025)
Matter Labs 現在也加入了與 Scroll 和 Polygon 之間的競賽,角逐運行全球首個零知識 EVM 的地位——zkSync Era。
zkSync Era 於 2023 年 3 月推出,是一個相容 EVM 的 ZK Rollup,利用零知識證明來擴展 Ethereum 網路的速度與處理能力。
在 zkSync 上開發的優勢包括 ETH 和 ERC20 代幣的低 gas 費,以及原子交換、限價單,以及原生的 Layer-2 NFT 支援。
本文將說明什麼是 zkSync Era,以及如何以五個步驟在 zkSync 公開測試網上部署智慧合約。
什麼是 zkSync era?
zkSync Era 是 Matter Labs 推出的新 Layer-2 解決方案,結合了 ZK-Proofs 與 Ethereum Virtual Machine 技術,用於擴展 Ethereum 主網的吞吐量。透過結合這兩項技術,zkSync Era 讓 Ethereum 交易更快速、更安全。
除了完全相容 EVM 之外,Era 還為 Ethereum 技術堆疊引入了帳戶抽象的概念,這最初是在 EIP-4337 中提出的。
透過帳戶抽象,錢包變成了智慧合約,可以具備自訂簽章演算法、贊助交易、雙因素驗證等功能。
如何開始在 zkSync era 上開發
在 zkSync Era 上開發大致上會用到與 web3 開發者在 Ethereum 上部署合約時相同的工具。本教學將說明如何在 zkSync 公開測試網上部署智慧合約。
前置需求
本教學需要以下項目:
1. 為 zkSync era 設定 IDE
首先,為此專案建立一個資料夾。
開啟 VScode(或你機器上的終端機)並輸入:
接著,用以下指令初始化 npm:npm init -y
-y 旗標會用預設值預先填入 package.json 檔案的所有欄位,藉此節省時間。
現在 npm 和專案資料夾都已設定完成,接下來安裝所需的相依套件。
在 VScode 終端機中輸入:
以下是該指令的說明:
- $ npm i -D:install 指令的別名。-D 旗標會將所有套件儲存為開發相依套件。
- $ typescript ts-node:安裝 Typescript 以及 Node.js 的 Typescript 執行引擎。
- $ ethers@^5.7.2 zksync-web3@^0.13.1:協助部署與跟合約互動的兩個函式庫。
- $ hardhat:使用中的 IDE。
- $ @matterlabs/hardhat-zksync-solc @matterlabs/hardhat-zksync-deploy:協助編譯與部署智慧合約的兩個 Hardhat 外掛。
接下來是初始化 Hardhat 專案。
在終端機中輸入:
npx hardhat init
選擇「Create a TypeScript Project」並按下 enter,讓接下來的欄位以預設值預先填入。
專案的資料夾結構應該會是這樣:
在 contracts 資料夾中,刪除自動產生的 Lock.sol 合約,因為並不需要用到它。
IDE 設定的最後一步是前往 hardhat.config.ts 檔案。
hardhat.config.ts 檔案是定義以下部署參數的「指揮中心」:
- zkSync 編譯器版本
- 合約將部署的鏈
- 撰寫合約所使用的 Solidity 編譯器版本
刪除 hardhat.config.ts 檔案的內容,並替換成以下內容:
IDE 設定現已完成,下一步是建立智慧合約。
2. 建立智慧合約
此合約將用於註冊一個人的姓名與年齡。
前往專案目錄下的 contacts 資料夾,建立一個名為 Registry.sol 的新檔案
接著,將以下智慧合約程式碼複製並貼到該檔案中:
合約在部署前必須先編譯。在終端機中輸入:
npx hardhat compile
3. 為 zkSync era 設定錢包
由於 zkSync Era 支援現有的 Ethereum 錢包,因此不需要建立新的錢包。
因此,可以使用任何現有的錢包,例如 Metamask。
注意:不建議使用存有投資或存款的個人 Ethereum 錢包,因為部署過程需要匯出私鑰。
4. 取得測試用 Sepolia ETH 並橋接至 zkSync era
部署合約時可能需要 zkSync Era 測試網上的測試用 ether。
若要取得一些測試用 ether,請將部署者錢包中的 Sepolia ETH 橋接到其在 zkSync Era 上的實例。
-
為此,請前往 Alchemy 的 Sepolia 水龍頭以取得 Sepolia 上的 ether。
-
在繼續之前,先建立一個免費的 Alchemy 帳戶。
-
然後,開啟 Metamask 並點擊錢包地址以複製它。
-
在水龍頭頁面上,貼上錢包地址,並請求 Sepolia ETH。
接著,前往 zkSync Era 目前的 Sepolia 橋接工具。
點擊「Connect via a browser wallet Metamask」。
選擇將用於合約部署的錢包。
點擊 MAX(或輸入你選擇的金額,但請確保至少為 0.1 ETH),然後點擊 Deposit。
注意:請確認目標網路是 zkSync Era 目前的 Sepolia 測試網。
在等待橋接完成的同時,建立部署腳本以完成部署。
5. 建立部署腳本並匯出私鑰
接下來,建立部署腳本,並從 Metamask 匯出私鑰,複製該私鑰並部署智慧合約。
以下是操作方法:
建立部署腳本
回到 VSCode,將 scripts 資料夾重新命名為 deploy,並在其中建立一個名為 deploy.ts 的檔案。
之後,將以下程式碼複製到該檔案中:
以「//」標記的註解說明了程式碼的邏輯。
從 MetaMask 匯出私鑰
在 Metamask 中,開啟橋接時使用的錢包並匯出其私鑰。
點擊三個直排的點,然後點擊 Account details,接著點擊 Export private key。
輸入密碼並複製顯示出來的字串。
貼上私鑰並部署智慧合約
回到 deploy.ts 檔案,找到以下這一行:
** const wallet = new Wallet("<WALLET-PRIVATE-KEY>");**
將私鑰貼在 <WALLET-PRIVATE-KEY> 的位置。
請確認雙引號沒有被刪除。
最後,前往 VScode 的終端機並輸入:npx hardhat deploy-zksync
6. 透過區塊瀏覽器驗證智慧合約
使用 zkSync Era 的測試網區塊瀏覽器來驗證已部署的合約。
前往區塊瀏覽器。 在搜尋欄中,貼上已部署合約的地址。
找到合約後,點擊 Contract 分頁,然後點擊 Verify Smart Contract。
接著,填入所需的細節:
Contract Name 應填為 「Registry」。
Zksolc version - v1.3。
Solc version - 0.8.17。
Zksolc Version 和 Solc Version 都可以從 hardhat.config.ts 檔案中取得。
在 Enter the Solidity Contract Code 欄位中,貼上 Registry.sol 檔案的內容。
點擊 Verify Smart Contract 完成整個流程。
7. 與部署在 ZkSync Era 上的合約互動
在區塊瀏覽器中,再次透過地址找到該合約並點擊 Contract 分頁。
這次,區塊瀏覽器應該會顯示兩個新的欄位:
- Read:用於 getter 函式
- Write:用於 setter 函式
由於 personInfo 映射的可見性被定義為 public,系統會自動為它產生一個 getter 方法。
請確認部署者錢包已連接到瀏覽器。點擊 addPerson。
該區塊會展開,並出現兩個新欄位——一個用於定義該人的姓名,另一個用於定義其年齡。
填寫完這些欄位後,點擊 Write 並確認交易。
交易確認後,點擊 personInfo 並輸入剛剛新增的人的姓名。
GUI 應該會回傳所新增之人的年齡。
相關總覽

打造區塊鏈魔法
Alchemy 結合最強大的 Web3 開發者產品與工具,並提供資源、社群與卓越的支援。


