最終更新:
編集

OfferCreate

[ソース]

OfferCreateトランザクションは分散型取引所注文を作成します。

OfferCreate JSONの例

{
    "TransactionType": "OfferCreate",
    "Account": "ra5nK24KXen9AHvsdFTKHSANinZseWnPcX",
    "Fee": "12",
    "Flags": 0,
    "LastLedgerSequence": 7108682,
    "Sequence": 8,
    "TakerGets": "6000000",
    "TakerPays": {
      "currency": "GKO",
      "issuer": "ruazs5h1qEsqpke88pcqnaseXdm6od2xc",
      "value": "2"
    }
}
トランザクションの例を確認

OfferCreate フィールド

共通フィールドに加えて、OfferCreateトランザクションは以下のフィールドを使用します。

フィールドJSONの型内部の型必須?説明
DomainID文字列 - ハッシュHash256いいえ許可型DEXのレジャーエントリID。指定された場合、対応する許可型DEXのみを使用するパスを返します。(PermissionedDEX amendment が必要です。)
Expiration整数UInt32いいえオファーがアクティブでなくなるまでの時間(Rippleエポック以降の経過秒数)。
OfferSequence整数UInt32いいえ最初に削除されるオファー(OfferCancelと同様に指定されます)。
TakerGets通貨額Amountはいオファーの作成者によって作成される金額および通貨の種類。
TakerPays通貨額Amountはいオファーの作成者によってリクエストされる金額および通貨の種類。

OfferCreateフラグ

OfferCreate型のトランザクションについては、Flagsフィールドで以下の値が追加でサポートされます。

フラグ名16進数10進数説明
tfPassive0x0001000065536このオファーと完全に一致するオファーを約定しません。これにより、特定の値で交換レートを固定するオファーを台帳に設定できます。
tfImmediateOrCancel0x00020000131072オファーを即時またはキャンセル注文として扱い、Offerエントリをオーダーブックに配置しません。トランザクションは、処理時に既存のオファーを約定し、可能な限り多くの取引を行います。
tfFillOrKill0x00040000262144オファーを即時またはキャンセル注文として扱い、Offerエントリをオーダーブックに配置しません。実行時に完全に約定できない場合、オファーをキャンセルします。デフォルトでは、所有者は完全なTakerPaysの金額を受け取る必要があります。tfSellフラグが有効な場合、所有者は代わりに完全なTakerGetsの金額を約定できる必要があります。
tfSell0x00080000524288取引所でTakerPaysの金額よりも多く取得することになっても、TakerGetsの金額を約定します。
tfHybrid0x001000001048576許可型DEXとオープンDEXの両方を使用できるハイブリッドオファーにします。このフラグを使用する場合、DomainIDフィールドを指定する必要があります。

エラーケース

エラーコード説明
tecDIR_FULLトランザクションの送信者が台帳で多くのアイテムを所有している場合、またはオーダーブックに同じ取引レートのオファーがすでに多く含まれている場合に発生します。
tecEXPIREDトランザクションが指定したExpirationの時間が既に経過している場合に発生します。
tecFROZENフリーズされたトラストライン(ローカルおよびグローバルのフリーズを含む)上のトークンを含むトランザクションの場合に発生します。TakerPays(購入額)トークンが発行者によってディープフリーズされている場合に発生します。
tecINSUF_RESERVE_OFFER所有者が台帳に新しいOfferオブジェクトを追加するための準備要件を満たすのに十分なXRPを持っておらず、トランザクションがどの通貨も変換しなかった場合に発生します。(トランザクションが何らかの金額のトレードに成功した場合、トランザクションは結果コードtesSUCCESSで成功しますが、残りは台帳にOfferオブジェクトを作成しません)。
tecKILLEDトランザクションがtfFillOrKillを指定し、全額を約定できない場合に発生します。ImmediateOfferKilled amendment が有効な場合、この結果コードは、トランザクションがtfImmediateOrCancelを指定して資金が移動せずに実行された場合にも発生します(これまでは、これはtesSUCCESSを返していました)。
tecNO_AUTH発行者がAuthorized Trust Linesを使用しているトークンを含むトランザクションで、トークンを受け取るトラストラインが存在するが認証されていない場合に発生します。
tecNO_ISSUERトランザクションで、issuerの値が台帳の有効化されたアカウントでないトークンを指定した場合に発生します。
tecNO_LINE発行者がAuthorized Trust Linesを使用しているトークンを含むトランザクションで、必要なトラストラインが存在しない場合に発生します。
tecNO_PERMISSIONトランザクションがDomainIDを使用しているが、送信者がそのドメインのメンバーではない場合に発生します。(PermissionedDEX amendment )
tecUNFUNDED_OFFERトランザクションの送信者がTakerGetsの通貨を正の値で保有していない場合に発生する。(例外: TakerGetsにトランザクションの送信者が発行するトークンを指定した場合、トランザクションは成功します)。
temBAD_CURRENCYトランザクションで通貨コードが"XRP"のトークンが指定された場合に発生します。
temBAD_EXPIRATIONトランザクションのExpirationフィールドの値が無効なフォーマットの場合に発生します。
temBAD_ISSUERトランザクションが無効なissuer値を持つトークンを指定した場合に発生します。
temBAD_OFFEROfferがXRPとXRPを交換しようとした場合、またはトークンの無効な量やマイナスの量を交換しようとした場合に発生します。
temBAD_SEQUENCEトランザクションのOfferSequenceフィールドの値が無効なフォーマットであるか、トランザクション自身のSequence番号より大きい場合に発生します。
temINVALID_FLAGトランザクションがtfImmediateOrCanceltfFillOrKill両方を指定した場合に発生します。
temREDUNDANTトランザクションが同じトークン(同じ発行者、通貨コード)を指定した場合に発生します。