仮想通貨・暗号通貨 用語

ビットコイン(Bitcoin)用語集 ビットコインの仕組みに関する用語


-PR-


ビットコイン(Bitcoin)用語集 ビットコインの仕組みに関する用語

BIP
BIPとは、Bitcoin Improvement Proposalsの略でビットコイン技術を議論する為に作成、公開されている文章群です。
ビットコインにおける事実上の標準として機能する仕様も含まれます。
BIP100とはビットコインのブロックサイズの上限を緩和する提案です。開始は現在のブロックサイズで上限は32MB、ブロックサイズの変更は約3ヶ月毎に採掘者(マイナー)の投票によって行われます。
BIP101とはビットコインのブロックサイズの上限を緩和する提案です。2016年1月11日にブロックサイズ上限を8Mバイトにし、その後約2年毎に倍増します。2022年に64Mバイトになり、2036年までブロックサイズ上限を8ギガバイトまで引き上げる提案です。

Bitcoin XT
Bitcoin XTとは仕様の異なるビットコインのコアシステムです。
BIP101におけるブロックサイズの上限緩和提案がBitcoin XTの基となっています。
Bitcoin XTは既存のビットコインコア(Bitcoin-Qt)とは互換性がありません。仮にXTが採用された場合、今までのビットコインと別のブロックチェーンに分岐するという「ハードフォーク」が発生します。

Bitcoinjs
Hive Wallet、Blockchain.info、Dark Walletなど多数のWeb Walletで利用されているJavascriptのBitcoinライブラリです。Bitcoinアドレス作成、トランザクション作成といったよくある機能だけでなく、マルチシグのアドレス作成、ステルスアドレス作成など面白そうな機能があります。

CPFP
手数料が小さくてなかなか承認されないトランザクションを承認させるための手法です。
対象のトランザクション(Pとします)のTxOutのひとつは大抵おつり用の自分のアドレスなので、このTxOutをTxInに持つような新たなトランザクション(Cとします)を作成します。このときに手数料を多く支払います。
トランザクションCの手数料を魅力に感じた採掘者(マイナー)はCをブロックに含めるためにCの親であるトランザクションPも一緒にブロックに含める必要があります。結果としてCの手数料が十分に大きければPもCも承認されます。
もちろんこの方式に採掘者の方が対応してくれなければ意味がありませんがいくつかの採掘者がすでに対応しています。

ECDSA
楕円曲線電子署名アルゴリズムです。Digital Signature Algorithm (DSA) について楕円曲線暗号を用いるようにした変種であり、Bitcoinの電子証明に用いられています。

P2P(ピアツーピア)
中央サーバを用意せず個々の端末(Peer)がお互いに信頼しあうことで成立するネットワークのことです。
一般的にサーバーを用意して、そこに各PCが繋ぎに行くクライアント・サーバー方式と対比されます。
P2Pの端末(Peer)は一般的なPC、ノートブックでもサーバーでも良くノード(Node)と呼ばれることもあります。
端末は他の端末に繋いで情報を交換する、もしくは他の端末のリクエストに応えて情報を共有します。
P2Pはファイル共有ソフトなどで有名になりましたが、近年は仮想通貨で再注目されています。
ビットコインはP2P方式でデータを交換します。そのため特定の管理者を置くことなく安定した運営が可能になっています。
しかしその代わりにデータの整合性を担保するのが難しくなります。
そしてビットコインが画期的だったのはこの整合性の解決のために、ブロックチェーンという仕組みを導入したことでした。

P2SH
P2SHとはPay To Script Hashの頭文字をとったものであり、マルチシグネチャのためのひとつの方法です。
Bitcoinを送る際に、相手の公開鍵のハッシュ値を使用するP2PKH(Pay to Public Key Hash)に対して、P2SHではScriptのハッシュ値を利用します。
P2SHアドレスに対してビットコインを送金する時に、送金者は通常の送金と同じように3から始まるP2SH addressに対して送金できます。
受け取り側はビットコインを消費するために何人かのデジタル署名が必要になります。

RIPEMD-160
ビットコインで使用されるハッシュは SHA-256 と RIPEMD-160 です。
Bitcoinではハッシュは様々な所で用いられるが、そのほとんど全てで、SHA-256を2回適用した物が使われます。
しかし、より短いハッシュが必要な場合(たとえばアドレスなど)は、1回SHA-256を適用した物に、さらにもう1回RIPEMD-160を適用した物が用いられます。
これらのハッシュはGPUで計算するのに向いており、後発のアルトコインではScrypt系のハッシュを使うことで普通のPCでも採掘しやすいように工夫しているものも多いです。

SPV
SPVはsimplified payment verificationの略称で、BlockChainのすべてのデータをダウンロードすることなくトランザクションの検証を行う方式のことです。
スマホ等でよく使用されているbitcoin walletはこのSPV方式を採用したノードでマイニングも行わず非常に軽く動作します。SPVノードもオープンソース実装がたくさんあります。

Testnet
Testnetは、Bitcoinの開発のための環境です。
開発中のコードで本物のビットコインを扱いたいという人は滅多にいません。
そこで通常のBitcoinネットワークとは別にTestnetネットワークが存在します。
TestnetのコインはTest Net Faucetにおいて無料で手に入れることができます。
そのためテストネット上のビットコインは価値を持ちません(ドルや円と交換できない)が、それ以外の点では通常のビットコインと同様にふるまうため、コードのテストに使用できます。

UASF(User Activated Soft-Fork)
ユーザによるソフトフォーク (UASF) とは、マイナーによる大多数の支持を不要としたまま発生させるソフトフォークのことです。現状、UASF といった場合には、隔離署名 (SegWit) の規格を有効化させるための BIP 148 を指します。
BIP 9 の規定によれば、最新のブロックから遡った過去 2016 ブロック分のうち 95% (1916 ブロック) 以上においてマイナーがソフトフォークに賛成することを表明することによって、ソフトフォークは発動します。
BIP 148 の UASF では、2017 年 8 月 1 日から 2017 年 11 月 15 日の間、SegWit を採用しないブロックを拒否するよう、クライアントを変更します。
UASF の意図は、BIP 148 を実装したクライアントを利用するユーザ (ここでは検証ノードを想定しています) が多数を占めた場合、前述の期間中に採掘報酬を含むブロックが多数のユーザに拒否されないようにするため、マイナーも SegWit を採用するように移行を進めるはずだとの期待にあります。

おつり
ビットコインは自動的に合算されません。
あるアドレス(A)に1BTCを2回支払ったとき、そのアドレスには2BTCあるというよりも1BTCというラベルのついたコインが2つある状態と考えるべきです。
この状態でBというアドレスに1.5BTCを支払うときこの2つのコインを持ってきてそれを使って新たに1.5BTCと0.5BTCというラベルのついた新たなコインを作成し、1.5BTCのほうをBに、0.5BTCの方をとおつり用としてAに送るというトランザクションを作成します。
(厳密には手数料を支払うので0.5ではなく0.4999などになります)
このようにぴったりと支払える場合でもない限りお釣りを自分自身に戻すことが必要で、それを「おつり」といいます。

偽造防止
ビットコインでは偽造防止の為に公開鍵暗号、ハッシュ、その双方を用いた電子署名等の技術が利用されています。
公開鍵暗号やハッシュ、電子署名はインターネットや社内システム等のあらゆるセキュリティ対策に利用されており、ビットコイン自体のセキュリティは堅牢です。
また既に使用したビットコインを再び使用する二重支払いについてもブロックチェーンとプルーフ・オブ・ワークを導入することにより防止が可能です。

Coin Age(コインエイジ)
Coin Age(コインエイジ)は、コイン保有年数を示すもので、取引や採掘の際の優先度として使用されます。
価値記録の保有量と保有期間をかけて計算されます。
たとえば、3BTCを4日間保有していたとすると、3×4 =12BTC・日のcoin ageを保有しているということになります。
プルーフ・オブ・ステークの根幹をなす考えであり、保有するcoin ageが多いほどより多くのコインを採掘することができます。
ビットコインにおいては、取引の優先度に使用される数量であり、coin ageが多いほど優先的に早く取引の認証が行われます。
こうしたCoin Ageを基準にした仕組みは価値記録毎に異なります。

公開鍵
公開鍵とは、公開鍵暗号における第三者に公開する鍵です。
公開鍵は秘密鍵と対になっています。
ビットコインにおいてはビットコインアドレスが公開鍵(厳密には違う。後述)でそのアドレスから支払をする場合には秘密鍵による署名が必要になります。
ですので「そのアドレスの所有者である=秘密鍵を保持している」と考えてよいでしょう。
厳密にいうとビットコインアドレスは公開鍵そのものではありません。
公開鍵からさらにハッシュを2回とり、チェックサムを加えてBase58フォーマットしたものになります。
そのためビットコインアドレスから公開鍵を求めることはできません。公開鍵がわからないと署名の正当性を確認できないので署名時には公開鍵を合わせてトランザクションに書き込むことになります。
つまり一回も支払に使用していないアドレスについては公開鍵さえわかりません。暗号強度的にはすでに十分なのでこの仕様はセキュリティの目的というよりはビットコインアドレスを短く読みやすくすることがメインと考えたほうがいいでしょう。
ビットコインの公開鍵は楕円曲線公開鍵暗号(ECC)により作成します。

公開鍵暗号
公開鍵暗号とは、対になる2つの鍵を利用してデータの暗号化、復号(元のデータに戻すこと)を行う暗号方式です。
鍵は第三者に公開する「公開鍵」、自分しか知らない「秘密鍵」の2種類です。
公開鍵暗号の主な使用方法は「データの暗号化」と「署名」の二つがあり、ビットコインにおいては「署名」しか用いません。
ビットコインの取引はコインの所有者(アドレスの秘密鍵を持っている)が秘密鍵を用いて署名します。
ほかの人はその署名と公開鍵を使ってその署名が秘密鍵を持った人が行ったこと、署名された後に本文が改ざんされていないことを確認することが出来ます。

孤立ブロック(オーファンブロック)
採掘(マイニング)を行うことで新しいブロックが生成され、既存のブロックチェーンの一番後ろに追加されます。
しかし別々の採掘者が別のブロックをそれぞれ追加してしまうことがあります。
その場合にブロックチェーンが枝分かれすることになります。
そして次のブロックはそのどちらかの枝に追加されていきます。
ビットコインでは一番長い枝をメインチェーンと呼び、メインチェーンのブロックを正当なブロックとみなします。
ですのでメインチェーンでないほうのブロックは正当ではなくこれを孤立(オーファン)ブロックと呼ぶのです。
では孤立ブロックに入ってしまったトランザクションはどうなるのでしょうか?
心配はいりません。
悪意なく作ったトランザクションはたとえ孤立ブロックに入ったとしても、同時にメインチェーンにも入ります。
ただしもらう場合は注意が必要です。
もらったコインがちゃんとメインチェーンにあることを確認しないとそのコインを使用した支払いも無効になる恐れがあるからです。
ビットコインで6承認を得てから確定とみなすのはそのトランザクションがメインチェーンにあることを保証し、上記のようなことを防ぐためなのです。

採掘(マイニング)
採掘(マイニング)とは新たなブロックを生成し、その報酬としてビットコインを手に入れる行為のことです。
2016年7月現在は12.5BTCが報酬としてもらえます。
技術的には数学的な計算を繰り返し、特定の条件を満たす解を見つけるという行為であり、たくさんのハードウェアと電気代が必要になります。
またこの行為がビットコインネットワークを安全に保つための源泉となっておりビットコインが自己完結的であるための重要な仕組みでもあります。
採掘者(マイナー)が採掘をする行為によりビットコインのP2Pネットワークが維持されており、その他の一般ユーザーはこの恩恵に与ってビットコインをネットワーク上で送付することが可能となります。
ブロックはトランザクションをまとめたものです。
まだどのブロックにも入っていないトランザクションを集めて、それに自分自身の報酬トランザクション(コインベースと呼びます)を加えたものに任意の数値(ナンスと呼びます)を加えてそのハッシュを計算します。
そのハッシュ値の先頭の0がn個以上あれば(つまり一定の数値以下の値であれば)採掘が成功し新たなブロックとして配信します。
採掘という行為はナンスをどんどん変化させてハッシュ値がある数値以下になるまで繰り返すということなのです。
採掘によって得られる報酬はコインベースの報酬とブロック内のすべてのトランザクションの手数料の合計です。
したがって手数料の大きいトランザクションは積極的にブロックに入り、低いトランザクションは後回しにされます。

採掘者(マイナー)
採掘者(マイナー)とは、採掘(マイニング)を行う人を示します。ビットコインの創成期には個人PCでマイニングを行うことも可能でしたが現在では専用のハードウェア(ASIC機)を何千台も束にしたファーム(工場)と呼ばれる組織でもないとほぼ採掘することは出来ません。
マイニング・ファームは10社程度でシェアの90%以上を占めており、多くは電気代・初期投資の安い中国企業となっております。
その総投資額は数千億円とも言われています。
マイナーはそのシェア分のブロック生成権を持っていると言えます。
同様にそれはビットコインのプロトコルの変更に対する投票権となり、マイナーを説得できないような勝手な変更は無視され、大きく投資したものがビットコインプロトコルの変更に影響力を与えることができます。

採掘速度(ハッシュレート)
採掘速度(ハッシュレート)とは、マシンの計算力の測定単位です。hash/s(1秒間に1ハッシュの計算)という単位が使われます。
通常、K(キロ)、M(メガ)、G(ギガ)、T(テラ)などの接頭辞と合わせて使われ、KHsのように省略されることもあります。
ハッシュレート10TH/sに達したということは、1秒あたり10兆回ハッシュの計算を行うことができるということです。
採掘速度と採掘難易度から採掘量が計算できるほか、採掘を行うデバイスによりハッシュレートが大体決まっているため、採掘機の選定の指標等に利用されます。

採掘難易度(ディフィカルティー)
採掘難易度とは、ディフィカルティーとも呼ばれ採掘(マイニング)によりブロックを生成する(ナンスを算出する)難易度のことです。
具体的にはブロックのハッシュ値がこの値より小さくなればOKという指標のことです。
値が低いほど採掘が難しいということになります。
ハッシュレート(採掘速度)と合わせてブロックの生成量目安の計算に使用されます。
ブロックの生成は平均して10分に1回になるように調整されます。
その調整をするため2週間に1度採掘難易度を変更します。
過去2週間の平均が10分より短ければ難易度を上げ(値を下げ)、逆に長ければ難易度を下げ(値を上げ)ます。
採掘難易度は採掘競争環境激化により上がり続けますが、過去に下がったこともあります。
よってブロック生成間隔は10分と言われますが、厳密に10分ではなく、なるべく10分になるように調整されています。

採掘報酬(コインベース)
採掘報酬(コインベース:Coinbase)とは採掘(マイニング)により新たなブロックを生成した採掘者(マイナー)がその報酬として得るビットコインの取引のことです。
ビットコインは採掘時のみに新規に発行され、新規に発行されたビットコインは、採掘に成功した採掘者に報酬として付与されます。
採掘報酬は1ブロック毎に50BTCから始まりました。
210,000ブロック毎に半減し、6,929,999番目のブロックが最後の採掘報酬となります。
発行されるビットコインを積算すると約2100万BTCであり、ビットコインの発行上限です。
報酬額は上記のように減少していき、発掘のスピードは10分間に1ブロックとなるように調整されます。6,929,999ブロックの発掘に要する期間は約132年で最後のブロックの発掘は2140年頃です。

承認
承認とは取引(トランザクション)が新たなブロックに含まれることを言います。取引がまだどのブロックにも属していない場合は未認証です。
いずれかのブロックに属している場合にその取引は認証を得たと表現します。
その取引の属するブロックの後にほかのブロックが追加されることで承認数が増えていきます。
ブロックチェーン上で支払う手数料が低い場合などはなかなかブロックに含まれず未承認の時間が長くなります。
孤立ブロックであっても承認は承認です。
ただし孤立ブロックの枝は通常2つくらいしか伸びないので2承認くらいまでしか伸びません。
一般的には6承認を取ると、ほぼ間違いなく安全であると言われております。ただし事業者のシステム不具合により過去に6承認ととったトランザクションでもロールバックされたことがあり、安全な事業者を選択することが必要です。

スクリプト
スクリプトとはハッシュの計算方式のことです。
現存する仮想コインの殆どは、採掘の際にSHA256かスクリプトのどちらかのハッシュを用いています。
たとえばBitcoinはSHA256を使い、Litecoinはスクリプトを採用しています。
スクリプトはSHA256よりも複雑でメモリを多く使用するため、CPUよりも1000高速に計算するハードウェア(ASIC)がまだありません。
そのため、CPUでの採掘が現実的です。

ストレステスト
ストレステストとは、ビットコインのネットワークに対してスクリプトでトランザクションを大量に生成し、ブロードキャストし続けるという方法です。
「負荷をかけることによって、誰かが利益を得る可能性がある」という仮説に基いて行われるなど、今後の技術的な発展のために様々な角度から、検証と問題提起がされている中の動きの一つです。
昨今のストレステストの結果「ブロックサイズの引き上げ」と「動的な取引手数料の実装」が必要であるとの認識が広まるきっかけにもなりました。

Segwit
Segwit とは Segregated Witness の短縮語で、トランザクション ID の算出対象からトランザクションに対する署名を削除し、トランザクションから独立した署名領域 (Witness) を用いて署名をおこなうことを指します。
Segwitに対応することにより 1 ブロックに含められるトランザクションが多くなります。
また、署名に特別な細工を施した場合であってもトランザクション ID が変化することがなくなり、トランザクション展性を防止します。
Segwit は、ブロックの大きさに関する制限も緩和します。
具体的には、次の式によって定義されるブロックの重み (Block weight) を新たに導入し、これを 4MB までに制限します。

Block weight = Base size * 3 + Total size

ここで Base size は、署名領域を含めずにトランザクションをシリアライズした場合のバイト数、すなわち従来のシリアライズ方式によるブロックの大きさとし、Total size は、署名領域を含めてシリアライズした場合のバイト数とします。
これにより、理論上のブロックの最大の大きさは 4MB 近くになりますが、実際にはブロックの平均の大きさは 1.7MB 程度になるだろうと推測されています。

Segwit の対応方式は主に下記の種類があります。
P2WPKH:Pay to Witness Public Key Hash/ P2WSH:Pay to Witness Script Hash
Segwit に対応したビットコイン・ウォレットでは、bech32というエンコード方式を用い、アドレスの頭3文字が bc1 で始まる形式でビットコイン・アドレスが生成されます。
当該アドレスへは Segwit に対応してないウォレットからは送金することができません。当社は安全性の高い P2WSH に対応しています。

P2SH:Pay To Script Hash(P2WPKH)/ P2SH:Pay To Script Hash(P2WSH)
Segwit に対応したビットコイン・アドレスを 既存のP2SH でネストしたものです。
マルチシグ対応と同様ビットコイン・アドレスの頭文字が 3 で始まり、従来(Segwit未対応)のウォレットソフトから送金することができます。
ビットコイン・アドレスからSegwitに対応しているかどうか見分けが付きません。
以下、Segwitについてよくあるご質問に回答いたします。

Q1 なぜbitFlyerはビットコイン預入アドレスにはSegwit対応しないのですか?
お客様の資産保護及び利便性を考慮したからです。
お客様が誤ってビットコインキャッシュ を Segwit対応しているビットコイン預入アドレスに送った場合、ビットコインキャッシュを失う可能性あります。
ビットコインキャッシュでは、Segwit が アクティベートされておらず、witness 内の署名の検証が行われないため、送ったビットコインキャッシュを署名なしで取り出すことができてしまいます。
Q2 Segwitに対応することでどんなメリットがありますか?
トランザクション展性の防止とビットコインネットワークの混雑解消、トランザクション手数料の低減等のメリットがあります。

ソフトフォーク
ソフトフォークとは、ブロックチェーンのプロトコルに規定された検証規則をより厳密なものに変更することによって発生するブロックチェーンの分岐のことです。
ソフトフォークの際には、新しい検証規則に則って作成されるブロックおよびトランザクションは、古い検証規則を利用する検証ノードも含めて、すべてのノードにおいて有効とみなされます。
したがって過半数の採掘者および検証ノードが新しい検証規則を採用する前提に立つならば、恒久的な分岐を生じる可能性はほとんどなく、いずれ新しい検証規則のブランチへと収束します。
Pay to script hash (P2SH) によるトランザクションは、ソフトフォークによって実現されました。

ターゲット
difficulty(採掘難易度)の算出元となる256ビットのデータであり、採掘時に探索することになるブロックヘッダーのハッシュ値(プルーフ・オブ・ワーク)の上限値のことです(つまりこの値より小さなHash値を見つける競争を行うことになります)。
ターゲットが「低い」ほどdifficultyは高くなります。
ビットコインでは、 2016ブロック(2週間)ごとにターゲットが調整されます。採掘時の指標となるdifficultyは単純に最大のターゲットを現在のターゲットで割った値になります。

チェックポイント
チェックポイントは、ビットコインの公式クライアントにハードコードされたある時点のブロックのハッシュ値です。
クライアントは、チェックポイントまでの全てのトランザクションを有効で不可逆なものとして受け入れます。
クライアントはチェックポイント以前のブロックチェーンを無条件に正しいものと認識し、チェックポイント以前のブロックチェーンを分岐させることが不可能となっています。
悪意のあるハッカーからの過去のブロックチェーンへの攻撃(51%攻撃)対策として使われることもあります。

電子署名
電子署名とは、データに電子的に署名することです。
電子署名により、本文を公開鍵を用いて署名することが出来ます。
第三者は公開鍵と署名と本文を見比べることで署名をしたのが秘密鍵を持っている人であること(所有権の確認)と本文が改ざんされていないことを検証すること出来ます。

トランザクション展性
トランザクションの論理的な意味を変えずに(つまり支払元と支払先を変えずに)トランザクションの表現を変更し結果としてトランザクションハッシュを変更してしまう攻撃のことです。
この攻撃をされるとどちらかのトランザクションが2重払いになってしまいますが、論理的な意味は変わらずちゃんと支払いは完了します。
ただ自分の作成したトランザクションを確認するのが難しくなるため事業者は対応が必須です。
マウントゴックス社がこの攻撃を受けたと発表したことで有名になりました。

ナンス
ナンスとは、Number used once(一度だけ使用される使い捨ての数字)の略で、ブロックを生成するときに採掘者(マイナー)によって生成される32ビットの数値です。ブロックを生成するためには採掘難易度より小さいハッシュを計算することが必要です。
もちろん何度計算してもハッシュ値は同じなのでナンスをどんどん変更させてハッシュ値を変えていき、うまくいくナンスを探すことになります。
ビットコインの採掘(マイニング)においてこのナンスを探す作業はまさに電気代の無駄で経済合理性もありません。
アルトコインではこの計算を、より社会的に有意義な手法に置き換えているものがあります(NameCoinなど)。

二重支払い
二重支払いとは、すでに使用したビットコインを再び使用することです。ビットコインの取引は秘密鍵を持っている人が署名しなければ使えないのでコインの不正使用は防ぐことができますが、秘密鍵を持っている人が同じコインを2つの取引で使用することを防げません。
ビットコインはブロックチェーンとプルーフ・オブ・ワークを導入することにより、二重支払いを防ぐ仕組みとなっています。
ブロック生成時に二重支払いの取引ははじかれるため承認された取引は二重支払いの可能性が劇的に減ります。
ただ孤立ブロックとメインチェーンのブロックで二重支払いになる可能性はあります。これが6承認が推奨される理由です。
また悪意がなくてもトランザクション展性という攻撃により普通の取引が2重払いになってしまうケースがあります。
ただしこの場合は意味的には全く同じ意味の取引が生成(トランザクション展性)されるので大きな脅威ではありません。
二重払いのコインをもとに作成した取引も同様に無効なので自分の使用するコインは6承認を得たものにするべきです。
悪意を持ったプログラマーは二重支払いを意図的に起こすことが可能です。
そのため事業者は二重払いを防ぐ方法を実装することが重要です。

ハードフォーク
ハードフォークは、ブロックチェーンのプロトコルに規定された検証規則を緩和することによって発生するブロックチェーンの分岐のことです。
ハードフォークの際には、新しい検証規則を採用しないノードは、新しい検証規則に則って作成されたブロックおよびトランザクションを無効として却下する可能性があります。
これにより、新しい検証規則を採用するノードと、採用しないノードとの間で、ブロックチェーンの最も長い有効な枝の判断に不一致が生じ、恒久的な分岐を生じる可能性があります。
ソフトフォークも参照。

発行量
ビットコインの発行量とは、新規に発行されるビットコインの数量や、過去の発行総量を指します。
新規に発行されるビットコインは採掘報酬(コインベース:Coinbase)と呼ばれ、採掘(マイニング)により新たなブロックを生成した採掘者(マイナー)がその報酬として得るビットコインです。
ビットコインの発行総量は約2100万BTCであり、上限に達するのは2140年頃になる見込みです。

ハッシュ(ハッシュ値)
ハッシュ(またはハッシュ値)とは、あるデータを変換して得られる固定長のデータのことです。
ハッシュはあるデータを一方向にしか演算できないのが特徴で、ハッシュ化されたデータを元のデータに戻すことはほぼ不可能です。
また元のデータを1文字でも変更するとハッシュ化されたデータは全く違う結果となり、元データを推測することを不可能にしてます。
暗号は暗号化したデータを復号できるのに対し、ハッシュは復号できないという大きな違いがあります。
ハッシュ値を得るための関数を「ハッシュ関数」といいます。データの改竄を検知したり、パスワードの照合、データ検索の高速化などに用いられています。ビットコインにおいてはハッシュはいたるところで使われています。
特にマイニング(採掘)ではハッシュを計算する効率が最も重要でハッシュ計算に特化したハードウェア(チップ)なども開発されています。
ビットコインで使用されるハッシュは SHA-256 と RIPEMD-160 です。
これらのハッシュはGPUで計算するのに向いており、後発のアルトコインではScrypt系のハッシュを使うことで普通のPCでも採掘しやすいように工夫しているものも多いです。
一般的にパスワードはハッシュ化されて保存されております。
そうしておけば事業者がユーザーのパスワードを知ることは不可能であり、また漏洩に耐えられるのでこのような設計にするのが必須です。

半減期
半減期とは、ビットコインの採掘報酬が半減するタイミングのことです。
採掘報酬は1ブロックにつき 50BTC から始まりました。
それから210,000ブロック毎に半減し、6,929,999番目のブロックが最後の採掘報酬になることと決められています。
最初のビットコイン半減期である210,000番目のブロックは2012年11月29日に生成されており、採掘報酬は 25BTC に半減しました。
2回目のビットコイン半減期である420,000番目のブロックは2016年7月9日ごろに生成されると言われており(※)、採掘報酬は 12.5BTC に半減します。
(※ このページは2回目のビットコイン半減期が来る前に書かれています。)

ビザンチン将軍問題
相互に通信しあう何らかのオブジェクト群において、通信および個々のオブジェクトが故障または故意によって偽の情報を伝達する可能性がある場合に、全体として正しい合意を形成できるかを問う問題です。
一般的には、インターネットのような信頼のおけないネットワークにおいて、見知らぬ人とどうやって信頼を築きあげるかという問題あります。
ブロックチェーンは利己的な各ノードに難しい計算をさせることで合意を形成させます。
これをプルーフ・オブ・ワークといいます。
プルーフ・オブ・ワークによってビットコインの記録と送金の安全性が保たれています。

Bitcoin Unlimited(BU)
Bitcoim Unlimited (BU) は、現在の Bitcoin のプロトコルに存在する最大 1MB というブロックの大きさに関する制限を緩和した仕様です。
BU の目的は、Bitcoin ネットワークにおけるトランザクション処理量にかかるスループットの向上にあります。この点において、Bitcoin XT と類似しています。
BU は、Bitcoin XT と異なりあらかじめ固定されたブロックの大きさを想定しておらず、代わりにマイナーや検証ノードに対して複数の調整可能な構成設定を持たせることにより、挙動を調整できるようにします。
具体的には、BUIP001, 002, 005 において次の 5 つの構成設定を定義しています。
1.採掘時に生成するブロックの最大の大きさ (MG) は、マイナーが生成するブロックの大きさの上限を設定します。(既定値は 1MB)
2.過大とみなすブロックの大きさ (EB) は、マイナーや検証ノードがブロックの却下を判断する大きさを設定します。EB を超える大きさのブロックは、これらのノードによって即座に却下されます。
換言すれば、ノードが受け入れるブロックの大きさの最大値となります。
(既定値は 16MB) この設定の存在により、ブロックチェーンの短期的な分岐を生む可能性があります。
3・強制的に受理する深さ (AD) は、EB の設定値を超える大きさのブロックが生成された場合であって、このブロックを受理するために必要な承認の数を設定します。
この設定は前述の分岐の問題を解決するために存在し、AD で指定されたブロック数の承認が得られれば EB より大きいブロックであっても強制的に受理することで、短期的な分岐を解決します。
4.将来生成するブロックの大きさ (FGS) は、マイナーが将来採掘すべきブロックの大きさを提案します。
この提案は、マイナーが生成するブロックに含められ、将来の MG 設定値に関する投票として機能します。
5.ブロックの高さの提案 (ABH) は、前述の FGS の大きさでブロックの生成を始める高さを表明します。
常に 12,000 の倍数になります。

秘密鍵
秘密鍵とは、公開鍵暗号において公開鍵と対になる鍵です。
ビットコインにおいては、送金時の取引で署名を行うために必要です。

プルーフ・オブ・ワーク(PoW)
プルーフ・オブ・ワークとはコンセンサス・アルゴリズムの1つです。
P2P(ピアツーピア)ネットワークにおいて何を発言権として認めるか?
という問題に対してのひとつの回答です。
古典的なP2PではIPアドレスひとつごと、プロセス1つごとなどに発言権がありましたが、ビットコインではこれをCPUの計算量に応じて発言権を与えることにしました。
具体的には多大な計算量を要する問題(=特定の条件を満たすハッシュを探す)を最初に解いたものに発言権(=ブロック)を与えています。
ビットコインネットワークに偽の情報を受け入れさせるためには過半数の発言権を手に入れなければなりませんが、そのためにはネットワーク全体の半分以上のCPUパワーが必要となります。
また過去にさかのぼって改変するのは指数関数的に難しくなるためビットコインネットワークに対する攻撃は事実上不可能といえます。
より一般的にプルーフ・オブ・リソースという概念があり、PoWはその一形態といえるでしょう(CPUリソースという意味で)。
アルトコインでよく利用されるのがプルーフ・オブ・ステーク(PoS)です。
これは利害関係に基づき発言権を与えるモデルで大まかにいうとコインの保持量に応じて発言権を認めるというのに似ています。
PoSではPoWと違って無駄な電力消費を抑えるというメリットがあります。
ただPoS単独ではなくPoWやほかの概念と組み合わせて使われることが多いようです。

ブルームフィルター
ブルームフィルターは、非常に高速に動作し、ある要素が集合に含まれるかどうかを、確率的に判定できるデータ構造です。
「確率的」というのは、「含まれない物を、含まれると言ってしまうかもしれないが、含まれるものを含まれないと言ってしまうことはない」という特徴(つまり、偽陽性はあるが偽陰性は無い)の事を指しています。
Simplified Payment Verification(SPV)はBitcoin論文で言及はされているものの、実際には、データを部分的にダウンロードする方法というのは長年存在しなかったので、これまで効率的にSPVクライアントを実装する事はできませんでしたが、プロトコル拡張によってブルームフィルターを用いて、自分のアドレスに関連するトランザクションのみをダウンロードしてくる事ができるようになりました。

ブロードキャスト
ブロードキャストとは、自分が作成した取引データをビットコイン・ネットワークに送信することです。
P2P(ピアツーピア)機構により数秒後には世界中の参加者があなたの取引を受け取ることになります。
ビットコインでは参加者全員が共通の全取引データ(ブロックチェーン)を閲覧する為、どのアドレスがどんな取引を行ったということが世界中の誰にでも分かります。

ブロックチェーンの分岐(フォーク)
ブロックチェーンの分岐とは、同時に複数のブロックが採掘されたり悪意のあるノードがネットワークを混乱させようとしたりして、複数のブロックが同じブロックのあとに加えられるときに発生します。
このとき、ブロックチェインは分岐し、次のブロックを作成する採掘者は分岐したチェインの中から一番長い枝(ブロックが多い枝)を選び、そこに自分のブロックを加えるよう計算を始めます。
枝の長さに一定以上の差がついたら、短い方の枝は捨てられ、捨てられた方の枝を構成するブロックの採掘者は報酬を受け取ることができなくなります。
よって、採掘者は、自分の枝のあとに他の採掘者が続くよう一番長い枝にブロックを加えるインセンティブをもつのです。
このインセンティブにより、一番長い枝に採掘者が集中し、そして採掘者が一つの枝に集中することにより、チェインが分岐しても一つの枝に収束するようになります。

ブロックチェーンの分岐(フォーク)
ブロックチェーンの分岐とは、同時に複数のブロックが採掘されたり悪意のあるノードがネットワークを混乱させようとしたりして、複数のブロックが同じブロックのあとに加えられるときに発生します。
このとき、ブロックチェインは分岐し、次のブロックを作成する採掘者は分岐したチェインの中から一番長い枝(ブロックが多い枝)を選び、そこに自分のブロックを加えるよう計算を始めます。
枝の長さに一定以上の差がついたら、短い方の枝は捨てられ、捨てられた方の枝を構成するブロックの採掘者は報酬を受け取ることができなくなります。
よって、採掘者は、自分の枝のあとに他の採掘者が続くよう一番長い枝にブロックを加えるインセンティブをもつのです。
このインセンティブにより、一番長い枝に採掘者が集中し、そして採掘者が一つの枝に集中することにより、チェインが分岐しても一つの枝に収束するようになります。

ブロックヘッダ
各ブロックは、ブロックヘッダという部分と元帳に追加するトランザクションの集まりからできています。
そしてブロックヘッダには、Merkle RootのHash値という欄があり、この部分には、そのブロックに入れる各トランザクションのHash値を計算し、次に、2つのトランザクションのペアのHash値を繋いだものをHashするというようにバイナリツリー状に組み合わせて行い、最後に1つのHash値にまとめた値を書き込みます。
このMerkle RootのHash値によって、ブロックに入れたトランザクションの値が書き変えられていないことを確認することができます。
そして、タイムスタンプはこのブロックが作られたおおよその時刻を示す。
つまり、これで前のブロックを識別して、ブロックの繋がりであるブロックチェインを構成する。
分散システムであるビットコインでは、ブロックヘッダのHash値をブロックを識別する番号として用います。
この番号は、単なる一連番号ではなく、ブロックヘッダのHashであるので、ブロックヘッダが改変されていないことも保証する機能を持っています。

マルチシグ(マルチ・シグネチャの略)
通常のビットコインアドレスとは違い、マルチシグのアドレスはビットコインを送付するために複数の署名が必要です。
必要な署名の数は「2/3」のように分数で表されます。
この場合「事前に作られた3つのプライベートキーの内、2つのキーでの署名が必要」という意味になります。
マルチシグを採用することで高セキュリティのウォレットを構築できます。最重要データであるプライベートキーが1つ漏洩しても、別のキーがなければビットコインの送付が出来ないからです。
攻撃者が2つ以上の別々の設計のプラットフォームに同時に侵入することは非常に困難です。
またマスターキーをひとつ持たせ、それをネットワークに接続していない安全な場所に保管することで万が一プライベートキーを紛失したときの保険になります。
マルチシグはセキュリティーを追求した、最新のビットコインテクノロジーです。

リプレイアタック(リプレイ攻撃)
ハードフォークによってブロックチェーンが複数の枝に分岐し、異なる 2 つ以上の独立した台帳に分かれてしまった場合において、ひとつの枝で有効なトランザクションが他の枝でも有効となることを利用して、ある台帳上で有効な取引を他の台帳上でも実行することにより、送金者の意図しない台帳上で資産移動させてしまうことを、リプレイ攻撃といいます。
たとえば、仮にブロックチェーンが Y および Z という 2 つの枝に分岐し、それぞれが独立した台帳とみなされることとなった場合で、送金者が Y の台帳上でのみの送金を意図してトランザクション T を作成したと仮定します。悪意のある受領者がこのトランザクション T の Z 上での実行を試み、トランザクション T がブロックチェーン Z に記録されてしまった場合、送金者は意図せず Z の台帳上でも同様の送金を行ったことになります。

リレー取引
リレー取引とは支払いのトランザクションが、受取人だけでなく、全員に送られる取引を指します。
ネットワークがPeer-to-Peerであるので、多くの場合、直接、受取人に送ることはできませんし、どの経路で送ったら良いかも分かりません。このため、バケツリレー的に全員に送ります。
Peer-to-Peer技術は中央サーバの媒介を要するものと、バケツリレー式にデータを運ぶものの2種類があります。
後者の形態はどこか一ヶ所が寸断されてもサービス全体が停止することはありません。

レファレンス実装
レファレンス実装とは、なんらかの機能を実現するハードウェアまたはソフトウェアであり、他者がそれを参考にして独自に実装することを助ける目的で作られたものを言います。
規格を制定する際、細かいところまで仕様書を作成しますが、現代の共通規格などは詳細が複雑多岐にわたっており、いざ実装するとなると組み合わせた場合の優先順位など、仕様書に書かれていることだけでは判断がつかない問題が多々発生します。
そういった時にリファレンス実装が存在すれば、リファレンス実装で確認した動作が「正しい」ということになり、規格を決める側も 安心して事を進めることができます。

ロックタイム
ロックタイムはあまり使われていないトランザクションの属性でロックタイムに指定した時刻までトランザクションが承認されないようにします。
一見意味を成さないように見えますが、署名済みのトランザクションをロックタイムをつけて作成することでロックタイムになるまでにキャンセルすることができるようになります。


仮想通貨比較ナビでは読者のあなたと一緒に作る情報サイトになっております。ぜひ、レビューや感想をお願い致します。※レビュー投稿の際にはコチラのバナーををクリックしてください。

関連記事

  1. ビットコインとは仮想の通貨

  2. ビットコインを生み出す採掘(マイニング)

  3. ビットコインと電子マネー

  4. ビットコインの仕組み

  5. 仮想通貨法とは?仮想通貨法について

  6. Bitcoin(ビットコイン)を動画で紹介

PAGE TOP