> ## Documentation Index
> Fetch the complete documentation index at: https://docs.intention.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# オラクル

> インデックス価格が取引所のデータからどう作られ、バリデータに認証され、それを消費するブロックの中でコミットされるのかです。

Intentionは外部のオラクル委員会を使いません。**バリデータ集合がオラクルそのものです**。各バリデータがすべての銘柄の価格について自分の見解を生成して署名し、ネットワークは、その価格で決済されるトランザクションをコミットするのと同じコンセンサスイベントの中で結果を認証します。

手順は二つに分かれ、それぞれ別の問いに答えます。集約が問うのは*この銘柄はいくらの価値があるか*で、コンセンサス経路の外でバリデータごとに行われます。認証が問うのは*このラウンドでいくらだったとネットワークが合意するか*で、コンセンサスの内側で行われます。

<div className="dg" data-dg="oracle-path">
  <div className="dg-c" style={{aspectRatio:"720 / 316"}}>
    <svg className="dg-w" viewBox="0 0 720 316" aria-hidden="true">
      <path className="dg-wire" d="M 176.00 90.00 L 176.00 101.60" />

      <path className="dg-head" d="M 176.00 108.00 L 171.60 101.60 L 180.40 101.60 Z" />

      <path className="dg-wire" d="M 176.00 152.00 L 176.00 163.60" />

      <path className="dg-head" d="M 176.00 170.00 L 171.60 163.60 L 180.40 163.60 Z" />

      <path className="dg-wire" d="M 550.00 90.00 L 550.00 101.60" />

      <path className="dg-head" d="M 550.00 108.00 L 545.60 101.60 L 554.40 101.60 Z" />

      <path className="dg-wire" d="M 550.00 152.00 L 550.00 163.60" />

      <path className="dg-head" d="M 550.00 170.00 L 545.60 163.60 L 554.40 163.60 Z" />

      <path className="dg-wire dg--blue" d="M 341.00 130.00 L 384.60 130.00" />

      <path className="dg-head dg--blue" d="M 391.00 130.00 L 384.60 134.40 L 384.60 125.60 Z" />

      <path className="dg-wire dg--green" d="M 550.00 222.00 L 550.00 235.60" />

      <path className="dg-head dg--green" d="M 550.00 242.00 L 545.60 235.60 L 554.40 235.60 Z" />
    </svg>

    <div className="dg-band" style={{left:"0.0000%",top:"8.2278%",width:"48.8889%",height:"62.0253%"}}><span className="dg-cap">バリデータごと：コンセンサス経路の外</span></div>
    <div className="dg-band" style={{left:"52.7778%",top:"8.2278%",width:"47.2222%",height:"62.0253%"}}><span className="dg-cap">コンセンサスの内側</span></div>
    <div className="dg-b" style={{left:"2.2222%",top:"15.8228%",width:"44.4444%",height:"11.3924%"}}><span className="dg-t">取引所</span></div>
    <div className="dg-b dg--sky" style={{left:"2.2222%",top:"35.4430%",width:"44.4444%",height:"11.3924%"}}><span className="dg-t">オラクルsidecar</span><span className="dg-s">バリデータごと</span></div>
    <div className="dg-b dg--blue" style={{left:"2.2222%",top:"55.0633%",width:"44.4444%",height:"11.3924%"}}><span className="dg-t">バリデータが検証し署名</span></div>
    <div className="dg-b dg--blue" style={{left:"55.0000%",top:"15.8228%",width:"42.7778%",height:"11.3924%"}}><span className="dg-t">バリデータ間へgossip</span></div>
    <div className="dg-b dg--green" style={{left:"55.0000%",top:"35.4430%",width:"42.7778%",height:"11.3924%"}}><span className="dg-t">エポック・ラウンドごとに認証</span></div>
    <div className="dg-b dg--green" style={{left:"55.0000%",top:"55.0633%",width:"42.7778%",height:"11.3924%"}}><span className="dg-t">ブロックに載る</span></div>
    <div className="dg-b dg--green dg-left" style={{left:"0.0000%",top:"77.8481%",width:"100.0000%",height:"17.7215%"}}><span className="dg-t">カーネル：マーク価格 · 証拠金 · 強制決済 · 資金調達率</span><span className="dg-s">同じコンセンサスイベントでコミットされた価格で決済</span></div>
  </div>
</div>

<h2 id="producing-an-index-price">
  インデックス価格の生成
</h2>

どのバリデータも自前のオラクルsidecarを動かします。sidecarは複数の取引所からデータを集め、銘柄ごとにひとつのインデックス価格へ縮約します。この縮約は意図的に単純平均ではありません。平均は、ひとつの不良ソースで簡単に動いてしまうからです。

<div className="dg" data-dg="oracle-aggregate">
  <div className="dg-c" style={{aspectRatio:"720 / 236"}}>
    <svg className="dg-w" viewBox="0 0 720 236" aria-hidden="true">
      <path className="dg-wire" d="M 100.67 84.00 L 114.27 84.00" />

      <path className="dg-head" d="M 120.67 84.00 L 114.27 88.40 L 114.27 79.60 Z" />

      <path className="dg-wire" d="M 225.33 84.00 L 238.93 84.00" />

      <path className="dg-head" d="M 245.33 84.00 L 238.93 88.40 L 238.93 79.60 Z" />

      <path className="dg-wire" d="M 350.00 84.00 L 363.60 84.00" />

      <path className="dg-head" d="M 370.00 84.00 L 363.60 88.40 L 363.60 79.60 Z" />

      <path className="dg-wire" d="M 474.67 84.00 L 488.27 84.00" />

      <path className="dg-head" d="M 494.67 84.00 L 488.27 88.40 L 488.27 79.60 Z" />

      <path className="dg-wire" d="M 599.33 84.00 L 612.93 84.00" />

      <path className="dg-head" d="M 619.33 84.00 L 612.93 88.40 L 612.93 79.60 Z" />
    </svg>

    <div className="dg-b dg--sky" style={{left:"0.0000%",top:"12.7119%",width:"13.4259%",height:"45.7627%"}}><span className="dg-t">フィルタ</span><span className="dg-s">非有限値と不正な形式の値</span></div>
    <div className="dg-b dg--sky" style={{left:"17.3148%",top:"12.7119%",width:"13.4259%",height:"45.7627%"}}><span className="dg-t">中央値</span><span className="dg-s">ソース横断</span></div>
    <div className="dg-b dg--sky" style={{left:"34.6296%",top:"12.7119%",width:"13.4259%",height:"45.7627%"}}><span className="dg-t">丸め込み</span><span className="dg-s">各ソースを中央値 ± バンドへ</span></div>
    <div className="dg-b dg--sky" style={{left:"51.9444%",top:"12.7119%",width:"13.4259%",height:"45.7627%"}}><span className="dg-t">重み付け</span><span className="dg-s">スプレッドと安定性で</span></div>
    <div className="dg-b dg--sky" style={{left:"69.2593%",top:"12.7119%",width:"13.4259%",height:"45.7627%"}}><span className="dg-t">上限</span><span className="dg-s">取引所ティアで</span></div>
    <div className="dg-b dg--green" style={{left:"86.5741%",top:"12.7119%",width:"13.4259%",height:"45.7627%"}}><span className="dg-t">インデックス価格</span></div>
    <div className="dg-b dg-dashed dg-left" style={{left:"0.0000%",top:"69.4915%",width:"100.0000%",height:"26.2712%"}}><span className="dg-t">この順序こそが設計</span><span className="dg-s">フィルタが最初に走るのは、無限大の値がひとつでも中央値や加重和まで生き残れば、その後のすべてが汚染されるからです。破棄ではなく丸め込みにすることで、すべてのソースを数に入れたまま、どれか一つが引っ張れる距離に上限をかけます。</span></div>
    <div className="dg-free" style={{left:"0.0000%",top:"0.0000%",width:"100.0000%"}}><div className="dg-n">単純平均ではない。平均はひとつの不良ソースで簡単に動く</div></div>
  </div>
</div>

**フィルタ**。非有限値と不正な形式の値は、下流の何にも触れないうちに破棄されます。この順序が重要です。無限大の値がひとつでも中央値や加重和まで生き残れば、結果全体が汚染されます。

**中央値への丸め込み**。まずソース横断で中央値を取り、次に各ソースをその周囲のバンド内へ丸め込みます。バンドは銘柄ごとに設定され、市場が最も厚いところで最も狭くなります。

| 銘柄クラス           | 中央値からのバンド |
| --------------- | --------- |
| 主要暗号資産（BTC、ETH） | 1%        |
| ステーブルコイン        | 0.5%      |
| その他             | 3%        |

バンドの外を提示するソースは破棄されません。バンドの端まで引き寄せられます。この違いは重要です。破棄は攻撃者にサンプルを縮められる余地を与えますが、丸め込みはすべてのソースを数に入れたまま、どれか一つが引っ張れる距離に上限をかけます。

**品質で重み付けし、上限をかける**。丸め込まれたソースは、均等ではなく加重平均で合成されます。重みは、気配の品質が高いほど、また安定性が高いほど大きくなります。スプレッドが狭ければ、それだけ大きく数えられるということです。安定性は直近の出来高を長期の日次平均と比較して測るため、出来高が異常に跳ねた取引所が、それによって影響力を得ることはありません。

重みはさらにソースのティアによって上限がかけられます。気配がどれだけ良く見えても、単一の取引所が結果を支配できないようにするためです。

| ティア      | 重みの上限 |
| -------- | ----- |
| ティア1の取引所 | 0.45  |
| ティア2の取引所 | 0.35  |

別の通貨建てで気配が出ている銘柄は、これらすべての前に共通のクオート通貨へ換算されます。単位の混ざった数値ではなく、比較可能な数値の上で中央値を取るためです。

<Note>
  ここに出てくる定数はどれも自然定数ではなく、方針上の決定です。乖離バンド、ティアの割り当て、重みの上限はいずれも設定値であり、取引所の挙動が変わったときや新しいソースを追加したときに調整されるレバーです。
</Note>

<h2 id="certifying-it">
  認証の仕組み
</h2>

sidecarが生成するインデックス価格は、ひとつのバリデータの見解にすぎません。それをネットワークが決済に使えるものへ変えるのは、コンセンサスの中です。

バリデータは自分のsidecarから価格を取得し、**署名する前に検証します**。設定されたしきい値に対する鮮度もそこに含まれるため、停止したsidecarは古い値を出すのではなく何も提出しません。そのうえで価格データに署名し、署名済みの提出をコンセンサスネットワークメッセージとして他のバリデータへgossipします。

認証済み価格はエポックとラウンドごとに組み立てられ、ブロック提案に載ります。したがって、ブロックのトランザクションをコミットする署名は、それらのトランザクションが決済された価格も同時にコミットします。オラクル専用のトランザクションは存在せず、価格が公開されてから使われるまでの時間差もありません。

**そのラウンドの有効な価格観測がなければ、バリデータはブロックを提案できません**。価格の可用性はブロック生成の前提条件であって、実行が見つかることを期待する入力ではありません。

<h2 id="index-price-and-mark-price">
  インデックス価格とマーク価格
</h2>

認証されるのは**インデックス価格**であり、外部市場に対するネットワークの見解です。取引が約定する価格ではありません。

[カーネル](/ja/protocol/architecture/kernel)はそこから**マーク価格**を導出します。平滑化と上下限がかけられており、インデックスの短時間の乖離が強制決済の連鎖につながらないようにしてあります。証拠金、強制決済、資金調達率が実際に使うのはマーク価格です。取引側から見た説明は[マーク価格](/ja/trading/mark-price)と[インデックス価格](/ja/trading/index-price)を参照してください。

<h2 id="what-this-does-and-does-not-guarantee">
  保証すること、保証しないこと
</h2>

保証されるのは、トランザクションが決済に使った価格が、そのトランザクションをコミットしたラウンドでバリデータのクォーラムによって認証されたことと、どの実行経路も別の価格を読みえなかったことです。

価格が正しかったことは保証されません。インデックスの元になっている取引所自体が間違っていれば（複数の取引所にまたがる協調的な動きや、市場全体の乖離によって）、丸め込みと重み付けは単一のソースが結果を押せる距離を制限しますが、市場が持っていなかった情報を作り出すことはできません。

<Warning>
  価格は、取引システムにとって最も影響の大きい外部入力です。ここでの操作耐性は程度の問題であって、あるかないかの性質ではありません。どこにリスクが残るのかは[リスク開示](/ja/protocol/security/risks)を参照してください。
</Warning>

<h2 id="where-to-go-next">
  次に読む
</h2>

<CardGroup cols={2}>
  <Card title="IntentionBFT" href="/ja/protocol/architecture/intention-bft">
    認証が、ブロックをコミットするのと同じ署名にどう結び付けられるのかです。
  </Card>

  <Card title="クリアリングハウス" href="/ja/protocol/architecture/clearinghouse">
    証拠金、強制決済、資金調達率が、その価格をどう使うのかです。
  </Card>

  <Card title="マーク価格" href="/ja/trading/mark-price">
    インデックスが、ポジションを動かす数値になるまでです。
  </Card>

  <Card title="リスク開示" href="/ja/protocol/security/risks">
    価格リスクがどこに残り、それがいくらの損失になりうるのかです。
  </Card>
</CardGroup>
