search
クリプト

zkSync EraのAccount Abstraction簡易実装ガイド

ブロックチェーン通信's icon'
  • ブロックチェーン通信
  • 2023/06/06 05:26

zkSync Eraのスマートアカウントを理解し、実装するための開発者向けガイドです



Antoine Sparenberg | 元記事

zkSyncの各コンテンツにご参加ください。
学びながら参加できるCrew3クエストも実施中です。

Content image

Account Abstraction(アカウントの抽象化/アカウント・アブストラクション:以下AA)大きな注目を集めているのには理由があります。

簡単に言うと、「ユーザー体験を簡素化し、暗号の普及を促進する可能性がある」からです。まずは理解するために過去の記事「Account Abstraction(アカウント抽象化)とは?」をご覧ください。

スマートアカウントのネイティブサポートを導入したzkSync Eraのローンチによって、開発者は自身のアプリケーションがスマートアカウントと互換性があることを確認することが重要になりました。
 

スマートアカウントのネイティブサポートが重要な理由

スマートアカウントのネイティブサポート(プロトコルレベル)がなければ、完全なAAを実装して、メリットを享受してユーザー体験を向上させて、普及を促進することは困難となります。

L1のイーサリアムとEVMチェーンはスマートアカウントをネイティブにサポートしておらず、コントラクトアカウントは任意のロジックを実装できる唯一のアカウントですが、EOAはこれらのチェーン上で取引を開始できる唯一のタイプのアカウントとなっています。

zkSync Eraのスマートアカウントは、EOAの取引を開始することができますが、スマートコントラクトのように任意のロジックの実装も可能です。

Argentのようなスマートアカウントウォレットは、ユーザーにシームレスで安全かつ効率的な体験を提供します。そして、さらに世界中のあらゆる層のユーザーを取り込むためには、Dappsがスマートアカウントとの互換性を確保する必要があります。

スマートアカウントとの連携は簡単で、確認すべき条件は2つだけです。
では、さっそく見ていきましょう!
 

アプリの互換性を確保する方法

スマートアカウントとの互換性の確保は、とても簡単です:

ecrecoverを直接使うのではなく、スマートコントラクト(Solidity)とフロントエンド(JavaScript)でEIP-1271署名検証を使用する。

スマートコントラクトの署名検証には、OpenZeppelinのSignatureCheckerを使用することをお勧めします:

import {SignatureChecker} from "@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol";
// ...
using SignatureChecker for address;
// ...
bool isValid = someAddress.isValidSignatureNow(messageHash, signature);

フロントエンドから署名を検証するには、Matter Labsのライブラリを使用してロジックを抽象化することをお勧めします:

import * as zksync from "zksync-web3";// for signed messages:
const isValid = await zksync.utils.isMessageSignatureCorrect(provider, address, message, signature);
// for typed data:
const promise = await zksync.utils.isTypedDataSignatureCorrect(provider, address, domain, types, value, signature);

2. セキュリティ上の脅威、スマートアカウントでの取引失敗の引き金となるtx.originの使用は避けてください。

これだけです!これでスマートアカウントに対応しました 🎉

次は何?

スマートアカウントに対応したことで、zkSync EraのAAのパワーを十分に活用し、UXを10倍にすることができます!
 

ここで、いくつかのことを始めていきましょう:

Argent Loginを実装し、アクティブなzkSyncコミュニティの力を利用する

zkSync Eraのウェイティングリストには35万人以上のユーザーがおり、Argentモバイルウォレットは、zkSyncエコシステムへのゲートウェイとして機能します。Argent Loginを使うことで、あなたのDappsとArgentのウォレット間で最高の相互作用を保証することができます。

Content image


 マルチコールによるAAを活用して、dappのUXを向上させる

今日、イーサリアム上でDappsを使用するには、オンチェーンでのやり取りに新たなトランザクションを承認する必要があり、特にガス代が高い場合には、時間のかかる高価なプロセスとなることがあります。

スマートアカウントは、複数のトランザクションをグループ化して一度に実行する機能を持ち、DappsのUXを大幅に改善します(例えば、DEXで承認+スワップのために2トランザクションを送信しなければならない場合など)。

ArgentにはSDKがあり、ユーザーがArgentのような互換性のあるアカウントで接続されている場合、マルチトランザクションフローを1つのトランザクションに束ね、マルチコールがサポートされていない場合は複数のトランザクションを送信するように最適化されます。

import { multicall } from "@argent/era-multicall";const calls = [
    await dai.populateTransaction.approve(pool.address, daiAmount),
    await usdc.populateTransaction.approve(pool.address, usdcAmount),
    await pool.populateTransaction.depositPair(dai.address, daiAmount, usdc.address, usdcAmount),
];
const results = await multicall(signer, calls);

ペイマスターを使用してユーザーの取引を補助する

ペイマスターは、ユーザーのトランザクションを補助するスマートコントラクトで「ガス料金を抽象化」することができます。Dappsはペイマスターを使って手数料を補助したり、ユーザーがネイティブでないトークン(例:プロトコル独自のガバナンストークン)で手数料を支払うことを可能にしたり、特定のトランザクションをスポンサーしたりすることができます。

トランザクションフローにペイマスターを実装する方法については、Matter Labsのドキュメントを参照してください。

Content image

セッションキー

セッションキーは、ユーザーがDappsとのやり取りを管理するルールを事前に承認することで、取引のたびに署名を必要とせずにプラットフォームの利用を可能にする、UXの大きなブレークスルーとなるものです。

セッションキーを利用することで、ユーザーはDappsとのやり取りを効率化し、セキュリティを犠牲にすることなくシームレスな体験を享受することができます。最終的には、より多くのユーザーが安全で効率的な方法でDappsとやり取りできるようになり、Dappsの普及に貢献することにつながるものとなります。

あなたのDappsにセッションキーを導入したい方は、ぜひArgent( dapps@argent.xyz )までご連絡ください。

Content image


 

ArgentとzkSyncを使ったワークショップ

あなたのDappsをスマートアカウントに対応させるためのステップバイステップのガイドとして、こちらのチュートリアルをご覧ください。

今後のzkSyncエコシステムの発展にご期待ください!

 

zkSyncについて

zkSyncは、ZKロールアップを採用し、最新のシンプルなゼロ知識証明を活用することで、基盤となるブロックチェーンのセキュリティ特性を保持するレイヤー2スケーリングソリューションです。

zkSync v1は、2020年7月からイーサリアムのメインネットでライブ配信されている決済用のZKロールアップであり、多くのプロトコルやウォレット、dappsに採用され、4M以上のトランザクションを実現しました。

zkSync v2は、EVM互換とコンポーザビリティを維持した汎用スマートコントラクト用のZKロールアップです。テストネットには現在、DeFi、NFT、ゲーム、DAO、取引所、オンランプ、ウォレット、デベロッパーツール、データ分析などのプロジェクトから150件以上の参加登録があります。

zkSyncの各コンテンツにご参加ください。
学びながら参加できるCrew3クエストも実施中です。

 

 

Supporter profile icon
Article tip 1人がサポートしています
獲得ALIS: Article like 29.22 ALIS Article tip 204.00 ALIS
Article registration Article registration
ブロックチェーン通信's icon'
  • ブロックチェーン通信
  • @JustInBeliever
真に意味のあるプロジェクトの記事のみを掲載していきます。クリプト分野も日本独自のガラパゴス化を歩んでいます。確かな目と耳を持ちませんか?

投稿者の人気記事
コメントする
コメントする
こちらもおすすめ!
Eye catch
クリプト

Uniswap v3を完全に理解した

池田らいく 2021/04/04
Like token Tip token
18.92 ALIS
Eye catch
クリプト

Bitcoin史 〜0.00076ドルから6万ドルへの歩み〜

大田コウキ 2021/04/06
Like token Tip token
947.13 ALIS
Eye catch
クリプト

2021年1月以降バイナンスに上場した銘柄を140文字以内でざっくりレビュー(Twitter向け情報まとめ)

昆布森ちゃん 2021/03/16
Like token Tip token
38.10 ALIS
Eye catch
クリプト

17万円のPCでTwitterやってるのはもったいないのでETHマイニングを始めた話

nnppnpp(んぺー) 2021/09/08
Like token Tip token
46.60 ALIS
Eye catch
クリプト

約2年間ブロックチェ-ンゲームをして

kaya 2021/10/06
Like token Tip token
61.20 ALIS
Eye catch
クリプト

CoinList(コインリスト)の登録方法

Taka 2021/02/25
Like token Tip token
15.55 ALIS
Eye catch
クリプト

Polygon(Matic)で、よく使うサイト(DeFi,Dapps)をまとめてみた

ゆうき 2021/05/17
Like token Tip token
236.30 ALIS
Eye catch
クリプト

UNISWAPでALISをETHに交換してみた

Macky3216 2020/09/28
Like token Tip token
40.40 ALIS
Eye catch
クリプト

NFT解体新書・デジタルデータをNFTで販売するときのすべて【実証実験・共有レポート】

otakucoin 2021/03/29
Like token Tip token
121.79 ALIS
Eye catch
クリプト

【DeFi】複利でトークンを運用してくれるサイト

KTAG 2021/02/22
Like token Tip token
54.01 ALIS
Eye catch
クリプト

バイナンスの信用取引(マージン取引)を徹底解説~アカウントの開設方法から証拠金計算例まで~

昆布森ちゃん 2020/06/15
Like token Tip token
3.50 ALIS
Eye catch
クリプト

Uniswap(ユニスワップ)で$ALISのイールドファーミング(流動性提供)してみた

Taka 2021/02/25
Like token Tip token
59.99 ALIS