Crypto OS
Non-Technical Crypto OS第5段階 · Crypto ビジネス

第27章 · Crypto Product は Web2 Product と何が違うのか

なぜ Crypto 製品は Web2 の手順をそのまま使えないのか?

この章を 3D で体験する →
練習する能力
BuilderSystem ThinkingAI Literacy
実践
dApp を初めて使う手順を各段階で撮影し、署名ごとに何を許可したか明記する。
AI Lab
AI に機能の PRD 草案を作らせ、取引失敗、停滞、先回り取引といった見落とした失敗経路を人手で補う。

現実の問題

Web2の商品を八年作った人が、オンチェーンのチームへ入った。

最初は簡単な依頼だ。ステーブルコインを別資産へ替えるワンクリック購入を作る。慣れた手順で、読み込み、進捗、成功画面、再試行、計測、A/Bテストをすべてそろえた。

二週間で、サポートとデータに六つが出た。

  1. 押しても何も起きない。買う資金はあるが、手数料のネイティブトークンがない。
  2. 三回押した。四十秒待って止まったと思い、さらに二回押す。三取引とも成立した。
  3. 成功後に、いつ取り消せるかと聞く。
  4. アドレスを間違え、返金を求める。
  5. 十六進数の画面を承認し、三週後に資金を失う。署名は無制限の承認だった。
  6. 表示1.02、約定0.97と苦情が来る。何が起きたか画面にない。

Web2には残高検査、連打防止、取消API、返金、平易な権限表示、価格固定という標準解がある。ここではどれもそのまま成立しない。

能力不足ではなく、慣れた手順の三前提が、チェーンではすべて成立しないからだ。

課題は、三前提は何で、失われるとどこを変えるかだ。

思考実験

一度に考えず、一前提ずつ取り除こう。

第一:取消を削除する。

ボタンを隠すのでなく、物理的に存在させない。確認すると発生し、自分、データベース、裁判所を含め誰も逆転できない。

多くの設計が崩れる。

  • 確認画面が通過点から主画面になる。 取消可能なら礼儀だが、不可逆なら最後の防御だ。
  • サポートは解決から説明へ変わる。 救済を教える話法の半分が無効になる。
  • 本番流量で試行錯誤できない。 小規模公開して戻す道具がなく、対象者の資金は実際に失われる。
  • 初心者案内を先にする。 とりあえず試して直すとは言えない。

第二:毎行動に鍵を取り出し、その場で署名させる。

鍵は自分になく、代理も保管もできない。毎回ウォレットが、理解しにくい内容を示して押すかを求める。

さらに崩れる。

  • 手数が圧縮すべき費用になる。 Web2では体験だが、追加署名は離脱点とリスク点だ。
  • 書いた文案を利用者が見るとは限らない。 別のウォレットが描画し、影響はできても支配できない。
  • 選択を記憶する設計が危険になる。 対応するのは、一承認が永久で無制限という状態だ。

第三:知らないうちに誰でも他の製品を接続できる。

申請、契約、同意なく、インターフェースを読んでコードを呼ぶだけでつながる。

最大の利点と問題を同時に生む。

  • 何もしなくても流通が起こる。 相手の利用者が自分の利用者になる。
  • 利用仮定が破れる。 人でなく契約、一件ずつでなく一取引に百件来る。
  • 単独でインターフェースを変えられない。 接続先が一緒に壊れ、誰なのかも知らない。

残るのはチェーンを足したWeb2ではなく、制約がまったく違う製品だ。

あなたが決める

ワンクリック再投資を作る。収益を再び入れるには、受取、承認、入金の三つが要る。

結果を観察する

一文へまとまる。

難しさは機能ではなく、状態と信頼の境界が引き直されたことだ。

三つの暗黙前提を、現実と並べる。

Web2の前提現実補うもの
誤りは直せる確認後は誰も直せない事前情報、シミュレーション、金額とアドレスの再照合
サーバーが代理する本人の署名が要る回数圧縮、内容翻訳、境界固定
インターフェースと利用者を支配する誰でも契約から呼べる安定性の約束、異常処理、組合せ仮定
リクエスト成功が完了中間状態があり、組み替えもある完全な状態機械と待機文案
無料利用書込は毎回有料事前費用検査、失敗費用の説明、代払いの選択

後の二つは追加の、忘れやすい差だ。

第四:Web2の中間は読み込みだけだが、署名済み未配信、メモリプール待機、格納済み未確定、組替えで消失など、それぞれ意味が違う。

第五:試すにも価格があり、料金が行動を変える。迷い、まとめて行い、高い時は来ない。

モデルを作る

交渉できない三制約

  1. 不可逆
  2. 署名必須
  3. 組み合わせ可能
機能ではなく環境だ。すべての判断は、この制約が作る空間で行う。
制約消すもの生む設計
不可逆取消、返金、巻戻し、本番試行事前確認、模擬、上限、許可リスト
署名サーバー代理、静かな更新手数圧縮、翻訳、量と期限
組合せ呼出者支配、自由なインターフェース変更安定インターフェース、防御仮定、バッチと契約対応

第三は技術だけでなく位置付けだ。入口にも、他人の部品にもなる。 入口は使いやすさ、部品は安定、明確な文書、予測可能な動作が要る。多くは選び切れず、両方不足する。

六状態

各欄に画面と文案が必要だ。 抜ければ利用者が想像し、大抵最悪を想像する。

  1. 構築
  2. 署名待ち
  3. 配信済み
  4. 確認待ち
  5. 確認済み
  6. 最終確定
Web2の読み込みと完了の二つに対し六つあり、第五から第三へ戻ることもある。
状態体験よくある誤り
構築金額、経路、費用を計算表示と約定の差を説明しない
署名待ちウォレットが開く自画面に意味の説明なし
配信済みネットワークへ入る確認できる取引証跡なし
確認待ち格納されたが数不足成功と表示。最も高くつく
確認済み必要数を満たす基準を説明しない
最終確定実際には変更不能前と混同する

不足時の成功表示は、保証できない約束だ。 第1章の到着表示と決済完了の時差を、製品が表す責任を持つ。

失敗経路

最も写すべき表だ。 取引機能のPRDで一つずつ使う。

失敗見えるもの対応
ネイティブなし反応なし開始前検査と不足・補充先
残高不足エラーの文字列先に検査し利用上限を入力欄へ
承認不足失敗し費用は引かれる上限検査と承認・実行の説明
スリッページ超過巻き戻る原因と調整入口、勝手に広げない
先回り実行悪い約定価格保護と見積期限
メモリプール停滞回り続ける証跡、照会、対処
契約途中失敗費用は返らない先に模擬し必ず失敗するものを止める
本人が取消元へ戻る失敗と取消を区別
混雑・料金上昇格納されない費用水準と待つ選択
再編成功した取引が消える第四で成功と書かない

七つは署名前に止められる。一回の追加検査は最も費用対効果が高く、離脱、損失、問い合わせを同時に減らす。

四つの署名

ウォレットが区別しないかもしれず、自画面で分ける。

種類動作取消説明
送金資産を送る不可宛先、額、終了
承認契約に資産使用を許す自分で取り消せる上限、期限、更新可能か
メッセージ所有の証明。非オンチェーン・無料対象外お金を動かさないと明示する
オフライン注文他人が実行する承認設計次第期限、実行者、無効化

第二は第24章の入口だ。必要量、期限、履歴閲覧と取消の三つで減らす。

第四は無料・非配信で第三に見えるが、実行可能な権限で、時点を本人が決めない。期限と無効化を必ず書く。

何と呼ぶか

ウォレット体験Wallet UX

支配できないアプリで、毎操作を承認してもらうこと。

重要な転換が他人の画面で起こる構造だ。自側で説明し、移る回数を減らす二つしかない。

表示、上限・期限対応、同じ呼出データの翻訳が違う多数と向き合う。設計時に三主要ウォレットの見え方を問う。T13で実装差を扱う。

署名Signature

秘密鍵で内容へ許可する、唯一の同意。

偽造不能、否認不能、場でなく内容に効力が依存するの三つだ。

第三がリスクだ。無読確認の習慣は偽サイトにも持ち込まれる。読む教育は安全教育だけでなく製品の一部だ。

手数料Gas

ネットワークに実行してもらう費用。

ネイティブで払うためステーブルだけの新人は進めず、混雑で変動し、失敗でも引かれる。

必失敗を事前模擬で止めれば、費用だけでなく挫折も省ける。

代払は初回の障壁を下げるが、製品側の費用になり、それを取る専門アドレスを呼ぶ。第28章の問題だ。

最終性Finality

実際に変更不能となる点。

スイッチでなく曲線で、確認が増えるほど変更可能性は下がる。チェーン差は第8章で見た。閾値を選び、利用者へ知らせる。

成功の緑マークは格納時でなく、閾値後に出す。

不可逆性Irreversibility

確認後、誰も取り消せないこと。

第1章の現金に似るという製品上の意味だ。渡せば終わりで、サポートはない。

Web2で誤り後へ使う全努力を、前へ移す。 確認、検査、模擬、上限、照合は磨き込みではなく本体だ。

組み合わせ可能性Composability

同意なしで契約を呼び、相手の製品へ接続できること。

費用なしで相手の利用者が来る。第9章の特別な性質だ。

呼出者支配、自由変更、使用仮定を失う。人でなくコード、一件でなく百件かもしれない。論理へ書く前に、コードが呼んでも成立するか問う。

実践

実践DAppの初回利用を一画面ずつ撮り、各署名が何を許可したのか記すテストネットのウォレット + テストネットに配置されたDApp + ブロックエクスプローラー0円。すべてテストネットで行う。メインネットしかない製品なら署名画面まで進み、内容を読んでキャンセルする。実際には承認しない

このLabの目的は製品を使うことではなく、操作を一コマずつ分解することだ。 速さより、各段階で止まり画面を撮ることが重要になる。

まず、新しく作った、まっさらなウォレットアドレスを用意する。普段のウォレットは使わない。テストネットのフォーセットでネイティブトークンを少量受け取り、未経験のDAppを選ぶ。

トップページを開くところから、初めて意味のある操作が完了するまで撮影する。

読み込み、エラー、ウォレットのポップアップも含め、全画面を撮る。ウォレットの画面は全部撮る。 展開しないと見えない部分も含める。

全体の画面数、判断が必要な画面数、署名回数を数える。この三つが製品の初回利用コストだ。

署名画面を一つずつ読み解き、表を埋める。

何回目の署名ウォレットの表示四種類のどれか上限額有効期限製品画面に説明があるか
1
2

上限額の列が重要だ。 利用許可の署名なら、要求額が今回必要な数量か、極端に大きな数かを調べる。後者は無制限の許可だ。

読めない内容はコピーし、エクスプローラーでコントラクトのインターフェース名を調べる。何度か行うと、よくある署名の種類を直感で見分けられるようになる。

三種類の失敗をわざと起こし、それぞれ撮影する。

起こし方観察すること
ネイティブトークンを使い切って再度操作する事前チェックがあるか。説明は理解できる言葉か、エラーコードだけか
残高より大きな数字を入力する入力時に止めるか、署名してから失敗するか
ウォレットで「拒否」を押す利用者のキャンセルと取引失敗を区別するか

三つ目は製品の成熟度をよく表す。 利用者が自分で中止したのに「取引失敗。再試行してください」と伝えるのは、よくある、利用者を困らせる誤りだ。

状態が変わった時刻をすべて記録する。

確認を押してから計測し、最初の画面変化、取引の証跡が表示された時刻、「成功」と表示された時刻を記す。

証跡をエクスプローラーで確認する。製品が「成功」と表示した瞬間、承認は何回だったか。

これはLab全体で最も価値のある数字だ。「成功」「送信済み」「承認待ち」のどれが画面に書かれていたか、照らし合わせる。

許可の状態を点検し、取り消す。

許可を調べるツール、またはエクスプローラーのコントラクト読み取り機能で、この新しいアドレスが与えた許可と各上限額を確認する。

さっきの一操作で、無期限・無制限の許可が残っているかもしれない。取り消し、必要な操作数と手数料の支払い回数を記録する。

これは第24章の「自分で署名した」という流出経路を閉じる操作だ。終わったら、普段のウォレットでも同じ点検を行う。

三段構成で結論を書く。

この製品の良い点三つ:
この製品が見落とした失敗経路三つ:
自分が改善するなら最初に直す点:

二段目は先ほどの失敗経路リストと一つずつ照合する。十項目のうち三〜五項目が未対応なのはよくある。 それが製品の次の四半期の仕事になる。

AI Lab

AI LabAIに機能のPRD草案を書かせ、取引失敗・停滞・先回り実行など、抜けた失敗経路を人が補うLevel 2 · AI Copilot

この課題の分担は明確で、製品業務でAIができる範囲を理解するのに向いている。

モデルが得意なのは、機能の説明から、目標、役割、主要フロー、画面要素、計測、受入基準をそろえた文書を作ることだ。速く整った文書を書けるので、手作業を大きく減らせる。

モデルが構造的に苦手なのは失敗経路だ。学習資料にはオンチェーンよりWeb2の製品文書がはるかに多く、Web2は失敗経路自体が少なく、多くは救済できる。そのため、たまに抜けるのではなく、構造的に抜ける。

次の機能についてPRD草案を書いてください:
<機能の説明。例:利用者が保有するA資産をB資産へ、一度の操作で交換する>

対象チェーン:<チェーン名>。対象利用者:<この種類の製品を初めて使う人 / 経験者>。

第1部:主要フロー。各段階について次を記してください。
- 利用者には何が見えるか
- 署名が必要か。必要なら送金 / 利用許可 / メッセージ / オフライン注文のどれか
- 利用許可なら上限額と有効期限をどう設定するか。その理由

第2部:取引状態。「作成 / 署名待ち / 送信済み / 承認待ち / 承認済み / 最終確定」
の六状態ごとに、表示する文言と利用者ができる操作を記してください。
何番目の状態で「成功」と表示するか、判断基準も明示してください。

第3部:失敗経路。一つずつ、発生条件、利用者の表示、製品側の処理を書いてください。
ネイティブトークンなし / 残高不足 / 許可額不足 / スリッページ超過 / 先回り実行 /
メモリプールでの滞留 / コントラクト実行失敗 / 利用者のキャンセル / ネットワーク混雑 / チェーン再編

第4部:不確かな点を別に列挙してください。

規則:
- オンチェーンでの実現方法を説明できない取消・ロールバック・返金処理は書かないでください。
- 各失敗経路には具体的な画面文言を用意してください。「親切な案内を出す」だけでは不十分です。

このプロンプトには失敗経路十項目をそのまま書いている。 意図的だ。列挙しなければ書かないが、列挙すれば十分に書ける。これは役立つ発見だ。モデルに足りないのは能力より、このリストである。そしてリストは人が渡す必要がある。

草案を受け取ったら、次の三つを行う。

  1. 第3部の十項目を一つずつ点検する。 全部あるか。それぞれの処理は本当にオンチェーンで実行できるか。
  2. 第2部を自分のLabの観察と比較する。 実測した製品はどの状態で成功を表示したか。モデルの記述と同じか。
  3. 作り出した機能を探す。 よくあるのは「直前の取引をワンクリックで取り消す」と「失敗時に自動再試行し手数料を返す」。前者は存在せず、後者では手数料を取り戻せない。

この課題で頻発する誤りを、危険度の順に四つ挙げる。

  1. Web2の取消可能という前提を持ち込む。 「15分以内ならキャンセルできる」と書くが、オンチェーンには実装経路がない。
  2. 送信済みの段階で成功を表示する。 状態を二つに圧縮する最もよくある誤りで、最初の節の六つの問い合わせの直接の原因だ。
  3. 無制限の許可を既定にする。 「初回利用時に許可を求める」とだけ書き、額を示さない。実装では上限なしになりやすい。
  4. 先回り実行に全く触れない。 Web2に対応物がないため、自発的に思いつくことは少ない。仕組みの詳細はT24を参照する。

補足部分は別に保存する。三機能ほど続けると、自分の追記が何度も繰り返されていることに気づく。それが、どんなテンプレートより使いやすい自分のオンチェーン製品チェックリストになる。

AI の回答後、自分で必ず検証すること

  • 成功経路で「取引を送信した」を「操作が完了した」と扱っていないか
  • 十の失敗経路をいくつ網羅したか。特にネイティブトークンなし、許可額不足、スリッページ超過が抜けやすい
  • ウォレットでのキャンセルを扱っているか。取引失敗とは別の事象だ
  • 各署名の種類、上限額、有効期限を説明しているか
  • 許可は無制限を前提にしているか、必要額だけか
  • メモリプールに滞留している間の表示と利用者の操作を書いているか
  • 先回り実行に触れていないか、それとも具体的な製品側の対策があるか
  • 最重要点:再試行・取消・ロールバックの処理は本当にオンチェーンで成立するか

実例

無制限の許可が業界の既定になった長年続いている

初期のオンチェーン製品は操作を減らすため、最初に極端に大きい上限額を求めた。一度許可すれば、以後ポップアップは不要になる。当時の実際の体験問題を解決した方法が慣行となり、後続の製品もそのまま採用した。

数年後、別の代償が現れた。ウォレットには、利用者が忘れた無期限・無制限の許可が大量に蓄積した。 許可先には更新可能なコントラクトもある。第24章の第五の資金流出経路の損失は、多くがここで起きる。

当初の判断を批判するより、この例は製品の既定値の寿命を示す。クリックを一回減らすための判断が、製品が消えてずっと後も他人のウォレットで効き続ける。

「成功」の後に取引が消えたチェーン再編時承認に時間のかかるネットワーク

ある製品は取引がブロックへ取り込まれた瞬間、緑のチェックと「取引成功」を表示する。たいていは問題ない。

しかし一度、小さな再編でそのブロックが置き換わり、取引は再取り込みされなかった。利用者はすでに成功を見て、ページを閉じ、受け取った前提で次の行動をしていた。

再編はシステムの通常の挙動だ。問題は製品が、保証する権限のないことを約束した点にある。

適切な対応には文言を少し増やせばよい。承認数が不足している間は「送信済み、承認待ち(現在2/12)」と示し、閾値で成功を表示する。状態を一行増やせば、事故の一分類を減らせる。

大口交換で先回り実行された公開メモリプールでよく起きる

利用者が画面の見積もりを見て確認を押す。取引は公開メモリプールへ入り、実行前から誰でも見える。

価格を動かすほどの大口注文と察知したプログラムが、その前後に自分の取引を挟み、差額を得る。利用者の約定価格は表示された価格より悪くなる。

オンチェーンではすべて正常で、コントラクトは破られていない。公開メモリプールの自然な帰結であり、事故ではない。

製品側は見積もりの期限を明示し、価格許容幅を無理解のまま調整させず意味を説明し、大口取引の危険を知らせる。公開メモリプールを通らない送信方式も使える。まず画面で、この事象が存在すると認めることだ。 約定後に利用者が価格差の理由を推測するしかない状態が最悪だ。詳細はT24を参照する。

他の製品があなたのコントラクトを組み込んだ後組み合わせ可能なプロトコルによくある

公開時には、人が自前の画面から一件ずつ呼ぶと仮定した。頻度制限、リスク管理、統計はすべてこの前提に立っていた。

数か月後、別チームが自社製品へ組み込み、利用者はそちらで操作し、呼び出しはこちらで発生する。見えるのはコントラクトアドレス、一取引に数十回の呼び出し、画面側の事前チェックなしという状態だ。

日次利用者数はすぐに歪む。 第23章のアグリゲーター問題だ。頻度制限は機能せず、事業上の前提も成立しなくなる場合がある。

誰かの過失ではなく、組み合わせ可能性の代償だ。設計時に、呼ぶのが人ではなくコードでも、すべての前提が成立するかを答える必要がある。

変数を一つ変える

もし製品が利用者の手数料を肩代わりする

初回利用のハードルは大きく下がる。別の場所でネイティブトークンを用意する必要がなくなり、最もよくある失敗経路が消える。

ただし三つが生じる。費用はあなたへ移る。 しかも制御できない混雑に応じて変動する。悪用を防ぐ仕組みが必要になる。 代払い枠を消費するためだけのアドレスが来るからだ。第28章がその経済を扱う。利用者は費用を意識しなくなる。 他の製品でなぜ支払うか理解できず、環境への認識自体を変えてしまう。

さらに、代払いには通常、利用者がオフライン許可へ署名し、あなたがオンチェーンで実行する必要がある。 署名は第一種から第四種へ移り、リスク構造も変わる。署名は残り、対象が変わるだけだ。体験が滑らかでも、この点を画面で説明しなければならない。

もし承認が非常に速く、手数料が非常に安いチェーンに配置する

六状態は圧縮されて見える。ほぼ待たず、費用も気にならず、再試行の代償も小さい。多くの設計は簡略化できる。

ただし三制約は残る。不可逆性は変わらない。 速い承認は不可逆になるのも速いということだ。署名は必要だ。 回数のコストは待ち時間から中断へ移り、中断も離脱を生む。組み合わせ可能性も変わらない。

逆向きの効果もある。安い手数料は気軽な試用を安くする一方、水増しや報酬獲得の費用も下げる。 体験で省いたコストを成長施策側で払い直すかもしれない。

速く安いチェーンだからWeb2流に作れる、と考えない。 変わるのはパラメーターで、制約ではない。

もし対象利用者はウォレットを知らず、一度も署名したことがない

新規利用者向け案内を改善する問題ではなく、製品形態を選ぶ問題だ。道は三つある。

第一は教育。 ウォレット、署名、手数料をすべて教える。転換率は低いが、残る人は自分の行為を理解する。

第二は隠すこと。 ウォレットを意識せず使えるようにする。この場合、秘密鍵を誰が持つのかを慎重に答える必要がある。あなたならカストディ事業者だ。利用者の鍵を包み込んでいるだけなら、あなたが消えた後の管理権回復を説明する。

第三は利用者を変えること。 この機能は完全な初心者に適さないと認め、まずウォレット保有者を対象にする。

どれも成立する選択だが、明示的に一つを選ぶ必要がある。 複雑さを隠しながら保管責任を避けると、カストディに見えるのにその保証がないものを作ってしまう。

もし自前の画面を作らず、他者が組み込むプロトコルだけを作る

入口から部品へ変わり、評価基準も丸ごと変わる。

重要になるのは、インターフェースの安定、文書の品質、予測できる挙動、一括呼び出しやコントラクトからの呼び出しへの対応、組み込み費用の低さだ。

重要でなくなるのは、見た目、新規利用案内、転換ファネルだ。組み込む側の仕事になる。

非常に難しくなるのは利用者の識別だ。呼び出しは他のコントラクトから来て、見えるのはアドレスだけ。第26章の損益表は作れても、第28章の継続率分析は難しくなる。

分配が自然に起き得る一方、成長は他者の製品判断に左右される。 第29章のBDの仕事には、この道で統合を進めるものが多い。

持ち帰る問い

4
ユーザーは誰か?

この章はオンチェーン特有の問いを加える。来るのは人か、コントラクトか。

他製品に組み込まれたプロトコルを呼ぶのはコードだ。統計の定義だけでなく、利用者行動に関するすべての前提を崩し得る。機能を作る前に問う。コードから呼ばれても、この前提は成立するか。

9
誰がリスクを負うか?

製品では問いが具体的になる。この署名の後に起き得る最悪の事態は何か、誰が損失を負うか。

利用許可では上限内の資産がすべて移される。オフライン注文では、利用者に不利な時刻に実行される。この二文を書けない機能は公開すべきではない。

16
エージェントにはどんな権限があるか?

この章では人間向けの問いになる。製品が求める署名は、相手に何の権限を、どの上限額で、いつまで与えるか。

三つとも答えられない許可は、第24章のリスク経路の入口だ。製品ができるのは必要額だけの許可、有効期限、確認して取り消せる場所の用意だ。この三つを備えた製品は、安全教育だけを行う製品より安全になる。

18
どの判断に人の関与を残すべきか?

オンチェーン製品では明白な答えがある。不可逆な資金操作の最後の一押しは、人が行う必要がある。

自動化が信頼できないからではなく、不可逆なら二度目の試行で誤りを直せないからだ。 設計の焦点は人の確認を残すかより、確認前に十分な情報をどう見せるかになる。この章の失敗経路リストは、そのためにある。

章末チェック

要点

不可逆性、署名、コンポーザビリティ。この 3 つがほぼすべてのプロダクト判断を変える。

この章の実践課題を終えたらチェックしてください進捗をすべて見る

このページの内容