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

JavaScript から入門するブロックチェーンエンジニアリング

JavaScript から入門するブロックチェーンエンジニアリング

Saitama.js vol.0 で発表した資料です
https://saitamajs.connpass.com/event/222401/

Makoto Nakagawa

October 14, 2021
Tweet

Other Decks in Programming

Transcript

  1. About me Makoto Nakagawa (@let_mkt) JavaScript 好きで、Vue.js をよく書 いていました Vue

    3 リファレンスの日本語翻訳 などもお手伝いしていました 4 月に埼玉県新座市に引っ越してき ました 趣味はゲームと日本語ヒップホップ 2
  2. この LT で話すこと JavaScript と Ethereum がどう関係しているか Ethereum, ブロックチェーン, スマートコントラクトなどの概念

    スマートコントラクトを開発する方法 どんな言語で、どうやってテストして、どこにデプロイする? スマートコントラクトを触り始めたWeb エンジニアの所感 3
  3. Solidity のシンタックス ( 応用編 ) ほかにも... abstract で抽象コントラクトを表現 modifier hoge(){

    } で修飾子を宣言 payable address 型で送金可能なブロックチェーンアドレスを定義 など、言語機能として一通りのシンタックスを網羅 13
  4. Solidity は NPM を介してパッケージを管理する Solidity は独自のパッケージ管理ツールを持たず、NPM をそのまま 利用している NPM 経由なのでインストールしたパッケージは当然node_modules

    に格納される import "bar/baz.sol"; したときはJS と同様に {project-root}/node_modules/bar/baz.sol を参照する TypeScript のようにインポートした型を利用することも可能 17
  5. スマートコントラクトは Mocha でテストできる Truffle というスマートコントラクト開発用フレームワーク(後述) において、標準で Mocha(+ Chai) によるユニットテストが可能 設定を変えればJest

    も使えるっぽい また、スマートコントラクトはブロックチェーンに書き込んでデプ ロイとするため、後から修正パッチをリリースすることができな い。加えてそもそも決済が絡むセンシティブな処理が多いので、丁 寧にテストを書くことが求められている TDD が推奨されている 20
  6. Truffle について ユーティリティツール的なフレームワーク アプリケーションのコンパイルやテスト、デプロイなどを担う truffle compile でコンパイル truffle test でテスト

    truffle deploy でデプロイ truffle develop でローカルノードとREPL が立ち上がる 他には、 truffle unbox react でReact 用のボイラープレートが出 来上がる... など 23
  7. 本番と STG 一口に Ethereum といっても、そのなかにブロックチェーンネット ワークがいくつも存在する メインネットと呼ばれるネットワークがいわゆる本番として扱わ れている なので、「ETH のレート」と言ったとき、それは暗黙的には

    このメインネットの通貨レートを指している 対して、テストネットワークと呼ばれるテスト用のネットワーク も複数存在する (eg. Goerli) テスト用なので無償で ETH が配られていたりする 24
  8. ローカル開発環境 Ganache というローカルに Ethereum のブロックチェーンを構築す るツールが Truffle から提供されている 起動するだけであらかじめETH を持つ複数個のアカウントがセット

    アップされているため、この環境に向けてスマートコントラクトを デプロイすることでローカル開発やデバッグが可能 25