ビットコイン・インスティテュート

Re: JSON-RPCメソッドの​アイデア:指定された​txidより​新しい​トランザクションを​リストする

サトシ・ナカモトの投稿(2010年12月8日20:21 UTC)

listtransactionsに消極的だったことで批判されてきたのは知っている。その消極的な理由を説明させてほしい。

トランザクションは動的だ。過去のトランザクションが未承認になったり、消えて戻ってきたり、無効になって消えたり、別の二重支払いに置き換えられたりする可能性がある。日付が変わったり、順序が変わったりすることもある。

プログラマーは自然にlisttransactionsをこう使いたがる:前回聞いた時以降の新しいトランザクションを教えてくれれば、自分で集計や静的な記録を保持する。これは通常の使用ではすべてうまく動作するように見えるが、金額を何かに使用する場合、非常に悪用可能だ:

  1. 過去のトランザクションが無効になって消えたことをどうやって知るのか?
  2. ブロックチェーンの再編成があった場合、トランザクションが再度承認された時に二重カウントするのは容易だ。
  3. トランザクションは異なるtxidの二重支払いに置き換えられる可能性がある。両方の支払いをカウントしてしまうだろう。

ある時点で、取引を受け入れるウェブサイトや人は、このリスクを受け入れなければならない。listreceivedbyaddressを使おうとlisttransactionsを使おうと、これは避けられない。これがlisttransactionsへの消極的姿勢がとても奇妙に見える理由だ。

Bitcoinを受け入れるほぼすべての取引所やウェブサイトは、取引が承認され商品が発送されるか金銭が交換される二値の決定点に達する。その二値の決定点以降、ブロックチェーンが再編成されたり取引が消えたりしても、ウェブサイトにできることは損失を受け入れる(またはビットコインの外部で返金を求める)ことだけだ。

ウェブサイトの観点からは、「listtransactions 6」と「listreceivedbyaddress 6」の間に実効的な違いはゼロだ。ウェブサイト運営者にとっての最終結果は同じだからだ:商品は発送済み/注文は承認済み/金銭は交換済み。