トランザクション／OfferCreateの日本語訳

# トランザクション／OfferCreateの日本語訳
https://ripple.com/build/transactions/#offercreate

翻訳に慣れてないため変な訳や言い回しがあれば突っ込んでください。

## オファーの作成

OfferCreate transactionは効果的な指値注文である。それは通貨を交換する意思を宣言し、配置された時に完全に約定されない場合は、グローバル元帳にオファーノードが作成されます。オファーは部分的に約定することができる。

```
{
    "TransactionType": "OfferCreate",
    "Account": "ra5nK24KXen9AHvsdFTKHSANinZseWnPcX",
    "Fee": "12",
    "Flags": 0,
    "LastLedgerSequence": 7108682,
    "Sequence": 8,
    "TakerGets": "6000000",
    "TakerPays": {
      "currency": "GKO",
      "issuer": "ruazs5h1qEsqpke88pcqnaseXdm6od2xc",
      "value": "2"
    }
}
```

| Field | JSON Type | Internal Type | Description |
|:------|:----------|:--------------|:------------|
|Expiration|Unsigned Integer|UInt32|(Optional) リップルエポックからの秒数でその時間が経過するとオファーは無効になる|
|OfferSequence|Unsigned Integer|UInt32|(Optional) 以前のOfferCreate transactionのシーケンス番号。指定された場合は、そのトランザクションで作成された元帳内の任意のオファーノードをキャンセルする。指定されたオファーが存在しない場合は、エラーとはみなされません。|
|TakerGets|Object (Non-XRP), or String (XRP)|Amount|金額と通貨の種類はオファー作成者によって用意されている。|
|TakerPays|Object (Non-XRP), or String (XRP)|Amount|金額と通貨の種類はオファー作成者によって要求されている。|

## オファーのライフサイクル

OfferCreateトランザクションが処理されると、自動的にマッチングするか、交わったオファーの範囲で消費される。 
（既存のオファーは、要求されたよりも良いレートを提供する場合は、オファーの作成者は用意されたTakerPaysの数量を受け取るために、満たされたTakerGetsの数量よりも少なく支払うことができる。 ）

完全にTakerPaysの数量を満たしていない場合には、オファーは元帳でオファーノードになります。
（この動作を変更するOfferCreateフラグを使用することができます。 ）

元帳内のオファーは、追加のOfferCreateトランザクションによって既存のオファーと一致するか、支払い経路と接続したオファーを使った支払いのいずれかによって満たすことができる。
オファーは、部分的に満たされると部分的に資金を供給することができます。

TakerGetsパラメータで指定された通貨（任意の正数、ゼロ以外の数量）をあなたが所持している限りオファーを作成することができます。
あなたが持っているその通貨の任意の量、TakerGetsの数量まで、TakerPaysの数量が満たされるまで販売されます。

誰も借金となるオファーを配置することはできません。

それでもオファーが一時的または恒久的に未積立になることはあります。

* 作成者は、すでにTakerGetsで指定した通貨を持っていない場合。作成者はその通貨を取得するとオファーは再び資金を供給するようになる。
* オファーに資金を供給するために必要な通貨が、凍結されたトラストラインに保持されている場合。
トラストラインがもはや凍結でないときにオファーは再び資金を供給するようになる。
* 作成者は、オファーが必要とする新しいトラストラインの引当額のための十分なXRPを持っていない場合。 （オファーとトラストを参照してください。 ）
作成者はXRPを手に入れるか 、または必要な預金準備率が減少するとオファーは資金を供給するようになる。
* オファーに含まれた有効期限が、元帳が閉じる前に打ち切られた場合。 （有効期限を参照してください。 ）

未積立トランザクションが無期限に元帳に残ることがありますが、それは何の意味もありません。オファーは永久に元帳から削除できる唯一の方法があります。

* 完全に支払いやマッチングができるとOfferCreateトランザクションだと主張する。
* その後のOfferCancelまたはOfferCreateトランザクションによって明示的にオファーをキャンセルする。
* 同じアカウントから以前のオファーをクロスするOfferCreate。 （この場合は、古いオファーは自動的に解除されます。 ）
* オファーは、それがオーダー·ブックの先端にあったので、典型的に、トランザクション処理中に未積立であると判明する。
* これは片側またはオファーのリップル精度のサポートする範囲よりも0に近いことが判明した場合を含む。

注：オファーがまれに誤って削除されるバグである可能性があります。 （ステータスRIPD - 456を参照してください。


## オファーとトラスト

トラストライン（ TrustSetを参照）の限界値は、オファーには影響しません。言い換えると、あなたはゲートウェイが発行した償還に必要な最大数量よりも多く注文することができます。

しかし、非XRP残高を保有することは、まだそれらの残高を発行するアカウントにトラストラインが必要です。
オファーが取り込まれると、自動的に0を限界に設定することで必要なトラストラインを作成する。
トラストラインはアカウントが保持しなければならない準備金を増加させるため、新しいトラストラインを必要とするすべてのオファーはトラストラインの準備金を支払うために必要なXRPを持っているアカウントが必要です。

トラストラインは、制限内で支払としての発行を受け入れる十分な信用発行者を示している。オファーは、特定の発行を取得するための明確な指示なので、それらの限界を超えて行くことを許されている。

## オファーの優先順位

既存のオファーはTakerGetsとTakerPays間の比率として測定される「価値」によってグループ化されています。

高い価値が優先的に提供されます。

（すなわち、オファーを受け入れる人は、彼らが支払う通貨の量を可能な限り受け入れる。 ）

同じ価値のオファーはオファーが最も古いバージョンの台帳に置かれたかに基づいている。

同じ品質の提供が同じ元帳バージョンで配置されている場合、それらが投影される順序は、トランザクションが元帳に適用された標準的な順序によって決定される。

このふるまいは、決定論的、効率的、かつゲームに困難であるように設計されている。

## 期限切れ

トランザクションが伝播し、確認するために時間がかかることがあるので、元帳のタイムスタンプは、オファーの有効性を決定するために使用される。その有効期限が最も最近に検証された元帳に先立って発生したときのオファーが唯一有効期限が切れる。

あなたの手元の時計に言い換えると、最も最近に検証された元帳のタイムスタンプより後なら、有効期限フィールドを持つオファーはまだ "アクティブ"と見なされます。

あなたは完全に検証された元帳を参照してすぐに有効期限より大きいか、等しいかのオファーの最終処分を決定することができます。

注：唯一の新しいトランザクションが元帳を変更することができますので、それが非アクティブになった後に、期限切れのオファーは元帳に残ることができます。
オファーは未積立として扱われ、効果はありませんが、それは（ ledger_entryコマンドから、例えば）結果に表示し続けることができている。処理中にサーバーがそれを検出した場合、後に、期限切れのオファーが最終的に（別のOfferCreateなど）は、別の取引の結果として削除することができます。

## OfferCreate Flags

OfferCreate型のトランザクションでサポートしている追加されたFlagsフィールドの値は以下の通り

|Flag Name|Hex Value|Decimal Value|Description|
|:--------|:--------|:------------|:----------|
|tfPassive|0x00010000|65536|有効にすると、オファーが正確に一致してしないとオファーを消費せず、代わりに元帳におけるオファーノードとなります。それは交わった段階でオファーを消費します。|
|tfImmediateOrCancel|0x00020000|131072|即時にオファーを処理するか注文を取り消す。有効にすると、オファーが元帳ノードになることはありません。元帳内の既存のオファーだけで一致させようとします。|
|tfFillOrKill|0x00040000|262144|Fill or Kill（FOK）注文のオファーを扱います。元帳内の既存のオファーに用意されたTakerPaysの数量と一致して得られる場合にのみこれを行う。|
|tfSell|0x00080000|524288|交換でTakerPaysの数量よりも多く獲得することになっても、用意されたTakerGetsの数量を交換します。|

次の無効なフラグの組み合わせがtemINVALID_FLAGエラーを引き起こします。

* tfImmediateOrCancelとtfFillOrKill