ブロックチェーン関連ワード辞典（簡易版）ABCあいうえお順

ブロックチェーン関連のキーワードぷち辞典です。ブロックチェーン学習に役立ててください。追加オーダーがあればコメントください。
最後に、ブロックチェーン学習にオススメの書籍も記載します。ご参考ください。


## AES (Advanced Encryption Standard)
米国国立標準技術研究所 (NIST)によって開発された暗号化ルールです。暗号化と復号化に同じ鍵を利用する共通鍵暗号方式のひとつです。AESは[連邦情報処理標準 (FIPS)197](https://nvlpubs.nist.gov/nistpubs/fips/nist.fips.197.pdf)に公開されています。

## ASIC (Application Specific Integrated Circuits)
ある目的に特化させた専用ICチップです。ブロックチェーンにおいては、高速なhash計算や仮想通貨のマイニングに利用されています。

## Base58
ブロックチェーンウォレットのアドレスを作成するときに利用されるエンコード方式のひとつです。アドレス間違いを防ぐためにBase64で利用される文字列から、見た目が紛らわしい「l」「I」「0」「O」「+」「-」を除いたものです。

## Base58Checkエンコード
Bace58にチェック機能が追加されたエンコード方式です。このチェック機構で、ウォレットアドレスのご入力を抑制します。

## Base64
エンコード方式のひとつです。アルファベットの大文字26種、小文字26種と数字10種、「+」「-」の計64種で構成されるコンパクトな文字列に変換できます。

## BIP (Bitcoin Improvement Proposal)
オープンソースであるビットコインプロジェクトに対して行われた改善提案です。BIPはナンバリングされており、[BIPs](https://github.com/bitcoin/bips)に公開されています。

## b-money
Wei Daiが提案した分散型電子キャッシュシステムです。サトシナカモトはb-moneyを参考にしてビットコインを開発したと考えられています。

## BOINC (Berkeley Open Infrastructure for Network Computing)
各個人のコンピュータのリソースを、科学的な研究に提供するためのシステムです。タンパク質の複雑な構造解析や、素数発見などに活用されています。

## Coinbaseトランザクション
ブロックの最初の特殊なトランザクションのことです。Proof of Workを採用しているブロックチェーンの場合、ブロックの生成に大きな計算コストを要します。その対価として、生成者への報酬を含むCoinbaseトランザクションがブロックに含まれています。Generationトランザクションとも呼ばれます。

## Demurrage通貨
保持している時間に応じて価値が低下していく通貨のことです。通貨を消費するモチベーションに貢献します。

## Difficulty
Proof of Workの難易度のことです。Difficultyを調整することで、Proof of Workに必要な計算コストを増減できます。

## DNSシード
ブロックチェーンに参加したノードに対してIPアドレスのリストを提供するDNSサーバのことです。既存のノードによって集められたアドレスリストの中からランダムにピックアップして提供されます。

## DOS攻撃 (Denial of Service Attack)
大量のリクエストを送る、またはシステムに意図的に例外処理をさせることによって、対象のサーバをダウンさせようとする攻撃のことです。多くのブロックチェーンシステムでは、DOS攻撃対策として、トランザクションの有効を確認するロジックが実装されています。

## ECDSA (Elliptic Curve Digital Signature Algorithm)
デジタル署名で用いられているアルゴリズムのひとつで、楕円曲線デジタル署名アルゴリズムの略称です。ECDSAは、楕円曲線上の離散対数問題という数学的性質を利用しています。この性質によって、現代のコンピュータ能力では、公開鍵から秘密鍵を生成することは事実上不可能と考えられており、デジタル署名プロセスに有用なアルゴリズムです。

## Extra nonce
Coinbaseトランザクションの空きスペースを利用した追加のNonceです。Hash計算能力の向上によって、ブロックヘッダにある標準のNonceだけではProof of Workのアルゴリズムを運用できなくなる可能性があります。Extra nonceを利用することで、継続してProof of Workアルゴリズムを採用できます。

## FPGA (Field Programmable Gate Array)
プログラムによってカスタマイズ可能な半導体です。仮想通貨のマイニングで利用されることもあります。

## Generationトランザクション
"Coinbaseトランザクション"を参照してください。

## Genesisブロック
ブロックチェーンの最初のブロックのことです。

## Hash
あるデータを特定のルールで変換して算出した不規則な英数文字列のことです。
hash値から元データの復元や推測は困難であるという数学的性質をもったアルゴリズムなどを活用し、システムのセキュリティー対策に広く活用されています。

## Hashcash
Adam Backによって提案された、スパムメールを制限するProof of Workのシステムです。サトシナカモトはブロックチェーンの開発でHashcashの仕組みを参考にしたといわれています。

## HDウォレット (Hierarchical Deterministic Wallet)
決定性ウォレットの中で主流のウォレットです。シードとよばれる1つのマスターキーから秘密鍵を生成し、それをもとに階層的に生成された複数の秘密鍵と公開鍵を利用しています。

## Locking script
UXTOを利用するときに満たすべき条件を付与するためのスクリプトです。例えばAさんからBさんにビットコインを送った場合、Bさんの公開鍵を利用して未使用のビットコインを防御するのがLocking scriptです。BさんはこのロックをBさんの秘密鍵を用いて解除します。

## Nonce
Proof of Workを明示するための数値です。Nonceの数値自体は意味を持っていません。Nonceは、ブロック内の他の要素と組み合わせたデータのhash値が特定の条件を満たしています。条件を満たすNonceを算出するにはNonceを少しずつ変化させて計算を繰り返すしかないという特徴がある。この特徴がProof of Workを実現させています。

## P2P (Peer to Peer) 
ネットワークに参加しているすべてのノードが同等の立場であるという構成を意味します。ブロックチェーンネットワークの「中央管理者不在で、参加者全員が共同管理する思想」を支えるアーキテクチャです。

## PoS (Proof of Stake)
計算コストが大きすぎるProof of Workを代替するアルゴリズムです。既存のブロックチェーン上で通貨（あるいはそれと同等の価値）所有量や所有期間などによって、ブロック生成権を決定するアルゴリズムです。

## PoW (Proof of Work)
ブロックチェーンの信頼性を担保するために、ブロック生成に多量の計算コストを求めるアルゴリズムです。一般的には、相当数のHash計算を繰り返すことによって、ある条件を満たすNonceを特定した人がブロック生成権を得ます。他のネットワーク参加者はNonceが条件を満たしていることを確認し、ブロックチェーンの信頼性が維持されています。 

## RIPEMD (RACE Integrity Primitives Evaluation Message Digest)
Hash関数のひとつで、高いセキュリティーレベルを必要とする数学的性質をもっています。RIPEMD-160, RIPEMD-256, RIPEMD-320など複数の種類が存在します。

## RIPEMD160アルゴリズム
RIPEMDの一種でRIPEMDのなかで広く活用されているHash関数です。発案当初のRIPEMDは出力されるHash値が128ビットでしたが、改良を加え、さらにHash値を160ビットにしたHash関数です。

## Script言語
Locking scriptやUnlocking scriptを記述しているプログラミング言語です。 

## Secp256k1
米国国立標準技術研究所 (NIST)が策定した楕円曲線のパラメータです。一部の楕円曲線暗号で利用されている

## SHA (Secure Hash Algorithm)
Hash関数のひとつで、高いセキュリティーレベルを必要とする数学的性質をもっています。SHA-256, SHA-512など様々な派生が存在します。

## SPV (Simplified Payment Verification)
トランザクションの検証方法のひとつです。ブロックチェーンの一部のデータしか保持しない軽量のノードは、トランザクションがブロックチェーンに含まれており、トランザクションを含むブロックのあとにいくつかのブロックが存在することを確認することで、トランザクションが有効であることを確認しています。このシンプルな確認方法をSPVと呼びます。

## Unlocking script
UXTOを利用するときに所有権を証明するためのスクリプトです。例えばAさんからBさんにビットコインを送った場合、Bさんの公開鍵を利用して未使用のビットコインを防御します。BさんはこのロックをBさんの秘密鍵を用いて解除します。この解除を行うためのスクリプトがUnlocking scriptです。

## UTXO (Unspent Transaction Output)
未使用のトランザクションです。例えば仮想通貨のブロックチェーンの場合、すべてのトランザクションには送り手と受け手と金額の情報が含まれます。通貨の受け手は、その通貨を利用可能ですが、まだ利用していない通貨情報をもつトランザクションをUTXOと呼びます。

## Vanity Address
好みの文字列を含むブロックチェーンウォレットのアドレスです。ウォレットアドレスは、ランダムに生成される秘密鍵から生成されます。そのためウォレットアドレスはランダムな文字列になります。アドレス生成処理を多数繰り返すことで好みの文字列を含むVanity Addressを生成できます。

## WIF (Wallet Import Format)
Base58Checkエンコーディングを利用したビットコインの秘密鍵の表示方法です。

## ウォレット
ブロックチェーン上でトランザクションを生成するための秘密鍵や公開鍵を管理するソフトウェアです。一般的に仮想通貨を管理するブロックチェーンで利用されており、送金や残高確認が可能です。

## エンコード
あるデータを特定のルールで変換する操作を指します。もとの値に戻すことも可能です。

## オーファントランザクション
トランザクションには親子関係があり、何らかの親トランザクションから子トランザクション生成されます。例えばビットコインであれば、誰かから受け取ったコインを利用しないと、新たな支払いのトランザクションを生成できない仕組みになっています。

オーファントランザクションとは、ノード内で親トランザクションを確認できていないトランザクションです。親トランザクションが存在しないわけではなく、トランザクションデータの同期のタイムラグによって、オーファントランザクションが一時的に発生します。

## オーファンプール
オーファントランザクションをプールしている領域です。オーファントランザクションの親のトランザクションが確認できた後は、通常のトランザクションと同様にトランザクションプールに取り込まれます。

## オーファンブロック
ほぼ同タイミングでブロックが生成された場合、ブロックチェーン上の上流に位置するブロックよりも先に、次のブロックを受け取る場合があります。このブロックをオーファンブロックと呼びます。

## カニンガム鎖
ある条件の漸化式を満たす素数列のことです。素数列を特定するには大きな計算コストが必要となります。一部のブロックチェーンのProof of Workとしても利用されています。

## カラードコイン
少額のビットコインによるトランザクションに別の情報も組み込んだトランザクションです。カラードコインを利用することで、通貨以外の価値を保管する活用方法が期待されています。

## 軽量クライアント
ブロックチェーンの部分的な情報の管理のみを行っているノードのことです。軽量クライアントでは、別のノードで管理されている情報を利用してトランザクションの検証を行っています。

## 決定性ウォレット (Deterministic Wallet)
シードとよばれる共通データからHash関数によって生成された秘密鍵を利用しているウォレットです。シードウォレット (Seeded Wallet)とも呼ばれます。

## 公開鍵
一部のデジタル署名のプロセスでは、公開鍵, 秘密鍵とよばれる不規則な英数文字列のデータが利用されています。秘密鍵によって署名データを作成し、公開鍵によって署名データを検証することが可能です。公開鍵は、公開して他人が利用する鍵です。他人は公開鍵によって「署名データが署名者本人によって作成されたデータであること」を確認します。公開鍵と秘密鍵はセットになっており、秘密鍵から公開鍵を作成します。

## 公開鍵暗号
データの暗号化と複合に異なる鍵を利用する暗号方式です。異なる鍵を利用することで片方の鍵を公開することが可能です。2つの異なる鍵のうち、公開可能な方の鍵を公開鍵と呼びます。

## 51%攻撃
多くのHash計算リソースを利用して、ブロックチェーンシステムを攻撃する手法です。ダブルスペンド攻撃と組み合わせて攻撃するケースが想定されています。例えば、多量のHash計算リソースによって意図的に偽のブロックチェーンの枝分かれを生成し、正である承認済ブロックのトランザクションを無効化することで、トランザクションをなかったことにする事例が挙げられます。

## コンセンサス攻撃
今後発生する合意形成に対して攻撃を行う手法です、パターンとしては「51%攻撃」や「ダブルスペンド攻撃」などが挙げられます。トランザクションを書き換えることも、署名アルゴリズムを突破することもなく、合意形成のロジックに影響を与えることによって攻撃します。

## シビル攻撃
複数のアカウントを利用してブロックチェーンネットワークを攻撃する手法です。ブロックチェーンネットワークは参加者の権力が等しく分散されていますが、複数のアカウントをもつことによって権力を集中させることで攻撃を行います。

## スマートコントラクト
スマートコントラクトは、複雑な契約処理を自動化する技術を指します。契約そのものや、自動化するサービス、自動化行為などを意味する場合もあります。ブロックチェーンを活用したスマートコントラクトは、契約情報を関係者全員で管理します。この管理手法によって、特定の組織や個人に権力が集中することを防げます。

## セカンダリーチェーン
メインのブロックチェーンから枝分かれしたブロックチェーンを指します。異なる2つのノードがほぼ同時にブロックを生成した時に、セカンダリーチェーンが生成される場合があります。

## 分散型創発的コンセンサス (Decentralized Emergent Consensus)
ブロックチェーンネットワークの各ノードが独立して動作しながら合意形成できる仕組みのことです。全ノード は以下のルールに従っています。

- 自分でトランザクションを検証する
- 自分でトランザクションを蓄積する
- 自分で新規ブロックを検証し、ブロックチェーンに接続する
- Proof of WorkもしくはProof of Stakeを満たす最も長いブロックチェーンを正とする

## タイムスタンプ
その時刻以前にデータが存在しており、それ以降データが改ざんされていないことを証明する時刻データです。

## 楕円曲線暗号
楕円曲線上の離散対数問題という数学的性質を利用した暗号です。

## ダブルスペンド攻撃
意図的に偽のブロックチェーンの枝分かれを生成し、正である承認済ブロックのトランザクションを無効化することで、本来あるべきトランザクションをなかったことにする攻撃手法です。51%攻撃と組み合わせて悪用されるケースが多いです。

## チェックサム
データのチェックに利用するための文字列です。チェック対象となるデータのHash値から生成されます。

## トランザクション
ブロックチェーンの構成要素で、1つの取引を記録したデータです。一般的には、取引日時、当事者情報（誰と誰の取引であるか）、取引内容を示す数値や文字情報などが記録されています。

## トランザクションプール
トランザクションが発生すると、トランザクションはまず、トランザクションプールにストックされます。トランザクションはすぐにブロックに取り込まれるわけではありません。ブロック生成の開始までの一定期間、トランザクションプールにストックされ、1つ以上のトランザクションが一度にブロックに保管されます。

## ノード
ブロックチェーンネットワークにおいては、独立したネットワークの参加者を指します。ノードの中でも、ブロック生成機能の有無、ウォレット機能の有無などが異なる様々な形態があります。

## 非決定性ウォレット (Nondeterministic Wallet)
保管している複数の秘密鍵同士が関連性を持っていないウォレットです。ランダムウォレットとも呼ばれます。

## ビザンチン将軍問題
信用することができない潜在的な危険性を持つネットワークの中で情報交換する場合、どのようにして合意形成を取っていくべきかという問題のことです。

## 秘密鍵
一部のデジタル署名のプロセスでは、公開鍵, 秘密鍵とよばれる不規則な英数文字列のデータが利用されています。秘密鍵によって署名データを作成し、公開鍵によって署名データを検証することが可能です。秘密鍵は名前の通り、自分だけが保持している鍵です。公開鍵と秘密鍵はセットになっており、秘密鍵から公開鍵を作成します。

## ブルームフィルタ
プライバシー流出リスクを軽減する機能です。ある集合に求めるデータが含まれているかどうかを判定することができます。ブロックチェーンにおいて、SPVは一部のブロックチェーンデータしか持ちませんが、ブルームフィルタを活用してプライバシーを守りながらトランザクションを検証しています。

## フルノード
ブロックチェーンの全データを保持しているノードです。

## ブロック
グループにまとめられたトランザクションの集合です。ブロックはトランザクション以外にも、ヘッダー情報を持ちます。ヘッダー情報には、1つ前のブロックのhash値が含まれています。ブロックの生成アルゴリズムとしてProof of Workを採用している場合、Nonceも保持しています。

## ブロックハッシュ
ブロックのHash値です。ブロックの識別子として活用されます。ブロックヘッダハッシュとも呼ばれます。

## マイニング
仮想通貨でのブロック生成プロセスです。

## マークルツリー
大規模のデータをツリー上に構造化することで、効率的に要約し、検証可能な状態となっているデータ構造のことです。ブロックに含まれている多量のトランザクションを要約するために活用されています。マークルツリーによって、ブロックにあるトランザクションが含まれているか否かを検証することが可能です。二分ハッシュ木 (Binary Hash Tree)とも呼ばれます。

## マークルルート
マークルツリーの末端データのペアから1つのHash値を算出し、1つになるまで繰り返した最終Hash値です。ルートとも呼ばれます。

## マルチシグネチャ
複数の秘密鍵を利用してトランザクションを実行する方法です。複数の秘密鍵を利用することで高いセキュリティーを維持できます。

## 【最後に】ブロックチェーン学習の書籍（私が制作したものの紹介）
以下、私が制作したものですが、初心者向けのブロックチェーン開発教材です。基礎的な機能から順に作り上げ、その後Proof of Workや署名検証アルゴリズムを実装するという進め方です。Web上に公開する方法まで記載されているので、おすすめです。

日本語版

https://www.amazon.co.jp/dp/B0B55XSBNZ

英語版

https://www.amazon.co.jp/dp/B0B7BLLDWQ