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

Flow Dapps Dev / Flow ブロックチェーン Dapps 開発

Ara
April 22, 2021

Flow Dapps Dev / Flow ブロックチェーン Dapps 開発

Flow Dapps Dev / Flow ブロックチェーン Dapps 開発

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

ブロックチェーンの処理を4種類のノードに分割することで、ネットワークのパフォーマンスを改善
https://medium.com/dapperlabs/enter-the-octagon-ufc-on-flow-brings-mma-to-crypto-480618408510

チュートリアル と プレイグラウンド が充実!
https://play.onflow.org/

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

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

Cadence Cup の回顧録
https://joshuahannan.medium.com/a-retrospective-of-the-cadence-cup-3d99dcb2431e

Memorable NFT(Cadence Cup 2020 Challenge #1 提出作品)
https://play.onflow.org/0ab5fdbf-ec3c-4e90-9d43-065587e5aef8

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

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

Ara

April 22, 2021
Tweet

More Decks by Ara

Other Decks in Programming

Transcript

  1. 2 Takamasa Arakawa • Metaps エンジニア Ex. 富士ゼロックス • Solidity

    / Cadence / Node.js / Vue / Java / Rails / SRE • • • DJT お手伝いで Flow の KMS ウォレット作ったり 開発 → Coincheck へ 開発コミュニティリード 自己紹介
  2. Flow Japan Community | T. Arakawa 今日話すこと 3 • Flow

    を使った Dapps 開発の基礎 • Flow らしいアプリについて
  3. 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 ノードも存在する
  4. Flow Japan Community | T. Arakawa Cadence:Flow で使われるプログラミング言語 7 •

    ブロックチェーンプログラミングの新しいパラダイムのために 設計された言語 • コードを 安全、セキュア、親しみやすくする機能がある: ◦ リソースオブジェクト ◦ 強力な静的型システム ◦ 関数とトランザクションにおける 事前/事後条件
  5. Flow Japan Community | T. Arakawa 従来の所有モデル 8 中央台帳で所有権を管理する 例:すべての

    CryptoKitties は1つのコントラクトで管理されている コントラクト #1
 #2
 mapping (uint256 => address) :
  6. Flow Japan Community | T. Arakawa 従来の所有モデルの課題 9 • スケールできない(Sharding

    のボトルネックになる) • バグが生まれる(マップの書き換えミスが起こりうる) コントラクト #1
 #2
 mapping (uint256 => address) : コントラクト EOA : コントラクト 参照 更新 更新
  7. Flow Japan Community | T. Arakawa リソースのルール 11 1. 各リソースは、常に1つの場所に存在する

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

    • 副次的な利点: ◦ 所有権のカスタマイズが容易 (例えば EIP-998 は既存 ERC-721 に適用できない) ◦ ストレージ利用料の徴収が容易 (Ethereum の State Rent は既存 ERC-721 に適用できない) ◦ 再入性バグが発生しない
  9. Flow Japan Community | T. Arakawa Flow ではアカウントごとにストレージがある 13 アカウント

    Code Storage Public デプロイされたコントラクトが入る リソースオブジェクトが入る 自分しか操作できない リソースオブジェクトの参照が入る 誰でもみられる&参照で定義された操作ができる
  10. Flow Japan Community | T. Arakawa Flow におけるプログラムの種類 14 1.

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

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

    開発の記事あります 18 https://medium.com/flow-japan/flow-dapps-dev-3f042ba3b8d2
  13. Flow Japan Community | T. Arakawa Flow らしいアプリってどういうの? 20 •

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

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

    https://joshuahannan.medium.com/a-retrospective-of-the-cadence-cup-3d99dcb2431e
  16. 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 を、ショーケースのように綺麗にディスプレイできる ビューアが出てくることを期待しています。 (実際、過去のトランザクションを追えば、誰が過去にそのトークンを持っていたか  わかりますが、私はアクセスのしやすさを重視しています。)
  17. Flow Japan Community | T. Arakawa Memories of NFT(Cadence Cup

    2020 Challenge #3 提出作品) 24 https://docs.google.com/presentation/d/1E9zo9MfREQvOC17VJnCqCAjJhP5twLzBdjaGgzXCxuI/edit?usp=sharing
  18. 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