Slide 1

Slide 1 text

Flow Japan Community | T. Arakawa ビットコインとか勉強会 #52 Flow ブロックチェーン Dapps 開発 2021.04.22 T. Arakawa


Slide 2

Slide 2 text

2 Takamasa Arakawa • Metaps エンジニア Ex. 富士ゼロックス • Solidity / Cadence / Node.js / Vue / Java / Rails / SRE • • • DJT お手伝いで Flow の KMS ウォレット作ったり 開発 → Coincheck へ 開発コミュニティリード 自己紹介

Slide 3

Slide 3 text

Flow Japan Community | T. Arakawa 今日話すこと 3 • Flow を使った Dapps 開発の基礎 • Flow らしいアプリについて

Slide 4

Slide 4 text

Flow Japan Community | T. Arakawa Flow を使った Dapps 開発の基礎

Slide 5

Slide 5 text

Flow Japan Community | T. Arakawa Flow:Dapper Labs が開発するブロックチェーン 5 www.onflow.org

Slide 6

Slide 6 text

Flow Japan Community | T. Arakawa Flow の特徴 6 ブロックチェーンの処理を 4種類のノードに分割する ことで、ネットワークの パフォーマンスを改善 • トランザクション収集 • コンセンサス(PoS) • 計算 • 検証 https://medium.com/dapperlabs/enter-the-octagon-ufc-on-flow-brings-mma-to-crypto-480618408510 ※上記に加えて Observer ノードも存在する

Slide 7

Slide 7 text

Flow Japan Community | T. Arakawa Cadence:Flow で使われるプログラミング言語 7 • ブロックチェーンプログラミングの新しいパラダイムのために 設計された言語 • コードを 安全、セキュア、親しみやすくする機能がある: ○ リソースオブジェクト ○ 強力な静的型システム ○ 関数とトランザクションにおける 事前/事後条件

Slide 8

Slide 8 text

Flow Japan Community | T. Arakawa 従来の所有モデル 8 中央台帳で所有権を管理する 例:すべての CryptoKitties は1つのコントラクトで管理されている コントラクト #1
 #2
 mapping (uint256 => address) :

Slide 9

Slide 9 text

Flow Japan Community | T. Arakawa 従来の所有モデルの課題 9 • スケールできない(Sharding のボトルネックになる) • バグが生まれる(マップの書き換えミスが起こりうる) コントラクト #1
 #2
 mapping (uint256 => address) : コントラクト EOA : コントラクト 参照 更新 更新

Slide 10

Slide 10 text

Flow Japan Community | T. Arakawa リソース:新しい所有モデル 10 アカウントのストレージにリソースオブジェクトを配置する アカウント1 リソース1 #1 アカウント2 リソース2 #2

Slide 11

Slide 11 text

Flow Japan Community | T. Arakawa リソースのルール 11 1. 各リソースは、常に1つの場所に存在する 実装ミスや悪意のあるコードによって、 リソースを複製したり、誤って削除したりすることはない 2. リソースの所有権は、保存場所によって定義される 所有権を変えるために相談しなければならない中央台帳はない 3. リソースのメソッドへのアクセスは所有者に制限される 例えば、CryptoKitty の所有者のみが繁殖操作を行える これらが、言語の仕組みとして保証されることが素晴らしい!

Slide 12

Slide 12 text

Flow Japan Community | T. Arakawa リソースの利点 12 • 言語レベルでルール化されている(最小権限の原則) • 副次的な利点: ○ 所有権のカスタマイズが容易 (例えば EIP-998 は既存 ERC-721 に適用できない) ○ ストレージ利用料の徴収が容易 (Ethereum の State Rent は既存 ERC-721 に適用できない) ○ 再入性バグが発生しない

Slide 13

Slide 13 text

Flow Japan Community | T. Arakawa Flow ではアカウントごとにストレージがある 13 アカウント Code Storage Public デプロイされたコントラクトが入る リソースオブジェクトが入る 自分しか操作できない リソースオブジェクトの参照が入る 誰でもみられる&参照で定義された操作ができる

Slide 14

Slide 14 text

Flow Japan Community | T. Arakawa Flow におけるプログラムの種類 14 1. コントラクト 実行したアカウントのストレージにデプロイされる 2. トランザクション 実行したアカウントで、デプロイ済みコントラクトを操作する 3. スクリプト ストレージの状態を読む (実行したアカウントの署名は不要、状態は変更できない)  すべて .cdc ファイル

Slide 15

Slide 15 text

Flow Japan Community | T. Arakawa Flow でコントラクトを実行する流れ 15 1. コントラクトのコードを書く 2. コントラクトをデプロイする → 実行したアカウントのストレージにデプロイされる 3. トランザクションのコードを書く 4. トランザクションを実行する (実行したアカウントで署名することになる) → 結果は、ログ記録 and/or アカウントのストレージに保管される

Slide 16

Slide 16 text

Flow Japan Community | T. Arakawa チュートリアル と プレイグラウンド が充実! 16 https://play.onflow.org/

Slide 17

Slide 17 text

Flow Japan Community | T. Arakawa YouTube にチュートリアルの解説動画あります 17 https://www.youtube.com/channel/UCzqVseWmvmLizVYO5iO-C1A

Slide 18

Slide 18 text

Flow Japan Community | T. Arakawa Medium に、Flow の Dapps 開発の記事あります 18 https://medium.com/flow-japan/flow-dapps-dev-3f042ba3b8d2

Slide 19

Slide 19 text

Flow Japan Community | T. Arakawa Flow らしいアプリについて

Slide 20

Slide 20 text

Flow Japan Community | T. Arakawa Flow らしいアプリってどういうの? 20 • コラボレーション コンポーザビリティの高さは類を見ない コラボしないアプリはもったいない • 所有している実感 自分のストレージにあって、自分しか操作できない感覚 • オブジェクト指向のその先 いまだかつてないデジタル世界の唯一感の表現

Slide 21

Slide 21 text

Flow Japan Community | T. Arakawa 現状: ユーザビリティ vs コンポーザビリティ 21 • Dapper Labs は、ブロックチェーンを意識させないアプリを作りたい → カストディ型のアプリ内ウォレットが主流   NBA Top Shot(Dapper Wallet)/ VIV3(Magic) • Cadence 言語はコンポーザビリティが優れている → しかし現状、アプリ内ウォレットを使ったプロダクトが多いため   プロダクト間の連携が進んでいない・・・

Slide 22

Slide 22 text

Flow Japan Community | T. Arakawa Cadence Cup の回顧録 22 https://joshuahannan.medium.com/a-retrospective-of-the-cadence-cup-3d99dcb2431e

Slide 23

Slide 23 text

Flow Japan Community | T. Arakawa Memorable NFT(Cadence Cup 2020 Challenge #1 提出作品) 23 https://play.onflow.org/0ab5fdbf-ec3c-4e90-9d43-065587e5aef8 提出した説明(日本語訳): 私は記念切手をいくつか持っています。素敵なデザインなので使いたいのですが、 使うと手元から消えてしまうので、ジレンマを感じています。 このジレンマは、切手を持っていたという事実を記録することで解決できるかもしれません。 そこで、「Memorable NFT(思い出の NFT)」を提案します。 これは、NFTを所有している人が、参照のみ可能な NFT を発行できる機能です。 Memorable NFTは、オリジナルの NFT と同じ ID とメタデータを持っていますが、 ストレージの異なる場所に保存されているため、コピーであることが明示されています。 今後、過去に所有していた NFT を、ショーケースのように綺麗にディスプレイできる ビューアが出てくることを期待しています。 (実際、過去のトランザクションを追えば、誰が過去にそのトークンを持っていたか  わかりますが、私はアクセスのしやすさを重視しています。)

Slide 24

Slide 24 text

Flow Japan Community | T. Arakawa Memories of NFT(Cadence Cup 2020 Challenge #3 提出作品) 24 https://docs.google.com/presentation/d/1E9zo9MfREQvOC17VJnCqCAjJhP5twLzBdjaGgzXCxuI/edit?usp=sharing

Slide 25

Slide 25 text

Flow Japan Community | T. Arakawa まとめ的なもの 25 • Flow で使われている Cadence 言語はおもしろい • まだまだ Cadence のおもしろさを活かしたプロダクトが少ない • Flow 開発コミュニティとしていろいろ活動やってるので ウォッチしてみてください YouTube: https://www.youtube.com/channel/UCzqVseWmvmLizVYO5iO-C1A Medium: https://medium.com/flow-japan Connpass: https://flow-japan-community.connpass.com Twitter: https://twitter.com/arandoros https://twitter.com/tokchin