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][offers.html#オファーの有効期限] | 数字 | UInt32 | (省略可) オファーがアクティブでなくなるまでの時間(Rippleエポック以降の経過秒数)。 |
OfferSequence |
数字 | UInt32 | (省略可) 最初に削除されるオファー(OfferCancelと同様に指定されます)。 |
TakerGets |
通貨額 | Amount | オファーの作成者によって作成される金額および通貨の種類。 |
TakerPays |
通貨額 | Amount | オファーの作成者によって要求される金額および通貨の種類。 |
OfferCreateフラグ
OfferCreate型のトランザクションについては、Flags
フィールドで以下の値が追加でサポートされます。
フラグ名 | 16進数 | 10進数 | 説明 |
---|---|---|---|
tfPassive |
0x00010000 |
65536 | 有効な場合、オファーはオファーが完全に一致するオファーを消費せず、代わりにレジャーのOfferオブジェクトになります。それはまだクロスしたオファーを消費します。 |
tfImmediateOrCancel |
0x00020000 |
131072 | オファーをIOC注文 として扱います。有効な場合、オファーはレジャーオブジェクトにはなりません。レジャー内の既存のオファーと一致させようとするだけです。即時にオファーがどのオファーとも一致しない場合、どの通貨とも取引せずに「正常に」実行します。この場合、トランザクションはtesSUCCESS の結果コードを返しますが、レジャー内には、Offerオブジェクトを作成しません。 |
tfFillOrKill |
0x00040000 |
262144 | オファーをFOK注文 として扱います。レジャー内の既存のオファーのみを一致私用とします。またこれは、全TakerPays の数量が取得できる場合に限られます。fix1578 amendmentが有効な場合でオファーを配置した時に実行できない場合、トランザクションはtecKILLED の結果コードを返します。そうでない場合は、トランザクションは、どの通貨とも取り引きせずにキャンセルされた場合でもtesSUCCESS の結果コードを返します。 |
tfSell |
0x00080000 |
524288 | 取引所でTakerPays Amountよりも多く取得することになっても、TakerGets Amountを交換します。 |
エラーケース
エラーコード | 説明 |
---|---|
temINVALID_FLAG |
トランザクションがtfImmediateOrCancel とtfFillOrKill 両方を指定した場合に発生します。 |
tecEXPIRED |
トランザクションが指定したExpiration の時間が既に経過している場合に発生します。 |
tecKILLED |
トランザクションがtfFillOrKill を指定し、全額を約定できない場合に発生します。ImmediateOfferKilled amendment が有効な場合、この結果コードは、トランザクションがtfImmediateOrCancel を指定して資金が移動せずに実行された場合にも発生します(これまでは、これはtesSUCCESS を返していました)。 |
temBAD_EXPIRATION |
トランザクションのExpiration フィールドの値が無効なフォーマットの場合に発生します。 |
temBAD_SEQUENCE |
トランザクションのOfferSequence フィールドの値が無効なフォーマットであるか、トランザクション自身のSequence 番号より大きい場合に発生します。 |
temBAD_OFFER |
Offerが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 |
トランザクションの送信者が台帳で多くのアイテムを所有している場合、またはオーダーブックに同じ取引レートのオファーがすでに多く含まれている場合に発生します。 |