イーサリアムでスマートコントラクトを記述できるプログラミング言語Vyperを教えて!
こういった悩みにお答えします.
本記事の信頼性
- リアルタイムシステムの研究歴12年.
- 東大教員の時に,英語でOS(Linuxカーネル)の授業.
- 2012年9月~2013年8月にアメリカのノースカロライナ大学チャペルヒル校(UNC)コンピュータサイエンス学部で客員研究員として勤務.C言語でリアルタイムLinuxの研究開発.
- プログラミング歴15年以上,習得している言語: C/C++,Python,Solidity/Vyper,Java,Ruby,Go,Rust,D,HTML/CSS/JS/PHP,MATLAB,Verse(UEFN), Assembler (x64,ARM).
- 東大教員の時に,C++言語で開発した「LLVMコンパイラの拡張」,C言語で開発した独自のリアルタイムOS「Mcube Kernel」をGitHubにオープンソースとして公開.
- 2020年1月~現在はアメリカのノースカロライナ州チャペルヒルにあるGuarantee Happiness LLCのCTOとしてECサイト開発やWeb/SNSマーケティングの業務.2022年6月~現在はアメリカのノースカロライナ州チャペルヒルにあるJapanese Tar Heel, Inc.のCEO兼CTO.
- 最近は自然言語処理AIとイーサリアムに関する有益な情報発信に従事.
- (AI全般を含む)自然言語処理AIの論文の日本語訳や,AIチャットボット(ChatGPT,Auto-GPT,Gemini(旧Bard)など)の記事を50本以上執筆.アメリカのサンフランシスコ(広義のシリコンバレー)の会社でプロンプトエンジニア・マネージャー・Quality Assurance(QA)の業務委託の経験あり.
- (スマートコントラクトのプログラミングを含む)イーサリアムや仮想通貨全般の記事を200本以上執筆.イギリスのロンドンの会社で仮想通貨の英語の記事を日本語に翻訳する業務委託の経験あり.
こういった私から学べます.
国内・海外のブロックチェーンエンジニアのおすすめ求人サイトを知りたいあなたはこちらからどうぞ.
目次
プログラミング言語Vyper(バイパー)
プログラミング言語Vyper(バイパー)とは,イーサリアムのスマートコントラクトを記述できるPython風でコントラクト指向のプログラミング言語です.
プログラミング言語Vyperは,Python言語で実装されていて,GitHubにオープンソースで公開されています.
Vyperのコードをダウンロードしたいあなたは,以下のコマンドを実行して下さい.
1 |
$ git clone https://github.com/vyperlang/vyper |
Vyperのライセンスは,Apache License 2.0です.
Vyperの理念と目標は以下になります.
- セキュリティ:Vyperで安全なスマートコントラクトを構築することが可能かつ自然であるべきです.
- 言語とコンパイラの簡素化:言語とコンパイラの実装はシンプルであるべきです.
- 監査可能性:Vyperのコードは,最大限,人間が読めるものであるべきです.さらに,誤解を招くようなコードを書くことが最大限に困難であるべきです.読み手にとっての単純さは,書き手にとっての単純さよりも重要であり,Vyperの使用経験の少ない読み手(一般にプログラミングの経験の少ない読み手)にとっての単純さは,特に重要です.
上記の理由により,Vyperは以下の機能を持ちます.
- 配列アクセスおよび算術演算における境界とオーバーフローのチェック
- 符号付き整数と10進固定小数点数
- 決定可能性(Vyperの関数呼び出しによるガス消費量について,正確な上限値を計算可能)
- 強力な型付け
- 小さく理解しやすいコンパイラコード
- pure関数のサポートは限定的で,定数は状態を変更不可
Vyperは,誤解を招くコードや脆弱性のあるコードを書けないようにしています.
これにより,他のスマートコントラクトを記述できる代表的なプログラミング言語Solidityと比較して,Vyperは安全性の高いコードを書くことができます.
具体的には,Vyperは以下の機能がありません.
- インラインアセンブラ
- 修飾子
- クラスのポリモーフィズムと多重継承,関数と演算子のオーバーロード
- 関数の再帰呼び出し
- 暗黙的なキャスト
- 2進固定小数点数
VyperとSolidityとの比較を知りたいあなたはこちらからどうぞ.
Vyperは事前条件と事後条件,状態変化を明示的に管理するため,コードをより読みやすく,監査しやすい設計になっています.
また,@private,@public,@constant,@payableと呼ばれるデコレータを関数の開始部で利用します.
もし不正なデコレータを利用した場合は,コンパイルエラーになります.
Vyperの紹介動画です.
Vyperの開発環境
Vyperの開発環境は,以下になります.
- オンラインで利用したい場合:Vyper Online Compiler
- 自分のPCで環境構築したい場合:Installing Vyper
Vyperを学べるWebサイトを知りたいあなたはこちらからどうぞ.
まとめ
イーサリアムでスマートコントラクトを記述できるプログラミング言語Vyperを紹介しました.
ブロックチェーンエンジニアになりたいあなたは,是非Vyperを習得しましょう!
国内・海外のブロックチェーンエンジニアのおすすめ求人サイトを知りたいあなたはこちらからどうぞ.