zkSyncで開発を始める方法(2025)
執筆者 Petar Todorov
Matter Labsが、Scroll、Polygonと世界初のゼロ知識EVMの座を競うレースに参戦した。zkSync Eraだ。
2023年3月にローンチされたzkSync Eraは、ゼロ知識証明を利用してEthereumネットワークの速度と処理能力をスケールするEVM互換のZK Rollupである。
zkSync上での開発には、ETHおよびERC20トークンの低いガス代に加え、アトミックスワップ、指値注文、ネイティブなLayer-2 NFTサポートといった利点がある。
この記事では、zkSync Eraとは何か、そしてzkSync公開テストネット上でスマートコントラクトをデプロイする方法を5つのステップで説明する。
zkSync Eraとは何か
zkSync Eraは、Matter Labsによる新しいLayer-2ソリューションで、ZK-ProofsとEthereum Virtual Machine技術を組み合わせてEthereumメインネットのスループットをスケールする。両方の技術を組み合わせることで、zkSync Eraはより高速で安全なEthereumトランザクションを可能にする。
完全なEVM互換性に加え、EraはEthereumスタックにアカウント抽象化の概念を導入している。これは元々EIP-4337で提案されたものだ。
アカウント抽象化により、ウォレットはスマートコントラクトとなり、カスタム署名アルゴリズム、スポンサー付きトランザクション、2要素認証といった機能を持つことができる。
zkSync Era上での開発を始める方法
zkSync Era上での開発は、Ethereum上でコントラクトをデプロイする際にweb3開発者が使用するのとほぼ同じツールを使用する。このチュートリアルでは、zkSync公開テストネット上でスマートコントラクトをデプロイする方法を扱う。
前提条件
このチュートリアルには、以下が必要となる:
- Ethereumウォレットの秘密鍵
- テスト用のether
- 必要なプラグインを含むHardhat統合開発環境(IDE)
- パッケージマネージャー(NPMまたはYarn)
- VScode
- Typescriptの基本的な理解
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:コントラクトのデプロイと操作を支援する2つのライブラリ。
- $ hardhat:使用するIDE。
- $ @matterlabs/hardhat-zksync-solc @matterlabs/hardhat-zksync-deploy:スマートコントラクトのコンパイルとデプロイを支援する2つの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. スマートコントラクトを作成する
このコントラクトは、人物の名前と年齢を登録するものである。
プロジェクトディレクトリ内のcontractsフォルダに移動し、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 faucetにアクセスし、Sepolia上でetherを取得する。
-
進める前に、無料のAlchemyアカウントを作成する。
-
次に、Metamaskを開き、ウォレットアドレスをクリックしてコピーする。
-
faucetのページで、ウォレットアドレスを貼り付け、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で、ブリッジの際に使用したウォレットを開き、その秘密鍵をエクスポートする。
縦に並んだ3つの点をクリックし、次に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タブをクリックする。
今回は、ブロックエクスプローラーに2つの新しいフィールドが表示されるはずである:
- ゲッター関数用のRead
- セッター関数用のWrite
personInfoマッピングの可視性は_public_として定義されているため、そのゲッターメソッドは自動的に生成される。
デプロイ用ウォレットがエクスプローラーに接続されていることを確認する。addPersonをクリックする。
セクションが展開され、2つの新しいフィールドが表示される。一つは人物の名前を定義するもの、もう一つはその年齢を定義するものである。
これらを入力した後、Writeをクリックしてトランザクションを確認する。
トランザクションが確認された後、personInfoをクリックし、追加したばかりの人物の名前を入力する。
GUIは、追加された人物の年齢を返すはずである。
関連する概要
技術2026年6月17日
開発者のためのweb3スタックガイド
2026年のweb3スタックをレイヤーごとに解説:ネットワーク、インフラストラクチャ、スマートコントラクト、ウォレット、フロントエンド、ストレージ、アプリケーション、そして新たなエージェント型レイヤー。
技術2026年5月19日
Webhooks・WebSockets・gRPCの比較
リアルタイムデータ配信を支配する3つのプロトコル。webhooks、WebSockets、gRPCの違い、それぞれが破綻する条件、そして選び方について解説します。
技術2025年10月20日
開発者向けガイド:2025年のブロックチェーンアプリ開発コスト
オンチェーンアプリの構築にどれくらいの予算が必要か知りたい方へ。

ブロックチェーンで魔法を生み出す
Alchemyは、最も強力なweb3開発者向けプロダクトとツールを、豊富なリソース、コミュニティ、そして卓越したサポートと組み合わせて提供します。