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

ブロックチェーン初心者であるWebエンジニアが解釈したブロックチェーンの面白さ / web-d...

shinden
December 10, 2024
80

ブロックチェーン初心者であるWebエンジニアが解釈したブロックチェーンの面白さ / web-developer+alpha-blockchain

「ブロックチェーン初心者であるWebエンジニアが解釈したブロックチェーンの面白さ」

2024/12/10 Web開発 ×アルファの掛け算の開発力
https://datachain.connpass.com/event/337038/
の発表資料

shinden

December 10, 2024
Tweet

More Decks by shinden

Transcript

  1. • 自己紹介 ◦ - ブロックチェーン何もわからない Webエンジニア • ブロックチェーンって何? ◦ -

    3つの観点 • Datachainでやっていることって何? ◦ - 2つの事業とR&Dの技術 • ブロックチェーンって何からやればいいの? ◦ - Webページや書籍 index 3
  2. • 新田智啓 (しんでん ともひろ) DatachainのEM • Datachainに入るまでブロックチェーンについてあまり知らない ◦ 暗号資産は国内の取引所を使って購入経験はある ◦

    2017年くらいのブームで興味を持ったが、ブームが過ぎると共に縁がなくなる ◦ 下り坂のブームに乗り、 100万円以上損をした経験がある • Webの知識はそれなりに知っている ◦ SESを中心に行う小さなSIer企業に勤務、SESで色々な現場 に行きました ◦ サイバーエージェントへ転職し、 アドテクでの広告配信 に関わるシステムを作る ◦ メルペイにエンジニアリングマネージャとして転職し、 スマホ決済開発 に関わる ◦ スタートアップのカケハシでエンジニアリングマネージャとして 薬局向け SaaS開発 ◦ 現職はDatachainでEMをして、入社6ヶ月 です! 自己紹介 5
  3. ブロックチェーンって何? 色々な説明の文脈がある • 事業的・社会的 ◦ 暗号資産 ◦ 活用の仕方 ◦ 理念・非中央集権

    • 技術的 ◦ 概念的 ◦ → いい感じの中間理解 (主観的な観点) ◦ 具体的 8 ここの説明をしたいと 考えています 違っていたら 優しく教えてください! 情報が 良く出てくる 良く出てくる 情報が あまりない
  4. 2. Webで受ける攻撃方法が違うってどういうこと? DBが表に出ていると言うことは管理の方法が違っていて、Webと攻撃のされ方も違う • シビル攻撃 • 51%攻撃 • イクリプス攻撃 •

    ロングレンジ攻撃 • セルフィッシュマイニング • フラッシュローン攻撃 • OWASP Smart Contract Top 10 ◦ https://github.com/coky-t/owasp-smart-contract-top-10-ja/blob/main/Document/index.md ◦ 再入攻撃、整数オーバーフローとアンダーフロー、タイムスタンプの依存性 、アクセス制御 の脆弱性、フロントランニング攻撃、サービス拒否攻撃、ロジックエラー 、安全でないラン ダム性、ガス制限の脆弱性、チェックされていない外部呼び出し ブロックチェーンって何? 17
  5. 3. オンチェーンとオフチェーンの両方必要なの? ブロックチェーンは得意なことが限られている 得意なこと • 耐障害性、耐改ざん性 • データの共有 • アトミックな処理

    苦手なこと • データの量 • 検索性能 • 即時応答性 ブロックチェーンって何? 18 Web技術が得意なこと ブロックチェーンが 得意なこと
  6. index • 自己紹介 ◦ ブロックチェーン知識量をご理解ください • ブロックチェーンって何? ◦ Web技術とブロックチェーン技術の共通点と違い •

    ブロックチェーンって何が面白いの? ◦ 基本の技術力が求められる • Datachainでやっていることって何? ◦ ブロックチェーンを繋ぐ技術 IBCとその実装 • ブロックチェーンって何からやればいいの? ◦ 書籍、Webサイトなど 47
  7. • 新田智啓 (しんでん ともひろ) DatachainのEM • Datachainに入るまでブロックチェーンについてあまり知らない ◦ 暗号資産は国内の取引所を使って購入経験はある ◦

    2017年くらいのブームで興味を持ったが、ブームが過ぎると共に縁がなくなる ◦ 下り坂のブームに乗り、 100万円以上損をした経験がある • Webの知識はそれなりに知っている ◦ SESを中心に行う小さなSIer企業に勤務、SESで色々な現場 に行きました ◦ サイバーエージェントへ転職し、 アドテクでの広告配信 に関わるシステムを作る ◦ メルペイにエンジニアリングマネージャとして転職し、 スマホ決済開発 に関わる ◦ スタートアップのカケハシでエンジニアリングマネージャとして 薬局向け SaaS開発 ◦ 現職はDatachainでEMをしています! 自己紹介 49
  8. • 新田智啓 (しんでん ともひろ) 「Webの知識はそれなりに知っている 」ってどれくらい? アドテクでの広告配信 ▪ 10万QPS (1秒あたりのクエリ数)

    & 50ミリ秒でリクエストを捌く実装の必要あり ▪ 同時に1日数十億を超えるデータができるため、処理する基盤が必要 スマホ決済開発 ▪ 直接お金を扱うため 1円もズレてはいけないミッションクリティカルな処理 ▪ 20を超えるマイクロサービスで複雑に連携する大規模なシステム 薬局向け SaaS開発 ▪ 複雑な医療データ使い「医療データ x 在庫管理 x AI 」の複雑の掛け算のシステム ▪ レガシーでファジーなデータを精緻に利用する医療システムに活用する方法 全てのシステムでリリース前の立ち上げ期のタイミングから関わる 自己紹介 50
  9. • 新田智啓 (しんでん ともひろ) • Datachainの入社は 今年の6月 自己紹介 51 マネージャなので

    具体度に自信なし エンジニアの知識 で伝える 伝わる言葉が 大事 ブロックチェーンの知識は入社半年の知識 逆にブロックチェーン知らない人に 伝えることができるのでは?! この人ポジティブシンキングですね
  10. ブロックチェーンって何? 色々な説明の文脈がある • 事業的・社会的 ◦ 暗号資産 ◦ 活用の仕方 ◦ 理念・非中央集権

    • 技術的 ◦ 概念的 ◦ → いい感じの中間理解 (主観的な観点) ◦ 具体的 55 ここの説明をしたいと 考えています でも、とっても難しいので 間違っているかも 違っていたら 優しく教えてください! 情報が 良く出てくる 良く出てくる 情報が あまりない
  11. 詳細の技術の工夫がいっぱいある - 具体の話 • 暗号技術 (署名) • マークルツリー (台帳技術) •

    分散アプリケーション (P2P) • コンセンサスアルゴリズム (合意形成ロジック) ブロックチェーンの技術系の本を読むと出てくる内容 ブロックチェーンって何? 58 2ぺーじめ
  12. そもそもオープンなDBとして理解すると良さそう? • 概念 ◦ データベースとストアドプロシージャー • 実物 ◦ 無数のノードと通信 ◦

    非同期処理、不確定状態 ◦ コンセンサスアルゴリズム • ブロックチェーンのトリレンマ ◦ セキュリティ、分散性、スケーラビリティ ブロックチェーンって何? 64
  13. Webで受ける攻撃方法が違うってどういうこと? • シビル攻撃 • 51%攻撃 • イクリプス攻撃 • ロングレンジ攻撃 •

    セルフィッシュマイニング • フラッシュローン攻撃 • OWASP Smart Contract Top 10 ◦ https://github.com/coky-t/owasp-smart-contract-top-10-ja/blob/main/Document/index.md ◦ 再入攻撃、整数オーバーフローとアンダーフロー、タイムスタンプの依存性 、アクセス制御 の脆弱性、フロントランニング攻撃、サービス拒否攻撃、ロジックエラー 、安全でないラン ダム性、ガス制限の脆弱性、チェックされていない外部呼び出し ブロックチェーンって何? 76
  14. オンチェーンとオフチェーンの両方必要なの? ブロックチェーンは得意なことが限られている 得意なこと • 耐障害性、耐改ざん性 • データの共有 • アトミックな処理 苦手なこと

    • データの量 • 検索性能 • 即時応答性 ブロックチェーンって何? 79 Web技術が得意なこと ブロックチェーンが 得意なこと
  15. プログラミング筋力で実装する • 共通点 ◦ 効率の良いコード ◦ OSSの活用 ◦ セキュリティを意識した設計 •

    相違点 ◦ 本気で効率の良いコード - 直接的なコスト増加の影響 ◦ 本気でOSSを活用 - OSSを毎週確認 ◦ 本気でセキュリティを意識した設計 - ソースコード公開 ブロックチェーンって何が面白いの? 86
  16. 情報の状態変化を考慮したロジックのデザイン • 共通点 ◦ 分散処理 ◦ 非同期処理 ◦ ローカル開発環境 •

    相違点 ◦ Solidity - 非同期イベントの通知専用のemitなど ◦ 未確定のステータスが長い ◦ オラクルと呼ばれる第三者情報の提供の考慮 ブロックチェーンって何が面白いの? 88
  17. 技術が体系化されていない、未知の技術で正解を探す • 共通点 ◦ 既存の技術をフル活用する ◦ 事業と技術の両方があって成り立つ仕組み ◦ 内部システムで利用できる •

    相違点 ◦ 確立した技術がなく正解が分からない世界 ◦ 法律が後から追いついてくる ◦ グローバル(世界に向けた開発)が当たり前 ブロックチェーンって何が面白いの? 90
  18. Datachainでやっていることって何? Ethereum (ブロックチェーン) のプラットフォームでの開発 世界で共通のプラットフォームを使っているため スマートコントラクト上にアプリを提供するなら 更新状況を確認する必要がある EIPとは、Ethereumの機能追加提案のこと(Ethereum Improvement Proposals)

    ERCとは、Ethereumの規格のこと (Ethereum Request for Comments) EIPでトピックがあるかを Datachainのコア開発の毎週の定例ではチェックしている 仕様の変更やハードフォークなどで対応が発生することもあるし、 便利な機能が入って開発が楽になることもある 125
  19. Datachainでやっていることって何? IBCとは、ブロックチェーンを繋ぐための技術の仕様 世界でオープンに開発されているブロックチェーンを繋ぐ接続仕様 Javaで言うと、Javaの仕様みたいなもの。 Javaは仕様と実装が分けて作られている。 Javaの仕様は昔はJSR (Java Specification Request)で作っていっていた。 今はJEP

    (JDK Enhancement Proposal)で作っている。 Javaの実装は様々(OracleJDK、AWSのCorretto、 各社のビルドのOpenJDKなど)な実装があり、 仕様通りの動きであれば内部的な実装は自由 IBCの実装の部分をDatachainも作っている 126