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

cris: demo app for Ethereum smart contract

ktr
January 11, 2018

cris: demo app for Ethereum smart contract

@Aizu.go#2

ktr

January 11, 2018
Tweet

More Decks by ktr

Other Decks in Programming

Transcript

  1. ぼくのかんがえたさいきょうの ファイル共有サイト @ktr_0731

  2. $ whoami @ktr_0731 / ktr0731 s123 at u-aizu STEINS;GATE はてなインターン

    2017 ソラミツ株式会社 サーバサイド
  3. ktr0731/salias • サブコマンドに対してエイリアスをかけられるツール

  4. None
  5. ktr0731/evans • 既存クライアントより表現力豊かな gRPC クライアント • いい感じに補完が出る

  6. None
  7. Blockchain すごい

  8. P2P, PoX, 改竄が検出可能・修正可能…

  9. なにか作ってみたい

  10. (なんとなく) ファイル共有サイトをつくりたい

  11. めちゃくちゃ堅牢なものがつくれそう

  12. ktr0731/CRIS

  13. [WIP] ktr0731/CRIS

  14. [WIP] CRIS

  15. アーキテクチャ的なもの • Web フロントエンド • サーバサイド • Ethereum

  16. フロントエンド • ファイルアップロードできる画面 • Riot.js

  17. フロントエンド • ファイルアップロードできる画面 • Riot.js • 進捗を奪われた最大の原因

  18. バックエンド • Go • Clean Architecture + Hexagonal Architecture /

    DDD • フロントとコンテンツデータをやりとりする • データは暗号化して保存して、サーバが内容を見れないようにしたかった
  19. Ethereum • Solidity (きびしい) でスマートコントラクトを書いて、EVM にデプロイする • 今回は、ファイルの改竄検知のためだけにつかう

  20. • 全体のアーキテクチャ • Ethereum • Geth • Truffle, Solidity •

    フロントエンド • Riot.js • しんどいところ • バックエンド • CA, HA, DDD
  21. 全体のアーキテクチャ esa.io

  22. Ethereum • Geth: go-ethereum • Truffle: Ethereum のスマコンのためのフレームワーク • Solidity:

    Ethereum 上で動くスマートコントラクト用の言語 • しんどい
  23. フロントエンド • Ethereum 上のコントラクトへ直接アクセスする • サーバに依存したくなかった • Riot.js は書くのが楽で良い •

    ConsenSys/truffle-solidity-loader がメンテされてなくてまともに動かない • 全体的にフロントエンドが苦手なので難しい • メインのロジックを結構やっている
  24. サーバサイド • Go で初めて CA, HA, DDD を取り入れてみた • わりといい感じに書ける

    • 一番実装が少なかったけど、一番楽しかった
  25. Clean Architecture

  26. Hexagonal Architecture

  27. DDD • (CA でいう) エンティティ層をドメイン層と見なす • ドメインが小さいのであまり DDD の意味がなかったかもしれない

  28. Blockchain の使い方は正しいか? • あまり意味がない • 基本的な構造は共通している (気がする) • KYC

  29. Blockchain について思うこと • スマートコントラクトで完結させないと本来のメリットが低減する気がする • いくら堅牢でも本体やスマコンの脆弱性があったら意味がない • パフォーマンスの問題

  30. Blockchain について思うこと • スマートコントラクトで完結させないと本来のメリットが低減する気がする • いくら堅牢でも本体やスマコンの脆弱性があったら意味がない • パフォーマンスの問題 現状はアプリケーションのスパイスとして使うのが良いと思う