plusplus戦記

リスクとリターン一回の人生リスク取らなきゃ損ですよ~!楽しみましょう!

「ビットコイン ホワイトペーパー」ここからブロックチェーンは始まった!

www.heyyuta.com
www.heyyuta.com
ビットコイン誕生から約9年がたちましたね!
1BTC約0.07円から始まり、現在2017.10.31では約70万円。
その革命通貨ビットコインのホワイトペーパーです。
1から作ったのはすごいですw

f:id:yu-tabox:20171031104730j:plain 
Google翻訳にて

Bitcoin:ピアツーピア電子式キャッシュシステム

中本聡
satoshin@gmx.com
www.bitcoin.org

純粋にピアツーピア版の電子現金はオンライン

ある当事者から別の当事者に金融機関デジタル署名はソリューションの一部を提供しますが、信頼できる第三者が依然として二重支出を防止する必要がある場合、利益は失われます。

我々は、ピアツーピアネットワークを用いた二重支出問題に対する解決法を提案する。
ネットワークは、トランザクションのタイムスタンプを、ハッシュベースの作業証明書、再実行せずに変更できないレコードの作成
仕事の証明。
最も長い鎖は、配列の証明として役立つだけでなくイベントは目撃されましたが、それがCPUパワーの最大プールから来たものであることを証明します。
としてCPUの大半が協力していないノードによって制御されている限りネットワークを攻撃すると、彼らは最長のチェーンを生成し、攻撃者を凌駕します。
ネットワーク自体が最小限の構造を必要とする。
メッセージはベストエフォートで放送されノードは自由にネットワークを離れることができます。
彼らが行っていた間に何が起こったかの証明としての作業証明連鎖。

1.はじめに

インターネット上のコマースは、ほとんどの金融機関に依存してきました。
信頼できる第三者が電子決済を処理する。
このシステムは、ほとんどのトランザクションでは、依然として信頼ベースのモデルの固有の弱点があります。

金融機関には不可能なため、完全に不可逆的な取引は不可能です。
紛争の仲介を避ける。
調停コストは取引コストを増加させ、実用的なトランザクションサイズを最小限に抑え、小さなカジュアル取引の可能性を遮断し、
非居住者に対して非可逆的な支払を行う能力の喪失にはより広範な費用がかかる。
リバーシブルサービス。
逆転の可能性があると、信用の必要性が広がります。
商人は必須です、彼らが必要とするより多くの情報のためにそれらを悩ませて、彼らの顧客を警戒してください。

ある割合の詐欺はやむを得ないものとして受け入れられます。
これらのコストと支払いの不確実性物理的な通貨を使用することで、人では避けることができますが、支払いを行う仕組みは存在しません。
信頼できる当事者のいない通信チャネルを介して。
必要とされるのは、信頼の代わりに暗号証明に基づく電子決済システムであり、2人の喜んでいる当事者が信頼できる人の必要なしにお互いに直接取引できるようにする。
反対に計算上実用的でない取引は、売り手を保護する、
購入者を守るためにルーチンのエスクローメカニズムを簡単に実装することができます。

本論文では、ピアツーピア分散を用いた二重支出問題の解決法を提案する。
トランザクションの時系列の計算上の証明を生成するタイムスタンプサーバ。

正直なノードがどのCPUよりも多くのCPUパワーを集合的に制御する限り、システムは安全です。
攻撃者ノードの協力グループ。

2.取引

電子コインは、デジタル署名のチェーンとして定義されています。
各所有者はコインを次に、前のトランザクションのハッシュと次の所有者の公開鍵にデジタル署名することによってこれらをコインの最後に加えます。
受取人は署名を検証して、所有。

f:id:yu-tabox:20171031102024j:plain
もちろん、問題は、受取人が所有者の1人が二重支出していないことを確認できないことです。
一般的な解決策は、信頼できる中央機関、すなわちミントを導入して、毎回二重支出のための取引。
各取引の後、コインはミントに戻されなければなりません。
新しいコインを発行し、ミントから直接発行されたコインのみが二重使用されないことを信頼する。
この解決策の問題点は、マネーシステム全体の運命は、
会社はミントを実行し、すべての取引は銀行を通過するようなものです。
受取人が前の所有者が以前に署名していないことを知る方法が必要です
トランザクション。私たちの目的のために、最も早い取引は重要な取引ですので、私たちは気にしません
後で二重支出をしようとする試みについて。取引がないことを確認する唯一の方法は、すべてのトランザクションに注意してください。
ミントベースのモデルでは、ミントはすべての取引を認識しており、最初に到着したことを決めた。
信頼できる当事者なしでこれを達成するには、トランザクションは公に発表された[1]、我々は参加者がそれらが受け取られた順序。
受取人は、各取引の時点で、ノードの大部分はそれが最初に受信されたことに同意した。

3.タイムスタンプサーバー

提案するソリューションは、タイムスタンプサーバーから始まります。
タイムスタンプサーバーは、タイムスタンプを付けるアイテムのブロックのハッシュと、
新聞やユーズネットの投稿[2-5]。
タイムスタンプは、データが明らかに、ハッシュに入るためには、時間が必要です。
各タイムスタンプには、以前のタイムスタンプがそのハッシュはチェーンを形成し、それぞれの追加のタイムスタンプは前のものを補強する。

f:id:yu-tabox:20171031102113j:plain

4.実績

ピアツーピアで分散タイムスタンプサーバを実装するには、証明書を使用する必要があります。
Adam BackのHashcash [6]に似ているが、新聞やUsenetの記事ではない。
作業証明には、SHA-256などのようにハッシュされた値をスキャンする必要があります。
ハッシュはゼロビットの数で始まります。
必要な平均仕事量は指数関数的であるゼロビットが必要であり、単一のハッシュを実行することによって検証することができる。

私たちのタイムスタンプネットワークでは、作業の証明書をブロックのハッシュに必要なゼロビットを与える値が見つかるまでブロックする。
一度CPU作業の証明を満たすために努力が費やされたが、ブロックを変更することはできない、作業をやり直すことなく。
それ以降のブロックがチェーン化されると、ブロックを変更する作業のそれ以降のすべてのブロックをやり直すことが含まれます。

f:id:yu-tabox:20171031102549j:plain
仕事の証明はまた、多数決の表現を決定する、問題を解決する、作る。
大多数がone-IP-address-one-voteに基づいていた場合、それは誰にも邪魔される可能性があります。
多くのIPを割り当てることができます。
本人確認は本質的に1CPUの1票です。
大多数決定は最長のチェーンによって表され、これは投資された作業証明の労力が最もこの中で大きい、正当なノードによってCPUパワーの大部分が制御されるならば、正直なチェーンは競合するすべてのチェーンを最速かつ最前線にします。
過去のブロックを変更するには、攻撃者は
ブロックの作業証明とその後のすべてのブロックをやり直してから、それに追いついてそれを上回ります。
正直なノードの仕事。
私たちは後で、より遅い攻撃者が追いつく確率、後続のブロックが追加されると指数関数的に減少する。
時間の経過とともにハードウェアのスピードが増加し、実行中のノードに関心が変化するのを補うために、作業証明の難易度は、平均の数を目標とする移動平均によって決定される。
1時間あたりのブロック数。
それらがあまりにも速く生成されると、難しさが増します。

5.ネットワーク

ネットワークを実行する手順は次のとおりです。

1)新しいトランザクションがすべてのノードにブロードキャストされます。

2)各ノードは新しいトランザクションをブロックに集める。

3)各ノードは、そのブロックに対して困難な作業証明を見つけることに取り組む。

4)ノードが作業証明を見つけると、ブロックをすべてのノードにブロードキャストします。

5)ノードは、その中のすべてのトランザクションが有効で、まだ消費されていない場合にのみ、ブロックを受け入れます。

6)ノードは、ブロック内の次のブロックの作成に取り組み、ブロックの受け入れを表します。
受け入れられたブロックのハッシュを前のハッシュとして使用します。
ノードは常に最長のチェーンを正しいものとみなし、作業を続けます。

それを拡張する。
2つのノードが次のブロックの異なるバージョンを同時にブロードキャストする場合、
ノードは一方または他方を最初に受信することができる。
その場合、彼らは彼らが受け取った最初のもので働き、それが長くなる場合に備えて他のブランチを保存してください。
次のプルーフ・プルーフ・アウトが終わると、
1つのブランチが長くなる。他のノードで作業していたノードブランチは長い方に切り替わります。
新しいトランザクションブロードキャストは必ずしもすべてのノードに到達する必要はありません。
彼らが到達する限り多くのノードは、長い間ブロックに入るでしょう。
ブロックブロードキャストは、ドロップされた場合でも許容されます。
メッセージ。
ノードがブロックを受信しない場合、ノードは次のブロックを受信するとそれを要求し、
それが欠けていることを理解する。

6.インセンティブ

慣習上、ブロック内の最初のトランザクションは、新しいコインが所有される特別なトランザクションです。
ブロックの作成者によって。
これにより、ノードがネットワークをサポートするインセンティブが追加され、
最初にコインを流通させる方法は、コインを発行する中央の権限がないためです。
新しいコインの一定量の安定した添加は、金の鉱夫が消費する。
循環に金を加えるための資源。
私たちの場合、CPU時間と消費電力が消費されます。
インセンティブは、取引手数料でも支出することができます。
トランザクションの出力値がその差額は、そのインセンティブ価値に加算される取引手数料であるトランザクションを含むブロック所定数のコインが一度投入されると流通は、インセンティブは完全に取引手数料に移行し、完全にインフレすることができます。
無料です。
インセンティブは、ノードが正直にとどまるよう促すのに役立ちます。
貪欲な攻撃者がすべての正直なノードよりも多くのCPUパワーを集めるなら、彼はそれを使用するかどうかを選択する必要があります。

彼の支払いを盗んだり、新しいコインを生成するためにそれを使うことによって人々を欺くことができます。
彼はすべきだより多くの新しいコインで彼を好むようなルール、そのルールで遊ぶことがより有益であることがわかります。
システムを傷つけ、自分の富の妥当性を損なうよりも、他の誰もが組み合わされている。

7.ディスクスペースの再利用

コイン内の最新の取引が十分なブロックの下に埋め込まれると、
ディスク領域を節約するために破棄することができます。
ブロックのハッシュを壊さずにこれを容易にするために、
トランザクションはMerkle Tree [7] [2] [5]でハッシュされ、ブロックのハッシュに含まれるルートのみが使用されます。
古いブロックは、木の枝を切り落とすことで圧縮できます。
インテリアハッシュ
保存する必要はありません。

f:id:yu-tabox:20171031102725j:plain
トランザクションのないブロックヘッダーは約80バイトです。
ブロックが10分ごとに生成され、80バイト* 6 * 24 * 365 = 4.2MB /年。
コンピュータシステムで
2008年時点で2GBのRAMを搭載していることが一般的であり、ムーアの法則は現在の
1.2GB /年、ブロックヘッダーを保管しなければならない場合でもストレージは問題にはなりません
メモリ。

8.簡略化された支払いの確認

完全なネットワークノードを実行することなく支払いを確認することは可能です。
ユーザーは、最も長い作業証明連鎖のブロックヘッダーのコピー。
これは問い合わせによって取得できます。

彼が最長のチェーンを持っていることを確信するまで、ネットワークノードを探して、Merkleブランチ
タイムスタンプされたブロックにトランザクションをリンクします。
トランザクションのチェックはできません。

それをチェーン内の場所にリンクすることによって、ネットワークノードがそれを受け入れたことを知ることができ、
ネットワークがそれを受け入れたことをさらに確認した後にブロックが追加されました。

f:id:yu-tabox:20171031102848j:plain
このように、正直なノードがネットワークを制御している限り、検証は信頼できるものですが、
ネットワークが攻撃者によって圧倒された場合、脆弱です。
ネットワークノードは、自分自身のためのトランザクション、単純化された方法は、攻撃者の加工によってだまされる可能性があります。
攻撃者がネットワークを圧倒し続けることができる限り、トランザクションを実行できます。
1つの戦略
これを防ぐには、ネットワークノードが無効を検出したときに警告を受け入れることです
ユーザーのソフトウェアにブロック全体をダウンロードさせ、警告したトランザクションに不一致を確認してください。
頻繁な支払いを受けている企業は、より独立したセキュリティと迅速な検証のために、独自のノードを実行します。

9.値の結合と分割

コインを個別に扱うことは可能ですが、コインを扱うことは難しいでしょう。
譲渡で1セントごとに別々の取引。
値を分割して結合するには、トランザクションには複数の入力と出力が含まれます。
通常、1つの入力
より大きな以前のトランザクションまたは少量を組み合わせた複数の入力から、最大で2つ支払のためのものと、もしあれば、その変更を送付者に送り返すものがあります。


f:id:yu-tabox:20171031103304j:plain

トランザクションがいくつかのトランザクションに依存するファンアウト、
トランザクションはより多くのものに依存しますが、ここでは問題にはなりません。
それは決して抽出する必要はありません
トランザクションの履歴の完全なスタンドアロンコピー。

10.プライバシー

従来の銀行業務モデルは、情報へのアクセスを関係する当事者と信頼できる第三者との関係すべての取引を公表する必要性
この方法は排除されますが、情報の流れを
別の場所:公開鍵を匿名で保持する。
誰かが送信していることを一般の人が見ることができます。
トランザクションを誰かにリンクする情報を持たない他の誰かへの金額。
これは証券取引所が公表した情報のレベルと同様に、
個人的な取引である「テープ」は公開されますが、当事者が誰であるかを知らされません。

f:id:yu-tabox:20171031103403j:plain

追加のファイアウォールとして、各トランザクションに新しい鍵ペアを使用してそれらを保持する必要があります。

共通の所有者にリンクされることを防ぎます。
いくつかのリンクは、マルチ入力ではやむをえない
取引は、その入力が同じ所有者によって所有されていることを必然的に明らかにする。
リスクキーの所有者が明らかにされた場合、リンクすることで同じ所有者。

11.計算

私たちは、正直なものよりも速く代替チェーンを生成しようとする攻撃者のシナリオを考えます。
鎖。
これが達成されても、システムを任意の変更に開放することはありません。

薄い空気の中から価値を創造したり、決して攻撃者に属さなかったお金を取ったりすること。

ノードは無効な取引を支払いとして受け入れるつもりはなく、正直なノードは決してブロックを受け入れません。
それらを含む。
攻撃者は自分のトランザクションのうちの1つを取り戻すためにのみ変更しようとすることができます。
彼が最近使ったお金。
正直な鎖と攻撃者の鎖の間の競争は、二項
ランダムウォーク成功イベントは、正直なチェーンが1つのブロックで拡張され、

  1. 1でリードし、失敗イベントは攻撃者のチェーンが1ブロック拡張され、

ギャップ-1。
与えられた赤字から追いつく可能性は、ギャンブラーの破滅の問題。
無制限の信用を持つギャンブラーが赤字で始まり、潜在的に損益分岐点に到達しようとする無数の試行。
彼の確率を計算することができます。
または攻撃者が以下のように正直なチェーンを捉えることができます:
p =正直なノードが次のブロックを見つける確率
q =攻撃者が次のブロックを見つける確率
qz =攻撃者が後ろのzブロックに追いつく確率

f:id:yu-tabox:20171031103552j:plain

p> qと仮定すると、確率はブロックの数が指数関数的に減少する
攻撃者は増加に追いつく必要があります。
彼に対して不利な立場で、もし彼が幸運を立てなければ、
彼のチャンスは、彼がさらに後ろに下がるにつれて消えて小さくなる。
新しい取引の受領者が取引されるまでに待つ必要がある時間を検討する
送信者がトランザクションを変更できないことを十分に確認してください。
送信者は攻撃者であると仮定します。
受取人に彼がしばらく支払ったと信じさせたい人は、それを元に戻してしばらくしてからそれが起こると受信機は警告されますが、
送信者はそれが遅すぎることを望む。

受信者は新しい鍵ペアを生成し、その直前に公開鍵を送信者に与える。
署名する。
これにより、送信者は、作業を進めることによって、ブロックの連鎖を事前に準備することができなくなります。
彼は十分に前進するのに十分なほど幸運になるまで継続して、その瞬間。
トランザクションが送信されると、不正な送信者は、彼のトランザクションの代替バージョンを含む並列チェーン。

受信者は、トランザクションがブロックに追加されzブロックが完了するまで待機します。
後にリンクされています。
彼は、攻撃者が行った進捗状況を正確に把握していませんが、
正直なブロックが1ブロックあたりの平均予想時間を取ったと仮定すると、攻撃者の潜在的可能性
進捗状況は予想値のポアソン分布になります。

f:id:yu-tabox:20171031103809j:plain
攻撃者が今でも追いつく可能性のある確率を得るために、
我々はポアソン密度を彼がその時点から追いつくことができる確率で彼ができた進歩のそれぞれの量:

f:id:yu-tabox:20171031103927j:plain
分布の無限の尾を合計するのを避けるために並べ替える...

f:id:yu-tabox:20171031104025j:plain
Cコードに変換しています...

f:id:yu-tabox:20171031104201j:plain

いくつかの結果を実行すると、確率はzで指数関数的に低下することがわかります。

q = 0.1
z = 0 P = 1.0000000
z = 1 P = 0.2045873
z = 2 P = 0.0509779
z = 3 P = 0.0131722
z = 4 P = 0.0034552
z = 5 P = 0.0009137
z = 6 P = 0.0002428
z = 7 P = 0.0000647
z = 8 P = 0.0000173
z = 9 P = 0.0000046
z = 10 P = 0.0000012
q = 0.3
z = 0 P = 1.0000000
z = 5 P = 0.1773523
z = 10 P = 0.0416605
z = 15 P = 0.0101008
z = 20 P = 0.0024804
z = 25 P = 0.0006132
z = 30 P = 0.0001522
z = 35 P = 0.0000379
z = 40 P = 0.0000095
z = 45 P = 0.0000024
z = 50 P = 0.0000006

Pの0.1%未満を解決する...

P <0.001
q = 0.10z = 5
q = 0.15 z = 8
q = 0.20 z = 11
q = 0.25z = 15
q = 0.30 z = 24
q = 0.35 z = 41
q = 0.40z = 89
q = 0.45z = 340

12.結論

我々は信頼に頼らずに電子取引を行うシステムを提案している。
私たちはデジタル署名から作られたコインの通常の枠組みは、
所有権はあるが、二重支出を防ぐ方法がないと不完全である。
これを解決するために、我々は公開された取引の履歴を記録するための作業証明を使用してピアツーピアネットワークを提案。
正直なノードならば、攻撃者が変更するのは計算上実用的ではなくなります。
大部分のCPUパワーを制御します。
ネットワークは、その構造化されていない単純さにおいて堅牢です。
ノード少しの調整で一気に作業してください。
メッセージは識別される必要があるため、識別する必要はありません。
どの特定の場所にもルーティングされず、ベストエフォートベースでのみ配信する必要があります。
ノードはできます
ネットワークを離れて自由にネットワークに参加し、何の証拠として作業証明連鎖を受け入れるか
彼らがなくなった間に起こった。
彼らはCPUパワーで投票し、
有効なブロックの拡張に取り組み、無効なブロックを拒否する。
このコンセンサスの仕組みにより、必要なルールやインセンティブを実施することができます。


参考文献
[1] W. Dai、「b-money」、http://www.weidai.com/bmoney.txt、1998。
[2] H. Massias、X.S. Avila、J.J。 Quisquater、「最小限のセキュリティで保護されたタイムスタンプサービスの設計
第20回ベネルクス情報理論シンポジウム、1999年5月。
[3] S.Haber、W.S. Stornetta、「電子文書をタイムスタンプする方法」、Journal of Cryptology、vol 3、no
2、pages 99-111、1991を参照のこと。
D.Bayer、S.Haber、W.S。 Stornetta、「デジタルタイムスタンプの効率と信頼性の向上」
In Sequences II:Communication、Security and Computer Scienceの方法、ページ329-334、1993。
[5] S.Haber、W.S. Stornetta、 "ビット列のセキュアな名前"、第4回ACM会議議事録
1997年4月、28〜35ページの「コンピュータおよび通信セキュリティ」を参照のこと。
[6] A.バック、「ハッシュキャッシュ - サービス拒否対策」
http://www.hashcash.org/papers/hashcash.pdf、2002。
[7] R.C. Merkle、 "Proc for Public Key Cryptosystems"、Proc。 1980年安全保障シンポジウム
プライバシー、IEEEコンピュータ学会、122~133頁、1980年4月。
[8] W.フェラー、 "確率論の紹介とその応用"、1957

References
[1] W. Dai, "b-money," http://www.weidai.com/bmoney.txt, 1998.
[2] H. Massias, X.S. Avila, and J.-J. Quisquater, "Design of a secure timestamping service with minimal
trust requirements," In 20th Symposium on Information Theory in the Benelux, May 1999.
[3] S. Haber, W.S. Stornetta, "How to time-stamp a digital document," In Journal of Cryptology, vol 3, no
2, pages 99-111, 1991.
[4] D. Bayer, S. Haber, W.S. Stornetta, "Improving the efficiency and reliability of digital time-stamping,"
In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993.
[5] S. Haber, W.S. Stornetta, "Secure names for bit-strings," In Proceedings of the 4th ACM Conference
on Computer and Communications Security, pages 28-35, April 1997.
[6] A. Back, "Hashcash - a denial of service counter-measure,"
http://www.hashcash.org/papers/hashcash.pdf, 2002.
[7] R.C. Merkle, "Protocols for public key cryptosystems," In Proc. 1980 Symposium on Security and
Privacy, IEEE Computer Society, pages 122-133, April 1980.
[8] W. Feller, "An introduction to probability theory and its applications," 1957.

仮想通貨取引所おすすめ

ビットコインfxでは最大15倍!
ビットコインを無料でもらう、ビットコイン、イーサリアム購入はビットフライヤー↓↓
bitFlyer ビットコインを始めるなら安心・安全な取引所で

スマホメインの取引、ビットコインはもちろんアルトコイン取扱いは日本一!
別格の使いやすさは初心者の方にもおすすめ!
コインチェックはこちらから↓↓
ビットコイン取引高日本一の仮想通貨取引所 coincheck bitcoin

ビットコイン積立はもちろん、新たに加わったイーサリアム積立には注目するべき!
仮想通貨を積立するならザイフ↓↓

仮想通貨両替所おすすめ

超大型両替所「changelly」はこちらから↓↓
Bitcoin Ethereum Monero Ripple Litecoin Dash cryptocurrency exchange | Changelly

仮想通貨のデビットカード有り「spectrocoin」はこちらから↓↓
申し込む | SpectroCoin

おすすめハードウェアウォレット

Ledger Nano S (レジャー・ナノS)
ビットコイン、イーサリアム、リップル対応。
近々IOTA(アイオータ)も追加予定。


Ledger Nano S (レジャー・ナノS)ビットコイン&イーサリアムハードウェアウォレット【正規品】