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メインネットのスループットをスケールさせるものである。この2つの技術を統合することで、zkSync EraはよりTPSが高く、より安全なEthereumトランザクションを可能にする。
完全なEVM互換に加えて、EraはEIP-4337で当初提案されたアカウント抽象化のコンセプトをEthereumスタックに導入している。
アカウント抽象化により、ウォレットはスマートコントラクトとなり、カスタム署名アルゴリズム、スポンサー付きトランザクション、2要素認証といった機能を持てるようになる。
zkSync Era上での開発の始め方
zkSync Era上での開発は、Ethereum上でコントラクトをデプロイする際にweb3開発者が使うのと概ね同じツールを使用する。このチュートリアルでは、zkSyncのパブリックテストネット上でスマートコントラクトをデプロイする方法を説明する。
前提条件
このチュートリアルには、以下が必要となる:
- Ethereumウォレットの秘密鍵
- テスト用のether
- 必要なプラグインを備えたHardhat Integrated Development Environment(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. スマートコントラクトを作成する
このコントラクトは、人物の名前と年齢を登録するものである。
プロジェクトディレクトリのcontactsフォルダに移動し、Registry.solという新しいファイルを作成する。
次に、以下のスマートコントラクトのコードをコピーしてファイルに貼り付ける:
デプロイ前にコントラクトをコンパイルする必要がある。ターミナルで、以下を入力する:
npx hardhat compile
3. zkSync Era用のウォレットをセットアップする
zkSync Eraは既存のEthereumウォレットをサポートしているため、新しいウォレットの作成は不要である。
したがって、Metamaskのような既存のウォレットを使用できる。
注:デプロイ手続きでは秘密鍵のエクスポートが必要となるため、投資や貯蓄を保管している個人のEthereumウォレットの使用は推奨されない。
4. テスト用のGoerli ETHを取得し、zkSync Eraにブリッジする
コントラクトをデプロイするためには、zkSync Eraテストネット上のテスト用etherが必要になる場合がある。
テスト用のetherを取得するには、デプロイヤーウォレットからそのzkSync Era上のインスタンスへGoerli ETHをブリッジする。
-
そのためには、AlchemyのGoerliフォーセットに移動し、Goerliテストネット上でetherを取得する。
-
進める前に、無料のAlchemyアカウントを作成する。
-
次に、Metamaskを開き、ウォレットアドレスをクリックしてコピーする。
-
Goerliフォーセットのウェブサイトで、ウォレットアドレスを貼り付け、Send Me ETHをクリックする。
次に、zkSync Eraのブリッジに移動する。
「Connect via a browser wallet Metamask」をクリックする。
コントラクトのデプロイに使用するウォレットを選択する。
MAXをクリックする(または任意の金額を入力してもよいが、最低でも0.1 gETHであることを確認する)、その後Depositをクリックする。
注:右下のフィールドが「zkSync Era Goerli」と表示されていることを確認する。
ブリッジが完了するのを待つ間に、デプロイスクリプトを作成してデプロイを仕上げる。
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つの新しいフィールドが表示される - 1つは人物の名前を、もう1つは年齢を定義するためのものである。
それらを入力したら、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開発者向けプロダクトとツールを、豊富なリソース、コミュニティ、そして卓越したサポートと組み合わせて提供します。