(Gavin Andresenの文脈投稿)
いくつか簡単な提案:
キー名に”class”を使うと、少なくともJavaScript、おそらく他の言語でも”class”が予約語であるため問題が生じる。“type”や”variety”など他の同義語の方が後の問題が少ない。
あるいは、そのフィールドを削除して、クレジットを正の数、デビットを負の数で報告する方が良いかもしれない。そして別の”generated”フィールド(ブール値のtrueまたはfalse)を追加する。
各エントリはトランザクションを参照するので、“tx_id”としてSHA256の16進エンコードされたトランザクションIDを追加することを提案する。そうすればlisttransactionsがrefundtransaction JSON-RPC拡張(および将来のgettransactiondetailsでトランザクションの親、トランザクションが含まれるブロックなどを取得できるもの)とうまく連携する。
コードは以下のようになる: Code: uint256 tx_hash = transaction.GetHash(); string tx_id = tx_hash.GetHex(); mapJSONResponse.push_back(Pair(“tx_id”, tx_id));
Quote from: gavinandresen on July 30, 2010, 01:18:06 PM
いくつか簡単な提案:
キー名に”class”を使うと、少なくともJavaScript、おそらく他の言語でも”class”が予約語であるため問題が生じる。“type”や”variety”など他の同義語の方が後の問題が少ない。
もう少し具体的にしてもらえるか?主要なプログラミング言語はすべて、JSを含め、任意の文字列の内容に対して合理的に非感受性だ。文字列の内容には言語の予約キーワードやパーシングトークンを確実に含められる。
Quote from: gavinandresen on July 30, 2010, 01:18:06 PM
各エントリはトランザクションを参照するので、“tx_id”としてSHA256の16進エンコードされたトランザクションIDを追加することを提案する。そうすればlisttransactionsがrefundtransaction JSON-RPC拡張(および将来のgettransactiondetailsでトランザクションの親、トランザクションが含まれるブロックなどを取得できるもの)とうまく連携する。
コードは以下のようになる: Code: uint256 tx_hash = transaction.GetHash(); string tx_id = tx_hash.GetHex(); mapJSONResponse.push_back(Pair(“tx_id”, tx_id));
追加した、提案ありがとう。
‘listtransaction’バージョン7を公開: http://gtf.org/garzik/bitcoin/patch.bitcoin-listtransactions
提案されたtxn_idフィールドを追加した——素晴らしい提案だ、ギャビン!ユニークなトランザクションIDが欲しかったところだ Smiley
listtransactionsを何に使う必要があるのか?
listtransactionsを実装しなかった理由は、Web開発者に使わせたくないからだ。受信した支払いの監視にそれを利用するのは非常に簡単だろう。しかし、その方法で何も取りこぼさないようにする信頼できる方法はない。getreceivedbyaddressとgetreceivedbylabelを使った確実なサンプルコードを用意して「これを使って! これを使って! listtransactionsは使わないで!」と言えるようになるまで、listtransactionsを実装すべきではないと思う。
listtransactionsを実装する時には、対策の一つとしてすべてテキストにする方法があるかもしれない。フィールドをコメント、確認数、クレジット、デビットなどに分解すべきではない。「0/unconfirmed 0:0:0 date comment debit 4 credit 0」のような整形済みの1つの文字列にして、プログラマーが間違った使い方をしにくくすることができるだろう。これはサーバーの状態を確認するためだけのものだ。ただ、HTMLの列にフォーマットしたいWebインターフェースにとっては少し面倒かもしれないが。