如何開始在 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 應該會回傳所新增之人的年齡。
相關總覽
技術2026年10月29日
什麼是 webhook?
webhook 是以 HTTP POST 傳遞的事件通知。了解 webhook URL、payload、重試與簽章驗證的運作方式,並附上鏈上範例。
技術2026年10月20日
Hyperliquid 訂單、成交與成交明細比較
在 Hyperliquid 上,訂單、成交與成交明細是三種不同的紀錄。以下說明每種紀錄的 HyperCore payload、它們如何透過 oid 與 tid 關聯,以及如何對帳。
技術2026年6月17日
開發者的 web3 技術堆疊指南
2026 年的 web3 技術堆疊,逐層拆解:網路、基礎設施、智能合約、錢包、前端、儲存、應用程式,以及新興的 agentic 層。

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