いつもお世話になっております。検索エンジンチームの秀野です。
試験的な取り組みとして、社内通貨LIFULL COINを使って新規事業提案制度の審査会で投げ銭投票を行いました。結構時間が開いてしまったのですが、その時の紹介をしたいと思います。
LIFULL COINについては、過去に紹介したことがあるので、よろしければこちらの記事もご覧ください。
社内通貨LIFULL COIN x Slackでピアボーナス - LIFULL Creators Blog
新規事業提案制度SWITCHとは
LIFULLには、SWITCHという新規事業提案制度があります。年間150件以上の提案があり、そのいくつかは事業化もされています。
事業化フロー中に何回か審査があり、最終審査会では従業員も発表を聴くことができます。その最終審査会で、LIFULL COINを使って従業員に投げ銭投票をしてもらいました。 投げ銭投票を導入することで、従業員も評価に参加することができるようになります。 それによって、従業員はより当事者意識を持って自社の新規事業提案を聞くことができますし、発表者にとってもより多くの人の関心度や評価を知ることができるのではないかと思います。
SWITCH - LIFULLの社内新規事業提案制度 | LIFULL STARTUP STUDIO
LIFULL COINで出来たこと
投げ銭投票の説明をする前に、簡単にLIFULL COINで何が出来るか説明します。LIFULL COINには通貨として基本的な機能があります。
- 社内通貨として
- コインの発行(Mint)
- コインの焼却(Burn)
- Webベースの口座管理アプリケーション
- 口座の開設
- 残高確認
- 送金
- 送金履歴
- コインの分配(クールダウン型ベーシックインカム)
- Slack bot
- リアクションに連動したコイン付与(ピアボーナス)
- ピアボーナス受信通知
- 残高確認
- ピアボーナスランキング
なので、投げ銭投票を行うには、下記のような手順を踏めば比較的簡単に実現できると思っていました。この時までは。
- 発表者の口座、聴衆(従業員)の各口座、を作成
- 聴衆の口座にコインを投票用に分配
- 聴衆が自身の口座から、発表者の口座にコインを送金(投げ銭投票)
- 発表者の口座ごとに投票金額を集計
最初の投げ銭投票
審査会での投げ銭投票は何度か行われました。
聴衆はスマホ片手に発表を聴き、任意のタイミングでコインを投げ銭します。投げ銭は、手元の10000コインから定額(100コイン/500コイン/1000コイン)をボタン1つで送ることができます。 発表を聞いていて感心したら、そのタイミングで1000コインボタンを3回押して3000コイン投げ銭する、そんなイメージです。
出金を行えるのは、秘密鍵を使って振込先となるスマートコントラクトをデプロイした発表者のみです。期間指定で着金と出金を制御して、投げ銭と総取りが可能な期間を制御しました。
不正投票に対する懸念点
LIFULL COINはブロックチェーンで管理しているので、送金を行う場合は秘密鍵での署名が必要になります。当時かぶれていた私は秘密鍵をユーザー側で管理したいと思い、ブラウザのローカルストレージに保存するという罪を犯してしまいました。ダメなことは分かっていたのですが、社内システムだし、鍵が盗まれても実害はないし、一旦いいだろうという判断(?)です。
その結果、良くも悪くもブラウザのプロファイル単位で口座開設が可能になり、投げ銭投票の際に複数口座を開設し不正投票を行える、という懸念がありました。
LIFULL COINには、利用者全体の価値観で評価された価値にコインを発行するという目標もあったので、話し合いの結果従業員の価値観に任せてみることにしました。不正投票があったらあったで、そういうことだったというだけです。
ド直球の不正投票
審査会での投げ銭投票自体はつつがなく行われ、投票結果の発表、表彰まで無事に行われました。
しかし、結論から言ってしまうと、ここで優勝した発表者に対して不正投票が行われていました。複数の口座を開設し、コインを受け取り、短時間で大量に投げ銭するというド直球のものでした。いい負荷テストになりました(半壊した)。
ちなみに、投げ銭投票で優勝した発表者は、不正がなくても優勝していました。不正分のコインを差し引いても、最もコインを獲得していたのです。そのため、表彰は結果通りに行われました。
残念ながら人間はそんなに強くないようです。今回の件は次回への課題となりました。
最後の投げ銭投票
しばらくして、またSWITCHの審査会と投げ銭投票が行われました。前回の投票から基本的な仕組みは変わっていません。
前回、不正投票があったことから何らかの対策を考える必要がありました。いくつか案がでたものの、どれもコストがかかりそうだったので今回は「クアドラティックボーティング(Quadratic voting)」という投票方法を参考にして対策を考えてみました。以下QVと略します。
クアドラティックボーティング(Quadratic voting)とは
一言でいうと「金で票を買えるが、1票買うごとに価格がえらく高騰していく投票方法」です。 また、下記のような運用ルールがあります。
- 投票者は一定のコインを付与される
- 票を購入して投票できるし、買わずに蓄積することもできる
- 票を購入するのに必要なコインは となる
1票買うと1コイン、2票買うと4コイン、3票買うと9コイン、・・・というように合計 票を購入するのに必要なコインは となる仕組みです。 言い方を変えると、1票目は1コイン、2票目は3コイン、3票目は5コイン、・・・となります(これをMarginal Costと言います)。
QVについてはこちらの記事が詳しいです。 「個人が公共財に影響を及ぼすために支払うコストは、個人がもつ影響の割合ではなく、その二乗(quadratic)に基づく必要がある」というなぜ票数の二乗なのか、といった説明がなされています。
不正投票防止の工夫と欠点
QVにはいくつか欠点もあるようです。 コインを配布し蓄積ができることで、談合によりコインの融通や買収が行われやすい点です。 こういった問題は既存の投票でも起こりうるものの、1票目が安いことからコインの融通より投票者の買収のほうが行われやすそうです。
不正をなくす仕組みのせいで不正されては元も子もないので、投票者にはQVを導入することを伏せたまま投票してもらいました。 投票者は投票したコイン数がそのまま発表者の得票数になっていると思っているはずです(コイン数=得票数)。 実際は、投票されたコイン数の平方根を得票数として計算しました(=得票数)。
この仕組みでも、大量の投票があった場合は少なくない得票数に換算されてしまうのですが、前回の経験からその前にシステムが高負荷で全壊するはず、という確信がありました。
結果
まず、不正自体が行われませんでした・・・いや、それでよかったのですが。 発表から集計、表彰までつつがなく行われ無事に終了することができました。
QV自体の感想としては、今回の仕組みだと元々QVのメリットの1つである「投票者個人の思いの丈」を乗せるような投票はできなくなるのですが、優先順位付けを行う投票では有効なのではないかなと思いました。 今回のように様々な社会課題に対する解決策が並び評価される場では、やはり投票者の関心度を票に乗せられるQV本来の仕組みが活きるように思います。
また、いずれ機会があれば集計処理だけでなく、票をNFT化して購入から投票まで実装することで、社会課題解決への共感や関心の高さを票に乗せられるような仕組みを作りたいと感じました。
LIFULLでは共に成長できるような仲間を募っています。 よろしければこちらのページもご覧ください。