ビットコイン
[Wikipedia|▼Menu]
□記事を途中から表示しています
[最初から表示]

BitcoinではForthという言語に似たスタックベースのスクリプト言語であるビットコインスクリプトをトランザクション内で記述することでデジタル署名の検証を行う[45][46]
ブロックチェーン「ブロックチェーン」も参照ブロックのデータ構造

ブロックチェーンとは、分散型ネットワークを構成するコンピューターに、暗号技術を用いて一定期間の取引データをブロック単位にまとめ、コンピューター同士で検証し合いながらデータを同期する手法である。それは取引記録をチェーン(鎖)のようにつないで蓄積する仕組みであることから「ブロックチェーン」と呼ばれる[47]

各ブロックには前のブロックのデータをハッシュ関数SHA256を2回通して得られたハッシュ値があり、ブロックの識別子となる。また、ブロックのデータ構造はブロックヘッダーとトランザクションで構成され、ブロックのサイズは最大1MBである。

ブロックヘッダーにはプロトコルのバージョン番号であるバージョン、直前のブロックのハッシュ値、ブロック生成時刻であるタイムスタンプ、マークルルート、ノンス、難易度ターゲットが含まれる。ここでマークルルートとはブロック内のトランザクションをマークルツリーという手法を用いてハッシュ値としてまとめたものであり、全体的に木構造としてまとめられている。またノンスとはマイニングでランダムに設定される値、難易度ターゲットとはブロック生成の難易度を表す。

直前のブロックのハッシュ値を記述することで前のブロックの情報を参照し、ブロックの順番を決めると同時に過去に遡ることができる。このとき最初に生成されたブロックを「ジェネシスブロック」といい、ジェネシスブロックから数えたブロックチェーンの位置を「ブロック高」という[48][49][50]
マイニング「マイニング (仮想通貨)」も参照.mw-parser-output .tmulti .thumbinner{display:flex;flex-direction:column}.mw-parser-output .tmulti .trow{display:flex;flex-direction:row;clear:left;flex-wrap:wrap;width:100%;box-sizing:border-box}.mw-parser-output .tmulti .tsingle{margin:1px;float:left}.mw-parser-output .tmulti .theader{clear:both;font-weight:bold;text-align:center;align-self:center;background-color:transparent;width:100%}.mw-parser-output .tmulti .thumbcaption{background-color:transparent}.mw-parser-output .tmulti .text-align-left{text-align:left}.mw-parser-output .tmulti .text-align-right{text-align:right}.mw-parser-output .tmulti .text-align-center{text-align:center}@media all and (max-width:720px){.mw-parser-output .tmulti .thumbinner{width:100%!important;box-sizing:border-box;max-width:none!important;align-items:center}.mw-parser-output .tmulti .trow{justify-content:center}.mw-parser-output .tmulti .tsingle{float:none!important;max-width:100%!important;box-sizing:border-box;align-items:center}.mw-parser-output .tmulti .trow>.thumbcaption{text-align:center}}分散型ネットワークを構成するコンピューター複数のGPUを搭載するマイニングハードウェア。ビットコインマイニング会社の高性能マイニングハードウェア収容施設。

マイニングとはProof of Work(PoW)を用いて新たなブロックを生成し、その報酬としてビットコインを手に入れる行為である[51][52]

ビットコインの送金者は、金額や受取人などの取引情報(トランザクション)を、ネットワークを構成するマイナー(miner, 採掘者)と呼ばれるノードにブロードキャスト(転送)する。マイナーは、受け取った取引情報をブロックという形でまとめ、ブロックチェーンの末尾に追加する。ただし、新しいブロックを記録するためには計算量の大きな問題を解く必要がある。マイナーたちは競ってその問題を解き、最初にブロックを追加することに成功したマイナーだけが一定額の報酬を得ることが出来る。二重支払いなどの不整合性は、ブロックをブロックチェーンに記録する際に他のノードによってチェックされる[53][54]

問題は10分ほどで解けるように難易度が調整されており、送金者は、取引の整合性がマイナーたちによって確認され、ブロックチェーンに記録されるまで同程度の時間を待たねばならない。流通するすべてのビットコイン通貨は、このようにマイナーへの報酬という形で市場に供給される[53]

ビットコインで用いられるPoWでは、ブロックの内容をノンス(nonce, 一度だけ使われる数字)と言われる値と一緒にハッシュ化することで生成されたブロックIDがネットワークの難易度ターゲットよりも数値的に小さくできるノンスを見つけることをマイナーに要求し、要求を満したブロックは新しいブロックとして有効となる[55]

この難易度目標を調整することで、ブロック生成に必要な作業量を変化させることができる。2,016ブロック(1ブロックの生成時間が約10分として約2週間)ごとに、ノードは最近のブロック生成率に基づいて難易度ターゲットを調整する[53][56]片対数グラフでの相対的マイニング難易度[注釈 1][57]


ブロックの連鎖と並んでプルーフ・オブ・ワークのシステムは、攻撃者があるブロックの修正を受け入れるために、後続のすべてのブロックを修正しなければならないため、ブロックチェーンの修正を極めて困難にする。新しいブロックが常に採掘されるため、時間の経過と後続ブロックの数の増加とともにブロック修正の困難さは増大する[53][56]ブロックチェーンの概念図。最良のチェーン(黒)は最も長い取引履歴を持つチェーンである。その他に、孤立したチェーン(紫)も存在する。

そのため、悪意ある攻撃者が過去のブロックを改竄したり複数のマイナーが同時にブロックを追加した場合などでブロックチェーンが分岐する時、ビットコインはチェーンを構成する計算を多く実行したものである「最も長いブロックチェーンを信頼する」としている[58][59]

攻撃者が過去の取引履歴を書き換えても、その履歴が信頼されるためには、そこから派生するチェーンが他のチェーンよりも長くならなければならない。そのためにはネットワーク全体の半分以上のCPUパワーが必要となる[60]。またビットコインに参加するノードの数が十分大きければ、そのようなCPUパワーを確保するのは困難である[59][60]。複数のマイナーがそれぞれ個別のブロックを追加し、チェーンが分岐してしまった場合は、ネットワーク上の各マイナーはそのうちどちらかのチェーンを選んでマイニングに取り組む。さらに新しいブロックがどちらかのチェーンに追加された時点で、他方のチェーンは放棄される[59]
Bitcoin Core

Bitcoin CoreFedora Linuxでのスタート画面
作者Satoshi Nakamoto
初版2009
リポジトリgithub.com/bitcoin/bitcoin
プログラミング
言語C++
対応OSLinux, Windows, macOS
公式サイトbitcoin.org 
テンプレートを表示

Bitcoin Coreとはビットコイン取引やマイニングを行うためのオープンソースソフトウェアであり、2009年にサトシ・ナカモトによってリリースされた[61][62]。そのため、ウォレットとしての機能とフルノードとしてビットコインネットワークに参加してマイニングを行うことができる機能、ビットコインの仕様策定における参照実装の位置付けを持つ。またJSON-RPCインターフェースを持つコマンドラインベースのデーモンであるbitcoindや、ユーザーがbitcoindにRPCコマンドを送信できる簡単なプログラムであるbitcoin-cli、GUIでbitcoindを操作できるbitcoin-qtが、Bitcoin Coreにセットで提供されている[63][64]
ビットコインネットワーク

ビットコインネットワークとは、ビットコインを利用し運用するためのソフトウェアであるビットコインノードが相互に接続されたネットワークである。

ビットコインノードには、トランザクションの検証を行う「フルノード」とビットコインの交換機能のみを持つ「SPVノード」があり、フルノードのソフトウェアの代表としてBitcoin Coreがある。

また、ネットワークの種類には市場価値を持つビットコインの交換を行うネットワークであるmainnet、研究開発用ネットワークであるtestnet、testnetを改良した研究開発用ネットワークであるsignet、ビットコインネットワークに接続せずに単独で動かすモードであるregtestがある[65][66]
ビットコイン改善提案

ビットコイン改善提案(Bitcoin Improvement Proposal : BIP)とは、ビットコイン技術の発展のためのに作成、公開される草案群である[67]。 BIPには「Standards(標準)」「Informational(情報)」「Process(プロセス)」があり、Standardsはデータの変更に関するもの、Informationalはシステム設計やユーザーガイドラインに関するもの、ProcessではBIPに関する説明や変更に関するものであり、これまでに提案されたものはGithubにて記録されている[68][69]


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:216 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef