Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ethereumにおける最近のメタトランザクションの動向/Ethereum MetaTrans...

Ara
April 28, 2020

Ethereumにおける最近のメタトランザクションの動向/Ethereum MetaTransaction Trends

■スライド内のリンク
uPort - Sensui 2017.10〜
https://medium.com/@hamzamaslah/all-you-need-to-know-about-uport-identity-management-3fc49db25332

DAI の permit() 関数 2019.10〜
https://github.com/makerdao/dss/blob/b1fdcf/src/dai.sol#L114-L138

Bounties Network V2 2019.11〜
https://github.com/Bounties-Network/StandardBounties/blob/c087b4/contracts/BountiesMetaTxRelayer.sol
https://medium.com/bounties-network/going-live-with-meta-transactions-a425ab6b6994

Gas Station Network(GSN) 2019.01〜
https://gsn.openzeppelin.com

コントラクトウォレット
https://github.com/dapperlabs/dapper-contracts

ハッカソンで優勝した提案
https://github.com/wighawag/singleton-1776-meta-transaction
https://twitter.com/wighawag

実装 ― Receiver
https://github.com/wighawag/singleton-1776-meta-transaction/blob/dda23e/contracts/src/EIP1776MetaTxReceiverBase.sol

実装 ― Processor
https://github.com/wighawag/singleton-1776-meta-transaction/blob/dda23e/contracts/src/GenericMetaTxProcessor.sol#L81-L92

■参考
Our MetaTransaction Hackathon Winner! - MetaMask - Medium
https://medium.com/metamask/our-metatransaction-hackathon-winner-a620551ccb9b

Ethereum Meta Transactions : Our Take - Bloxis - Medium
https://medium.com/bloxis/generalised-ethereum-meta-transactions-our-take-cb9f027866e9

Generalized Meta Transaction Processor with EIP-1776 Support
https://github.com/wighawag/singleton-1776-meta-transaction

EIP-1776 Native Meta Transactions
https://github.com/ethereum/EIPs/issues/1776

EIP-2585 Minimal And Extensible Meta Transaction Forwarder
https://github.com/ethereum/EIPs/issues/2585

MetaMask MetaTransaction Panel - YouTube
https://www.youtube.com/watch?v=X5L4fQbUxsA

Ara

April 28, 2020
Tweet

More Decks by Ara

Other Decks in Programming

Transcript

  1. © 2020 Metaps Alpha Inc. All Rights Reserved. 2 Ethereum

    のメタトランザクションは今まさに標準化に向けて動いて いるが、決定打がない! • 最近 MetaMask が、メタトランザクションのバーチャルハッカソン を開催し、有望な標準の候補が出てきたので、今回これを紹介します
  2. © 2020 Metaps Alpha Inc. All Rights Reserved. 3 Ethereum

    でトランザクションを送るには Gas が必要 Gas は ETH で支払われる ETH を使わないアプリでも少額の ETH が必要 → 利用ハードルが高い (取引所の口座開設と、利用アドレスへの ETH 送金が必須) トランザクションを別の人が送信する仕組み = Gas を別の人が肩代わりしたり、ERC-20 トークンで払ったりできる
  3. © 2020 Metaps Alpha Inc. All Rights Reserved. 4 ETH

    を使わないサービスで特に有用 ◦ ゲーム内で作成したウォレットで、オフチェーンのアイテムをオ ンチェーンに移す ◦ アプリ内の ERC-20 トークンだけですべてを行う ◦ ステーキングするときに、そのトークン以外を用意したくない
  4. © 2020 Metaps Alpha Inc. All Rights Reserved. 6 •

    署名済みのトランザクションをこのサービスに送ると、 実行に必要な ETH を、署名アカウントに送信する https://medium.com/@hamzamaslah/all-you-need-to-know-about-uport-identity-management-3fc49db25332
  5. © 2020 Metaps Alpha Inc. All Rights Reserved. 7 •

    ERC-20 を拡張して、 と同じ処理を トークン保有者の署名があれば実行できるようにしている https://github.com/makerdao/dss/blob/b1fdcf/src/dai.sol#L114-L138
  6. © 2020 Metaps Alpha Inc. All Rights Reserved. 8 •

    リレイヤーコントラクトからのトランザクションは実行を許す • リレイヤーコントラクトで署名検証 + コントラクトの関数呼び出し https://github.com/Bounties-Network/StandardBounties/blob/c087b4/contracts/BountiesMetaTxRelayer.sol https://medium.com/bounties-network/going-live-with-meta-transactions-a425ab6b6994 略 略 略
  7. © 2020 Metaps Alpha Inc. All Rights Reserved. 9 •

    OpenZeppelin が提唱するリレイヤーのネットワーク • 簡単にメタトランザクションに対応できるライブラリを提供 https://gsn.openzeppelin.com
  8. © 2020 Metaps Alpha Inc. All Rights Reserved. 10 •

    Dapper Labs、Gnosis、Argent、Authereum など多くの組織が提供 • マルチシグウォレットにすることで、メタトランザクションを実現 https://github.com/dapperlabs/dapper-contracts
  9. © 2020 Metaps Alpha Inc. All Rights Reserved. • =

    コントラクトの実装がバラバラ → アプリ側は個別対応が必要 11 そして決定打がない・・・ • 新規アカウントのみ対応(GSN、コントラクトウォレット) • リレイヤーがサポートしないコントラクトは非対応(GSN) • リプレイ保護がない(GSN) • ENS 連携によるプライバシー問題 (一部コントラクトウォレット)
  10. © 2020 Metaps Alpha Inc. All Rights Reserved. 13 •

    Mariano Conti ― DAI の permit() をリリース • Mark Beylin ― Bounties.network 創設者 • Austin Griffith ― メタトランザクションの提唱者
  11. © 2020 Metaps Alpha Inc. All Rights Reserved. 16 •

    EIP-1776 を採用(その他、多くの既存 EIP も再利用) • トランザクション失敗時の考慮 • シンプルでありながら高度なパラメータも設定可能 • この標準を使用するには、コントラクトにわずかな変更を加えるのみ
  12. © 2020 Metaps Alpha Inc. All Rights Reserved. ― 17

    メタトランザクション対応させたいコントラクトに継承させるコントラクト https://github.com/wighawag/singleton-1776-meta-transaction/blob/dda23e/contracts/src/EIP1776MetaTxReceiverBase.sol
  13. © 2020 Metaps Alpha Inc. All Rights Reserved. ― 18

    メタトランザクション実行のエントリーポイント https://github.com/wighawag/singleton-1776-meta-transaction/blob/dda23e/contracts/src/GenericMetaTxProcessor.sol#L81-L92 ※現在の実装はトークンはERC-20のみ対応 Tx を複数回処理しないためのロック制御 パラメータと署名の検証 パラメータと署名の検証 実際の処理
  14. © 2020 Metaps Alpha Inc. All Rights Reserved. 19 元のトランザクションの送信元アドレス

    送信先アドレス コールデータ 署名 署名タイプ トークンのアドレス 送付額 任意の数値 ナンス( から始まるメタトランザクションの連番) 有効期限( 秒) トランザクション実行時の最大 量 リレイヤーに支払う の最低量 で支払う の価格 リレイヤーのアドレス(メタトランザクションの送信者)
  15. © 2020 Metaps Alpha Inc. All Rights Reserved. 20 •

    リレイヤー(トランザクション送信者)がパラメータと一致するか • 有効期限が切れてないか • ナンスが正しいか(リプレイ攻撃を防ぐため)
  16. © 2020 Metaps Alpha Inc. All Rights Reserved. 21 3種類の署名タイプをサポート(すべて

    EIP-712 形式の署名であること) • EIP-1271: • EIP-1654: • 通常の EOA 署名 EIP712 ハッシュを取得
  17. © 2020 Metaps Alpha Inc. All Rights Reserved. 22 トランザクションの処理(複数パターンがある) 

    パラメータによって処理の内容が変わる • なし/あり ※ Gas を ERC-20 で支払うか? • なし/あり ※ コントラクトの関数を実行するか?
  18. © 2020 Metaps Alpha Inc. All Rights Reserved. 24 通常の

    ERC-20 トークンの送金に加えて、 指定額 + 利用分 の Gas を ERC-20 トークンでリレイヤーに支払う ※ 便宜上、コードを一部変更
  19. © 2020 Metaps Alpha Inc. All Rights Reserved. 26 指定した最大

    Gas でコントラクトを実行して、 指定額 + 利用分 の Gas を ERC-20 トークンでリレイヤーに支払う ※ 便宜上、コードを一部変更
  20. © 2020 Metaps Alpha Inc. All Rights Reserved. 28 •

    コントラクトをメタトランザクション対応させるのが簡単 (関数に 修飾子をつけるだけ) • 送信者は誰でもよい • バッチ処理をサポート • 送信者への手数料を署名者が決められる • すぐに試せて綺麗に機能するデモ
  21. © 2020 Metaps Alpha Inc. All Rights Reserved. 29 •

    メタトランザクションの著名な人物が審査をしたハッカソンで優勝し たという事実は、標準化に向けた大きな一歩 • いまの実装だとトークンは ERC-20 のみ対応なので、オプションとし て ERC-721 / ERC-1155 の実装が出てくるのが待たれる (ERC-20 と同様に作れそう)
  22. © 2020 Metaps Alpha Inc. All Rights Reserved. 31 •

    これまでの提案(ハッカソンで実装された EIP-1776、EIP-1613、 EIP-1077)はどれも複雑で、開発者の摩擦が大きい • この提案は、拡張性を持った、必要最小限の機能を探すことが目的 • 署名されたメッセージが有効であることを保証する、各コントラクト が信頼する唯一のユニバーサルコントラクトをつくりたい
  23. © 2020 Metaps Alpha Inc. All Rights Reserved. 32 •

    EIP-1776 は非常にエレガントな実装 • メタトランザクションという、実現方法が様々な概念を、 これまでの議論を集約して一つの形にまとめたのは素晴らしい (これまでの技術がわかりやすく整理されている) • Ethereum のメタトランザクションの標準化は、まだ道のりが長い… 特に、Gas の仕様が問題を複雑にしている
  24. © 2020 Metaps Alpha Inc. All Rights Reserved. 33 •

    Our MetaTransaction Hackathon Winner! - MetaMask - Medium https://medium.com/metamask/our-metatransaction-hackathon-winner-a620551ccb9b • Ethereum Meta Transactions : Our Take - Bloxis - Medium https://medium.com/bloxis/generalised-ethereum-meta-transactions-our-take-cb9f027866e9 • Generalized Meta Transaction Processor with EIP-1776 Support https://github.com/wighawag/singleton-1776-meta-transaction • EIP-1776 Native Meta Transactions https://github.com/ethereum/EIPs/issues/1776 • EIP-2585 Minimal And Extensible Meta Transaction Forwarder https://github.com/ethereum/EIPs/issues/2585 • MetaMask MetaTransaction Panel - YouTube https://www.youtube.com/watch?v=X5L4fQbUxsA