最新の墨汁マガジン

【セキュリティ対策】99%が知らないイーサリアムDeFiやNFTのコントラクト検証と確認方法~中編~Solidityの背景から理解するUniswapの動作

コンテンツの主題
仕組み
実演
傾向と対策
目次
  • 1 イーサリアムでよく見る0xとは?
  • 2 Solidityとは?
  • 3 Solidity開発のバックグラウンド
  • 4 Uniswapなどのスワップコントラクトの検証方法
  • 5 コントラクトでスワップ実行する際の例
    • 5.1 スワップで用いられる関数
    • 5.2 UniswapでETHをUSDCにスワップする場合
    • 5.3 スワップ時にコールされるコントラクト
  • 6 0xを理解する重要性
  • 7 ETHをスワップするときの計算
  • 8 スワップのデッドライン
  • 9 スリッページの計算
  • 10 墨汁うまいに質問する

こちらは後編となるため、リサーチレポート「【前編】99%が知らないイーサリアムDeFiやNFTのコントラクト検証と確認方法 フィッシングを避ける安全な署名方法とは?」を先に参照してください。

 

ここからは前編でみたEVMの仕組みからみるコントラクトの検証方法ではなく、イーサリアム自体のシステムベースのより詳しい検証方法についてみていきます。

イーサリアムでよく見る0xとは?

イーサリアムのEOAアカウントやコントラクトアカウントを示すアドレスの先頭に必ず”0x”がつくのを見るでしょう。

この0xとは

 

「アドレスや数字の羅列が16進数で表記されている」

 

ということを表しており、これはイーサリアムがの”Solidity”が関係しているのです。

 

Solidityとは?

Solidityとは

 

「イーサリアムのコントラクトを開発するための独自のプログラミング言語」

 

です。

Solidity自体はイーサリアムがいちから独自開発したプログラミング言語であり、一般的にはJavaScriptでのプログラミング経験があれば習得しやすいと言われています。

 

Solidity開発のバックグラウンド

SolidityがJavaScriptに似ていると言われるのは

 

「プログラミングのシンタックス(Syntax)、つまり構文がJavaScriptにインスパイアされているのが理由」

 

なのです。

またポピュラーなプログラミング言語であるC/C++などのバックグラウンドがあれば後はコントラクト独特の環境になれると開発ができるとされています。これには理由があり、1972年に開発されたC言語が後発のC++やJavaやに影響を与え、Webサイトやアプリの開発需要が増えたことで人気を博したJavaScriptがWeb3の概念に合っていたのでしょう。

C言語はプレフィックス(接頭辞)で0xつまり16進数で表すと規定されており、影響を受けたJavaScriptも同様であることから、イーサリアムでも0xを使用しているということです。

 

Uniswapなどのスワップコントラクトの検証方法

では上記の前提知識を元に、UniswapやCurve Financeのコントラクトを検証してみましょう。

この16進数というのはなにが重要かというと

 

「UniswapやCurve Finance

*ここから先はオンラインサロン会員専用です