Raw Transactions

提供: tezos-wiki
移動先: 案内検索

概要[編集]

"raw transaction API"は、 Bitcoin-Qt / bitcoindバージョン0.7。開発者または非常に洗練されたエンドユーザーに、トランザクションの作成とブロードキャストに対する低レベルのアクセスを提供します。

JSON-RPC API[編集]

listunspent [minconf = 1] [maxconf = 999999][編集]

ウォレット内のminconfとmaxconf(両端を含む)確認の間にある未使用トランザクション出力の配列を返します。各出力は、txid、output、scriptPubKey、amount、confirmationsの各キーを持つ5要素オブジェクトです。 txidは16進トランザクションID、出力はそのトランザクションの出力、scriptPubKeyはその出力の16進符号化CScript、amountはその出力の値、確認はチェーン内のトランザクションの深さです。

lockunspentはロックを解除しますか? [{"" txid ":txid、" vout ":n}、...][編集]

指定されたトランザクション出力を一時的にロック(ロック解除= false)またはロック解除(ロック解除= true)します。ロックされたトランザクション出力は、ビットコインを消費するときに自動コイン選択によって選択されません。ロックはメモリにのみ格納されます。ノードはロックされていない出力から開始し、ロックされた出力リストは、ノードが停止または失敗したときに常に(プロセスの終了により)クリアされます。

listlockunspent[編集]

すべての一時的にロックされたトランザクション出力をリストします。

createrawtransaction [{"txid":txid、 "vout":n}、...] {住所:金額、...}[編集]

指定されたアドレス(送信するトランザクション出力を含むオブジェクトの配列)を指定したトランザクション支出を作成します。文字列内の16進符号化トランザクションを返します。トランザクションの入力は署名されておらず、ウォレットに格納されていないか、ネットワークに送信されていないことに注意してください。

また、トランザクションの有効性チェックは行われません。不十分な料金体系が含まれているため、ネットワークによって中継/採掘されない無効な取引や取引を簡単に作成することができます。

decoderawtransaction <hex string>[編集]

シリアライズされた、16進数でエンコードされたトランザクションに関する情報を含むJSONオブジェクトを返します。

getrawtransaction <txid> [verbose = 0][編集]

verbose = 0の場合、トランザクションtxidのシリアル化された16進符号化データが返されます。 verboseが0以外の場合、トランザクションに関する情報を含むJSONオブジェクトを返します。 <txid>が不明な場合はエラーを返します。

= signrawtransaction <16進文字列> [{"txid":txid、 "vout":n、 "scriptPubKey":16進}、...] [<privatekey1>、...] [sighash = "ALL"] =[編集]

生トランザクション(シリアライズ、16進エンコード)のために、できるだけ多くの入力にサインします。第1引数は、連結された同じトランザクションのいくつかのバリエーションです。それらのすべてからの署名は、ローカルウォレットの鍵の署名とともに一緒に結合されます。オプションの2番目の引数は親トランザクション出力の配列なので、ネットワークに送信する前に相互に依存する未処理のトランザクションのチェーンを作成できます。 3番目のオプションの引数は、与えられた場合、トランザクションに署名するために使用される唯一のキーとなる、base58でエンコードされた秘密鍵の配列です。 4番目のオプションの引数は、シグネチャハッシュの計算方法を指定する文字列で、 "ALL"、 "NONE"、 "SINGLE"、 "ALL | ANYONECANPAY"、 "NONE | ANYONECANPAY"または "シングル| ANONONECANPAY"。 キー付きのjsonオブジェクトを返します。

  • hex:署名付きの生トランザクション(16進数文字列)
  • complete:rawtxが完全に署名されている場合は1、署名がない場合は0。

秘密鍵が与えられておらずウォレットがロックされている場合は、最初にwalletpassphraseを使用してウォレットをロック解除する必要があります。

sendrawtransaction <hex string>[編集]

rawトランザクション(シリアル化、16進数エンコード)をローカルノードとネットワークに送信します。トランザクションIDを返します。何らかの理由でトランザクションが無効な場合はエラーを返します。

動機づけするユースケース[編集]

マルチサイン取引[編集]

ファンドは、1つまたは複数のマルチシグネチャ取引出力に置かれています。署名を収集して使用する時期です。

仮定:あなたはマルチシグネチャ出力 '{txid、outputNumber、amount}を知っています。

  • createrawtransactionを使用して、使用する生トランザクションを作成します。
  • signrawtransactionを使用して署名を追加します(必要に応じてウォレットのロックを解除した後)。
  • 取引を他の人に任せて署名してください。
  • あなたまたは彼らはsendrawtransactionを使用してネットワークにトランザクションを送信します。

適切な取引手数料を含めるように注意する必要があります。そうしないと、sendrawtransactionメソッドが失敗する可能性が高くなります(即座に、または悪いことに、取引が決して確認されません)。

デバッグ/テスト[編集]

これらの低レベルのルーチンは、デバッグやテストに役立ちます。 listunspentはウォレットの状態の詳細なリストを提供し、sendrawtxは二重支払処理をテストするために使用されます。

入力選択コントロール[編集]

財布のどのコインが使われているか正確に制御する必要があります。

  • listunspentでまだ使われていない出力のリストを取得する
  • createrawtransactionを使用してトランザクションを作成する
  • signrawtransactionを使用して署名を適用する
  • sendrawtransactionを使用して送信します。

偶発的な二重支出を防ぐ責任があることに注意してください。

手数料の支払いおよび/またはトランザクションの再送信の制御[編集]

トランザクションごとに料金を支払う金額を指定します。または、ブロックに直ちに含まれていないトランザクションがネットワークに再ブロードキャストされる頻度について、独自のポリシーを実装したいとします。

  • listunspent(新しいブロックが見つかるたびに、-blocknotify機能を使用してリフレッシュされます)で、まだ使われていない、確認された出力のリストを維持します。
  • createrawtransactionで希望する料金の額を正確に取引を作成する
  • signrawtransactionを使用して署名を適用する
  • sendrawtransactionで送信してください
  • ブロックに入らない場合は、sendrawtransactionを使用して定期的に再送信します。

他に明白でない使用例[編集]

トランザクションを再ブロードキャスト[編集]

すぐにトランザクションを再ブロードキャストしたい場合は、getrawtransaction APIコールとsendrawtransaction APIコールを使用してトランザクションを行うことができます。 bashシェルスクリプトの1つのライナーは次のようになります:

  • sendrawtransaction $(getrawtransaction $ TXID)

(Bitcoin-Qt / bitcoindは、ウォレット・トランザクションがブロックに受け入れられるまで定期的に自動的に再送信することに注意してください)。

ブロードキャストせずにトランザクションを検証する[編集]

未処理トランザクションがあり、その署名がすべて正しいことを確認したい場合は、signrawtransaction API呼び出しを使用できます。 16進符号化された生のトランザクション、ビットコインがまだ分かっていない入力、およびトランザクションに署名するために使用する秘密鍵の空の配列を渡します。秘密鍵の空の配列を渡すことで、署名トランザクションが署名を行うのを防ぐことができます。 "complete"を返すと、1:既存のすべての署名が有効であり、署名がない。

関連項目[編集]

Category:技術 Category:開発者