人間であることを証明してみた

「シビル攻撃」耐性を持ち、匿名なアイデンティティの証明に取り組むオープンソースプロジェクトに参加してみました。「Iden (イデナ)」と言います。

人間であることを証明してみた

そもそも「シビル攻撃」とは何か?

例えば、1万人に対して無償でNFTを一人一枚ずつ配布しようと、SNS等で呼びかけて1万人のウォレットアドレス情報を集めたとします。さて、この入手したアドレスは、本当にユニークだと言えるでしょうか?

ウォレットアドレスは、PCやスマートフォンにウォレットをインストールすれば複数発行できます。1人で複数のアドレスを用意して応募をすることも可能です。報酬を多く得る為や当選確率を上げる為に、モラルや規約に反する行為を行うことが現状では可能です。これが「シビル攻撃」です。

とはいえ、リスクヘッジで資産を複数のウォレットアドレスに分散するといった、用途に応じてアドレスを使い分けることはあると思うので、複数アカウントを否定している訳ではありません。

よくある懸賞イベントでは、応募する際に住所や名前といった個人情報を紐づけているので、上記の様なことは起こり難いですが、web3上では、原則ウォレットアドレスのみで取引ができるので、この様な問題が出てきます。

この課題に向き合っているのが「Idena (イデナ)」と言えます。「Idena」の資格を取るプロセスは、ボット対策を講じた内容になっています。

では、実際に何をやるのかというと、以下の流れです。

  • Idenaサイトでアカウントを作成する ※パスワード入力のみ。
  • 練習問題をクリアする
  • 本試験 (検証式) をクリアする ※試験を受ける為に招待コードが必要
  • 結果を待つ ※試験の開始・終了時間が決まっている

どの様な問題か?というと、いくつかパターンがあるのですが、例えば4コマ画像が2つ並んでいて「片方は並び順が正しい」「もう片方は誤っている」ので正解を選択していく試験です。1コマ、1コマの画像は、意味を持たないのですが、並び順によっては、ストーリーを感じるので区別は簡単です。

日頃使ってるウェブサービスでログイン認証をする時に「無作為な英数字が並んでいて、正しく並び順を入力したらログインができる」といった仕組みを利用することがありますが、それと似ています (CAPTCHA認証)。やっていることは、ロボットと人間を区別する為の問題を解くという内容です。

他には、4コマ画像に対して「わかりやすい」「わかり難い」という評価を付ける問題もあります。この辺りは、後述します。

最終的には、全ての問題に回答し、正解率が基準を上回っていれば合格です。これで最初の検証式は終了です。時間にすると30分くらいです。

作業内容としては大したことではないのですが、とにかく手間が掛かります。いくつかポイントを挙げると以下の通りです。

  1. 招待コードの入手
  2. 試験日時の指定
  3. 試験時間の制限
  4. 定期的な試験の参加

招待コードの入手

招待コードは、既に合格をしている先輩方 (検証者) に依頼をして発行してもらう必要があります。これが、なかなか大変そうです。

How to join Idena
How to verify your Idena cryptoidentity

公式サイトに色々方法が記載されていましたが、筆者の場合は、試験当日に公式TwitterのDMで、練習問題をクリアしたことをアピールし、招待コードの支給を依頼したところ10分くらいでレスが来ました。

Idena公式:検証実施の告知

試験日時の指定

上にX (旧Twitter) を引用していますが、世界同時開催です。日本時間だと隔週土曜日の0時に検証式が行われます (今後、予定が変わる可能性があります)。遅刻をすると不合格のようです。Idenaのアプリに開催日時の表記がでているので、確認することができます。また、予定をGoogleカレンダーに登録する機能もあります。とにかく、時間厳守ですね……。

試験時間の制限

検証式の開始5分前にアプリ側でカウントダウンの表記が出現します。時間になったら、試験問題が表示され、制限時間が記載されているので時間内に回答をしていきます。大体、30分くらいで終了します。早く終わっても制限時間が来るまで完了できません。他のことをしつつ、待ちます……。

定期的な試験の参加

これは何か?というと、Idenaは、1回合格をしたらおしまいというものではありません。アプリ側に次回のスケジュールが表示されるので、2回目、3回目と継続して検証式を受ける必要があります。つまり、合格証明の有効期限は、合格した直後から次回の検証式までになっています。合格し続けることで資格を維持します。

合格し続けると、ランクが上がっていきます。

  • 候補者 (最初の状態)
  • 初心者 (1回目合格の状態)
  • 検証者 (連続で3回合格の状態)
  • 人間 (最低4回合格の状態)

不合格になると以下のステータスになる可能性があります。

  • 一時停止 (1回失敗) → 候補者と同じ扱い
  • ゾンビ (2回失敗) → 候補者と同じ扱い
  • kill (アカウント失効?) ※紹介コードを入手してやり直しができるかは不明

さらにおまけ要素として、次回の検証式までに試験問題の作成というノルマが発生します (最初は、4コマ画像を3つ作成)。画像は、アプリ上で作成できるので心配ないですが、誰が見てもわかるストーリーを考えるところが手間です……。

実は、検証式で受ける試験内容は、合格者が毎回作っていたものだったのです。試験内容にストーリーのわかり易さみたいなことを評価するのですが、適当に問題を作成してしまうと、その問題を作成した人の報酬額が落ちるような仕組みになっています。ぬかりないです。

以上が「手間が掛かる」といった部分です。とてもアナログ作業です。確かにこれだと複数のボットアカウントを作成しシビル攻撃をしようという気にならないですね。検証式が世界同時開催なので、複数アカウント分の試験を同時にこなすことは難しいでしょう。

これまで「手間が掛かる」部分を強調してしまいましたが、それにともなう報酬も発生していきます。それがweb3世界の良いところでエコシステムが設計されています。※作業量が対価に見合うかどうかは何とも言えません。

  • 検証式で合格 した場合 → 紹介者も報酬を得られる
  • 試験問題の作成と高評価が付いた場合
  • マイニング機能を利用した場合
  • ステーキングした場合
  • DAO投票に参加した場合

また、DAOでは、これら一連の運用ルールに関わる議論に参加できます。過去の内容を見ることもできます。よって「Idena」の資格を取得するということは、継続的にこのサービスをサポートしていくことと同義の意味合いになると思います。

Idena Improvement Proposals | Idena documentation
Idena Improvement Proposals

筆者は、もともと上記の様なエコシステムの構築に関心があったので、一通りの流れを見たり、操作してみたりといったことができて面白そうだと思いました。

ということで、人間の証明資格を取ってみたという話でした (笑)。まだ、Idenaの認証資格が必要なサービス利用を見かけないですが、どこまで成長していくか楽しみです。一応、Idenaの認証サーバーと連携できそうなのでいつか試せたらと思います。

他にも類似のプロジェクトがたくさん登場しています。「Idena」の場合は、個人情報を求められないですが、他のプロジェクトだと、SNSアカウントと紐づけたり、身分証明書と紐づけたり、人体情報と紐づけるといったものもあるので、プライバシーの部分も併せて気を付けていかないといけないですね。