ブロックチェーンを活用したシステム開発における設計パターン紹介
2023/08/26(土) 17:00~17:45 ODC2023 B会場
NPO法人 NEM技術普及推進会 NEMTUS 松岡靖典
自己紹介
NPO法人 NEM技術普及推進会 NEMTUSについて
「ねむたす」
アジェンダ
ブロックチェーンとは
“ブロックチェーン技術とは情報通信ネットワーク上にある端末同士を直接接続して、取引記録を暗号技術を用いて分散的に処理・記録するデータベースの一種であり、「ビットコイン」等の仮想通貨に用いられている基盤技術である”(引用元: 総務省平成30年版情報白書)
ネットワークを通じて分散した多数のコンピューター同士が、
定められた報酬を得るモチベーションから生み出される競争を通して、
定められたルール通りにデータを正しく処理しているかを相互に検証(≒監視)しあうことで、
管理主体となる特定の組織や個人に依存することなく、
ネットワーク全体で同一性を保ったデータを記録・維持する基盤技術
少しかみ砕いて言い換えると...
管理主体となる個人・組織へ依存しないP2Pネットワーク
サーバー
クライアント
Peer(≒ノード)
もしサーバーがダウンしたら...
×
サービスは利用不能に...
そうならないよう管理する責務がサービス提供者に発生=管理主体となる個人・組織が必要
×
ノードが1台ダウンしても...
それ以外のノードでサービスが成立する
管理主体となる個人・組織への依存なしに堅牢な仕組みを実現可能
全体としては冗長性が高い分非効率だが各ノードの負荷は低め
全体としては効率的だがサーバー周りの負荷は高い
絶対的ではない
トレードオフ
ブロックチェーンのデータ構造の概要と名前の由来
ブロック間でハッシュを連鎖的に連ねたデータ構造→ブロックチェーン
Block m
Tx List
Tx 1
Tx n(m)
・�・�・
Reward
Nonce
Block Hash
Previous Block Hash
Block m+1
Tx List
Tx 1
Tx n(m+1)
・�・�・
Reward
Nonce
Block Hash
Previous Block Hash
…
…
ネットワーク参加者全員で競争的にこの値を見つける
競争の勝者が報酬をもらえる
PoW: ブロックチェーンを維持するインセンティブを生み出す競争原理
PoW (Proof of Work) … 参考記事
×
×
×
〇
↑
嘘
×
×
×
×
検証
↓
不正!
↓
却下!
検証
↓
不正!
↓
却下!
検証
↓
正解
検証
↓
正解
〇
×
×
PoS: ブロックチェーンを維持するインセンティブを生み出す競争原理
PoS (Proof of Stake)
(1)
(1)
(2)
(2)
Hit!
Stake≒残高
大きいと有利
Stake≒残高
小さいと不利
Stake
大
Stake
小
異なるチェーンが同時に存在した場合どれに統一する?
チェーンA
チェーンB
チェーンB
チェーンA
複数の異なるチェーンがネットワークに同時に存在する場合
A / Bどちら?
取り決めとしてチェーンが長い方を正として扱う
チェーンAの方が長いのでチェーンAを正として扱う
Aが長いのでAを正と判断
長い
短い
一般的なコンセンサスアルゴリズムまとめ
※ネットワーク内でどのチェーンを正とするかの決め方は他にもある
以下のようなルール(≒仕様)で非中央集権的な参加者同士で(、一時的にはネットワーク内で異なるデータが併存する状況は許容しつつ、最終的には)同一のデータへ収束し、それを維持していくことができる
確率的ファイナリティについて
あるブロック(1)が生成され、その後、数ブロック新たにブロックが生成された後で、ブロック(1)のブロック高さのブロックが別のものに変わったチェーンが最長となる確率は、一定以上のブロック数が生成された後には確率的に極めて低くなる
ただしブロックが覆らない可能性を厳密にゼロにはできないことに注意が必要
可能性低い⇒
即時確定的ファイナリティ
×
←こういう別のブロックが作られないように
事前にネットワーク間で合意形成しておき→
チェックポイントによる確定的ファイナリティ(≠即時)
合意
形成
↓
確定
毎回合意形成はしんどい...
即時のファイナリティは得られず待ち時間は必要
合意
形成
↓
確定
合意
形成
↓
確定
合意
形成
↓
確定
合意
形成
↓
確定
合意
形成
↓
確定
定められたブロック数や時間だけ間隔をあけてネットワーク間での合意形成を行ってそこまでのブロックを確定させるのを繰り返す
確定
確定
確定
確定
コンセンサスアルゴリズムとファイナリティのまとめ
ビットコイン
確率的ファイナリティ
代表例
NEM/Symbol
はこれ
ブロック生成
確率的
ファイナリティ
Cosmos SDK製
独自ブロックチェーン等
NEM/Symbol
チェックポイント
確定的ファイナリティ
2. ブロックチェーンの代表例
BTC Bitcoin ビットコイン … ブロックチェーン元祖
ETH Ethereum イーサリアム … スマートコントラクト
NEM(New Economy Movement) ネム … スマートコントラクト無しの世界
Cosmos SDK製ブロックチェーン … IBC
といった点に主眼を置いて、一つのブロックチェーンだけで全てを行うにあたっての限界を、目的ごとに独自のブロックチェーンを作成して、それら別々のブロックチェーン間が連携することで解決を目指す枠組みがCosmos SDK
近年、ブロックチェーン間の連携が実働開始したことで、Cosmos SDK製ブロックチェーン間のエコシステムが大きく発展を遂げている
技術的な違いはあるがAstar等のPolkadot系エコシステムも近い思想が根底にあると感じる
Symbolブロックチェーン … NEMの新バージョン
3. Symbolブロックチェーンの機能紹介
NEM / Symbolの特徴
スマートコントラクト(開発・実装)無しに
Dapps開発が可能
一般的なDApps開発
通常のアプリ開発に加えて
スマートコントラクトの開発・デプロイ・デバッグ・テストが必要
高い自由度を実現可能だが難しさも
アプリその1
アプリその2
独自言語を用いた
スマート
コントラクト開発
コントラクト
デプロイ
コントラクトの状態を参照
コントラクトの関数を呼ぶ
アプリ開発
デプロイ
NEM / SymbolにおけるDApps開発
通常のアプリ開発の延長線上で
(スマートコントラクト開発なしに)
ブロックチェーン自体に元々組み込まれた様々なトランザクションを実行することで
自由度はある程度制約されるが様々な挙動を柔軟に表現可能
アプリその1
アプリその2
ブロックチェーン
トランザクション
チェーンの状態を参照
トランザクションを実行
アプリ開発
デプロイ
独自言語を用いた
スマート
コントラクト開発
やらなくてOK→
Symbolブロックチェーンの技術的特徴
Symbolの技術的特徴 その1
APIノードの維持に(実質的に)インセンティブがある
↓
APIノードが全世界に分散して多数公開
↓
開発者が自由に公開済APIノードで開発可能
↓
より低コスト&簡単に
一般的なブロックチェーンとアプリの関係
APIノード群
インセンティブ無し
ブロックチェーン
ネットワーク
バリデーター
ノード群: インセンティブ有り
〇
アプリその1
アプリその2
〇
×
×
Symbolのブロックチェーンとアプリの関係
バリデーター&API
ノード群 … 誰もが自由に使えるAPIノードが増えるインセンティブがある!
≒ブロックチェーンネットワークそのもの
〇
アプリその1
アプリその2
〇
Symbolの技術的特徴 その2
必要十分な機能が組み込まれた共通実装のトークンを活用可能
🪙
Symbolの技術的特徴 その3 ネームスペース(をアドレスやトークンに紐づけ可能)
アドレス
N***A
組織名
npo.nemtus
対象組織のアドレスであることを明示できる
↓
ブロックチェーン上で重複しない唯一の名前を紐づけ
↓
公式なものであることの証明
アドレス
N***B
職位名
npo.nemtus.chairman
対象組織の対象職位のアドレスであることを明示できる
トークン
t***a
トークン
t***b
通貨名
cbdc.japan.jpy
トークンの種類を明示できる
↓
ブロックチェーン上で重複しない唯一の名前なので、設定をコピーした偽物のトークンと明示的に区別できる
通貨名
cbdc.usa.usd
Symbolの技術的特徴 その4 メタデータ(をアドレス,トークン,ネームスペースに紐づけ可能)
ネームスペース
ecobit
アドレス
N***B
(関係者)属性情報
type=harvester
name=ecob
sex=male
birthDate=2017/07/28
farm=ecobit
トークン
t***a
(収穫物・商品)属性情報
type=vegitable
name=tomato
farm=ecobit
lotId=a0b1c2d3e4f5
harvester=ecob
harvestedDate=2023/07/28
(ブランド)属性情報
type=farm
name=ecobit
latitude=100.5017
longitude=13.7563
ブロックチェーン上に
属性 = 属性値 by 登録者
的なデータをアドレスやトークンやネームスペースに持たせることができる
↓
アドレス、トークン、ネームスペースの属性情報の明示に便利
更新可能
Symbolの技術的特徴 その5 マルチシグ
必要な署名がそろった場合のみ、処理が実行可能なマルチシグアカウント
〇〇社マルチシグ
N****
社長
N****
部長
N****
社員
N****
△△コンソーシアム
N****
〇〇社マルチシグ
N****
社長
N****
部長
N****
社員
N****
△△社マルチシグ
N****
社長
N****
部長
N****
社員
N****
NEM
マルチシグ
Symbol
マルチレベル
マルチシグ
より柔軟で実用的なワークフローをブロックチェーンで実現できるように!
Symbolの技術的特徴 その6 アグリゲートトランザクション
最大100個の複数の取引を、取引当事者の署名や連署がそろったら、まとめて実行できる機能
ブロックチェーンにアナウンス時点で全ての署名&連署がそろっている「アグリゲートコンプリートトランザクション」と足りない連署をブロックチェーンネットワークを通じて集める「アグリゲートボンデッドトランザクション」の2種類がある
アグリゲートコンプリートトランザクションのユースケース
(収穫物)属性情報
type=vegitable
name=tomato
farm=ecobit
lotId=a0b1c2d3e4f5
harvester=ecob
harvestedDate=2023/07/28
Symbolの技術的特徴 その6 アグリゲートトランザクション
最大100個の複数の取引を、取引当事者の署名や連署がそろったら、まとめて実行できる機能
足りない連署をブロックチェーンネットワークを通じて集める「アグリゲートボンデッドトランザクション」
アグリゲートボンデッドトランザクションのユースケース
Symbolの技術的特徴 その7 シークレットロックトランザクション
ハッシュタイムロックコントラクト(HTLC)等と呼ばれることもある仕組みで異なるブロックチェーン間でのトラストレスなトークン交換に応用可能
前提知識
取引の流れ
1. EVM系ブロックチェーンERC20 ハッシュ値
Mosaic 同ハッシュ値
2. Symbolブロックチェーン
秘密の値
↓ハッシュ化
ハッシュ値
3. Symbolブロックチェーンで秘密の値を公開(してMosaicを取得)
4. EVM系ブロックチェーンで秘密の値を公開(してERC20を取得)
4. 具体的なサービスを想定してブロックチェーンを活用して実現する設計パターンを紹介
戸籍管理システムを想定したブロックチェーンの活用アイディア紹介 -> DID
マルチシグアカウント
メタデータ
name=暗号太郎
sex=男
birth=2009年1月3日
father=NA…Q
mother=NB…Y
…
成人に伴い
自己管理へ
マルチシグ
構成変更
メタデータ
name=暗号太郎
sex=男
birth=2009年1月3日
father=NA…Q
mother=NB…Y
…
spouse=NC…Z
marriedAt=2039年1月3日
メタデータ
name=暗号太郎
sex=男
birth=2009年1月3日
father=NA…Q
mother=NB…Y
…
spouse=NC…Z
marriedAt=2039年1月3日
…
death=2089年1月3日
公文書管理システムを想定したブロックチェーンの活用アイディア紹介 -> 永続的ストレージ
細かい
データに
分割
0123456789abcdef…f
0123456789abcdef…f
0123456789abcdef…f
0123456789abcdef…f
…
message=0123456789abcdef…f
message=0123456789abcdef…f
message=0123456789abcdef…f
message=0123456789abcdef…f
…
アグリゲートトランザクション
一括書き込み
(メッセージ、メタデータ
いずれでも実現可能)
公文書ファイル
登記管理システム&証券管理システムを想定したブロックチェーンの活用アイディア紹介 -> 永続的DB&ユーザー同士の直接取引による効率化
マルチシグアカウント
アカウントメタデータ
name=ブロックチェーン株式会社
type=株式会社
created=2029年1月3日
founder=NA…Q
…
株式発行
(モザイクメタデータ)
company=NB…Y
type=未上場株式
(モザイク制限)
特定アカウントのみ送受信可能
創業者
(初期)投資家
上場
株式属性変更
(モザイクメタデータ)
company=NB…Y
type=未上場株式
(モザイク制限)
特定アカウントのみ送受信可能->証券会社から上場株式の取引許可を得た投資家に送受信が解放
(一般)投資家
取引許可
アグリゲートボンデッドトランザクションで直接取引
5. ブロックチェーンの学習方法
その1. ブロックチェーンに触れてみる
NFA, DYOR
まずはユーザーとして触ってみる
百聞は一見に如かず!
ご安全に!!
各種イベントに足を運んでみる
オフの場のイベント参加に抵抗なければぜひ!
ご安全に!!
5. ブロックチェーン学習方法
その2. 本格的な学習に進むには?
NFA, DYOR
手を動かしながら開発について学んでみる
ブロックチェーン学習
その2
↓共通の知識・手法ベースが固まったら次にブロックチェーン毎の内容へ
百聞は一見に如かず!実際に手を動かしてまずは触ってみよう!
Bitcoin
Ethereum
Cosmos SDK製独自ブロックチェーン
NEM/Symbol
NEM/Symbolコミュニティメンバーによって制作された速習Symbolというブロックチェーン学習用コンテンツの紹介
速習Symbol
6. 直近のコミュニティの取組の紹介
NEMTUS Community Meetup
今日から現場で使える速習SymbolブロックチェーンJavaScript版
技術書典14 NEMTUSにて制作した新刊1冊目の紹介
今日から現場で使える速習SymbolブロックチェーンC#版
技術書典14 NEMTUSにて制作した新刊2冊目の紹介
Symbol
解体新書
技術書典14 NEMTUSにて制作した新刊3冊目の紹介
月刊NEMTUS LT資料集vol.1
技術書典14 NEMTUSにて制作した新刊4冊目の紹介
月刊NEMTUS LT資料集vol.2
技術書典14 NEMTUSにて制作した新刊5冊目の紹介
Symbolコミュニティメンバーが1日店長を!
ブロックチェーンについて語り合える銀座のバーにて
実際にブロックチェーンを使う(≒Symbol決済を試してみる)ことができたり、1日店長が開発した新作ブロックチェーンゲームに触れたりできるとても楽しいイベントでした!
NEMTUS Community Meetup
オープンソースカンファレンス他、NEMTUSとしてリアル出展させて頂くイベントと同タイミング・場所で開催
過去の開催地域
8/19(土) 19:00-21:00
新宿 Crypto Lounge GOX にて開催
7. 今後の取組
日本全国様々な箇所での技術イベントに参加していきたい
技術書典オンラインマーケットで継続的に販売中!(速習Symbol JS版/C#版, Symbol解体新書, コミュニティイベントLT資料集vol.1/2) & 技術書典15申込中!
新刊5冊いずれもNEM / Symbolコミュニティのブロックチェーンの知見とNEMTUSとコミュニティのこれまでの歩みが感じられる書籍だと思います!
技術書典14は終了しましたがオンラインマーケットでは継続販売中なのでぜひご覧になって頂けると嬉しいです!
技術書典15も申し込み中!新刊!?
トマティーナ&ポテティーナ(毎年8月最終水曜日開催: 2023/08/30 水)
ブロックチェーン上でトマトを模したトークンをコミュニティメンバー同士が投げ合って楽しむ年に1回のお祭りイベント
https://symbol-community.com/ja/events/tomatina
https://symbol-community.com/ja/events/potatina
今年はSymbolブロックチェーンコミュニティ以外からもVery Long Animalsコミュニティも参戦してトマトとポテトを投げ合う新しいお祭りイベントに!
来年度もハッカソン開催を予定
ありがとうございました
この機会にぜひNEMTUS(ねむたす)をフォローください!