OKIMOCHI (see here for English manual)
日頃の感謝の気持ちを、少額のビットコインという形にして、Slack上の従業員同士で送り合えるbotアプリケーション。
事務所への配送業者の来訪に席の配置の関係で特定の社員が応対をする。給湯室の片付けを気付いた社員が行う。特別な事ではなく業務とも言えないけれど、従業員のささやかな善意や気遣いで企業や事務所の運営が成り立っているケースが多々あります。そのような善意へのありがとうという感謝の気持ちに加え、少額のビットコインの送付ができるSlackbotが「OKIMOCHI」です。
- 送付の原資となるビットコインをメインウォレットに入金する(会社の福利厚生用の資金を纒めて入金するような形を想定しています)※ 原資となるビットコインは利用者の誰から入金されても同じウォレットに入金されます。
- 送付のトリガーとなる指定のスタンプや指定コマンドを入力して送金する。
- 一定のビットコインが貯まったら、指定した外部のビットコインウォレットへ引き出す。※その他の詳しい使い方はヘルプコマンドにて参照頂けます。
このアプリケーションは各利用者の善意に基づいております。二人以上の利用者が結託した場合、メインウォレット内の資金を盗むことができます。(自分から自分に対する送金は不可だが、お互いに送金し合うことでメインウォレット内の資金を盗むことが可能)預け金の合計は小額にとどめ、信頼できる仲間内のチームで使用してください!
- Slack Appsの作成/Webhook URLを発行
Slack AppsとWebhook URLを slack APIにて作成
Slack Botの管理ページ からAdd Configurationをクリックし、
API Token
を発行します。Client ID
Client Secret
Verification Token
Webhook URL
API Token
をメモ - Protlyのアカウント作成・API keyの発行
ビットコインの獲得ランキングなどを図化するための作図アプリ Plotly のアカウントを作成し、API Keyを発行する。
API Key
username
をメモ - インフラ準備
- Gitをinstallし、Repositoryをclone
- 環境変数を更新
.env_example
をコピーし、環境変数を設定
cp .env_example .env # modify .env with your own slack bot token
変数名 | 内容 |
---|---|
SLACK_CLIENT_ID | Slack Client ID を入力 |
SLACK_CLIENT_SECRET | Slack Client Secret を入力 |
VERIFICATION_TOKEN | Slack Verification Token を入力 |
EMOJI | Slack Botのアイコンを設定 |
TOKEN | Slack BotのAPI Token を入力 |
WEBHOOK_URL | Slack Webhook URL を入力 |
DEFAULT_CHANNEL | デフォルトのSlackチャンネルを入力 |
ADMIN_USERNAME | 管理者となるSlack ユーザ名を入力 |
BITCOIND_HOST_DIR | ブロックチェーンや秘密鍵などの格納先。デフォルトは ~/.bitcoin |
BITCOIND_URI | 既にbitcoindサーバをお持ちの場合、URIを入力 |
BITCOIND_USERNAME | 既にbitcoindサーバをお持ちの場合、USERNAMEを入力。新規の場合、任意の文字列を入力(十分長くて推測できないものを推奨) |
BITCOIND_PASSWORD | 既にbitcoindサーバをお持ちの場合、PASSWORDを入力。新規の場合、任意の文字列を入力(十分長くて推測できないものを推奨) |
BITCOIND_NETWORK | 本番用の場合は mainnet 、試験用の場合は testnet |
PLOTLY_API_KEY | Plotlyの API Key を入力 |
PLOTLY_API_USER | Plotlyの username を入力 |
MESSAGE_LANG | 日本語と英語を用意。日本語は ja 、英語は en |
MINIMUM_TX | この値に達したらトランザクションを初めて発行する(支払いごとに発行しないのは、手数料節約のため) |
- Docker環境の構築、dokcer-compose up(bitcoindの同期に約10時間程度必要)
docker network create -d bridge --subnet 172.0.0.0/24 --gateway 172.0.0.1 okimochi-network
COMPOSE_HTTP_TIMEOUT=45000 docker-compose up --build
- 稼働確認
# Slack チャンネルにて@okimochiを招待
/invite @okimochi
# 使い方をリクエスト
@okimochi help
okimochi/locale/*.js
の emoji_to_BTC_map
を編集してください。
okimochi/config.js
の minimumTxAmount
を設定してください。
okimochi/config.js
の MAX_TIP_AMOUNT
を設定してください。
- Memory ... 3GB
- Storage ... 160GB(
BITCOIND_HOST_DIR
で指定するブロックチェーンデータ容量) + 2GB (ユーザーデータベース)
CAMPFIREでは社内における試験を実施し、1週間で約100件の「OKIMOCHI」が送られました。 試験概要は以下の通りです。
- 試験期間 : 2017年7月25日 〜 2017年8月11日
- 参加従業員数 : 約40名
- tip数(トランザクション数):200件
- 1度の送付金額(botの設定で可変) : 約30円
- ビットコインの原資 : 約60,000円
ソースコードのコメント、GitHub のイシューやプルリクエストでは、日本語か英語を使用して下さい。
- ローカルでのセットアップ
cp .env_example .env
# 環境変数を設定後
docker network create -d bridge --subnet 172.0.0.0/24 --gateway 172.0.0.1 okimochi-network # 3つのdockerコンテナが走るネットワークの作成
docker-compose up -d bitcoind mongo # アプリの後ろで走るコンテナをバックグラウンドで走らせる。
# bitcoindの初回同期にはかなり時間がかかるので、同期状況を見たい場合は-dオプションなしでフォアグラウンドでの実行をおすすめします。
COMPOSE_HTTP_TIMEOUT=45000 docker-compose up --build okimochi # アプリ本体を立ち上げる
- 今後の想定ToDo 作者側で想定しているToDoは、以下となります。 TODO
- ユニットテスト ...
cd okimochi && npm test
- 結合テスト&ユニットテスト ...
./test.sh
MIT © CAMPFIRE and Joe Miyamoto