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

PythonによるWeb3開発

abenben
October 13, 2022

 PythonによるWeb3開発

2022年10月13日のみんなのPython勉強会#86で発表した『PythonによるWeb3開発』のスライドです。
https://startpython.connpass.com/event/260988/
#stapy

abenben

October 13, 2022
Tweet

More Decks by abenben

Other Decks in Technology

Transcript

  1. IT企業でシステムエンジニアとしてキャリアを積み、三菱UFJトラスト投資⼯学研究 所において⾦融ITテクノジストとして⾦融分野の取組む中で、「フィンテックエンジニア 養成読本」を執筆・監修。 MUFGデジタルアクセラレータプログラムではメンターを担当。 現職では教育・HR分野向けの2つのブロックチェーン実証実験(慶應義塾⼤学 経済学部附属経済研究所FinTEKセンター STARプロジェクト、経済産業省 未 来の教室 Ongaeshi実証事業)のテックリードとして従事。

    ⾦融・フィンテック、 Python、ブロックチェーン、クラウド、ソフトウェア開発の各ITコ ミュニティの運営と、先端技術・ビジネス・組織改⾰イベント等の企画・運営に取り組 む。 ブロックチェーン、Pythonデータ分析、RPA、クラウド導⼊などのDX推進のエンジニ アリング指導や、新規プロダクトのソリューション検討などが得意分野です。 コミュニティ運営 Start Python Club、⾦融エンジニア養成コミュニティ、fin-py,Fin-JAWS等 監修、執筆、翻訳、査読、協⼒など ・Sparkによる実践データ解析 ―⼤規模データのための機械学習事例集 ・マンガと図解でスッキリわかる プログラミングのしくみ ・実践 ⾦融データサイエンス 隠れた構造をあぶり出す6つのアプローチ ・テスト駆動Python ・あたらしいPythonによるデータ分析の教科書 ・みんなのブロックチェーン ・フィンテックエンジニア養成読本 ・Python 3スキルアップ教科書 ・After GAFA 分散化する世界の未来地図 ・実践シナリオ・プランニング 阿部 ⼀也 Institution for a Global Society株式会社 上席研究員 Profile Twitter @abenben
  2. Japan ICT DAO(10/8設⽴) 企業 幹事会社 コミュニティ マネージャー コミュニティ アドバイザー コミュニティメン

    バー コミュニティ マネージャー コミュニティ アドバイザー コミュニティメン バー コミュニティメン バー コミュニティメン バー コミュニティメン バー コミュニティ マネージャー コミュニティ アドバイザー コミュニティメン バー コミュニティメン バー コミュニティメン バー コミュニティメン バー コミュニティ マネージャー 株式会社CRE-CO https://goworkship.com/event/115501/ ICTに課題のある企業
  3. EVM Ethereum Virtual Machine (EVM)はスマートコントラクトと呼ばれるコードを実⾏す る各ブロックチェーンの仮想マシン。 スマートコントラクトは プログラミング⾔語で記述されますが, EVMでは複雑な構造を解釈 することができないので、仮想マシンが解析しやすい低レベルなバイトコードの命令に変換

    する必⽤があります。 変換するためのコンパイラや配布(デプロイ)するためのデプロイツールが必要になります。 スマートコントラクトコード (Solidity、Vyperなど) バイトコード コンパイル デプロイ ブロックチェーンネットワーク
  4. イーサリアムのアカウント • イーサリアムのアカウントにはEOAとコントラクトの⼆種類がある。 EOA(Externally Owned Account) コントラクト • 通常(外部所有)のウォレットアカウント (アドレス)

    • プライベートキーを持っている (資⾦の管理をできる) • スマートコントラクト⽤のアカウント • プライベートキーを持っていない • スマートコントラクトのコードを持っている • アドレスを持っている アドレス アドレス nonce balance strageRoot codeHash nonce balance strageRoot codeHash バイトコード ストレージ ワールドステート EOAアカウント コントラクトアカウント
  5. スマートコントラクトが動くブロックチェーン スマートコントラクトはプログラムとして表現します。 また、ブロックチェーンプラットフォームによって プログラミングできるものが異なります。 • イーサリアム︓Solidyty,Vyper( Python),Fe(Vyper,Rust) • Hyperledger Fablic︓Go,Java

    • R3 Corda︓Kotlin • ソラナ︓Rust ※ビットコインにはスクリプトが書けるが、スマートコントラクトではない。 ⾃動実⾏︓代⾦⽀払い+商品送付 1.商品を注⽂ スマート コントラクト 契約条件をプログラムとして記述しておき、ある 条件が満たされたときに⾃動的に決められた 処理がおこなわれる。 Ethereum Hyperledger Fabric R3 Corda ブロックチェーン・プラットフォームとして SOLANA
  6. Solidity • SolidityはEthereum Virtual Machine (EVM)で動作するスマートコントラクト専 ⽤のプログラミング⾔語。 • イーサリアム共同創設者キャビン・ウッドが作成した。 •

    EVMの中では1番⼈気(デファクトスタンダード)がある。 • 構⽂はJavaScriptやC++に似ている。 • Solidityには Solidity コンパイラや solc と呼ばれるコンパイラが⽤意されていて、 EVMが理解できるバイトコードに変換する必要がある。 Solidity
  7. Vyper • SolidityはEthereum Virtual Machine (EVM)で動作するスマートコントラクト専 ⽤のプログラミング⾔語 • 2番⽬に⼈気のあるスマートコントラクト(Pythonベース) •

    まだベータ版である • 強⼒な型付け • 正確なガス消費量の上限値計算 • Solidityよりも安全性の⾼いコード記述 • 関数の継承やオーバーロードができない(デメリット) • Vyperはチューリング完全ではない(デメリット) Vyper
  8. DApps • 「DecentralizedApplications(DApps)」はブロックチェーンを⽤いた⾃律分散 型のアプリケーション。 • ビットコインは、DAppsの⼀種。 Hardware Internet Protocol(TCP/IP) Web

    Email SNS WebApp Hardware Internet Protocol(TCP/IP) Bitcoin Blockchain Cetntralized Application Decetntralized Application その他のアプリケーション • 中央管理者が必⽤ • 仲介者を介した取引 • 管理者がプラットフォームの健全性を維持 • 管理者がコンテンツから収益を得る • 中央管理者が不要 • P2P取引 • 参加者がプラットフォームの健全性を維持 • 参加者が維持の対価としてトークンを得る
  9. Remix IDEでの開発#5 ③「Compile xxx.vy」 (コンパイル) ボタンをクリック ※コンパイルエラーがあると 警告メッセージが表⽰されます。 ②「REMOTE COMPILER」

    に切り換え ①「Viper」メニュー をクリック 例:関数の末尾に:がない場合 Vyperのコンパイルを⾏う。