最終更新:
編集

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の型内部の型説明
Expiration数字UInt32(省略可) オファーがアクティブでなくなるまでの時間(Rippleエポック以降の経過秒数)。
OfferSequence数字UInt32(省略可) 最初に削除されるオファー(OfferCancelと同様に指定されます)。
TakerGets通貨額Amountオファーの作成者によって作成される金額および通貨の種類。
TakerPays通貨額Amountオファーの作成者によってリクエストされる金額および通貨の種類。

OfferCreateフラグ

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

フラグ名16進数10進数説明
tfPassive0x0001000065536有効な場合、オファーはオファーが完全に約定するオファーを消費せず、代わりにレジャーのOfferオブジェクトになります。それはまだクロスしたオファーを消費します。
tfImmediateOrCancel0x00020000131072オファーをIOC注文として扱います。有効な場合、オファーはレジャーオブジェクトにはなりません。レジャー内の既存のオファーと約定させようとするだけです。即時にオファーがどのオファーとも約定しない場合、どの通貨とも取引せずに「正常に」実行します。この場合、トランザクションはtesSUCCESS結果コードを返しますが、レジャー内には、Offerオブジェクトを作成しません。
tfFillOrKill0x00040000262144オファーをFOK注文として扱います。レジャー内の既存のオファーのみを約定しようとします。またこれは、全TakerPaysの数量が取得できる場合に限られます。fix1578 amendmentが有効な場合でオファーを配置した時に実行できない場合、トランザクションはtecKILLED結果コードを返します。そうでない場合は、トランザクションは、どの通貨とも取り引きせずにキャンセルされた場合でもtesSUCCESSの結果コードを返します。
tfSell0x00080000524288取引所でTakerPaysAmountよりも多く取得することになっても、TakerGets Amountを交換します。

エラーケース

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