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
Blockchain x Slack botでピアボーナス
Search
ryo0301
August 21, 2020
Technology
280
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
640
国交省のデータをSolrで検索
ryo0301
3
1.3k
Other Decks in Technology
See All in Technology
世界、断片、モデル。そして理解
ardbeg1958
1
120
アカウントが増えてからでは遅い? ~ マルチアカウント統制の勘所 ~
kenichinakamura
0
230
ローカルLLMとLINE Botの組み合わせ その3 / LINE DC Generative AI Meetup #8
you
PRO
0
130
Genie Ontologyは銀の弾丸かを考える / Is Genie Ontology a Silver Bullet?
nttcom
0
300
“それは自分の仕事じゃない"を越えて行け
yuukiyo
1
340
大量データに対しても、生成AIを用いてリーズナブルにデータ加工をしたい!Databricksのai_queryについて調べてみた
kamoshika
1
140
インフラ寄りSREでも 開発に踏み出せる〜境界を越えてユーザー体験に向き合いたい〜
sansantech
PRO
2
3.8k
Kaggleで成長するために意識したこと
prgckwb
2
350
Alphaモジュール使っていいのかい!?いけないのかい!?どっちなんだいっ!?
watany
1
130
AIレビューはどこまで任せられるのか?自動化と人が背負うレビューの境界
sansantech
PRO
3
850
Keeping applications secure by evolving OAuth 2.0 and OpenID Connect
ahus1
PRO
1
160
第67回コンピュータビジョン勉強会CVPR2026読会前編
tsukamotokenji
0
100
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
270
Being A Developer After 40
akosma
91
590k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Side Projects
sachag
455
43k
What's in a price? How to price your products and services
michaelherold
247
13k
Technical Leadership for Architectural Decision Making
baasie
3
440
A designer walks into a library…
pauljervisheath
211
24k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
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