# Offer

[[ソース]](https://github.com/XRPLF/rippled/blob/7e24adbdd0b61fb50967c4c6d4b27cc6d81b33f3/include/xrpl/protocol/detail/ledger_entries.macro#L242-L255)

`Offer`レジャーエントリは、XRP Ledgerの[分散型取引所](/ja/docs/concepts/tokens/decentralized-exchange)で通貨を交換する[オファー](/ja/docs/concepts/tokens/decentralized-exchange/offers)を表しています。（金融ではより伝統的に *オーダー* として知られています）。[OfferCreateトランザクション](/ja/docs/references/protocol/transactions/types/offercreate)は他のOfferを全額約定できない場合、Offerエントリを作成します。

オファーがネットワーク上の他の活動によって資金不足になることはありますが、元帳には残ります。トランザクションを処理する際、ネットワークはトランザクションが見つけた資金不足のオファーを自動的に削除します。( *トランザクションのみ* が台帳の状態を変更できるため、削除が行われないと資金不足のオファーが残ってしまいます。)

## のJSONの例


```json
{
  "Account": "rBqb89MRQJnMPq8wTwEbtz4kvxrEDfcYvt",
  "BookDirectory": "ACC27DE91DBA86FC509069EAF4BC511D73128B780F2E54BF5E07A369E2446000",
  "BookNode": "0000000000000000",
  "Flags": 131072,
  "LedgerEntryType": "Offer",
  "OwnerNode": "0000000000000000",
  "PreviousTxnID": "F0AB71E777B2DA54B86231E19B82554EF1F8211F92ECA473121C655BFC5329BF",
  "PreviousTxnLgrSeq": 14524914,
  "Sequence": 866,
  "TakerGets": {
    "currency": "XAG",
    "issuer": "r9Dr5xwkeLegBeXq6ujinjSBLQzQ1zQGjH",
    "value": "37"
  },
  "TakerPays": "79550000000",
  "index": "96F76F27D8A327FC48753167EC04A46AA0E382E6F57F32FD12274144D00F1797"
}
```

## のフィールド

[共通フィールド](/ja/docs/references/protocol/transactions/common-fields)に加えて、エントリは以下のフィールドを使用します。

| 名前 | JSONの型 | [内部の型](/ja/docs/references/protocol/binary-format) | 必須? | 説明 |
|  --- | --- | --- | --- | --- |
| `Account` | 文字列 | AccountID | はい | このオファーを所有するアカウントのアドレス。 |
| `AdditionalBooks` | 配列 | Array | いいえ | 追加のオファーディレクトリーのリスト。このフィールドは、このオファーが[許可型DEX](/ja/docs/concepts/tokens/decentralized-exchange/permissioned-dexes)でハイブリッドオファーの場合にのみ存在します。配列には常に1つのエントリが含まれます。([PermissionedDEX amendment](/ja/resources/known-amendments#permissioneddex) が必要です。) |
| `BookDirectory` | 文字列 - [ハッシュ](/ja/docs/references/protocol/data-types/basic-data-types#%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5) | UInt256 | はい | このオファーにリンクしている[オファーディレクトリー](/ja/docs/references/protocol/ledger-data/ledger-entry-types/directorynode)のID。 |
| `BookNode` | 文字列 | UInt64 | はい | Offerディレクトリが複数ページで構成されている場合に、このオブジェクトにリンクしているページを示すヒント。 |
| `DomainID` | 文字列 - [ハッシュ](/ja/docs/references/protocol/data-types/basic-data-types#%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5) | Hash256 | いいえ | 許可型DEXのレジャーエントリID。指定された場合、対応する[許可型DEX](/ja/docs/concepts/tokens/decentralized-exchange/permissioned-dexes)のみを使用するパスを返します。([PermissionedDEX amendment](/ja/resources/known-amendments#permissioneddex) が必要です。) |
| `Expiration` | 数値 | UInt32 | いいえ | （省略可）このオファーが資金不足とみなされる時刻。詳細は、[時間の指定](/ja/docs/references/protocol/data-types/basic-data-types#%E6%99%82%E9%96%93%E3%81%AE%E6%8C%87%E5%AE%9A)をご覧ください。 |
| `Flags` | 数値 | UInt32 | はい | このオファーに対して有効になっているブール値フラグのビットマップ。 |
| `LedgerEntryType` | 文字列 | UInt16 | はい | 値が`0x006F`（文字列`Offer`にマッピング）の場合は、このオブジェクトが通貨取引オーダーを記述することを示す。 |
| `OwnerNode` | 文字列 | UInt64 | はい | 所有者ディレクトリーが複数ページで構成されている場合に、このオブジェクトにリンクしているページを示すヒント。**注記:** このオファーには、オファーを含む所有者ディレクトリーへの直接リンクは含まれていません。これは、その値を`Account`から取得できるためです。 |
| `PreviousTxnID` | 文字列 - [ハッシュ](/ja/docs/references/protocol/data-types/basic-data-types#%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5) | UInt256 | はい | 最後にこのオブジェクトを変更したトランザクションの識別用ハッシュ。 |
| `Sequence` | 数値 | UInt32 | はい | `Offer`オブジェクトを作成した[OfferCreate](/ja/docs/references/protocol/transactions/types/offercreate)トランザクションの`Sequence`値。`Account`とこのフィールドの組み合わせによってこのオファーが識別されます。 |
| `PreviousTxnLgrSeq` | 数値 | UInt32 | はい | 最後にこのオブジェクトを変更したトランザクションが記録された[レジャーインデックス](/ja/docs/references/protocol/data-types/basic-data-types#%E3%83%AC%E3%82%B8%E3%83%A3%E3%83%BC%E3%82%A4%E3%83%B3%E3%83%87%E3%83%83%E3%82%AF%E3%82%B9)。 |
| `TakerPays` | [通貨額](/ja/docs/references/protocol/data-types/basic-data-types#%E9%80%9A%E8%B2%A8%E9%A1%8D%E3%81%AE%E6%8C%87%E5%AE%9A) | Amount | はい | オファー作成者がリクエストする残額と通貨の種類。 |
| `TakerGets` | [通貨額](/ja/docs/references/protocol/data-types/basic-data-types#%E9%80%9A%E8%B2%A8%E9%A1%8D%E3%81%AE%E6%8C%87%E5%AE%9A) | Amount | はい | オファー作成者が提供する残額と通貨の種類。 |


## Offerのフラグ

`Offer`エントリは以下のフラグを`Flags`フィールドに指定することができます。

| フラグ名 | 16進数値 | 10進数値 | 対応する[OfferCreateフラグ](/ja/docs/references/protocol/transactions/types/offercreate#offercreate%E3%83%95%E3%83%A9%E3%82%B0) | 説明 |
|  --- | --- | --- | --- | --- |
| `lsfPassive` | `0x00010000` | 65536 | `tfPassive` | オブジェクトはパッシブオファーとして発注されています。レジャー内のオブジェクトには影響しません。 |
| `lsfSell` | `0x00020000` | 131072 | `tfSell` | オブジェクトは売却オファーとして発注されています。これは台帳にあるオブジェクトには何の影響もありません (`tfSell`は指定したレートよりも良いレートが存在する場合にのみ意味を持ち、台帳にこのフラグを持ったオブジェクトが入ることはありません。)。 |
| `lsfHybrid` | `0x00040000` | 262144 | `tfHybrid` | ハイブリッドオファーとして作成されています。これは、[許可型DEX](/ja/docs/concepts/tokens/decentralized-exchange/permissioned-dexes)と公開DEXの両方にリストされていることを意味します。([PermissionedDEX amendment](/ja/resources/known-amendments#permissioneddex) が必要です。) |


## の準備金

エントリは、台帳上にエントリがある限り、オファーを出したアカウントの所有者準備金の対象の1つとしてカウントされます。オファーをキャンセルまたは約定すると、準備金が解放されます。準備金は、資金がないことが判明してオファーが削除された場合にも解放されます。

## オファーIDのフォーマット

`Offer`オブジェクトのIDは、以下の値がこの順序で連結されている[SHA-512Half](/ja/docs/references/protocol/data-types/basic-data-types#%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5)です。

* Offerスペースキー（`0x006F`）
* オファーを行うアカウントのAccountID
* オファーを作成した[OfferCreateトランザクション](/ja/docs/references/protocol/transactions/types/offercreate)のシーケンス番号
OfferCreateトランザクションが[チケット](/ja/docs/concepts/accounts/tickets)を使用した場合、代わりに`TicketSequence`値を使用します。