最近、ニュースやインターネットで聞く「ブロックチェーン」という言葉をなんだか難しそうと感じる方もいらっしゃるかもしれませんね。
ブロックチェーンは、特定のだれか一人が情報を管理するのではなく、参加するみんなで情報を共有し、安全で透明性の高い記録を守っていく仕組みです。
もともとはビットコインという暗号資産(仮想通貨)を支えるために生まれましたが、今ではお金のやり取りだけでなく、商品の流通管理、契約ごと、医療記録、アート作品の証明など、本当に色々な分野で使われ始めています。
「言葉の意味が分かれば、仕組みも少し見えてくるかも?」 「もしかしたら、思ったより面白い技術なのかも?」
この記事を読み終わる頃には、きっとブロックチェーンに対する見方が少し変わっているはずです。
この記事では、「ブロックチェーンって結局なに?」という疑問をお持ちの皆さんのために、この技術を理解する上で「これだけは知っておきたい」という基本的な専門用語を10個以上ピックアップしました。
それぞれの言葉の意味や仕組み、どんな役割を持っているのか、そして言葉同士がどう繋がっているのかを、できるだけ分かりやすく、丁寧にご紹介していきますね。
この記事は、ブロックチェーン技術について学んでいただくための情報提供を目的としています。
特定の金融商品や投資をおすすめするものではありませんので、その点はご理解ください。
それでは、一緒にブロックチェーンの世界を覗いてみましょう。
- ブロックチェーン (Blockchain) ってなんだろう? 分散された信頼の鎖
- 分散型台帳技術 (DLT – Distributed Ledger Technology) ブロックチェーンだけじゃない?
- ブロック (Block) ブロックチェーンを形作るデータの箱
- ハッシュ / ハッシュ関数 (Hash / Hash Function) データの指紋が守る信頼性
- P2Pネットワーク (Peer-to-Peer Network) みんなで支える分散型システム
- ノード (Node) ネットワークを動かす働き者たち
- コンセンサスアルゴリズム (Consensus Algorithm) みんなで決めるルール
- マイニング (Mining – PoW context) ブロックを作るための計算競争
- スマートコントラクト (Smart Contract) プログラムが動かす自動契約
- 公開鍵と秘密鍵 (Public Key & Private Key) あなたの資産を守るデジタルな鍵
- ウォレット (Wallet) 秘密鍵をしまう大切なお財布
- トランザクション (Transaction) ブロックチェーンを動かす記録の最小単位
- (ボーナス) ガス代 (Gas Fee – Ethereum Context) イーサリアムを使うための燃料費?
- 用語間のつながりとブロックチェーンの全体像 みんなで動かす大きな仕組み
- まとめ ブロックチェーン理解を深める旅へ
ブロックチェーン (Blockchain) ってなんだろう? 分散された信頼の鎖
まず、全ての基本となる「ブロックチェーン」から見ていきましょう。
これは、新しく発生した取引のデータなどを「ブロック」というデータの箱に詰めていくイメージです。
そして、その箱(ブロック)を、作られた順番通りに時系列で「チェーン(鎖)」のようにつなげて、みんなで管理・保管していく技術、またはそのデータ構造自体のことを言います。
ブロックチェーンのすごいところは、銀行のような中心的な管理者が必要ない点です。
ネットワークに参加しているたくさんのコンピューター(これを「ノード」さんと呼びます)が、それぞれ同じ取引記録のコピーを持って、みんなで管理し合うんです。
この特徴から、ブロックチェーンは次に説明する「分散型台帳技術(DLT)」の代表的な例として知られています。
ブロックチェーンはデータベースの一種と考えることもできます。
しかし、データの記録や共有、内容の正しさについての合意の取り方が、今までのやり方とは全く違う新しいアプローチなんです。
各ブロックには、記録されるデータそのものだけでなく、とても重要な情報が含まれています。
それは、一つ前のブロックの内容全体を数学的にギュッと要約した「ハッシュ値」という、ブロック固有のIDのようなものです。
このハッシュ値があるおかげで、ブロック同士は鎖のようにガッチリと結びつきます。
この鎖のような繋がりが、データの順番を守り、一度記録された情報を後から書き換えることをとても難しくしています。
これが「耐改ざん性」と呼ばれる、ブロックチェーンの大きな強みです。
記録が透明であること(どこまで公開されるかはブロックチェーンの種類によります)と、この強力な耐改ざん性が合わさることで、参加者同士がお互いを直接知らなくても、技術によって信頼関係を築ける仕組みを提供しているんですね。
ちなみに、ブロックチェーンにはいくつか種類があります。
誰でも自由に参加できる「パブリックチェーン」(ビットコインさんやイーサリアムさんが有名です)、参加できる人が限られている「プライベートチェーン」、そして複数の組織が協力して管理する「コンソーシアムチェーン」などがあり、目的に合わせて使い分けられています。
分散型台帳技術 (DLT – Distributed Ledger Technology) ブロックチェーンだけじゃない?
ブロックチェーンの話をすると、よく一緒に出てくるのが「分散型台帳技術(DLT)」という言葉です。
これは少し広い意味を持つ言葉なんですよ。
DLTは、取引記録などの台帳データを、特定の中央サーバーや管理者に頼らずに、地理的に離れた場所にいる複数の参加者(ノードさん)の間で共有し、常に同じ状態に保ちながら管理していく技術全般のことを指します。
ブロックチェーンは、このDLTを実現するための、とても有名で広く使われている具体的な「方法」の一つなんです。
ですから、「ブロックチェーンはDLTの一種だけど、DLTが全てブロックチェーンというわけではない」という関係になります。
DLTの本当に大切な価値は、単にデータを色々な場所に置くことではありません。
「どうやって、そのバラバラに置かれたデータの正しさを参加者みんなで確認し、全員が同じ『これが正しい情報だ』と納得できるか」という点にあります。
実は、ブロックチェーン以外にもDLTは存在します。
例えば、IOTAさんのTangleやHedera Hashgraphさんのように、ブロックを一直線につなげるのではなく、取引データが網の目のようにお互いを承認し合う構造を持つものもあります。
これらは、初期のブロックチェーンが抱えていた課題、例えば一度にたくさんの取引を処理するのが苦手だったり(スケーラビリティの問題)、手数料が高くなりがちだったり、といった点を解決できるかもしれない新しい技術として、研究開発が進められています。
DLTは、私たちが「信頼」を置く対象を、特定の中央の組織から、分散化されたルール(プロトコル)とネットワーク参加者みんなの合意へと変えていく、大きな考え方の転換を示す技術カテゴリーだと言えるでしょう。
ブロック (Block) ブロックチェーンを形作るデータの箱
ブロックチェーンという名前の通り、この技術の基本となる部品が「ブロック」です。
ブロックは、単にデータを入れておく箱というだけではありません。
ブロックチェーンシステムの中で、記録と信頼性を保つための大切な単位として機能しています。
ブロックの中身は何? データとヘッダー
各ブロックの中には、主に二つの部分があります。
一つは「データ(ボディ)」と呼ばれる部分です。
ここには、一定の時間内に行われて、「これは正しい取引だね」と検証された複数のトランザクションがまとめて入れられています。
トランザクションとは、例えば暗号資産の送金記録だったり、次に説明するスマートコントラクトの実行結果だったり、製品がいつどこで作られたかの記録だったりします。
もう一つは「ヘッダー」と呼ばれる部分です。
これは、ブロック自体を管理し、チェーンの中で正しい位置に置くための重要な情報(メタデータ)がたくさん詰まっています。
ブロックをつなぐ重要な情報 ヘッダーの詳細
ヘッダーに含まれる主な情報を見てみましょう。
まず、「前のブロックのハッシュ値」です。
これは、すぐ前にあるブロックのヘッダー情報全体から計算された、そのブロック固有のIDのようなものです。
これがあることで、各ブロックは一つ前のブロックと暗号技術でしっかりリンクされ、時間順に並んだ鎖の構造ができあがります。
この繋がりこそが、ブロックチェーンの連続性と、後で説明する改ざんを見つける力の鍵なんです。
次に、「タイムスタンプ」があります。
これは、そのブロックが作られた(承認された)正確な時刻を示す情報です。
これにより、取引がどの順番で行われたかが記録され、後から順番を変えたりすることができなくなります。
また、「ナンス(Nonce)」という情報もあります。
これは “Number used once”(一度だけ使われる数)の略で、主に「Proof of Work (PoW)」という合意の仕組み(後で詳しく説明しますね)で使われる、使い捨ての特別な数字です。
マイナーさん(採掘者さん)と呼ばれる人たちは、このナンスの値を色々変えながら、ブロックヘッダー全体のハッシュ値がある特定の条件を満たすまで、一生懸命計算を繰り返します。
さらに、「マークルルート(Merkle Root)」というものもあります。
これは、そのブロックに入っている全てのトランザクションデータを、効率的に一つにまとめた(要約した)ハッシュ値です。
これがあると、特定の取引が本当にこのブロックに入っているかどうかを、ブロック全体のデータを全部見なくても、とても素早く確認できるんです。
そして最後に、これらのヘッダー情報(前のブロックのハッシュ、タイムスタンプ、ナンス、マークルルートなど)の全てを使って計算されるのが、そのブロック自身の「ハッシュ値(Current Block Hash)」です。
このハッシュ値が、次に作られるブロックによって「前のブロックのハッシュ値」として参照されることになります。
このように、ブロックは検証されたデータを入れるだけでなく、暗号技術によって過去の記録と強く結びつけられ、特定の時点でのデータの状態を書き換えられないように封印する、「デジタルなタイムカプセル」のような役割を果たしているんですね。
ハッシュ / ハッシュ関数 (Hash / Hash Function) データの指紋が守る信頼性
ブロックチェーンの安全性や信頼性、そして効率性を陰で支えている、とても重要な技術が「暗号学的ハッシュ関数」です。
ちょっと難しい言葉ですが、仕組みは面白いですよ。
ハッシュ関数とは、入力されたデータ(どんな長さの文章やファイル、ブロックのヘッダー情報でもOKです)を受け取って、それに対して常に同じ長さの(そして通常は元のデータより短い)固有の文字列(これを「ハッシュ値」または「ダイジェスト」と呼びます)を作り出す、数学的な計算ルールのことです。
このハッシュ値は、元のデータの「デジタルな指紋」のようなもの、あるいは「要約」と考えてみると分かりやすいかもしれません。
ブロックチェーンで使われるハッシュ関数(例えば、ビットコインさんで使われているSHA-256や、イーサリアムさんで使われているKeccak-256など)には、特に次のようなすごい性質があります。
ハッシュ関数のすごい性質
-
一方向性 生成されたハッシュ値から、元の入力データを計算で元に戻すことは、今のコンピューターの力では事実上不可能です。
指紋から元の人物を完全に再現するのが難しいのに似ていますね。
-
決定性 同じデータを入力すれば、何度計算しても必ず全く同じハッシュ値が出てきます。
いつ計算しても結果が変わらない、信頼できる性質です。
-
高感度(雪崩効果) 入力データがほんの少し、例えば一文字でも変わると、出てくるハッシュ値は予測できないほど大きく、全く違う値になります。
まるで雪崩のように、小さな変化が大きな結果の違いを生むんです。
-
固定長出力 入力データの長さに関係なく、ハッシュ関数は常に決まった長さ(例えばSHA-256なら256ビット、64文字の英数字)のハッシュ値を出力します。
どんなデータも同じ長さの「指紋」になるんですね。
-
衝突耐性 違う入力データなのに、偶然同じハッシュ値が生成されてしまう(これを「衝突」と言います)ようなペアを見つけることが、計算上とてもとても難しい、という性質です。
違う人に同じ指紋が付くことがほとんどないのと同じですね。
ブロックチェーンでのハッシュ関数の活躍
これらの性質のおかげで、ハッシュ関数はブロックチェーンの中で大活躍しています。
まず、ブロック同士を「前のブロックのハッシュ値」でつなげることで、鎖のような構造を作ります。
そして、ブロックの中のデータやヘッダー情報が少しでも書き換えられると、ハッシュ値が芋づる式に変わってしまうため、データの改ざんをすぐに、そして簡単に見つけることができます(データ完全性の保証)。
また、「Proof of Workマイニング」という合意の仕組みでは、特定の条件を満たすハッシュ値を見つけるための計算競争の中心的な役割を担っています。
さらに、ユーザーさんの公開鍵(後で説明します)からウォレットのアドレスを作る際にも使われ、プライバシーを守るのにも役立っています。
まさに、ハッシュ関数は、ブロックチェーンの「正直さ」と「変わらないこと」を数学的に支える土台石と言えるでしょう。
P2Pネットワーク (Peer-to-Peer Network) みんなで支える分散型システム
ブロックチェーンが「分散型」と呼ばれる大きな理由は、その土台となっているネットワークの仕組みに「P2P(ピアツーピア)ネットワーク」を使っているからです。
P2Pとは「Peer-to-Peer」の略で、「Peer(ピア)」は「同等の立場の人」や「仲間」という意味です。
このネットワークの形では、特定の偉い中心的なサーバーが存在しません。
ネットワークに参加している個々のコンピューター(これらを「ピア」または「ノード」さんと呼びます)が、お互いに対等な立場で直接つながり、情報をやり取りしたり、リソース(計算能力など)を共有したりします。
インターネットでよく使われている「クライアント・サーバーモデル」(情報を一箇所に集めたサーバーと、そこにアクセスするたくさんのクライアントさんで構成される形)とは大きく異なります。
P2Pネットワークでは、参加者一人ひとりがクライアントにもサーバーにもなれるんです。
ブロックチェーンの場合、取引の記録である台帳データは、このP2Pネットワークを通じて、世界中に散らばるたくさんのノードさんにコピーされて、みんなで共有・保持されます。
新しい取引の情報や、新しく作られたブロックの情報も、特定のノードさんから他のノードさんへ、まるでバケツリレーのように伝えられて(ゴシッピングプロトコルなどが使われます)、ネットワーク全体で情報が同じ状態に保たれます。
このP2Pという仕組みには、いくつかの重要な良い点があります。
まず、中心となるサーバーがないので、もし一部のノードさんが故障したり、ネットワークから一時的に離れたりしても、他のたくさんのノードさんが動いていれば、システム全体としては動き続けることができます。
これを「耐障害性」が高い、あるいは「可用性」が高いと言います。
特定の場所が壊れると全部が止まってしまう「単一障害点」がないんですね。
また、特定の管理者が情報を勝手に消したり、見られないように制限したりすることが難しくなるため、「検閲耐性」が高いという特徴もあります。
P2Pネットワークを採用することは、単に技術的な選択というだけではありません。
ブロックチェーンが目指している「中央集権からの脱却」、「参加者の自律性」、そして「自由で開かれた情報共有」といった考え方を、ネットワークの形そのもので実現していると言えるのです。
ノード (Node) ネットワークを動かす働き者たち
P2Pネットワークを実際に構成し、ブロックチェーンシステム全体を動かしているのは、ネットワークに参加している個々のコンピューターやサーバーデバイスです。
これらを「ノード」と呼びます。
ノードさんは、ブロックチェーンネットワークの参加者であり、システムを維持し、運営していくために欠かせない存在です。
ノードさんの主な仕事はたくさんありますが、代表的なものをいくつか挙げてみましょう。
ノードさんの主な役割
-
データの保存 ブロックチェーンの全ての取引履歴(台帳データ)の完全なコピー、あるいはその一部(例えばブロックヘッダーだけ)を自分のコンピューターの中に保存します。
-
トランザクションの検証 ネットワーク上を流れてくる新しい取引データ(トランザクション)を受け取って、それがブロックチェーンのルール(例えば、送る人のお金が足りているか、署名は正しいか、二重支払いではないかなど)に従っているかをチェックします。
-
ブロックの検証 他のノードさん(マイナーさんやバリデーターさん)が作った新しいブロックを受け取って、そのブロック自体が正しいものか(含まれている取引は全部有効か、合意のルールを守っているか、前のブロックとちゃんと繋がっているかなど)を検証します。
-
データの共有・伝播 検証して正しいと判断したトランザクションや、有効な新しいブロックの情報を、自分が接続している他のノードさんに伝えて、ネットワーク全体で情報を共有します。
-
合意形成への参加 ノードさんの種類によっては、ネットワーク全体の意見をまとめるプロセス(コンセンサスアルゴリズム)に積極的に参加します。
これには、新しいブロックを作る作業(マイニングやバリデーション)や、提案されたブロックが正しいかどうかを判断する投票などが含まれます。
ノードさんの種類もいろいろ
ブロックチェーンネットワークには、どんな役割を担うか、どれだけのデータを保持するかによって、いくつかの種類のノードさんがいます。
一番重要なのが「フルノード」さんです。
フルノードさんは、ブロックチェーンの最初(ジェネシスブロックと言います)から最新までの全ての取引履歴(台帳の完全なコピー)をダウンロードして持っています。
そして、他のノードさんに頼ることなく、全ての新しいトランザクションとブロックを、ブロックチェーンのルールに基づいて自分で検証する能力を持っています。
フルノードさんは、ネットワークの安全性、分散性、そしてデータの正確さを守る上で、まさに屋台骨となる存在です。
フルノードさんが世界中にたくさん散らばって存在することが、ネットワークを強くします。
一方、「ライトノード(軽量ノード)」さんというタイプもいます。
ライトノードさんは、ブロックチェーンの全てのデータではなく、ブロックのヘッダー情報など、一部のデータだけをダウンロードします。
自分で全ての検証をする代わりに、信頼できるフルノードさんに問い合わせることで、取引の検証や現在の状況を確認します。
使うコンピューターの資源(保存容量や計算パワー、通信量)が少なくて済むので、スマートフォンなどでブロックチェーンを利用するのに適しています。
しかし、その安全性はフルノードさんに依存している形になります。
また、「マイニングノード」さんや「バリデーターノード」さんは、それぞれPoWやPoSという合意の仕組みの中で、新しいブロックを作ったり承認したりする役割を専門に担うノードさんです。
これらは通常、フルノードさんの機能も持っています。
ノードさんの種類が色々あることで、参加者は自分の状況に合わせてネットワークへの関わり方を選ぶことができます。
しかし、忘れてはいけないのは、ネットワーク全体の健全性は、独立して検証を行うフルノードさんが十分に分散して存在し、元気に活動しているかどうかに大きくかかっている、ということです。
コンセンサスアルゴリズム (Consensus Algorithm) みんなで決めるルール
ブロックチェーンのように、中心となる管理者がいない分散型のシステムでは、とても重要な課題があります。
それは、「ネットワークに参加しているみんなが、台帳の内容(どの取引が正しくて、どの順番で記録されるべきか)について、どうやって同じ認識を持つか」ということです。
もし、人によって言うことが違っていたら、システムとして成り立ちませんよね。
この、分散した環境の中で、みんなで一つの正しい合意(コンセンサス)を作り上げるためのルールや手順、その仕組み全体のことを「コンセンサスアルゴリズム(合意形成アルゴリズム)」と呼びます。
コンセンサスアルゴリズムの目的
コンセンサスアルゴリズムの主な目的は、次の通りです。
-
合意の形成 ネットワーク全体で、取引の順番や台帳の現在の状態について、ただ一つの正しいバージョン(Single Source of Truth)を作り上げ、それを維持すること。
-
不正の防止 同じお金を二回使ってしまう「二重支払い」や、記録を後から書き換える「改ざん」といった悪い行為を防ぎ、ブロックチェーンの信頼性とデータの一貫性を守ること。
-
ビザンチン耐性 (BFT) ネットワークの中に、故障してしまったノードさんや、わざと嘘をついたりルールを守らなかったりする悪意のあるノードさん(これを「ビザンチン将軍問題」の裏切り者の将軍に例えます)が、ある程度の数いたとしても、システム全体としては正しく動き続け、正しい合意にたどり着けるようにすること。
代表的なコンセンサスアルゴリズム PoW と PoS
ブロックチェーンがどんな目的で作られたか、どんな設計思想を持っているか(例えば、安全性を最優先するか、速さを重視するか、どれだけ分散させるかなど)によって、本当にたくさんの種類のコンセンサスアルゴリズムが考え出され、使われています。
中でも、最も有名な二つのアルゴリズムを紹介しましょう。
-
Proof of Work (PoW – プルーフ・オブ・ワーク) これは「仕事量(計算量)による証明」という意味で、ビットコインさんで最初に使われたことで有名です。
ノードさん(この場合は「マイナー」さんと呼ばれます)は、とてもたくさんの計算パワー(ハッシュパワー)を使って、ある特定の条件を満たす、非常に見つけにくい値(ナンス)を探し出す計算競争を行います。
この難しい計算問題を最初に解いたマイナーさんが、新しいブロックを作る権利を得ます。
この計算には高性能なコンピューターと大量の電気が必要になるため、悪い人がネットワークを乗っ取ろうとしても莫大な費用がかかり、結果として高い安全性が実現されます。
しかし、その大量の電力消費が環境問題として指摘されたり、取引の承認に時間がかかったり(ビットコインさんでは約10分)、一度に処理できる取引の数に限りがある(スケーラビリティ問題)といった課題も抱えています。
-
Proof of Stake (PoS – プルーフ・オブ・ステーク) これは「保有量(ステーク量)による証明」という意味で、イーサリアムさん(The Mergeという大きなアップデート以降)など、多くの新しいブロックチェーンで採用が進んでいます。
ブロックを作る・承認する人(この場合は「バリデーター」さんと呼ばれます)は、計算競争ではなく、そのブロックチェーンが発行している暗号資産を一定量「ステーク」(賭ける、預け入れるという意味です)しているノードさんの中から、ステークしている量などに応じて確率的に選ばれます。
PoWのような計算競争が不要なため、使う電力を劇的に減らすことができ、環境に優しいとされています。
また、一般的にPoWよりも速く取引を処理できる傾向があります。
しかし、お金(暗号資産)をたくさん持っている人ほど選ばれやすくなるため、富が集中している人がネットワークの力も握ってしまう(中央集権化)のではないか、という心配の声もあります。
多くのPoSシステムでは、バリデーターさんがもし不正な行為をしたら、ステークしている資産の一部または全部を没収する「スラッシング」という罰則ルールを設けて、正直に行動するように促しています。
これら以外にも、PoI (Proof of Importance)、DPoS (Delegated Proof of Stake)、PoA (Proof of Authority)、PBFT (Practical Byzantine Fault Tolerance) など、様々なアルゴリズムがあります。
それぞれが、「ブロックチェーンのトリレンマ」(スケーラビリティ、セキュリティ、分散性の3つを同時に最大限に高めるのは難しいという課題)に対して、異なるバランスの取り方をしているんですね。
コンセンサスアルゴリズムは、単なる技術的なルールというだけではありません。
参加者が正直に行動することが、自分自身の経済的な利益にもつながるように、報酬(マイニング報酬やステーキング報酬)や罰則(スラッシング)といった「経済的なインセンティブ(動機づけ)」と、「ゲーム理論」という考え方をうまく組み合わせている点が、とても面白いところです。
個々の参加者が自分の利益を考えて行動することが、結果的にネットワーク全体の正直さと安全性を保つことにつながるように、巧みに設計されているのです。
マイニング (Mining – PoW context) ブロックを作るための計算競争
「マイニング(採掘)」という言葉を聞いたことがある方も多いかもしれませんね。
これは主に、先ほど説明した「Proof of Work (PoW)」という合意の仕組みを使っているブロックチェーン(代表はビットコインさんです)で行われる、とても重要な作業のことです。
具体的には、新しい取引データを検証して承認し、それらをまとめて新しい「ブロック」を作り、ブロックチェーンの最後につなげる一連のプロセスを指します。
この複雑で大変な計算作業を行う人や組織のことを「マイナー(Miner)」さんと呼びます。
この作業が、まるで地中から金や銀といった貴金属を掘り出す(採掘する)行為のように、大変で価値のあるものを見つけ出すプロセスに似ていることから、「マイニング」という名前が付けられたと言われています。
ビットコインさんのマイニングの流れ
ビットコインさんのマイニングを例に、その流れをもう少し詳しく見てみましょう。
-
トランザクションの収集と検証 まず、マイナーさんは、ネットワーク上を流れている、まだ承認されていないトランザクション(送金指示など)を集めます。
そして、それぞれのトランザクションが正しいものか(例えば、署名は本物か、送る人のお金は足りているかなど)をチェックします。
-
ブロック候補の作成 次に、検証してOKだったトランザクションをいくつか選び、ひとまとめにします。
これに、一つ前のブロックのハッシュ値やタイムスタンプといったヘッダー情報をくっつけて、新しいブロックの「候補」を作ります。
-
ナンス探し(ここが大変!) ここからがPoWマイニングの一番大変なところ、「ナンス探索」です。
マイナーさんは、作ったブロック候補のヘッダーの中に「ナンス」という任意の数字(使い捨ての数字です)を入れます。
そして、ヘッダー情報全体(ナンスも含みます)をハッシュ関数(ビットコインさんの場合はSHA-256という計算を2回行います)に入れて、ハッシュ値を計算します。
-
目標達成まで計算!計算! 計算して出てきたハッシュ値が、ネットワークで決められた特定の条件(「ターゲット値」という基準値より小さいこと。
これは結果的に、ハッシュ値の先頭に決められた数以上のゼロがズラッと並ぶことを意味します)を満たしているかどうかを確認します。
もし条件を満たしていなければ、ナンスの値を少し変えて(通常は1ずつ増やしていきます)、もう一度ハッシュ値を計算します。
この「ナンスを変えてハッシュ計算」という試行錯誤を、条件を満たす「当たり」のハッシュ値が見つかるまで、コンピューターを使って超高速で、そしてものすごい回数繰り返します。
これは、正解のナンス値を力ずくで探し出す、とても計算パワー(特に電気)を使う競争なんです。
-
ブロックの承認と追加 ネットワーク上の誰か一人のマイナーさんが、条件を満たすナンスを最初に見つけると、そのマイナーさんは完成したブロック(見つけたナンスも入っています)をすぐに他のノードさんたちに「見つけたよ!」と報告(ブロードキャスト)します。
報告を受けた他のノードさんたちは、送られてきたブロックが全てのルール(トランザクションは全部正しいか、ナンスとハッシュ値の関係は合っているかなど)を満たしているかを検証します。
検証の結果、大多数のノードさんによって「このブロックは正しいね」と承認されれば、そのブロックは正式にブロックチェーンの最後尾に追加され、マイニングは成功となります。
マイニングの役割と報酬
マイニングは、単にブロックを作る作業というだけではありません。
PoWのブロックチェーンにおいて、いくつかの重要な役割を担っています。
-
取引の承認と確定 新しいトランザクションを検証し、ブロックに入れてチェーンにつなげることで、それらの取引を公式に承認し、確定させます。
-
新しい暗号資産の発行 ブロックを作ることに成功したマイナーさんへのご褒美として、ルールで決められた量の新しい暗号資産(例えばビットコインさんなら新しいビットコイン)が報酬として発行されます。
これは、その暗号資産が世の中に供給される主な方法の一つです。
-
ネットワークの安全を守る マイニングには高性能な専用コンピューター(ASICやGPU)への投資と大量の電気代という、莫大なコストがかかります。
このコストの高さが、悪い人が不正なブロックを作ったり、過去の取引を書き換えたりすること(例えば51%攻撃)を、経済的にとても難しくしています。
正直にマイニングに参加する方が、攻撃を試みるよりもずっと割に合うように、インセンティブ(動機づけ)が設計されているんですね。
マイニングに成功したマイナーさんは、この新しく発行される「ブロック報酬」に加えて、そのブロックに含めたトランザクションを送った人たちが支払った「取引手数料」も受け取ることができます。
マイニングに参加する方法としては、一人で挑戦する「ソロマイニング」、複数人で協力する「プールマイニング」、専門の会社から計算パワーを借りる「クラウドマイニング」などがあります。
しかし、マイニング競争はどんどん激しくなっており、高性能な機材や安い電気代が必要になるため、個人で参加するのは難しくなってきています。
また、大量の電力消費による環境への影響や、マイニングパワーが特定の大きなプールに集中してしまうことによる中央集権化のリスクなども、課題として指摘されています。
PoWにおける安全性は、計算が難しいという技術的な面だけでなく、その計算を行うために必要な「経済的なコスト」によって守られている、という点がとても重要なんです。
スマートコントラクト (Smart Contract) プログラムが動かす自動契約
ブロックチェーン技術の可能性を、単なるお金やデータの記録・やり取りのシステムから、もっと複雑で色々なことができるプラットフォームへと大きく広げたのが、「スマートコントラクト」という考え方です。
スマートコントラクトとは、契約の条件や、契約が実行されるプロセス、そしてその結果どうなるか、といった内容を、コンピューターのプログラムコードとして書き表し、事前に決められた特定の条件が満たされたときに、そのプログラムがブロックチェーン上で自動的に、そして強制的に実行される仕組みのことです。
これは、単に契約書をデジタルデータにしたものとは違います。
「契約を自動で実行してくれるプログラム」あるいは「自分で考えて動く契約」のようなものだと考えると分かりやすいかもしれません。
よく例えられるのが、自動販売機です。
あなたが自動販売機にお金を入れ(条件1)、欲しい飲み物のボタンを押す(条件2)と、誰かにお願いしなくても、機械が自動的に判断して飲み物を出してくれますよね(実行)。
スマートコントラクトは、これをもっと複雑な契約ごとで実現するイメージです。
スマートコントラクトが動く仕組み
スマートコントラクトは、だいたい次のような流れで動きます。
-
ルールのプログラム化 まず、契約を結ぶ人たちの間で合意したルールや条件(例えば、「もしAさんがBさんに1ETH(イーサリアムの通貨)を送金し、かつ、特定の日付を過ぎたら、Bさんが持っているデジタルアートの所有権を示すトークンを、Aさんに自動で送る」といった内容)を、Solidity(ソリディティ)のような専用のプログラミング言語を使って、コンピューターが理解できるコードとして書きます。
-
ブロックチェーンへの登録(デプロイ) 書かれたプログラムコードを、コンピューターが実行できる形(コンパイル)にして、ブロックチェーンネットワーク上に登録(デプロイ)します。
一度デプロイされると、ブロックチェーンの「変わらない」という性質(不変性)によって、そのコードを後から勝手に書き換えることは、原則としてできなくなります。
-
条件のチェックと自動実行 ブロックチェーンの外から入ってくる情報(例えば、現実世界の株価や天気予報など。
これらは「オラクル」という特別な仕組みを使ってブロックチェーンに伝えられます)や、他のスマートコントラクトからの呼び出し、あるいは特定の日時になったことなどによって、事前に決められていた条件が満たされたことを検知すると、スマートコントラクトのプログラムコードが、ネットワーク上のノードさんたちによって自動的に実行されます。
-
結果の記録 プログラムが実行された結果(例えば、お金やトークンが移動した、データが新しく記録された、何かが起こったことを知らせるイベントが発生したなど)は、「トランザクション」としてブロックチェーンに記録され、誰でも(権限があれば)その結果を確認できるようになります。
スマートコントラクトといえばイーサリアムさん
スマートコントラクトを実行できる機能を持つブロックチェーンプラットフォームとして、最も有名で広く使われているのがイーサリアム(Ethereum)さんです。
ビットコインさんが主にお金のやり取り(決済・送金)に焦点を当てていたのに対し、イーサリアムさんは、スマートコントラクトを実行できる汎用的な環境を提供することで、開発者がブロックチェーン上で動く様々な「分散型アプリケーション(DApps)」を作れるようにしました。
スマートコントラクトのメリットと注意点
スマートコントラクトには、たくさんの良い点があります。
契約の実行が自動化されるので、とても効率的で速く、正確になります。
契約の実行や確認のために、これまで必要だった仲介者さん(銀行さん、不動産屋さん、弁護士さんなど)を介さずに済む、あるいはその役割を減らせるため、手数料や手間、時間といったコストを大幅に減らせる可能性があります。
プログラムコード(公開されていれば)や実行された記録はブロックチェーン上に残るので、透明性が高く、誰でも(権限があれば)確認できます。
プログラムは書かれた通りに動くため、恣意的な判断や不履行のリスクが減り、お互いの信頼関係を技術が補強してくれます。
そして、ブロックチェーンに記録されるため、後から不正に書き換えることがとても困難です。
しかし、良いことばかりではありません。
注意すべき点や課題もあります。
一度デプロイしたプログラムコードを後から修正するのは基本的にとても難しいので、もしコードにバグ(間違い)やセキュリティ上の弱点があった場合、それが悪用されると大きな損害につながる可能性があります(有名な例として「The DAO事件」があります)。
たくさんの人が同時にスマートコントラクトを使おうとすると、ネットワークが混雑して処理が遅くなったり、実行に必要な手数料(イーサリアムさんで言う「ガス代」)がとても高くなったりする問題(スケーラビリティ問題)があります。
記録が透明であることは、裏を返せばプライバシーを守るのが難しいということでもあります。
契約の内容などから、個人や企業の秘密情報が漏れてしまうリスクも考えられます。
また、スマートコントラクトが法律上の契約としてどこまで有効なのか、問題が起きたときの責任の所在や解決方法など、法律や規制がまだ十分に追いついていない点も課題です。
安全で意図した通りに動くスマートコントラクトを作るには、高度な専門知識が必要ですし、バグや弱点がないかを専門家が厳しくチェック(監査)することが欠かせません。
スマートコントラクトの活躍分野
スマートコントラクトは、その特徴を活かして、本当に幅広い分野で応用が広がっています。
-
DeFi(分散型金融) 銀行などを介さずに、お金の貸し借り、交換(DEX)、保険などを実現します。
-
NFT(非代替性トークン) デジタルアートやゲームのアイテムなど、一つしかないデジタルなモノの所有権を証明し、売買できるようにします。
-
サプライチェーン管理 製品が作られてから消費者の手に届くまでの流れを記録し、透明性を高めます。
-
不動産取引 登記情報の記録や、条件が整ったら自動で所有権を移転するなど。
-
保険 例えば、飛行機が遅延したら自動で保険金が支払われる、といった仕組み。
-
ゲーム ゲーム内のアイテムの所有権を明確にしたり、ユーザー同士で安全に売買したり。
-
DAO(分散型自律組織) 会社のルールや意思決定のプロセスをプログラム化し、みんなで自律的に運営する新しい組織の形。
スマートコントラクトの登場は、ブロックチェーン技術の可能性を根本的に変えました。
ブロックチェーンを、単なる記録台帳から、プログラムを実行できる「世界中に分散したコンピューター」へと進化させたのです。
スマートコントラクトは、ブロックチェーンの上にプログラム可能な層を追加し、開発者が様々な自動化されたシステムを作ることを可能にし、その応用範囲を爆発的に広げた、とても重要な技術革新と言えるでしょう。
公開鍵と秘密鍵 (Public Key & Private Key) あなたの資産を守るデジタルな鍵
ブロックチェーン、特にビットコインさんやイーサリアムさんのような暗号資産(仮想通貨)の世界で、あなたがあなたであることを証明し、自分の資産を安全に管理するために、絶対に欠かせない技術が「公開鍵暗号方式(非対称暗号)」と、その心臓部である「公開鍵」と「秘密鍵」というペアの鍵です。
これは、数学的にとても深い関係を持つ、一対のデジタルな鍵(実際にはとても大きな数字のデータ)のことです。
秘密鍵は絶対に秘密!
「秘密鍵(Private Key)」は、その名前の通り、鍵の持ち主であるあなただけが、絶対に他の誰にも知られずに、厳重に秘密にしておかなければならない鍵です。
これは、あなたの家の鍵や、銀行口座の暗証番号のようなものだと考えてください。
この秘密鍵を持っていることが、ブロックチェーン上のあなたの資産に対する完全なコントロール権限を持っていることの証明になります。
もし秘密鍵をなくしてしまったり、誰かに盗まれてしまったりすると、その鍵に関連づけられた資産には二度とアクセスできなくなるか、悪い人に勝手に送金されてしまう危険性があります。
ですから、秘密鍵を安全に管理すること(例えば、紙に書き出して金庫にしまう、専用のハードウェアウォレットに入れるなど)は、暗号資産を扱う上で、あなた自身の最も重要な責任となります。
公開鍵は見せても大丈夫
一方、「公開鍵(Public Key)」は、秘密鍵とペアになっている鍵ですが、こちらは他の人に見せても安全な鍵です。
これは、銀行口座の口座番号や、あなたのメールアドレスのようなものだと考えると分かりやすいでしょう。
暗号資産を受け取るための「アドレス」(口座番号のようなもの)は、通常、この公開鍵から(多くの場合、さらにハッシュ関数という計算などを加えて)作られます。
このアドレスを他の人に教えることで、誰でもあなたに暗号資産を送ることができます。
公開鍵やアドレスが他の人に知られても、それだけではあなたの資産が盗まれることはありません。
鍵ペアの不思議な関係
公開鍵と秘密鍵のペアには、とても重要な性質があります。
それは「一方向性」です。
秘密鍵から、それに対応する公開鍵を計算で作り出すことは(楕円曲線暗号などの数学的な計算を使えば)比較的簡単にできます。
しかし、逆に、公開鍵から元の秘密鍵を計算で特定することは、現在の世界のコンピューター技術を総動員しても、事実上不可能とされています。
この数学的な難しさが、この仕組みの安全性の基礎となっているんです。
ブロックチェーンでの鍵ペアの役割
この公開鍵と秘密鍵のペアは、ブロックチェーンや暗号資産の世界で、次のようなとても重要な役割を果たしています。
-
所有権の証明 特定のブロックチェーンアドレスにある暗号資産を、あなたが本当に所有していて、操作する権利があることを証明する唯一の方法は、そのアドレスに対応する秘密鍵を持っていることです。
-
アドレスの生成 暗号資産を受け取るためのアドレスは、公開鍵から作られます。
-
トランザクションの署名(デジタル署名) あなたが自分の暗号資産を誰かに送る、といったトランザクション(取引)を作るとき、そのトランザクションが確かにあなた自身によって承認された正当なものであることを証明するために、あなたの秘密鍵を使ってトランザクションデータに「デジタル署名」という特別な印を付けます。
この署名は、トランザクションの内容とあなたの秘密鍵の組み合わせによって、固有のものになります。
-
トランザクションの検証 ネットワーク上の他のノードさんたちは、送られてきたトランザクションに含まれる、あなたの公開鍵とデジタル署名を使って、その署名が有効かどうかを検証します。
あなたの公開鍵で署名を正しく検証できれば、「このトランザクションは、対応する秘密鍵の持ち主(つまり、あなた)によって承認されたものであり、送られた後に内容が書き換えられていない」ということが数学的に確認できます。
これにより、なりすましによる不正な送金や、データの改ざんを効果的に防ぐことができるのです。
銀行のような中央の管理者がいないブロックチェーンの世界では、この公開鍵と秘密鍵のペアが、あなたのデジタルな「身分証明書」であり、あなたの資産に対する「絶対的な権限」そのものになります。
パスワードを忘れたときに再発行してもらうような手続きはありません。
鍵が全てであり、その安全な管理は、完全にあなた自身の責任に委ねられているのです。
これは、ブロックチェーンがもたらす「自分のことは自分で管理する(自己主権)」という考え方と、表裏一体の関係にあると言えるでしょう。
ウォレット (Wallet) 秘密鍵をしまう大切なお財布
ブロックチェーン上の暗号資産(仮想通貨)を使ったり、管理したりするためには、「ウォレット」と呼ばれるツールが不可欠です。
ここで一つ、とても大切なことを覚えておいてください。
ウォレットは、お財布(Wallet)という名前ですが、実際のお財布や銀行口座のように、お金そのものを物理的に「保管」しているわけではありません。
暗号資産というものは、常にブロックチェーンというみんなで共有しているデジタルな台帳の上に記録されています。
では、ウォレットの役割は何かというと、その台帳上のあなたの資産にアクセスし、操作するために必要な、最も重要な情報、つまり「秘密鍵」を安全に作り出し、保管し、管理することなんです。
それに加えて、ウォレットは、秘密鍵に対応する公開鍵や、そこから作られる暗号資産の受け取り用アドレスを管理したり、表示したり、ブロックチェーンからあなたの資産残高を読み取って表示したり、あるいは送金などのトランザクション(取引)を作成し、あなたの秘密鍵でそれに署名をして、ネットワークに送信したりするための、便利な操作画面(ユーザーインターフェース)としての機能も提供してくれます。
ウォレットの種類 いろいろあります
ウォレットには、実にたくさんの種類があります。
主に、インターネットに接続されているかどうか(オンラインかオフラインか)と、どんな形をしているか(ソフトウェアか、物理的な機器か)によって分けられます。
どんな目的で使うか(毎日少しずつ使うのか、大きな額を長期間しまっておくのか)、どれくらい便利に使いたいか、そして何よりも、どれくらい安全性を重視するかによって、あなたに合ったタイプのウォレットを選ぶことがとても重要です。
接続方法による分類 ホット? コールド?
-
ホットウォレット (Hot Wallet) これは、秘密鍵がインターネットに常に、または頻繁に接続されているデバイス(パソコン、スマートフォン、ウェブサーバーなど)の中で管理されるタイプのウォレット全般を指します。
オンラインなので、暗号資産の送受信や、DApps(分散型アプリケーション)というブロックチェーン上のサービスとの連携などがすぐにできて、とても便利です。
しかしその反面、常にインターネット上の危険(ハッキング、ウイルス感染、偽サイト詐欺など)にさらされているため、秘密鍵が盗まれてしまうリスクは、次に説明するコールドウォレットに比べて、どうしても高くなってしまいます。
日常的に使う少額の暗号資産や、すぐにアクセスする必要がある資産を管理するのに向いています。
ウェブウォレット、モバイルウォレット、デスクトップウォレットの多くや、暗号資産取引所さんが提供しているアカウント内のウォレットなどが、このホットウォレットに分類されます。
-
コールドウォレット (Cold Wallet) こちらは、秘密鍵を作り出したり、保管したり、そしてトランザクションに署名したりといった、最も重要な操作を、インターネットから物理的に切り離された(オフラインの)環境で行うタイプのウォレット全般を指します。
インターネット経由の攻撃から秘密鍵を効果的に守ることができるため、セキュリティが非常に高いとされています。
しかし、使うときには、デバイスを接続したり、取引情報を安全に移動させたり(例えばQRコードやUSBメモリを使ったり)する必要があるため、ホットウォレットに比べると少し手間がかかることがあります。
大きな金額の暗号資産を、長期間安全に保管したい場合に適しています。
形による分類 ソフト? ハード? ペーパー?
-
ソフトウェアウォレット (Software Wallet) パソコンやスマートフォンにインストールして使う、アプリケーション形式のウォレットです。
-
デスクトップウォレット パソコン(Windows, Mac, Linux)にインストールして使います。
パソコン自体がウイルスに感染すると危険なので、セキュリティ対策が重要です。
-
モバイルウォレット スマートフォン(iOS, Android)のアプリとして提供されます。
QRコードを読み取るなどして手軽に送受信できますが、スマホの紛失や盗難、アプリの欠陥には注意が必要です。
-
-
ウェブウォレット (Web Wallet) インターネットブラウザを通じてアクセスするタイプのウォレットサービスです。
多くの場合、秘密鍵はサービスを提供している会社のサーバーで管理されます(これを「カストディアルウォレット」と言います)。
どこからでもアクセスできて便利ですが、その会社の信頼性やセキュリティ対策に依存することになります。
暗号資産取引所さんのアカウントも、この一種と考えることができます。
-
ハードウェアウォレット (Hardware Wallet) これは、秘密鍵を、インターネットから隔離された専用の物理的な機器(見た目はUSBメモリのようなものが多いです)の中にある安全なチップ(セキュアチップ)に、安全に作り出し、保管するタイプの、代表的なコールドウォレットです。
トランザクションに署名するときも、秘密鍵が機器の外に出ることなく内部で処理されるため、ウイルスに感染しているかもしれないパソコンやスマホに接続して使っても、秘密鍵が漏れるリスクを大幅に減らすことができます。
-
ペーパーウォレット (Paper Wallet) これは、秘密鍵と、それに対応する公開鍵(またはアドレス)を、QRコードなどの形で紙に印刷して、物理的に保管するという、最もシンプルな形のコールドウォレットです。
完全にオフラインで管理できますが、紙そのものをなくしたり、盗まれたり、火事や水濡れで読めなくなったり、印刷が時間とともに薄れてしまったりするリスクがあります。
どのウォレットを選ぶか、そしてそれをどう管理するかは、ブロックチェーンの世界で「自分の資産は自分で守る(自己主権、セルフカストディ)」という考え方を、そのまま反映する行動です。
利便性を取るか、安全性を取るか、あるいは両方をうまく使い分けるか。
それは、あなた自身のセキュリティに対する考え方と、どれくらいのリスクを受け入れられるかによって決める、とても重要な選択なのです。
トランザクション (Transaction) ブロックチェーンを動かす記録の最小単位
ブロックチェーンの世界で、「トランザクション」という言葉は、とても基本的な、そして重要な意味を持っています。
トランザクションとは、そのブロックチェーンネットワークの状態(例えば、誰がどの暗号資産をいくら持っているか、あるスマートコントラクトの中のデータはどうなっているか、誰がどんな権利を持っているかなど)を変える可能性のある、一番小さな操作や出来事の「記録」のことです。
具体的に言うと、例えば、AさんからBさんへビットコインを送るという指示、あなたがイーサリアム上のDeFiサービスを利用するためにスマートコントラクトを呼び出すこと、あるいは、商品の生産履歴のような新しいデータをブロックチェーンに登録すること、これら全てがトランザクションとして扱われます。
トランザクションは、ブロックチェーンという大きな台帳を構成する、最小のデータ部品です。
そして、ブロックチェーンが存在する理由そのもの、と言ってもいいかもしれません。
たくさんの有効なトランザクションが検証され、まとめられて「ブロック」という単位になり、そのブロックが時系列に連なっていくことで、ブロックチェーンは成長していくのです。
トランザクションが生まれて記録されるまで
一つのトランザクションが、あなたが「送金!」とボタンを押してから、ブロックチェーンに恒久的に記録され、「確定した」と認められるまでには、一般的に次のようなステップ(ライフサイクル)を踏みます。
-
生成 まず、あなたがウォレットのアプリなどを使って、誰に(送金先アドレス)、何を(送る暗号資産の種類と量)、いくらの手数料(ガス代など)で送るか、といったトランザクションの詳細を入力します。
そして、「送信」ボタンを押すと、ウォレットはあなたの秘密鍵を使って、このトランザクションデータに「確かに私が承認しました」というデジタル署名を付けます。
-
ブロードキャスト(広報) 署名が付いたトランザクションは、あなたのコンピューターやスマホ(ノード)から、P2Pネットワークを通じて、他のノードさんたちへ「こんな取引がありましたよ!」と送信(ブロードキャスト)され、ネットワーク全体に伝わっていきます。
-
検証 トランザクションを受け取った各ノードさんは、そのトランザクションがブロックチェーンのルールに従っているかどうか(例えば、署名は本物か、送る人のお金は足りているか、データの形式は正しいか、同じ取引を二重に送っていないかなど)を、それぞれ独自にチェックします。
もしルール違反が見つかれば、そのトランザクションは無視されます。
-
プール(待機場所へ) 検証の結果、「このトランザクションは有効だね」と判断されたものは、各ノードさんのコンピューターの中にある一時的な待機場所(これを「メモリプール」とか「トランザクションプール」と呼びます)に入れられます。
このプールに入っているトランザクションたちが、次のブロックに取り込まれる候補になります。
-
ブロックへの格納 コンセンサスアルゴリズム(PoWやPoSなど)によって選ばれた、新しいブロックを作る役割のノードさん(マイナーさんやバリデーターさん)が、このトランザクションプールの中から、いくつかのトランザクションを選び出します(通常は、より高い手数料を支払ってくれるトランザクションが優先されます)。
そして、選んだトランザクションたちをまとめて、新しいブロックの候補に詰め込みます。
-
承認・確定(コンファメーション) 最後に、その新しく作られたブロック候補が、コンセンサスプロセス(例えば、PoWならマイニング競争の成功、PoSなら他のバリデーターさんたちからの合意)を経て、ネットワーク全体に「これが正式な次のブロックです」と受け入れられ、ブロックチェーンの最後尾に追加されます。
こうなって初めて、そのブロックに含まれていたトランザクションは「承認された」「確定した(Confirmed)」とみなされます。
一般的に、ブロックがチェーンに追加された後、さらにその後ろにいくつかのブロックが連なっていく(ブロックの深さが増す)ほど、そのトランザクションが後から覆される(例えば、チェーンが分岐して無かったことにされる)可能性はどんどん低くなり、より確実な状態、つまり「ファイナリティ(Finality)」に近づいていきます。
手数料の役割
多くのブロックチェーンでは、自分のトランザクションを早く、そして確実にブロックに入れてもらうために、トランザクションを送る人が、ブロックを作ってくれるノードさん(マイナーさんやバリデーターさん)に対して、手数料(Fee)を支払う仕組みがあります。
この手数料の額は、ネットワークがどれくらい混雑しているかや、どれくらい急いで処理してほしいかによって、ユーザーさんが調整することが一般的です。
ブロックチェーン上で起こる全ての意味のある変化は、一つ一つのトランザクションから始まります。
しかし、そのトランザクションが、みんなが信頼できる共有の記録の一部となるためには、ただ作られるだけではダメで、たくさんのノードさんによる分散的な検証と、コンセンサスアルゴリズムによるみんなの合意形成という、厳格なプロセスを通らなければならないのです。
(ボーナス) ガス代 (Gas Fee – Ethereum Context) イーサリアムを使うための燃料費?
イーサリアム(Ethereum)さんや、その他の多くのスマートコントラクトを実行できるブロックチェーンプラットフォームを使っていると、「ガス代(Gas Fee)」という言葉をよく耳にすると思います。
これは一体何なのでしょうか。
ガス代とは、ブロックチェーンネットワーク上で、あなたが何か操作(例えば、ETHというイーサリアムの通貨を送る、DeFiという金融サービスで取引をする、スマートコントラクトのプログラムを実行するなど)をしてもらうために、ネットワークに対して支払わなければならない手数料のことです。
イーサリアムさんのネットワーク上で行われる全ての計算処理(例えば、数字の足し算をする、データを記録する、他のコントラクトを呼び出すなど、どんなに小さな処理でも)には、その処理がどれくらい複雑か、どれくらいコンピューターの資源(計算パワーや保存スペース)を使うかに応じて、「ガス(Gas)」という単位でコスト(値段)が予め決められています。
あなたが何かトランザクション(取引や操作)を実行したいとき、その操作が完了するまでにおおよそどれくらいのガスを消費するかを見積もり、その最大量(これを「ガスリミット」と言います)を設定します。
そして、そのガス量に見合った手数料を、ETHというイーサリアムの通貨で支払う用意があることを示します。
ガス代は何のためにあるの?
このガス代という仕組みは、イーサリアムネットワークの中で、いくつかのとても重要な役割を果たしています。
-
バリデーターさんへの報酬 トランザクションを検証し、新しいブロックを作って承認してくれるノードさん(The Mergeというアップデート以降は「バリデーター」さんと呼ばれます)に対して、その労働(計算資源の提供)に対するインセンティブ(ご褒美)を提供します。
これにより、たくさんの人がバリデーターとしてネットワークの維持に参加し、セキュリティを守る動機が生まれます。
-
ネットワーク資源の効率的な利用 イーサリアムネットワークの計算能力やデータを保存するスペースは、無限ではありません。
みんなで共有する限られた資源です。
ガス代は、これらの資源を使うための「利用料」として機能します。
ネットワークを使いたい人が増えれば(需要が高まれば)ガス代は上がり、使いたい人が減れば(需要が低ければ)ガス代は下がる、という市場原理が働くことで、限られた資源が効率的に配分されるように促します。
-
ネットワークの保護(スパム防止) もし全ての操作が無料だったら、悪意のある人が価値のない大量のトランザクションを送りつけてネットワークをパンクさせたり(DoS攻撃)、わざと無限に計算を繰り返すようなスマートコントラクトを実行して資源を独占したりするかもしれません。
全ての操作にガス代というコストがかかるようにすることで、そのような迷惑行為や攻撃を経済的に難しくし、ネットワークを守る役割も果たしています。
ガス代はどうやって決まるの? (EIP-1559以降)
イーサリアムさんのガス代の計算方法は、2021年に行われた「ロンドン・ハードフォーク」という大きなアップデート(特にEIP-1559という改善提案)によって、少し複雑になりました。
現在、あなたが支払う総ガス代は、大まかに言うと次の計算式で決まります。
総ガス代 = (基本手数料 + 優先手数料) × 消費ガス量
-
基本手数料 (Base Fee per Gas) これは、ネットワーク全体の混雑具合(具体的には、一つ前のブロックがどれくらいガスを使ったか)に応じて、イーサリアムのルール(プロトコル)によって自動的に決まる、1ガスあたりの最低料金です。
ネットワークが混んでいると上がり、空いていると下がります。
面白いことに、この基本手数料はバリデーターさんの報酬にはならず、「バーン(Burn)」つまり焼却されて、流通しているETHの量から永久に取り除かれます。
これは、ETHの価値を保つ(デフレ圧力)効果があるとも言われています。
-
優先手数料 (Priority Fee per Gas / Tip) これは、あなたがバリデーターさんに対して直接支払う、追加の「チップ(心付け)」のようなものです。
あなたは、この優先手数料をいくらにするか自由に設定できます。
より高い優先手数料を設定したトランザクションは、バリデーターさんにとってより魅力的なので、優先的にブロックに取り込んでもらえる可能性が高くなります。
ネットワークが混雑していて、自分の取引を早く処理してほしいときに有効な手段です。
-
ガスリミット (Gas Limit) これは、あなたが「このトランザクションのためなら、最大でこれだけのガスを使ってもいいですよ」と設定する、ガスの使用量の上限値です。
単純なETH送金なら少ないガスリミットで足りますが、複雑なスマートコントラクトを実行する場合は、より多くのガスリミットを設定する必要があります。
もし、実際にトランザクションを実行した結果、使ったガス量(Gas Used)が設定したガスリミットより少なかった場合、差額分のガス代は請求されません。
しかし、もしガスリミットの設定が低すぎて、処理が終わる前にガスを使い果たしてしまった場合、トランザクションは失敗(リバートと言います)しますが、残念ながら、そこまでに消費した分のガス代は返ってきません。
-
消費ガス量 (Gas Used) これは、あなたのトランザクションを実行するために、実際に必要だったガスの総量です。
あなたが支払うガス代の合計金額は、ネットワークがどれくらい混んでいるか、あなたのトランザクションがどれくらい複雑か、あなたがどれくらいチップ(優先手数料)を上乗せするか、そしてETH自体の市場価格(ガス代はETHで支払うため)によって、大きく変動します。
ガス代は、決まった料金ではなく、ネットワーク上の限られた「ブロックスペース」(一つのブロックに入れられるトランザクションの総量には限りがあります)という資源に対する需要と供給によって決まる、動的な市場のようなものなのです。
ガス代が高いことはイーサリアムさんの課題の一つでもあり、これを解決するために「レイヤー2スケーリングソリューション」といった新しい技術の開発が進められています。
用語間のつながりとブロックチェーンの全体像 みんなで動かす大きな仕組み
ここまで、ブロックチェーンに関連する色々な用語を一つずつ見てきましたね。
ブロックチェーン、DLT、ブロック、ハッシュ、P2Pネットワーク、ノード、コンセンサスアルゴリズム、マイニング、スマートコントラクト、公開鍵と秘密鍵、ウォレット、トランザクション、ガス代…。
たくさんの言葉が出てきましたが、これらはバラバラに存在するのではなく、それぞれがパズルのピースのようにお互いに深く関わり合い、補い合いながら、ブロックチェーンという一つの大きな、そしてとても巧妙なシステムを作り上げています。
その全体像をイメージするために、これらの用語がどのように連携して動いているのか、一連の流れとして捉えてみましょう。
ブロックチェーンが動く流れ
まず、全ての活動の舞台となるのが、特定の中央管理者がいない「P2Pネットワーク」です。
このネットワークの上で、たくさんの「ノード」さんたちが接続し合い、みんなで同じルール(「分散型台帳技術(DLT)」、その代表例である「ブロックチェーン」のプロトコル)に従って動いています。
あなたがこのシステムを利用したいとき、窓口となるのが「ウォレット」です。
ウォレットは、あなたの資産へのアクセス権そのものである「秘密鍵」と、それに対応する「公開鍵」を大切に管理しています。
例えば、あなたが誰かに暗号資産を送りたいと思ったら、ウォレットを使って送り先の情報や金額などを入力し、「トランザクション」という操作指示を作ります。
そして、「この指示は確かに私が出しました」という証拠として、あなたの秘密鍵でそのトランザクションにデジタル署名をします。
署名されたトランザクションは、あなたのノードからP2Pネットワークを通じて、他のノードさんたちへ「こんな取引がありましたよ!」と伝えられます(ブロードキャスト)。
トランザクションを受け取った各ノードさんは、送られてきたトランザクションがルール通りか(署名は正しいか、お金は足りているかなど)を、あなたの公開鍵を使ってそれぞれ独立してチェックします。
次に、ネットワーク全体の意見を一つにまとめるための「コンセンサスアルゴリズム」が登場します。
もしそれがProof of Work (PoW) なら、ノード(マイナー)さんたちは有効なトランザクションを集めて、「ハッシュ関数」を使った難しい計算競争(「マイニング」)を始めます。
もしProof of Stake (PoS) なら、資産を預けているノード(バリデーター)さんの中から、ルールに従ってブロックを作る・承認する役割の人が選ばれます。
コンセンサスアルゴリズムによって選ばれたノードさんは、検証済みのトランザクションたちを「ブロック」という箱に詰め込み、ブロックチェーンの最後尾に追加します。
各ブロックは、前のブロックの「ハッシュ値」によって鎖のようにつながっているので、後から順番を変えたり、中身を書き換えたりすることがとても難しくなり、信頼できる記録の連鎖ができあがっていきます。
さらに、イーサリアムさんのような高機能なブロックチェーンでは、この基本的な記録と合意の仕組みの上に、「スマートコントラクト」というプログラムコードを記録し、実行する機能が乗っています。
これによって、事前に決められた条件に基づいて契約や手続きを自動で実行できるようになり、DeFiやNFTといった新しいサービスが生まれています。
これらのスマートコントラクトを使うときには、ネットワークの資源を使う対価として「ガス代」という手数料が必要になることがあるんですね。
このように、ブロックチェーンを構成しているそれぞれの要素(技術の土台、暗号の技術、ネットワークの形、合意のルール、応用プログラム)は、お互いに頼り合い、連携することで、システム全体としての素晴らしい特徴を生み出しています。
つまり、中心的な管理者がいなくても動く「分散性」、記録が(多くの場合)みんなに見えて検証できる「透明性」、過去の記録を書き換えるのが数学的にとても難しい「耐改ざん性(不変性)」、そしてルールに基づいた合意によって保たれる「信頼性」。
これら全てが、ブロックチェーンならではの価値なのです。
一つの用語を深く理解することは、他の用語とのつながりを知り、ブロックチェーンというシステム全体がどのようにダイナミックに動いているのかを理解するための、大切な一歩になるはずです。
まとめ ブロックチェーン理解を深める旅へ
この記事では、ブロックチェーン技術の核心をより深く理解するために、知っておくと役立つ基本的な用語を13個、できるだけ分かりやすく解説してきました。
-
ブロックチェーン 取引などを記録した「ブロック」を「チェーン」でつないで、みんなで管理する技術。
-
分散型台帳技術 (DLT) データを一箇所に集めず、みんなで共有・管理する技術の総称。 ブロックチェーンはその一種。
-
ブロック 検証済みのトランザクションをまとめた箱。 チェーンの部品。
-
ハッシュ / ハッシュ関数 データの「指紋」を作る計算。 改ざん防止とブロック連結の要。
-
P2Pネットワーク みんなが対等につながるネットワーク。 分散化の土台。
-
ノード ネットワークに参加するコンピューター。 データの保存や検証を行う。
-
コンセンサスアルゴリズム みんなで「これが正しい」と合意するためのルール(PoWやPoSなど)。
-
マイニング (PoW) PoWでブロックを作るための計算競争。
-
スマートコントラクト 条件が揃うと自動で実行されるプログラム契約。
-
公開鍵と秘密鍵 資産の所有証明と取引の承認に使う、ペアのデジタルな鍵。
-
ウォレット 秘密鍵を安全に管理し、ブロックチェーンとやり取りするツール。
-
トランザクション ブロックチェーン上の状態を変える操作(送金など)の記録。
-
ガス代 (Ethereum Context) イーサリアムなどで取引やコントラクト実行にかかる手数料。
これらの言葉は、単に意味を知るだけでなく、ブロックチェーンがどのように動き、どんな特徴を持ち、そしてどんな未来をもたらす可能性があるのかを理解するための、大切な道しるべとなります。
ブロックチェーン技術は、2009年にビットコインさんが登場してから十数年が経ちますが、まだまだ進化を続けている、とてもエキサイティングな分野です。
最初は暗号資産の技術として注目されましたが、スマートコントラクトが登場したことで、その活躍の場は金融(DeFi)、アートやエンタメ(NFT)、商品の流通管理(サプライチェーン)、新しい組織の形(DAO)など、私たちの社会や経済の本当に色々な場面へと広がっています。
しかし、もちろん課題もあります。
たくさんの人が同時に使おうとすると処理が追いつかなくなったり、手数料が高くなったりする問題(スケーラビリティ問題)をどう解決するか。
記録が透明な一方で、プライバシーをどう守るか。
スマートコントラクトのプログラムに間違いがあったらどうするか。
そして、国境を越えて使われるこの技術に対して、法律や税金のルールをどう整備していくか。
これらの課題を乗り越えるために、世界中で新しい技術の開発やルールの整備が進められています。
これらの努力が実を結べば、ブロックチェーンは、これからのお金の流れや会社の仕事のやり方、さらには社会の仕組みや私たちの暮らし方に、もっと大きな、そしてポジティブな影響を与えていくかもしれません。
この記事でご紹介した基本的な用語の理解は、広くて奥深いブロックチェーンの世界を探求するための、確かなスタート地点となるはずです。
この知識をベースにして、あなたが特に興味を持ったブロックチェーンプロジェクト(ビットコインさん、イーサリアムさん、Solanaさん、Cardanoさんなど)のことや、DeFi、NFT、メタバース、DAOといった具体的な応用分野の最新情報、あるいは技術的な課題について、さらに学びを深めていくことをお勧めします。
ブロックチェーン技術とその周りの動きは、これからも目が離せない、注目のトピックであり続けるでしょう。
この記事が、あなたの知的な冒険の、ささやかな羅針盤となれば、とても嬉しいです。
免責事項
本記事に掲載されている情報は、ブロックチェーン技術に関する一般的な情報提供および学習を目的として作成されたものであり、特定の金融商品、暗号資産(仮想通貨)、または投資戦略の勧誘、推奨、または助言を目的としたものではありません。
本記事の情報に基づいて行われたいかなる行動についても、その結果生じたいかなる損害に対しても、作成者および関連当事者は一切の責任を負いかねます。
暗号資産への投資や関連サービスの利用は、価格変動リスク、流動性リスク、ハッキングリスク、規制リスクなど、様々なリスクを伴います。
投資や取引に関する決定は、ご自身の判断と責任において、十分な調査と検討の上で行ってください。
必要に応じて、専門家にご相談されることをお勧めします。
本記事の内容は、作成時点での情報に基づいていますが、その正確性、完全性、最新性を保証するものではありません。
情報は予告なく変更される場合があります。
コメント