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

DEXのデータを分析してインサイトを掘り出す / DEX Analysis

DEXのデータを分析してインサイトを掘り出す / DEX Analysis

7/25 Ethereum Hack Tokyo 登壇資料
EthereumブロックチェーンからDEXのデータを分析してインサイトを掘り出します。

Nao Hanamura

July 25, 2019
Tweet

More Decks by Nao Hanamura

Other Decks in Technology

Transcript

  1. 1
    DEXのデータを分析してインサイトを掘り出す
    2019/7/25 Ethereum Hack Tokyo
    Nao Hanamura

    View Slide

  2. 2
    これまでやってきたこと
    自己紹介:ブロックチェーンのエンジニアをしており、データアナリストの
    仕事も過去やってきました(2017/5〜)
    開発・コンサ

    • ブロックチェーンデータの分析基盤構築
    • ブロックチェーン領域のモニタリングSaaS開発
    (Go, Python, CI/CD, Kubernetes etc.)
    • 会計、財務データのデータアナリティクス
    コミュニティ活

    • 技術ブログ「Neutrinoで働くブロックチェーンエンジニアのブロ
    グ」(www.blockchainengineer.tokyo/)
    • CGTF「暗号資産カストディアンのセキュリティについての考え
    方」
    暗号通貨
    監査
    • 暗号通貨監査の技術アドバイザリー
    ✓ 特に取引所の監査手続開発
    ✓ ブロックチェーンデータの分析
    ✓ 特定通貨の監査手法などのリサーチ
    花村直親(Naochika Hanamura) @naomasabit

    View Slide

  3. noteでブロックチェーンの分析レポートの試みを始めています
    3
    https://note.mu/naohanamura

    View Slide

  4. 4
    DEXはどれくらい使われているのか?

    View Slide

  5. 5
    EtherscanのDEX trackerによると、過去7日間で65,000件ほどトランザ
    クションが生まれています

    View Slide

  6. 6
    EtherscanのDEX trackerによると、IDEXが約6割のトランザクションを
    占めており、こちらを掘り下げます
    https://etherscan.io/stat/dextracker

    View Slide

  7. 7
    IDEXのトランザクション数のほとんどはETHとの交換です

    View Slide

  8. 8
    IDEXのトランザクション数のほとんどはETHとの相対取引です

    View Slide

  9. ETHとの相対取引については取引高をETHの時価を使えば
    USD建てで取引高を算出できます
    9

    View Slide

  10. 1
    取引高推移を見ると、概ね日に20,000ETH(6,000,000USD)程度取引
    されています

    View Slide

  11. 6月時取引高は140,000,000USD(150億円程度)で、CEX含めた
    月間取引高ランキングでは100位程度です
    11

    View Slide

  12. 6月度人気取引トークンランキング(ETHで購入されているトーク
    ン)
    12

    View Slide

  13. ETHと相対取引されているトークン割合はQuantというコインが多
    くを占めています
    13

    View Slide

  14. 参考:Quantチャート
    14

    View Slide

  15. 15
    https://note.mu/naohanamura/m/md88688a3936b
    「ブロックチェーンをデータから見るマガジン」で今年の1月〜など
    より長期間のIDEX取引分析を書きます。(宣伝)

    View Slide

  16. IDEX分析の方法
    16

    View Slide

  17. IDEXのコントラクトを見てみます
    https://etherscan.io/address/0x2a0c0dbecc7e4d658f48e01e3
    fa353f44050c208#code
    17

    View Slide

  18. IDEXのコントラクトは基本的にデポジット型のDEXです
    18
    デポジット型のDEXの流れ

    View Slide

  19. IDEXのスマートコントラクトではfunction tradeで取引が実行され
    ています
    // ユーザーの残高台帳
    mapping (address => mapping (address => uint256)) public tokens;
    //mapping of token addresses to mapping of account balances
    /*
    tradeAddressses
    [0] tokenBuy
    [1] tokenSell
    [2] maker
    [3] taker
    */
    // 交換部分。引いてから足している
    tokens[tradeAddresses[1]][tradeAddresses[2]] = safeSub(tokens[tradeAddresses[1]][tradeAddresses[2]],
    safeMul(tradeValues[1], tradeValues[4]) / tradeValues[0]);
    tokens[tradeAddresses[1]][tradeAddresses[3]] = safeAdd(tokens[tradeAddresses[1]][tradeAddresses[3]],
    safeMul(safeMul(((1 ether) - tradeValues[7]), tradeValues[1]), tradeValues[4]) / tradeValues[0] / (1 ether));
    function tradeの交換部
    19

    View Slide

  20. Ethereum transaction には”data”項目として呼び出す関数と引
    数がバイト配列でのっており、これを解析します
    20

    View Slide

  21. Ethereum transactionに乗っているデータ解析例
    input
    function amountBuy amountSell expires nonce amount trade_nonce fee_make fee_take
    ef343588
    000000000000
    000000000000
    000000000000
    000000000000
    05e6caf7b5556
    158
    000000000000
    000000000000
    000000000000
    000000000039
    b4407e159583
    a3e0
    000000000000
    000000000000
    000000000000
    000000000000
    000000000000
    2710
    000000000000
    000000000000
    000000000000
    000000000000
    000000000c0e5
    fdb
    000000000000
    000000000000
    000000000000
    000000000000
    05e6caf7b5556
    158
    000000000000
    000000000000
    000000000000
    000000000000
    0000000334b7
    4b7e
    000000000000
    000000000000
    000000000000
    000000000000
    00038d7ea4c68
    000
    000000000000
    000000000000
    000000000000
    000000000000
    000cc952fa7e8
    d41
    function amountBuy amountSell expires_decimal nonce_decimal amount_decimal
    trade_nonce_deci
    mal
    fee_make_decim
    al fee_take_decimal
    trade(uint256[8],
    address[4],uint8[
    2],bytes32[4])
    425,250,380,08
    1,095,000.00
    106445293215
    7948797920 10000 202268635
    425,250,380,08
    1,095,000 13769329534
    100000000000
    0000
    359905794762
    6817
    0xef34358800000000000000000000000000000000000000000000000005e6caf7b5556158000000000000000000000000000000000000000000000039b4407e
    159583a3e0000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000
    0000c0e5fdb00000000000000000000000000000000000000000000000005e6caf7b555615800000000000000000000000000000000000000000000000000000
    00334b74b7e00000000000000000000000000000000000000000000000000038d7ea4c68000000000000000000000000000000000000000000000000000000c
    c952fa7e8d410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000543ff227f64aa17ea132bf9886cab
    5db55dcaddf0000000000000000000000007f37b7cc0c8b9dd50a337c412486acf3a7de81930000000000000000000000007059010320d07a47d2ad54db88bb89
    ea644c3e6f000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000000000000000000000000000000000
    0000000001bbb26985aa4111d7028f569be09b88476735a22747109b673c917976c7ed4f31424d2af8ba4439954a479aa6a07e6ba41e61fd0fff9846bc94fa7972f
    0a85d6e6bb0c02f1a093f0ec95f6876726288b98db80700439455d4585c1fb0276b65aa63511e05be8b5d173d4efbd4e554c930188fd80e8a3f17db2ef5a16c203c
    bedbe
    21

    View Slide

  22. トランザクションを一つずつ解析した結果がこのようになります
    input
    0xef34358800000000000000000000000000000000000000000000000005e6caf7b5556158000000000000000000000000000000000000000000000039b4407e
    159583a3e0000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000
    0000c0e5fdb00000000000000000000000000000000000000000000000005e6caf7b555615800000000000000000000000000000000000000000000000000000
    00334b74b7e00000000000000000000000000000000000000000000000000038d7ea4c68000000000000000000000000000000000000000000000000000000c
    c952fa7e8d410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000543ff227f64aa17ea132bf9886cab
    5db55dcaddf0000000000000000000000007f37b7cc0c8b9dd50a337c412486acf3a7de81930000000000000000000000007059010320d07a47d2ad54db88bb89
    ea644c3e6f000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000000000000000000000000000000000
    0000000001bbb26985aa4111d7028f569be09b88476735a22747109b673c917976c7ed4f31424d2af8ba4439954a479aa6a07e6ba41e61fd0fff9846bc94fa7972f
    0a85d6e6bb0c02f1a093f0ec95f6876726288b98db80700439455d4585c1fb0276b65aa63511e05be8b5d173d4efbd4e554c930188fd80e8a3f17db2ef5a16c203c
    bedbe
    22

    View Slide

  23. • IDEXがDEX全体のトランザクションの6割を占めている(etherscan調べ)
    • IDEXのトランザクションを解析したところ、月間取引高はおよそ
    140,000,000USD(150億円程度)で、CEX含めた月間取引高ランキングでは100位
    程度
    • データはスマートコントラクトの呼び出しトランザクション解析に基づいている
    まとめ
    23

    View Slide