Bitcoin 自動販売機(高速トランザクション問題)

Insti 2010年7月16日 17:33 UTC 原文 ·

ビットコインの自動販売機はどのように機能するのでしょうか?

  1. 自動販売機の前に行く。ビットコインを送る。
  2. 甘いお菓子を食べながら立ち去る。(利益!)

トランザクションの承認に 1時間も待ちたくはありません。 自動販売機の会社も、大量のお菓子を無料で配りたくはありません。

ステップ 2 はどのように機能するのでしょうか?

Babylon 2010年7月17日 08:28 UTC 原文 ·

あなたたちがエスクローと呼んでいるものは、デビットカード口座とかなり似ている。

NewLibertyStandard 2010年7月17日 08:36 UTC 原文 ·
Babylonの投稿(2010年7月16日 23:28 UTC)

あなたたちがエスクローと呼んでいるものは、デビットカード口座とかなり似ている。

Bitcoin は現金そのものに相当する。Bitcoin を使ったデビット、クレジット、銀行、ローン、部分準備貸付の創設や普及を妨げるものは何もない。関連スレッドの InterArmaEnimSil の投稿を読んでほしい。ただ注意しておくと、エスクローサービスは人を騙す目的で運営されていることが多いので、信頼できるか確認し、もし騙されても自分を責めるだけにしておくことだ。あまり厳しくならずに。

Babylon 2010年7月17日 08:42 UTC 原文 ·
NewLibertyStandardの投稿(2010年7月16日 23:36 UTC)
Babylonの投稿(2010年7月16日 23:28 UTC)

あなたたちがエスクローと呼んでいるものは、デビットカード口座とかなり似ている。

Bitcoinは現金そのものに相当する。Bitcoinを使ったデビット、クレジット、銀行、ローン、部分準備貸付の創設や普及を妨げるものは何もない。関連スレッドのInterArmaEnimSilの投稿を読んでほしい。ただ注意しておくと、エスクローサービスは人を騙す目的で運営されていることが多いので、信頼できるか確認し、もし騙されても自分を責めるだけにしておくことだ。あまり厳しくならずに。

ああ、部分準備のスレッドは理解した。エスクローについてはまだ完全に理解しているか自信がない。通常は大きな取引で、売り手に現金が確かに手元にあり、そのまま残ることを保証するために使われるということは知っている。目的の一部は、私の理解では通常、取引を遅くすることで、より安全にすることだ。今回の場合、セキュリティを失わずに取引を速くすることが目的のようであり、エスクローサービスよりもデビット口座に近いように見えるが、エスクローサービスが何なのかを誤解しているのかもしれない。

NewLibertyStandard 2010年7月17日 18:37 UTC 原文 ·
Babylonの投稿(2010年7月16日 23:42 UTC)

この場合、ポイントはセキュリティを犠牲にせずにトランザクションを高速化することのようで、エスクローサービスよりもデビットアカウントに近いように見えるが、エスクローサービスが何かを誤解しているかもしれない。

誤解していない。エスクローとデビットは類似のサービスで、定義が重なる。定義を拡大して使っていた。デビットの方が私の説明に同様に、あるいはより適切に当てはまる。会社(名前は何でもいい)が、実際のビットコインのトランザクションを待つ必要なく、帳簿上のビットコイン残高を即座に移転できることに重点を置いていただけだ。フラクショナルリザーブ貸付のスレッドで説明されているのと同様に。

llama 2010年7月17日 21:20 UTC 原文 ·

エスクローよりもさらに良い方法がある。飲料自販機会社自体に入金するのだ。

こうだ:会社のウェブサイトに行って 100 BC を送る。すると、ID が発行される。確認が積み上がる十分な時間がある。飲料が必要な時は発行された ID を使い、アカウントから引き落とされる。

Babylon 2010年7月17日 21:27 UTC 原文 ·
llamaの投稿(2010年7月17日 12:20 UTC)

エスクローよりもさらに良い方法がある。飲料自販機会社自体に入金するのだ。

こうだ:会社のウェブサイトに行って100 BCを送る。すると、IDが発行される。確認が積み上がる十分な時間がある。飲料が必要な時は発行されたIDを使い、アカウントから引き落とされる。

自販機会社のプリペイドアカウントは、企業のカフェテリア(または比較的固定的な消費者基盤のある場所)の自販機には最適だが、空港、フェリー、鉄道駅など、流動的な消費者基盤が大きい場所にはあまり向かない。

決済処理会社がサービスとして、10秒以内程度の十分な検証を行いつつ、トランザクションの迅速な配信を提供することが可能になると考えている。

ネットワークノードは、生成しようとしているブロックに取り込むために、受信したトランザクションの最初のバージョンのみを受け入れる。トランザクションをブロードキャストした時、他の誰かが同時に二重支払いをブロードキャストした場合、最も多くのノードに最初に伝播させる競争になる。一方がわずかに先行していれば、ネットワーク全体に幾何級数的に速く広がり、ほとんどのノードを獲得する。

大まかな概算の例: 1 0 4 1 16 4 64 16 80% 20%

したがって、二重支払いがたった 1秒でも待たなければならない場合、非常に不利になる。

決済処理業者は多くのノードと接続を持っている。トランザクションを受信すると、それをブラストし、同時にネットワーク上の二重支払いを監視する。多数のリスニングノードのいずれかで二重支払いを受信した場合、そのトランザクションが不正であることを警告する。二重支払いのトランザクションは、リスナーの 1 つに検出されずに遠くまで伝播することはないだろう。二重支払い者はリスニングフェーズが終わるまで待たなければならないが、その頃には決済処理業者のブロードキャストがほとんどのノードに到達しているか、伝播において非常に先行しているため、二重支払い者は残りのノードの大部分を獲得する見込みがない。

llama 2010年7月18日 00:03 UTC 原文 ·
サトシ・ナカモトの投稿(2010年7月17日 13:29 UTC)

決済処理者は多数のノードと接続を持つ。トランザクションを受け取ると一斉にブロードキャストし、同時にネットワーク上で二重支払いを監視する。多数の監視ノードのいずれかで二重支払いを受信したら、そのトランザクションは不正だと警告する。二重支払いされたトランザクションは、いずれかの監視者の耳に入らずに遠くへは進めない。二重支払いの実行者は監視フェーズが終わるまで待たねばならないが、その頃には決済処理者のブロードキャストは大半のノードに到達しているか、伝播ではるか先を行っているので、残りのノードのうち意味のある割合を奪う見込みはなくなる。

これは良い出発点だが、まだ完璧ではない。この種のセキュリティは、ノードの大多数(結局のところ IP の大多数)が正直であるという事実に依存している。しかし、攻撃者が多くの IP アドレスを集めることができれば、伝播を制御でき(例えば、自動販売機でのトランザクション情報の転送を拒否するなど)、二重支払い攻撃を成功させることができる。これは Bitcoin の核心的な新しいアイデアに立ち戻る:真実は IP ではなく計算能力によって投票される。

飲み物 1 本のためにはこの攻撃は経済的でないように思えるかもしれない。しかし、代わりにマシンが少額のギフトカードを配り、攻撃が何千回も(おそらく同時に協調して)行われると想像してみてほしい。すると、その IP ブロックのコストは攻撃者にとって格安になるかもしれない……

llamaの投稿(2010年7月17日 15:03 UTC)

これは良い出発点だが、まだ完全ではない。

完全とは言っていない。十分に実用的だと言ったのだ。実際の損失はクレジットカードよりもはるかに少ないだろう。

引用(例えば、自動販売機でトランザクションの伝播を拒否することで) いいえ、自動販売機は大きなサービスプロバイダー(いわゆる決済処理業者)と通信し、そのプロバイダーが多くの加盟店にこのサービスを提供する。新しい仕事を持つクレジットカード処理業者のようなものを想像してほしい。彼らは多くの十分に接続されたネットワークノードを持っているだろう。

NewLibertyStandard 2010年7月18日 02:12 UTC 原文 ·
llamaの投稿(2010年7月17日 21:20 UTC)

エスクローよりもさらに良い方法がある。飲料自販機会社自体に入金するのだ。

こうだ:会社のウェブサイトに行って100 BCを送る。すると、IDが発行される。確認が積み上がる十分な時間がある。飲料が必要な時は発行されたIDを使い、アカウントから引き落とされる。

そう、それが俺の最初の提案だった。だが、汎用のデビット口座の方が他の場所でも使えるからもっと便利だろう。

NewLibertyStandardの投稿(2010年7月17日 08:20 UTC)

解決策は、スナックベンダーがデビット口座を持つことだ。職場に素晴らしい自販機があるので、2000ビットコインをそれに転送する。いつでも引き出したり使ったりできる。ビットコインの引き出しには約10分かかるが、使うのは即座だ。

aceat64 2010年7月18日 19:53 UTC 原文 ·
llamaの投稿(2010年7月18日 00:03 UTC)
サトシ・ナカモトの投稿(2010年7月17日 22:29 UTC)

サービスプロバイダーは多くのノードと接続を持つ。トランザクションを受け取ると、それを一斉に放送し、同時にネットワークの二重支払いを監視する。多数のリスニングノードのいずれかで二重支払いを受信したら、そのトランザクションは不正だと警告する。二重支払いされたトランザクションは、リスナーの一つに聞かれることなしには遠くまで届かない。二重支払い者はリスニング段階が終わるのを待たなければならないが、その時点ではサービスプロバイダーの放送はすでにほとんどのノードに届いているか、伝播がはるかに進んでいて、残りのノードのうち相当な割合をつかむ見込みは二重支払い者にはない。

これは良いスタートだが、まだ完全ではない。この種のセキュリティはノードの大多数(要するにIPの大多数)が誠実であるという事実に依存している。だが、攻撃者が多くのIPアドレスを集められれば、伝播を制御でき(例えば、自販機でのトランザクションの伝達を拒否することで)、二重支払い攻撃を成功させられる。これがbitcoinの主要な新しいアイデアに俺たちを引き戻す。すなわち、真実はIPではなく計算能力によって投票される、ということだ。

飲み物程度では、この攻撃は経済的に成り立たないように見えるかもしれない。だが、代わりに自販機が少額のギフトカードを配り、攻撃が何千回も(おそらく協調された取り組みで同時に)行われるとしよう。突然、そのIPブロックのコストは攻撃者にとってお買い得になるかもしれない……

より高額な商品(多額のギフトカード)については、ビジネスはトランザクションを信頼するリスクが許容できるか、それとも承認を待つかを判断しなければならない。ほとんどのビジネスは、誰かが頻繁に騙し取り始めない限り、リスクを取ると思う。現実世界での類似は小切手だ。多くのビジネスが小切手を受け取っているが、本物かどうか判定するのに数日かかることがある(小切手をスキャンしてデビットとして処理する場所を除いて)。リスクのため小切手を受け取らないことを選んだビジネスもあれば、小切手で支払うために追加情報(運転免許番号、生年月日など)の提供を求めるところもある。

もし俺が自販機ビジネスを運営していたら、(今日と同じように)大多数の顧客は俺を騙さないと想定し、検証なしでトランザクションを受け入れるだろう。もちろんサトシの「十分良い」チェックは使う。より高額な商品については、顧客にトランザクションの検証を待つ気がないなら、登録や州発行の ID 提示を求めるかもしれない。

商人と顧客が即時取引のために同じエンティティに口座を持てるそうしたサービスが、FOSS ソフトウェアシステムとして開発中だ。俺たちはそれを Bitcoin AH(Bitcoin Account Hub)と呼んでいる。 http://bitcointalk.org/index.php?topic=2628.0;all を参照。

jtimon 2011年3月14日 08:03 UTC 原文 ·
サトシ・ナカモトの投稿(2010年7月17日 22:29 UTC)

決済処理会社がサービスとして、10秒以内程度の十分な検証を行いつつ、トランザクションの迅速な配信を提供することが可能になると考えている。

ネットワークノードは、生成しようとしているブロックに取り込むために、受信したトランザクションの最初のバージョンのみを受け入れる。トランザクションをブロードキャストした時、他の誰かが同時に二重支払いをブロードキャストした場合、最も多くのノードに最初に伝播させる競争になる。一方がわずかに先行していれば、ネットワーク全体に幾何級数的に広がり、大半のノードを取る。

ざっとした概算の例: 1 0 4 1 16 4 64 16 80% 20%

したがって、二重支払いがたった1秒でも待たなければならない場合、非常に不利になる。

決済処理業者は多くのノードと接続を持っている。トランザクションを受信すると、それをブラストし、同時にネットワーク上の二重支払いを監視する。多数のリスニングノードのいずれかで二重支払いを受信した場合、そのトランザクションが不正であることを警告する。二重支払いのトランザクションは、リスナーの1つに検出されずに遠くまで伝播することはできない。二重支払い者はリスニング期間が過ぎるまで待つ必要があるが、その頃には決済処理業者のブロードキャストがほとんどのノードに到達するか、伝播ではるかに先行しているため、残りのノードの有意な割合を獲得するチャンスはない。

実現可能かどうか分からないが、リアルタイム承認の提案がある:

http://bitcointalk.org/index.php?topic=4382.0

うまくいかないなら、その理由を説明してもらえるか?

ffe 2011年3月19日 01:43 UTC 原文 ·
サトシ・ナカモトの投稿(2010年7月17日 22:29 UTC)

決済処理会社がサービスとして、10秒以内程度の十分な検証を行いつつ、トランザクションの迅速な配信を提供することが可能になると考えている。

ネットワークノードは、生成しようとしているブロックに取り込むために、受信したトランザクションの最初のバージョンのみを受け入れる。トランザクションをブロードキャストした時、他の誰かが同時に二重支払いをブロードキャストした場合、最も多くのノードに最初に伝播させる競争になる。一方がわずかに先行していれば、ネットワーク全体に幾何級数的に広がり、大半のノードを取る。

大まかな概算の例: 1 0 4 1ter 16 4 64 16 80% 20%

したがって、二重支払いがたった1秒でも待たなければならない場合、非常に不利になる。

決済処理業者は多くのノードと接続を持っている。トランザクションを受信すると、それをブラストし、同時にネットワーク上の二重支払いを監視する。多数のリスニングノードのいずれかで二重支払いを受信した場合、そのトランザクションが不正であることを警告する。二重支払いのトランザクションは、リスナーの1つに検出されずに遠くまで伝播することはできない。二重支払い者はリスニング期間が過ぎるまで待つ必要があるが、その頃には決済処理業者のブロードキャストがほとんどのノードに到達するか、伝播ではるかに先行しているため、残りのノードの有意な割合を獲得するチャンスはない。

もう一点指摘したいのは、二重支払いが「できる」のはコインの所有者「だけ」だ(秘密鍵を知っているのは所有者だけだから)ということだ。クライアントが二重支払いを見るのは、所有者が意図的に悪意を働いているときだけだ。したがって、ある時間枠内で二重支払いを検出した場合、元のトランザクションと第二のトランザクションの「両方」を破棄するのは合理的だ。さらに、二重支払い「イベント」を、そのコインを長期間ロックアウトするトランザクションとしてまとめることもできる(両方の元のトランザクションが二重支払いの証拠としてバンドルに含まれる)。覚えておくべきは、悪意の証拠があるので、例えば 10,000 ブロック以上コインをロックアウトすることは正当化されるということだ。

時間枠が満了した後は、第二のトランザクションは単に無視される。この時点でコインをロックアウトしたくないのは、元の所有者が元のトランザクションをキャンセルする余地を残したくないからだ。時間枠は、ほとんどのクライアントがそれを見ているとかなり確信できる程度に大きく、かつ販売側の商人が通常の顧客に負担をかけずに待てる程度に短くする必要がある。例えば 15秒だ。したがって、コインロックアウトトランザクションを見ずに 30秒待てば、商人は二重支払いが起きなかったと確信できる。