ビットコイン など 仮想通貨 の仕組みを学んでいくと、様々な専門用語が飛び交い、困難を覚えることが少なくありません。
そんな専門用語の一つに ナンス (nonce)があります。
この言葉は「Number used once」という言葉の略で、日本語に直訳すれば「一度だけ使われる数」ということになりますが、これだけではいったい何のことだかさっぱりわかりません。
そこで今回は 仮想通貨 の専門用語の一つであるこの ナンス について解説します。

そもそもnonceとは何?

クエスチョンマークの画像

nonceとは、一度だけ使用される使い捨てのランダムな32ビットの数値のことで、主に暗号通信などの領域で使用されています。
仮想通貨 の世界では、ブロックを生成するときに採掘者(マイナー)によって生成されます。
このブロックとは、ユーザー間で行われる決済情報などの取引( トランザクション )が複数格納された塊のことで、それぞれの複数のコンピュータで共有されます。
そして、これらのブロックをチェーンのように繋いだものがいわゆるブロックチェーンとなります。
では、nonceは何のために生成され、どのような使い方がなされるのでしょうか。
まずその目的ですが、一言で言うと ビットコイン の新規発行のために用いられます。
ビットコイン を新規に発行するためには、 マイニング と呼ばれるそのブロックの新たな ハッシュ 値を見つけなければなりません。
そのためには膨大な計算が行われることになるのですが、その際に必要になるのがこのnonceなのです。
新たな ハッシュ 値を見つけ出すことで、新しいブロックを生成することができ、それがどんどんチェーンのように広がっていくわけですが、nonceは一度限りしか使用することができないので、その前後の数値に関連性がなくなります。
つまり、どんなnonceを入力すればどんな ハッシュ 値が出力されるのかわからないということです。
これによりブロックの情報が読み取られたり、改ざんされたりする心配がなくなるわけです。

nonceを手に入れるには膨大な労力が必要

パソコンの画像

 

ブロック同士を繋げるために必要となる ハッシュ 値ですが、その ハッシュ 値をはじき出すために係数として必要となるのがnonceです。
コンピュータ上の計算であるとはいえ、そのためには膨大な時間と労力を要することになります。
そのブロックにおける ハッシュ 値を手に入れるためには、決められた条件を満たさなければなりません。
nonce以外の数値は変更することが不可能なので、地道にnonceの32ビットの数値を変えながら、その条件が満たされるまで根気強く ハッシュ 値を計算し続けることになります。
nonceは計算ではじき出すことができませんので、総当たり的に数値を変えながら計算しなければなりません。
しかも32ビットですから、2進数の32桁つまり2の32乗のパターンもあるのです。
だから膨大な時間と労力が必要となるわけです。
しかし、条件を満たす ハッシュ 値をはじき出すnonceが見つかれば、はれて新しいブロックを生成することができるようになります。
ちなみに、ブロックチェーンにおいて「採掘」や「 マイニング 」などの専門用語を使うのは、その作業がまるで金や宝石を採掘する作業のように、大変なことだからです。

ブロックチェーンを生成する労力と報酬

 ビットコイン の画像

ブロックをチェーンのように繋ぐために
AさんとBさんとの間で取引を行うとしましょう。
トランザクション データをブロックチェーン上のネットワークに書き込むことで安全に取引ができるわけですが、そのためにはまず前のブロックの ハッシュ 値と今回のAさんとBさんとの間の トランザクション データがブロックの元となります。
その次にチェーンのようにブロック同士を繋ぐためにそのブロックの ハッシュ 値を計算します。
これが マイニング というわけですが、 ハッシュ 値をはじき出すために、ランダムな32ビットのnonceを総当たり的に何度も計算し続けていくことになります。
やがてnonceが見つかると、新しいブロックに新しい情報を書き込むことができ、互いのブロックをチェーンのように繋ぐことができるようになります。
大変な労力のご褒美として
新しいブロックを生成するためには膨大な労力が必要となるので、一番早くnonceを見つけた人には報酬として、次のブロックを生成する権利をもらうことができます。
この仕組みを作業証明( Proof of work 、POW)と呼んでいます。
nonceを探し出す計算は、世界中至るところで行われています。
そのため複数箇所で同時に新しいブロックを生成してしまうという可能性もあります。
その場合は一時的に分岐してしまうわけですが、常に長いブロックチェーンを正とする決まりになっており、やがて一つの情報を共有する仕組みになっています。

まとめ

仮想通貨 を安全に取引するために、取引の情報が書かれたブロックを分散させ、それをチェーンのように繋いでいくブロックチェーンが用いられています。
ブロック同士を繋げるためには、 ハッシュ 値をはじき出す必要があり、そのためにはランダムなnonceと呼ばれる係数が必要になります。
これを採掘する作業は世界中で行われており、一番最初に見つけた人には報酬としてブロックを生成する権利がもらえます。