ビットコインハッシュ関数の簡単な説明

ビットコインハッシュ関数の簡単な説明

ビットコインに興味のある人なら誰でも、「暗号ハッシュ関数」という言葉を一度は聞いたことがあるでしょう。しかし、それは正確には何を意味し、暗号通貨とどのように関係しているのでしょうか?

ハッシュ関数は、ビットコイン プロトコルの重要な部分であるだけでなく、情報セキュリティ全体の重要な部分でもあります。

ハッシュ関数がどのように機能するかを示すために、以下の簡単な例をいくつか使用します。

ハッシュ関数とは何ですか?

理論的には、ハッシュ関数は、任意のサイズの入力データを受け取り、固定サイズの出力データを返す数学的なプロセスです。

より具体的には、任意の長さの文字のシーケンス (文字列と呼びます) を入力として受け取り、固定長の文字のシーケンスを返します。入力文字列が 1 文字、単語、文、または小説全体のいずれであっても、出力の長さ (ダイジェストと呼ばれます) は常に同じです。

このタイプのハッシュ関数の一般的な使用例は、パスワードの保存です。

パスワードを必要とする Web サービスでユーザー アカウントを作成するとき。このタイプのパスワードはハッシュ関数にかけられ、パスワード情報のハッシュ要約が保存されます。アカウントにログインするためにパスワードを入力すると、同じハッシュ関数がパスワードに対して実行され、サーバーは結果が保存されているダイジェストと一致するかどうかを確認します。

つまり、たとえハッカーがハッシュが保存されているデータベースにアクセスできたとしても、特定のハッシュを生成するパスワードは簡単には見つからないため、一度にすべてのユーザー アカウントを侵害することはできないということです。

Python のシンプルなハッシュ関数

Mac および Linux オペレーティング システムにデフォルトでインストールされているプログラミング言語である Python を使用して、ハッシュを試すことができます。 (このチュートリアルでは、Windows で Python を使用するのはより複雑なため、OSX または Linux のいずれかのバージョンを使用していることを前提としています)

まず、ターミナルを開き、「python」と入力して Enter キーを押します。

次に、Python REPL に移動します。これは、プログラムを個別のファイルに記述するのではなく、Python コマンドを直接試すことができる環境です。

次に、各行の後に Enter キーを押し、マーカーで TAB キーを押しながら、次の値を入力します。

ハッシュライブラリをインポートする
ハッシュを定義します(mystring):
[TAB] hash_object = hashlib.md5(mystring.encode())
[TAB] print(hash_object.hexdigest())
[入力]

これで、MD5 ハッシュ アルゴリズムを使用して特定の文字列のハッシュ値を計算する関数 hash() が作成されました。関数を実行するには、上記の括弧 () 内に文字列を挿入します。例えば:

ハッシュ(“CoinDesk は最高”)

Enter キーを押すと、文字列のハッシュ ダイジェストが表示されます。

同じ文字列に対してこのハッシュ関数を呼び出すと常に同じハッシュが生成されますが、1 つの文字を追加または変更するとまったく異なるハッシュ値が生成されることがわかります。

ハッシュ("CoinDesk は最高") => 7ae26e64679abd1e66cfe1e9b93a9e85
ハッシュ("CoinDesk は最高!") => 6b1f6fde5ae60b2fe1bfe50677434c88

ビットコインハッシュ関数

ビットコイン プロトコルでは、ハッシュ関数は、マイニング プロセスを通じてブロックチェーンに新しいトランザクションを書き込むために使用されるブロック ハッシュ アルゴリズムの一部です。

ビットコインのマイニングでは、関数への入力はすべて最近の未確認のトランザクションです(前のブロックに関連付けられたタイムスタンプといくつかの追加入力への参照とともに)。

上記のコード例では、ハッシュ関数の小さな部分を変更すると、まったく異なる出力が得られる可能性があることがわかりました。この特性は、マイニング プロセスにおける「作業証明」(POW) アルゴリズムにとって非常に重要です。ブロックを正常に「解決」するには、マイナーはすべての入力を自分の入力データと組み合わせ、結果のハッシュが特定のゼロで始まるようにする必要があります。

基本的なデモンストレーションとして、「CoinDesk rocks!」の後に手動で感嘆符 (!) を追加して、Python ハッシュ関数を使用して「マイニング」してみることができます。単一の 0 で始まるハッシュが見つかるまで続けます。

 >>> hash("CoinDesk は最高です!!")
66925f1da83c54354da73d81e013974d
>>> hash("CoinDesk は最高!!!")
c8de96b4cf781a6373766c668ceac0f0
>>> hash("CoinDesk は最高!!!!")
9ea367cea6a2cc4a6f5a1d9a334d0d9e
>>> hash("CoinDesk は最高です!!!!!")
b8d43387d98f035e2f0ac49740a5af38
>>> hash("CoinDesk は最高です!!!!!!")
0fe46518541f4739613b9ce29ecea6b6 => 解決しました!

もちろん、ビットコイン ブロックのハッシュ (この記事の執筆時点では 18 個のゼロで始まる必要があります) を解くには、非常に大量の計算が必要です (ビットコイン ネットワークのすべてのコンピューター処理能力を合わせても、1 つのブロックを解くのに 10 分近くかかります)。

大量の処理能力が必要となるため、新しいビットコインのマイニングは完了するまでに長いプロセスを要し、一度にすべてのビットコインをマイニングすることは不可能です。

マイニングでビットコインを獲得するには、ブロックを解くために多大な労力を費やす必要があります。この報酬を獲得することで、すべての新しいトランザクションがブロックにロックされ、以前のすべてのトランザクションの永久記録であるブロックチェーンに追加されます。

<<:  ギリシャ債務危機が再燃、ビットコインファンの新たな波を引き起こす可能性

>>:  ビットコインのスケーリング: DCG ポートフォリオからの考察

推薦する

柴犬コインはVitalik Buterinによって「Rug Pulled」されました。ズートピアはいつまで狂気のままでいられるのか?

Etherscanチェーンデータによると、5月12日午後(東部時間)、イーサリアムの共同創設者であ...

ビットコイン採掘調査が論争を巻き起こす:規制当局と業界との対立

EIA のビットコインマイナー調査は、無害な情報収集活動ではない。そして、それは暗号通貨エコシステム...

億万長者リチャード・ブランソンのプライベートアイランドにブロックチェーン愛好家が集結

クレイジーな解説: リチャード・ブランソンという名の億万長者は、常にその奇抜さで知られています。多く...

2021年にポルカドットが注目される理由

1つ、みなさんこんにちは。私は、Polkadot doter コミュニティの共同設立者であり、Pol...

ビットコインの流通量は1,850万を超えており、採掘できるビットコインは250万未満です。

9月28日、ChartBTCのTwitter投稿によると、BTCの総供給量2100万が現在1850...

ビットコインを採掘するより効率的な方法:エラーを許容する

概要:ビットコインのマイニング難易度は、ビットコイン ブロックのマイニングに必要な時間に基づいて調整...

イーサリアムの姉妹チェーンxDaiのエコシステムについて1つの記事で学ぶ

私たちのブロックチェーンファミリーにおいて、イーサリアムは風変わりで、クールで、責任感があり、成績も...

モルガン・スタンレーの元幹部が仮想通貨ユニコーン企業アンバーに入社

香港を拠点とする仮想通貨ユニコーン企業アンバー・グループは9月17日、ゴールドマン・サックスの元パー...

暗号通貨ウォレット、公開鍵、秘密鍵とは何ですか?

著者 |クオ・ピ制作 |ヴァーナキュラーブロックチェーン (ID: hellobtc) 相手が本当に...

BTC は 100,000 に戻り、大統領は暗号化を支持しているが、なぜ皆が不満を抱いているのか?

ビットコインは10万ドルを超えました。私たちには暗号通貨賛成派の大統領がいるのに、奇妙なことに、誰も...

再度警告: BBT コイン鋳造機は違法なねずみ講です!

先月末、編集者はBBTコイン鋳造機ねずみ講を暴露する記事「仮想通貨ねずみ講リストの大暴露:「 BBT...

ベネズエラ、ビットコイン採掘者に登録を義務付ける法令を発布

ベネズエラ政府の代表者は、ビットコインの採掘者は国家に登録しなければならないと述べた。暗号通貨がベネ...

中国CITIC銀行プラチナ国際デビットカード、年会費無料、オンライン申請、簡単なグローバル決済

グローバル化の加速と越境電子商取引の急速な発展に伴い、海外での消費をサポートできる国際決済カードを持...