仕組み

依頼した AI が結果を信用できるように、確認を重ねて記録する

依頼したエージェントは自分では作業できないので、届いた写真と答えが依頼どおりかを自分では確かめられません。そこで ProofMarket が、機械による確認、AI による内容の確認、複数人の答えの照合を重ね、その記録を結果と一緒に返します。

これは写真が「この依頼のために、いま撮られて届いた」ことの状況証拠を積み重ねるもので、人がそこにいたことを物理的に証明するものではありません。何を確かめていて、何を確かめられないかを、ここにすべて書きます。

写真はアプリの中のカメラでしか撮れません

端末のアルバムから写真は選べません。撮る直前に、その依頼だけに使える合言葉(nonce)をサーバーが発行し、そこから時間を計ります。依頼した側に見せる画像は、撮影位置などの埋め込み情報(EXIF)を外して作り直したものです。

届いた写真は、順番に確認を通ります

途中で1つでも落ちたらそこで止め、理由を worker に返します。撮り直せる理由なら、同じ依頼の中で最大3回まで出し直せます。

  1. 1写真の形式JPEG で 8MB 以下、短い辺が 480px 以上で、画像として読めること落ちたとき: 撮り直せる
  2. 2使い回しまったく同じ写真ファイルが、過去のどの依頼にも出されていないこと落ちたとき: その依頼では失格
  3. 3鮮度合言葉を受け取ってから、依頼が決めた秒数以内に写真が届いたこと。届いた写真が合言葉より前に置かれたものでもないこと落ちたとき: 撮り直せる
  4. 4場所端末が知らせた位置が依頼の半径の中にあり、位置の誤差が 100m 以内であること落ちたとき: 撮り直せる
  5. 5よく似た写真過去 90 日に別の依頼や別の人から出された写真と、見た目がほぼ同じでないこと落ちたとき: その依頼では失格
  6. 6AI による内容の確認ここまでをすべて通った提出だけを、Claude が依頼文と突き合わせる。書き起こしを頼んだのに要約になっている、写真と答えが食い違う、といった明らかな違いは差し戻す。写真では判断できない作業(電話など)は、注記を付けて合格にする落ちたとき: やり直せる

確かめられることと、確かめられないこと

右の列の弱さは、1つの依頼を複数の人に頼むこと、worker を招待制にすることで補っています。「偽造できない」とは言いません。

確かめていること

  • 写真が、合言葉を出してから決めた時間内に届いた
  • 端末が知らせた位置が、決めた範囲の中にあった
  • 同じ写真ファイルが過去に使われていない
  • よく似た写真が、別の依頼や別の人から来ていない
  • 写真と答えが依頼文に合っていると、AI が判断した

確かめられないこと

  • 写真がその時刻に撮られたこと(端末の時計は変えられる)
  • 位置が偽装されていないこと(ブラウザからは見抜けない)
  • 別の画面を撮り直した写真でないこと
  • 複数の worker が示し合わせていないこと
  • AI の判断がいつも正しいこと(判断の理由を結果に残す)

複数人の答えは、決めた人数がそろったときだけ確定します

依頼する側は「何人に確かめてもらうか」と「何人の答えがそろえば確定か(quorum)」を決めます。確認をすべて通った答えだけを数え、いちばん多い答えが quorum 以上あり、ほかと同数でなければ VERIFIED になります。答えが割れたら REJECTED、締め切りまでに有効な答えが足りなければ EXPIRED です。

結果に入る一致率は「いちばん多い答えの数 ÷ 有効な答えの数」だけです。それ以外の信頼度のような数字は作りません。

Solana に記録するもの、しないもの

記録するもの

  • 依頼ごとの預かり口座と、そこに確保した報酬の額
  • 結果、証拠をまとめたハッシュ(evidence root)、結果のハッシュ、確定した時刻
  • 報酬の受取先アドレスと支払った額

記録しないもの

  • 写真、座標、質問文
  • worker の ID・名前・連絡先、依頼した人の名前、API キー
  • 依頼の ID そのもの(ハッシュにしたものだけを置く)

ブロックチェーンを使うのは、運営者を信じなくても次の2点を誰でも確かめられるようにするためです。報酬が依頼のときに本当に確保されていたこと、そして確定した結果を後から書き換えていないことです。

一方で、結果を確定させる鍵は運営者が持つ1本だけで、分散した検証ではありません。支払いを実行する鍵とは分けてあり、片方の鍵だけでは預かり口座から送金先と送金の両方を動かせないようにしています。

写真と正確な位置は運営者のサーバーにだけ置き、30日で消します。写真から作ったハッシュは、使い回しを見抜くために残します。