Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
cris: demo app for Ethereum smart contract
Search
ktr
January 11, 2018
Programming
0
100
cris: demo app for Ethereum smart contract
@Aizu.go#2
ktr
January 11, 2018
Tweet
Share
More Decks by ktr
See All by ktr
Monorepo における Go テストの差分実行 / Running Differential Go Tests in a Monorepo
ktr_0731
0
39
Designing libraries in Go way
ktr_0731
6
1.5k
Go Modules and Proxy Walkthrough
ktr_0731
8
26k
ソフトウェアの複雑さに立ち向かう技術 / Tackling software complexity
ktr_0731
0
170
Fuzzy finder as a Go library
ktr_0731
3
5.6k
つよくてニューゲーム / NewGame++
ktr_0731
0
920
やはり俺の Go アプリケーション設計はまちがっている。 / My Go Application Design Is Wrong, As I Expected
ktr_0731
13
3.5k
GopherCon2018
ktr_0731
2
1.7k
Evans: more expressive gRPC client
ktr_0731
2
440
Other Decks in Programming
See All in Programming
rails_girls_is_my_gate_to_join_the_ruby_commuinty
maimux2x
0
200
Lessons by WebAssembly app in production on CDN Edge Computing Service
tetsuharuohzeki
0
210
unique パッケージから学ぶ interning と weak reference @ Asakusa.go#3
karamaru
2
810
AndroidアプリのUIバリエーションをあの手この手で確認する / Check UI variations of Android apps by various means
tkmnzm
1
140
メモリ最適化を究める!iOSアプリ開発における5つの重要なポイント
yhirakawa333
0
410
あなたのアプリ、ログはでてますか?あるいはログをだしてますか? (Funabashi.dev用 軽量版)
uzulla
2
120
What you can do with Ruby on WebAssembly
kateinoigakukun
0
160
【TID2024】模擬講義:プログラマと一緒にゲームをデザインしてみよう!
akatsukigames_tech
0
640
Amazon BedrockでサーバレスなAIお料理ボットを作成する!!
tosuri13
0
220
長期運用プロダクトの開発速度を維持し続けるためのリファクタリング実践例
wataruss
8
2.7k
o1モデルのプロンプトエンジニアリングって?
ktc_wada
0
180
『ドメイン駆動設計をはじめよう』中核の業務領域
masuda220
PRO
5
990
Featured
See All Featured
Making Projects Easy
brettharned
113
5.8k
How to Think Like a Performance Engineer
csswizardry
16
960
Large-scale JavaScript Application Architecture
addyosmani
508
110k
Learning to Love Humans: Emotional Interface Design
aarron
270
40k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
502
140k
Git: the NoSQL Database
bkeepers
PRO
425
64k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
278
13k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
166
48k
Build your cross-platform service in a week with App Engine
jlugia
228
18k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
25
3.9k
WebSockets: Embracing the real-time Web
robhawkes
59
7.3k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
8.9k
Transcript
ぼくのかんがえたさいきょうの ファイル共有サイト @ktr_0731
$ whoami @ktr_0731 / ktr0731 s123 at u-aizu STEINS;GATE はてなインターン
2017 ソラミツ株式会社 サーバサイド
ktr0731/salias • サブコマンドに対してエイリアスをかけられるツール
None
ktr0731/evans • 既存クライアントより表現力豊かな gRPC クライアント • いい感じに補完が出る
None
Blockchain すごい
P2P, PoX, 改竄が検出可能・修正可能…
なにか作ってみたい
(なんとなく) ファイル共有サイトをつくりたい
めちゃくちゃ堅牢なものがつくれそう
ktr0731/CRIS
[WIP] ktr0731/CRIS
[WIP] CRIS
アーキテクチャ的なもの • Web フロントエンド • サーバサイド • Ethereum
フロントエンド • ファイルアップロードできる画面 • Riot.js
フロントエンド • ファイルアップロードできる画面 • Riot.js • 進捗を奪われた最大の原因
バックエンド • Go • Clean Architecture + Hexagonal Architecture /
DDD • フロントとコンテンツデータをやりとりする • データは暗号化して保存して、サーバが内容を見れないようにしたかった
Ethereum • Solidity (きびしい) でスマートコントラクトを書いて、EVM にデプロイする • 今回は、ファイルの改竄検知のためだけにつかう
• 全体のアーキテクチャ • Ethereum • Geth • Truffle, Solidity •
フロントエンド • Riot.js • しんどいところ • バックエンド • CA, HA, DDD
全体のアーキテクチャ esa.io
Ethereum • Geth: go-ethereum • Truffle: Ethereum のスマコンのためのフレームワーク • Solidity:
Ethereum 上で動くスマートコントラクト用の言語 • しんどい
フロントエンド • Ethereum 上のコントラクトへ直接アクセスする • サーバに依存したくなかった • Riot.js は書くのが楽で良い •
ConsenSys/truffle-solidity-loader がメンテされてなくてまともに動かない • 全体的にフロントエンドが苦手なので難しい • メインのロジックを結構やっている
サーバサイド • Go で初めて CA, HA, DDD を取り入れてみた • わりといい感じに書ける
• 一番実装が少なかったけど、一番楽しかった
Clean Architecture
Hexagonal Architecture
DDD • (CA でいう) エンティティ層をドメイン層と見なす • ドメインが小さいのであまり DDD の意味がなかったかもしれない
Blockchain の使い方は正しいか? • あまり意味がない • 基本的な構造は共通している (気がする) • KYC
Blockchain について思うこと • スマートコントラクトで完結させないと本来のメリットが低減する気がする • いくら堅牢でも本体やスマコンの脆弱性があったら意味がない • パフォーマンスの問題
Blockchain について思うこと • スマートコントラクトで完結させないと本来のメリットが低減する気がする • いくら堅牢でも本体やスマコンの脆弱性があったら意味がない • パフォーマンスの問題 現状はアプリケーションのスパイスとして使うのが良いと思う