ほとんどのシステムは仮定に基づいて動作します。
あなたはユーザーが資格があると仮定します。なぜなら、あなたのデータベースがそう言っているからです。あなたは、トランザクションがルールに従ったと仮定します。なぜなら、あなたのバックエンドがそれを実行したからです。あなたは、資格情報が本物であると仮定します。なぜなら、それが「正しい」ソースから来たからです。そして、大抵の場合、その仮定は成り立ちます—そうでない限り。
それが不快になるときです。
何かがうまくいかないとき、あなたはログを掘り下げ、出来事を再構築し、最初から証明すべきだったことを証明しようとしています。それは反応的で、混沌としており、しばしば決定的ではありません。システムは機能しました…しかし、それが機能したことを示すことはできません。
これがアテステーションが埋めようとしているギャップです。
Signでは、アテステーションは単なる記録ではありません。それは、定義された構造に結びついた署名された主張です。誰か(または何か)が明示的に「これは真実です」と言い、それを独立して検証可能な署名で裏付けています。基本的なことのように思えますが、システムの動作を変えます。
もはや内部状態に依存して真実の源とすることはありません。独立して立つことができるポータブルで検証可能な声明を作成しています。
そして、それはダイナミクスをかなり変えます。
一つには、中央集権的なコントロールへの依存を減らします。もし主張がデータベースを照会することなく検証できるなら、他の人がそれを検証するためにあなたがオンラインである必要はありません。証明はあなたのシステムの外に存在します。それは微妙ですが重要なデカップリングです。
それはシステムをよりコンポーザブルにします。
あるコンテキストで発行されたアテステーションは、再解釈なしに別のコンテキストで再利用できます。もしユーザーがどこかで資格を証明しているなら、なぜそのプロセスを繰り返させる必要がありますか?アテステーションを使えば、その証明は移動できます。生データではなく、すでに検証され署名されたものとして。
もちろん、これは異なる種類の責任をもたらします。
誰がアテステーションを発行していますか?どの基準に従っていますか?信頼できますか?アテステーションは信頼を排除するのではなく、それを明示化します。システムの背後に隠れる代わりに、信頼は識別可能な発行者と可視の記録に結びついています。
正直なところ、それはより良い取引です。
隠れた信頼こそがほとんどの問題の始まりです。何を信じるべきか分からないと、すべてを信じるか、何も信じないかのいずれかになります—どちらもスケールしません。アテステーションはその決定を公にします。ソースを検査し、署名を検証し、自分で判断できます。
これがシステム設計にどのように影響するかについても言及する価値があります。
重要なアクションは後で証明する必要があると分かると、異なる構築方法を考えるようになります。何を記録すべきか、どのように構造化すべきか、誰が署名すべきかを考えます。これは、現在のシステムには欠けている規律の層を追加します。
彼らが気にしないからではなく、検証を考慮して構築されていなかったからです。
Signは完璧を強制するわけではありませんが、システムをその方向に促します。開発者に仮定を具体的なものに変える方法を提供します。それは、あいまいさなしにチェック、共有、再利用できるものです。
そして「信じてください」が意味を失うほど過剰に使われているスペースでは、それは注目に値する変化です。
\u003cm-46/\u003e\u003cc-47/\u003e
\u003ct-57/\u003e