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
110
cris: demo app for Ethereum smart contract
@Aizu.go#2
ktr
January 11, 2018
Tweet
Share
More Decks by ktr
See All by ktr
激動の一年を通じて見えてきた「技術でリードする」ということ
ktr_0731
8
9.4k
Monorepo における Go テストの差分実行 / Running Differential Go Tests in a Monorepo
ktr_0731
1
190
Designing libraries in Go way
ktr_0731
7
1.5k
Go Modules and Proxy Walkthrough
ktr_0731
8
27k
ソフトウェアの複雑さに立ち向かう技術 / Tackling software complexity
ktr_0731
0
210
Fuzzy finder as a Go library
ktr_0731
3
5.9k
つよくてニューゲーム / NewGame++
ktr_0731
0
1k
やはり俺の Go アプリケーション設計はまちがっている。 / My Go Application Design Is Wrong, As I Expected
ktr_0731
13
3.6k
GopherCon2018
ktr_0731
2
1.8k
Other Decks in Programming
See All in Programming
GraphRAGの仕組みまるわかり
tosuri13
7
450
Select API from Kotlin Coroutine
jmatsu
1
180
Bytecode Manipulation 으로 생산성 높이기
bigstark
2
360
ReadMoreTextView
fornewid
1
450
GoのGenericsによるslice操作との付き合い方
syumai
2
680
データの民主化を支える、透明性のあるデータ利活用への挑戦 2025-06-25 Database Engineering Meetup#7
y_ken
0
280
Cline指示通りに動かない? AI小説エージェントで学ぶ指示書の書き方と自動アップデートの仕組み
kamomeashizawa
1
560
Go Modules: From Basics to Beyond / Go Modulesの基本とその先へ
kuro_kurorrr
0
120
C++20 射影変換
faithandbrave
0
500
関数型まつり2025登壇資料「関数プログラミングと再帰」
taisontsukada
2
840
たった 1 枚の PHP ファイルで実装する MCP サーバ / MCP Server with Vanilla PHP
okashoi
0
140
Spring gRPC で始める gRPC 入門 / Introduction to gRPC with Spring gRPC
mackey0225
2
520
Featured
See All Featured
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.8k
Why Our Code Smells
bkeepers
PRO
337
57k
A Tale of Four Properties
chriscoyier
160
23k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
920
Testing 201, or: Great Expectations
jmmastey
42
7.5k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
137
34k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Balancing Empowerment & Direction
lara
1
340
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.5k
VelocityConf: Rendering Performance Case Studies
addyosmani
330
24k
Building an army of robots
kneath
306
45k
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 について思うこと • スマートコントラクトで完結させないと本来のメリットが低減する気がする • いくら堅牢でも本体やスマコンの脆弱性があったら意味がない • パフォーマンスの問題 現状はアプリケーションのスパイスとして使うのが良いと思う