Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Blockchain x Slack botでピアボーナス
Search
ryo0301
August 21, 2020
Technology
290
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Blockchain x Slack botでピアボーナス
ryo0301
August 21, 2020
More Decks by ryo0301
See All by ryo0301
Quorum on AWS
ryo0301
0
650
国交省のデータをSolrで検索
ryo0301
3
1.3k
Other Decks in Technology
See All in Technology
Sigmaユーザーのための有用リソース一挙公開 & Sigmaで使えるMCP #sigma_ucj /useful-resources-for-sigma-computing-users-and-mcps-with-sigma
shinyaa31
0
180
多摩川(.dev)ランニング入門 / Tamagawa.dev#3
fujiwara3
3
450
「重なり」は迎える側がつくる ― 人もAIエージェントも歓迎するプロダクトエンジニアリング ―
go0517go
PRO
0
280
2026-09-04 SRE Tech Talk #15 怠惰なTerraform / Lazy Terraform
masasuzu
0
230
なぜSRE・セキュリティは評価されないのか?守りの組織を事業成長エンジンに変えた実践
cscengineer
PRO
3
2.4k
Screen Lens - 今見てる画面を翻訳する
komagata
0
220
Reactの設計論
uhyo
14
7.4k
Where Is JetBrains AI Heading- — Central CLI, Air Alpha, and the Agentic Development Stack
x5gtrn
PRO
0
150
AI 駆動 Terraform 開発/SRE_BizReach_MIXI_2
visional_engineering_and_design
3
2k
「図書館」という名前のままでいいのか -Code4Lib JAPANカンファレンス2026 アンカンファレンス報告- / Code4Lib JAPAN Conference 2026: Unconference Report
ykiyota
0
150
コスト最適化の「めんどくさい」を AWS FinOps Agent でチョット楽にする
classmethod_kaz
0
300
AIオーケストレーションを活用した 開発ワークフローの設計と実践
bqnq
0
130
Featured
See All Featured
Practical Orchestrator
shlominoach
191
12k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
AI: The stuff that nobody shows you
jnunemaker
PRO
9
980
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
How to train your dragon (web standard)
notwaldorf
97
6.8k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
280
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.2k
Thoughts on Productivity
jonyablonski
76
5.4k
How to Talk to Developers About Accessibility
jct
2
540
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
880
Deep Space Network (abreviated)
tonyrice
0
300
Transcript
Blockchain x Slack bot で ピアボーナス
自己紹介 ❏ 物件検索エンジン ❏ AWS移行 ❏ 不動産情報コンソーシアム ADRE ❏ 社内通貨
LIFULL COIN 株式会社 LIFULL 秀野 亮 (@ryo0301)
目次 ❏ 社内通貨 LIFULL COIN ❏ 在宅勤務での課題 ❏ Slackでのピアボーナス機能 ❏
ブロックチェーンの送金の仕組み ❏ ピアボーナスの仕組み ❏ 余談:自作リバースプロキシ
社内通貨 LIFULL COIN
社内通貨 LIFULL COIN ❏ LIFULL COIN Wallet(口座管理アプリ) ❏ 残高の確認 ❏
送金と取引履歴 ❏ ベーシックインカム ❏ 投票(投げ銭)
動機:在宅勤務が始まって
在宅勤務でのコミュニケーション課題 ❏ コロナ禍で待望の在宅勤務が始まった ❏ コミュニケーションにまつわる課題 ❏ 周りが何やってるのかよくわからない ❏ 社会適合者の方々の精神が不安定に ピアボーナスとしてLIFULL
COINを送り合い、 状況の共有や、いいねができる仕組みを用意した
ピアボーナス
ピアボーナスの仕組み リアクション LIFULL COIN Bot リリース完了! (カチャカチャ..ターンッ イイネ
ブロックチェーンの送金の仕組み 秘密鍵 公開鍵 アカウント アドレス 0x123AbC… 0x123AbC… 署名 トランザクション (誰が/誰に/いくら)
0xZyx098…
スマートコントラクト
システム構成図
UI:アプリのホームタブ&メッセージタブ
UI:未登録者勧誘メッセージ&プロフィール登録モーダル
@slack/bolt 起動サンプル const options = { signingSecret: process.env.SLACK_SIGNING_SECRET, clientId: process.env.SLACK_CLIENT_ID,
clientSecret: process.env.SLACK_CLIENT_SECRET, stateSecret: process.env.SLACK_STATE_SECRET, scopes: require("../config/bot_scopes.json"), installationStore: new DynamoDBInstallationStore(), }; const app = new App(options); app.receiver.app.get("/", (_, res) => res.sendStatus(200)); app.event("reaction_added", reactionAddedListener); (async () => await app.start(3000))();
web3.js 送金サンプル const rawTx = { from: this.#account.address, to: this.#contract.options.address,
data: this.#contract.methods.proxyTransfer(to, val).encodeABI(), }; rawTx.gas = await this.#web3.eth.estimateGas(rawTx); const signedTx = await this.#account.signTransaction(rawTx); this.#web3.eth.sendSignedTransaction(signedTx.rawTransaction);
余談:開発用リバースプロキシ
ローカルでの開発にリバースプロキシは必須 ❏ ローカルのSlackアプリとSlack botの通信をどうするか? ❏ Slackアプリ → Slackサーバー → Slack
bot ❏ リバースプロキシ+リモートポートフォワーディング ❏ リバースプロキシサービス ❏ ngrok, serveo, localhost.runなどあるが社内の情報を流したくない ❏ serveo 止まってる・・・ ❏ 外部サービス利用申請だすのが面倒くさい&許可おりる気がしない AWS VPC上にリバースプロキシを立てることにした
気軽に立てて、気軽に死んで欲しい ❏ 機能 ❏ 自動DNS登録 ❏ 自動HTTPS ❏ 自動シャットダウン ❏
指定した上流ポートにプロキシ ❏ ホスト名/ドメイン名やシャットダウン待機時間は .env に設定 ❏ ワンライナーで起動できる $ yarn -s generate 2> /dev/null | aws ec2 run-instances --launch-template LaunchTemplateName=dev-reverse-proxy --user-data file:///dev/stdin
リモートポートフォワーディング ❏ EC2 Instance Connect ❏ 公開鍵を送信すると60秒間だけログインできる機能 ❏ Session Manager
❏ WebSocketをトンネルしてSSHできる機能 ❏ VPC Endpoint for Session Manager ❏ Basionサーバー不要でSSH接続できる ❏ ワンライナーで接続できるようにした $ saw ssm start-ssh-session --forward remote
None