Gasless Wallet(ガスレスウォレット) by Mosendo|ETH不要、ネイティブメタトランザクション

資産管理ツール

Gasless Wallet(ガスレスウォレット)とは取引手数料をETHではなく、DAIそのもので支払うことを可能にしたMosendoが提供するノンカストディなウェブウォレットです。Argentのようなスマートコントラクトウォレット(以下スマートウォレット)とは異なり、Mosendoのガスレスウォレットは、よりシンプルなネイティブメタトランザクションを実現しています。

今回はガスレスウォレットのスマートウォレットと比較した際の優位性、Gaslessのざっくりした仕組みについてご紹介致します。

※ガスレス・ウォレットは、Daiを保有したメタマスクやTrust Walletなどで利用可能。本アプリ、およびスマートコントラクトのソースコードは、オープンソースとなっており、Github.からご利用いただけます。

ガスレスウォレットとスマートウォレットの比較

シングルトンコントラクトデザイン

スマートウォレットは、設計上全ユーザーの新たなスマートコントラクトをデプロイしなければなりません。そのため、ウォレット作成に伴いイーサリアムブロックチェーンのストレージへの追加負担とそれに伴う追加のトランザクションコストが発生してしまいます。

例えばMetacashウォレット(Android)の場合は、コントラクトをデプロイするコストを賄うために初めてDAI転送する際にユーザーが追加の取引手数料を支払う必要があります。同じスマートウォレットであるArgentの場合は、このコストをArgent側が補助してくれるのですが、その仕組み上ウォレット作成コスト高となり、スケーリングの弊害となる点が懸念されます。

一方のガスレスウォレットの場合は、1つのコントラクトが全ユーザーのメタトランザクションハブとして機能するシングルトンコントラクトデザインです。これにより、スマートウォレットと比較してトランザクションコストの大幅なコスト削減が可能となります。

既存ウォレットとの互換性

スマートウォレットが抱える問題の一つとして、既存のイーサリアムウォレットとの互換性がない点が挙げられます。簡単にいうと既存ウォレットをインポートできないということです。そのため、新たにスマートウォレットを作成すると、既存のイーサリアムウォレットから暗号資産をガス代を支払って送金しなければなりません。この点はスマートウォレットへの移行障壁として捉えることができます。

一方のガスレスウォレットの場合、既存のイーサリアムウォレットをそのまま利用する形でメタトランザクションを可能にします。つまり、すでに利用しているメタマスクなどに接続して、ETH不要DAI送信が可能です。

安全性の改善

スマートウォレットを利用する上での懸念点の一つとして、スマートコントラクトに全資産を預けることになることから生じるテクニカルリスクが挙げられます。

一方のガスレスウォレットの場合は資産を自己管理した状態を維持することができます。その他dApp同様にERC20トークン利用の承認のみで、もちろん承認の取り消しも可能。テクニカルリスクの不安なく利用できるという点でガスレスウォレットに優位性がありそうです。

アップグレード&拡張性

現行のスマートウォレットは新バージョン移行時に現在のスマートコントラクトから資金送金する必要性があるなど、機能のアップグレードや拡張が困難になる場合があります。

一方のガスレスウォレットの場合は、その他コントラクトと資金アクセスの共有が可能なため、簡単に機能を追加したりアップグレードすることができます。

ガスレスウォレットはどのように機能しているのか?

新しいMCD Daiトークンに導入されたpermit()関数を利用することで、ユーザーは手動トランザクションではなく、メタトランザクションを介して任意のアドレスを許可することができるようになりました。これにより、ガス代をリレーに委託することが可能になり、ユーザーはガス代をETHではなくDAIで支払うことが可能になります。

MCDのpremit()関数↑ 出典:https://medium.com/mosendo/gasless-by-mosendo-3030f5e99099

ガスレスウォレットの肝となるのは、全ユーザーのメタトランザクションハブとして機能するシングルスマートコントラクト。他のメタトランザクションアーキテクチャ同様に、コントラクトとともにMosendoがホストするリレーAPIがあり、ユーザーからの署名付きメタトランザクションを受信し、コントラクトに中継します。※ガスレストランザクションの仕組みについてはGSN(ガスステーションネットワーク)も参考にしてみてください↓

MCDで導入されたpermit()関数を介して、Daiコントラクトにリレーするメタトランザクションに署名→コントラクトがユーザー資金へアクセス可能→ERC20のtransferFrom()関数でユーザーに代わってDai送信を可能にしています。

この際、ガスレスコントラクトは、署名されたメッセージを介してユーザーが認証したメタトランザクションのみを受け入れることでMosendoリレーがトラストレスであることを保証しています。

ユーザーがDai送信の際に支払う必要があるのは、リレイヤーに対するサービス手数料(Daiで支払い)のみです。このサービス手数料の内訳はリレイヤーがユーザーの代理としてDai送信した際に支払ったガス代(ETH)およびランニングコストへの対価です。

Gaslessウォレット詳細