最終更新:
編集

sign

[ソース]

signメソッドはJSONフォーマットのトランザクションシード値を受け取り、トランザクションの署名済みバイナリー表現を返します。マルチシグトランザクションに署名を付与する場合は、代わりにsign_forメソッドを使用します。

デフォルトでは、このメソッドは管理者専用です。サーバ管理者がパブリック署名を有効にしている場合、パブリックメソッドとして使用できます

注意
独自のrippledサーバを運用している場合を除き、このコマンドを使用するのではなく、クライアントライブラリを実行してください。詳細については安全な署名の設定をご覧ください。

リクエストのフォーマット

リクエストのフォーマットの例:

{
  "id": 2,
  "command": "sign",
  "tx_json" : {
      "TransactionType" : "Payment",
      "Account" : "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",
      "Destination" : "ra5nK24KXen9AHvsdFTKHSANinZseWnPcX",
      "Amount" : {
         "currency" : "USD",
         "value" : "1",
         "issuer" : "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn"
      }
   },
   "secret" : "s████████████████████████████",
   "offline": false,
   "fee_mult_max": 1000
}

トランザクションに署名するには、トランザクションを承認できるシークレットキーを提供する必要があります。通常、サーバが秘密鍵を取得するシード値を提供します。これを行うには、以下の方法があります。

  • secretフィールドにシードを指定し、key_typeフィールドを省略します。この値は、XRP Ledgerのbase58シード、RFC-1751、16進値のフォーマットで記述するか、文字列パスフレーズとして記述します(secp256k1キーのみ)。
  • key_type値と、seedseed_hex、またはpassphraseのいずれか1つを提供します。secretフィールドは省略します。(コマンドライン構文ではサポートされません)。

リクエストには以下のパラメーターが含まれます。

Field説明
tx_jsonオブジェクトJSONフォーマットのトランザクション定義
secret文字列(省略可) トランザクションを提供するアカウントの秘密シード。トランザクションへの署名に使用されます。信頼できないサーバに対して、またはセキュリティが確保されていないネットワーク接続を通じて機密情報を送信しないでください。key_typeseedseed_hexpassphraseと同時に使用することはできません。
seed文字列(省略可) トランザクションを提供するアカウントの秘密シード。トランザクションへの署名に使用されます。XRP Ledgerのbase58フォーマットにする必要があります。指定する場合は、key_typeも指定する必要があります。secretseed_hexpassphraseと同時に使用することはできません。
seed_hex文字列(省略可) トランザクションを提供するアカウントの秘密シード。トランザクションへの署名に使用されます。16進フォーマットにする必要があります。指定する場合は、key_typeも指定する必要があります。secretseedpassphraseと同時に使用することはできません。
passphrase文字列(省略可) トランザクションを提供するアカウントの秘密シード。文字列パスフレーズとして、トランザクションへの署名に使用されます。指定する場合は、key_typeも指定する必要があります。secretseedseed_hexと同時に使用することはできません。
key_type文字列(省略可) 指定された暗号化キーペアの署名アルゴリズム。有効な種類は、secp256k1またはed25519です。デフォルトはsecp256k1です。secretと同時に使用することはできません。
offlineブール値(省略可) trueの場合は、トランザクションの生成時に、トランザクションの詳細を自動入力しないでください。デフォルトはfalseです。
build_pathブール値(省略可) Payment型のトランザクションに対して指定した場合、署名前にPathsフィールドが自動で入力されます。注意: サーバは、このフィールドの値ではなく、このフィールドが存在するかどうかを調べます。この動作は変更される可能性があります。
fee_mult_max整数(省略可)自動的に提供されるFeeフィールドの上限値を設定します。現在のトランザクションコストの負荷の乗数が(fee_mult_max ÷ fee_div_max)よりも大きい場合、署名はrpcHIGH_FEEエラーで失敗します。トランザクションのFeeフィールド(トランザクションコスト)を指定した場合は無視されます。デフォルトは10です。
fee_div_max整数(省略可) 現在のトランザクションコストの負荷の乗数が(fee_mult_max ÷ fee_div_max)よりも大きい場合、署名はrpcHIGH_FEEエラーで失敗します。トランザクションのFeeフィールド(トランザクションコスト)を指定した場合は無視されます。デフォルトは1です。新規: rippled 0.30.1

自動入力可能なフィールド

tx_jsonトランザクションオブジェクト)の特定のフィールドを省略すると、サーバは自動的に入力しようとします。リクエストのofflinetrueと指定しない限り、サーバは署名前に以下のフィールドを提供します。

  • Sequence - サーバは、送信者のアカウント情報にある次のシーケンス番号を自動的に使用します。
    • 注意: アカウントの次のシーケンス番号は、このトランザクションが適用されるまで増分されません。トランザクションの送信および個々のトランザクションへのレスポンスを待たずに複数のトランザクションに署名する場合は、最初のトランザクション以降の各トランザクションについて、正しいシーケンス番号を手動で提供する必要があります。
  • Fee - Feeパラメーターを省略した場合、サーバは適切なトランザクションコストを自動的に入力しようとします。本番環境のXRP Ledgerでは、適切なfee_mult_max値を提供しない限り、この処理はrpcHIGH_FEEエラーで失敗します。
    • fee_mult_maxパラメーターとfee_div_maxパラメーターは、リファレンストランザクションコストに適用される負荷スケーリング乗数によって、自動的に提供されるトランザクションコストの上限値を設定します。デフォルト設定では、自動的に提供される値が10×の乗数より大きい場合、エラーが返されます。ただし、本番環境のXRP Ledgerでは、1000×の負荷乗数を使用することが一般的です。
    • コマンドライン構文では、fee_mult_maxおよびfee_div_maxはサポートされません。本番環境のXRP Ledgerの場合は、Fee値を提供する必要があります。
    • 注意: 悪意のあるサーバは、fee_mult_maxfee_div_maxの値を無視して、きわめて大きなトランザクションコストを指定するおそれがあります。
  • Paths - Payment型のトランザクションの場合(XRP間の移動を除く)、Pathsフィールドは、ripple_path_findメソッドを使用した場合と同様に自動的に入力できます。build_pathを指定した場合のみ入力されます。

レスポンスのフォーマット

処理が成功したレスポンスの例:

{
  "id": 2,
  "status": "success",
  "type": "response",
  "result": {
    "tx_blob": "1200002280000000240000016861D4838D7EA4C6800000000000000000000000000055534400000000004B4E9C06F24296074F7BC48F92A97916C6DC5EA9684000000000002710732103AB40A0490F9B7ED8DF29D246BF2D6269820A0EE7742ACDD457BEA7C7D0931EDB7446304402200E5C2DD81FDF0BE9AB2A8D797885ED49E804DBF28E806604D878756410CA98B102203349581946B0DDA06B36B35DBC20EDA27552C1F167BCF5C6ECFF49C6A46F858081144B4E9C06F24296074F7BC48F92A97916C6DC5EA983143E9D4A2B8AA0780F682D136F7A56D6724EF53754",
    "tx_json": {
      "Account": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",
      "Amount": {
        "currency": "USD",
        "issuer": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",
        "value": "1"
      },
      "Destination": "ra5nK24KXen9AHvsdFTKHSANinZseWnPcX",
      "Fee": "10000",
      "Flags": 2147483648,
      "Sequence": 360,
      "SigningPubKey": "03AB40A0490F9B7ED8DF29D246BF2D6269820A0EE7742ACDD457BEA7C7D0931EDB",
      "TransactionType": "Payment",
      "TxnSignature": "304402200E5C2DD81FDF0BE9AB2A8D797885ED49E804DBF28E806604D878756410CA98B102203349581946B0DDA06B36B35DBC20EDA27552C1F167BCF5C6ECFF49C6A46F8580",
      "hash": "4D5D90890F8D49519E4151938601EF3D0B30B16CD6A519D9C99102C9FA77F7E0"
    }
  }
}

このレスポンスは標準フォーマットに従っており、正常に完了した場合は結果に次のフィールドが含まれます。

Field説明
tx_blob文字列正しく作成された署名済みトランザクションの16進バイナリー表現
tx_jsonオブジェクト自動的に入力されたフィールドを含む、署名済みトランザクション全体のJSON仕様

注意
このコマンドの結果としてエラーメッセージが表示された場合は、リクエストで指定されたシークレット値がメッセージの中に含まれている可能性があります。これらのエラーが他者から見えない状態であることを確認してください。

  • このエラーは、複数の人物が参照できるログファイルに書き込まないでください。
  • デバッグを目的として、誰でも参照できる場所にこのエラーを貼り付けないでください。
  • このエラーメッセージは、誤ってWebサイトに表示しないようにしてください。

考えられるエラー

  • いずれかの汎用エラータイプ
  • invalidParams - 1つ以上のフィールドの指定が正しくないか、1つ以上の必須フィールドが指定されていません。
  • highFee - トランザクションコストに適用される現在の負荷乗数が、自動的に提供されるトランザクションコストの上限を超えています。リクエストで指定するfee_mult_maxを大きくするか(1000以上)、tx_jsonFeeフィールドに値を手動で指定します。
  • tooBusy - トランザクションにパスが含まれていませんが、サーバがビジーであるため、パス検出処理をすぐに実行できません。管理者として接続している場合は発生しません。
  • noPath - トランザクションにパスが含まれておらず、サーバは、このペイメントの発生経路となるパスを検出できませんでした。