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
130
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
cris: demo app for Ethereum smart contract
@Aizu.go#2
ktr
January 11, 2018
More Decks by ktr
See All by ktr
詳解 MCP Go SDK / MCP Go SDK
ktr_0731
3
630
あまり知られていない MCP 仕様たち / MCP specifications that aren’t widely known
ktr_0731
0
600
CLI ツールを Go ライブラリ として再実装する理由 / Why reimplement a CLI tool as a Go library
ktr_0731
3
1.6k
激動の一年を通じて見えてきた「技術でリードする」ということ
ktr_0731
8
11k
Monorepo における Go テストの差分実行 / Running Differential Go Tests in a Monorepo
ktr_0731
1
440
Designing libraries in Go way
ktr_0731
6
1.6k
Go Modules and Proxy Walkthrough
ktr_0731
8
27k
ソフトウェアの複雑さに立ち向かう技術 / Tackling software complexity
ktr_0731
0
240
Fuzzy finder as a Go library
ktr_0731
3
6.3k
Other Decks in Programming
See All in Programming
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
700
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.2k
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
210
Language Server 使ってる? 〜VSCode と Zed の場合〜 / Are you using a Language Server? ~For VS Code and Zed~
handlename
0
780
Oxlintのカスタムルールの現況
syumai
6
1.1k
Contextとはなにか
chiroruxx
0
280
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
180
Inside Stream API
skrb
1
680
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
250
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
230
New "Type" system on PicoRuby
pocke
1
810
AI駆動開発で崩れていくコードベースを立て直す
kyoko_nr_nr
1
450
Featured
See All Featured
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
270
How to build a perfect <img>
jonoalderson
1
5.6k
It's Worth the Effort
3n
188
29k
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.5k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1.1k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
200
How GitHub (no longer) Works
holman
316
150k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
250
Technical Leadership for Architectural Decision Making
baasie
3
400
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 について思うこと • スマートコントラクトで完結させないと本来のメリットが低減する気がする • いくら堅牢でも本体やスマコンの脆弱性があったら意味がない • パフォーマンスの問題 現状はアプリケーションのスパイスとして使うのが良いと思う