
先日よりお騒がせしております。
投票いただいている方が少しずつ増えてきていて大変ありがたいです。もしまだの方は試してもらえたらありがたいです。
さて、同投票botについての今後の方向性についてです。
機能としては現在、Discord Botによる投票機能+β版でSnapshot(立案時の票数での投票・事前登録などなく利用可能)と同機能を持つWebUIという形になっております。Discordアカウントを一度紐づけてしまえば今後同アドレスによる投票は逐一ウォレット接続せず行えるほか、従来のようなSnapshot型での投票も可能です(ただし後者は開発期間が短く、TCGVの仕様次第でも不安定になりうるため、一定期間の動作確認が済むまではβ版)
技術的な仕様の話をすると、Express(静的ページ)+Node.js(サーバー:Web3 周りはether.js)+PostgreSQL(データベース)の比較的オーソドックスな構成で、コードはGithubの単一レポジトリで管理しており、任意のサーバーでデプロイさえすればすぐに起動できるようにしております。
EIP-712の署名での認証をDiscord紐付けでも投票でも使っており、セキュリティ面は気を使っておりますが、質問があったため一応記載しておくと、ウォレットにおける署名では
『署名したメッセージ(署名画面に表示される文章そのもの)』+『署名したウォレットアドレス』+『それが本人であることを確認するための暗号(署名内容ごとに異なる)』がサーバーに送られ、暗号と公開鍵という公開情報とあわせると『確かに本人』と確認できるが、それがあっても『それが本人であることを確認するための暗号』を新しく生み出すことはできないため、結局は『署名したメッセージ(署名画面に表示される文章そのもの)』+『署名したウォレットアドレス』+『それがなりすましでないこと』のみが確認されます。トランザクションは発生しえないため、これ自体でwallet内の資金がリスクにさらされる性質のものではありません
現状で機能としてはある程度揃ったと思いますし、基本的に今後は現在の機能の改善や、不具合修正などがメインになってくるのではと思っています。
さて、本Botの最終型としては、CG社へのコードもしくはサーバーごとの移管もしくは共同管理で考えています。先述の通り、本コードは、githubで単一のレポジトリにまとめてあり、任意のタイミングでCG社社員と共有可能です(もちろん他社転用しないでね、とかの約束事は要りますが)。CG社のサーバーで同コードを起動することももちろん可能と思います。
セキュリティに関して記載した部分のように、「ユーザーのリスクになりえない、かつそれがユーザーからもわかる」ように設計しているとは言え、全ユーザーがWeb3や暗号技術に詳しいわけではないと思うので、信用できる運用母体があるに越したことはないと思っています
(あと、最後に投票ウォレットアドレスも全部出力されるし、サーバー側に投票系のログはすべて残るけれど、それでも改ざんなどの管理側の不正を疑いたい人も出てくるかもしれないので)
運営は工数がないと常々言っているので、場合によっては改修やメンテの一部などの形で私の関与が残る可能性はありますが、究極的にはCG社での内製化を目指しております(移譲に至らないなら私管理ですが)
余談ですが、内製化の上DiscordbotのIDの紐づけアルゴリズムを流用すれば、Cryptospellsゲーム内に設置した投票ボタン押すだけで紐づけwalletのTCGC残高分での投票ができる機能の追加実装も、実は大変じゃないはずなので、それをやりたいってCG社が思えるくらいにユーザーが増えたらいいなと思ってます
本サービスにつき、応援いただけますと幸いです。
なお、もちろん個人で作っているものなので、不具合の生じる可能性はあると思います。
バグ報告が機能改善につながったりして結構ありがたいので、よろしくお願いします