Base58
テンプレートのループを検出しました: テンプレート:# 400px | right | thumb | Base58エンコーディング Base58 は、大きな整数を英数字のテキストとして表現するために使用されるバイナリからテキストへのencodingスキームのグループです。これはBase64に似ていますが、英数字以外の文字と、印刷時に不明瞭に見える文字の両方を避けるように変更されています。したがって、手動でデータを入力したり、ビジュアルソースからコピーしたり、簡単にコピー&ペーストすることができるヒューマンユーザ向けに設計されています。通常、ダブルクリックすると文字列全体が選択されるためです。
Base58エンコーディング形式は、Bitcoinで使用するように設計されており、他の多くの[cryptocurrencies]で使用されています。これは、コンパクトなパフォーマンス、可読性、定義およびエラー防止の間のバランスを提供します。 Base58はBase64のサブセットであり、小文字と大文字の文字と数字を使用しますが、いくつかの文字は間違っていることが多く、いくつかのフォントでは同じにすることはできません。特に、Base58は、数字0(O)、O(大文字O)、I(大L)、I(大I)、および文字「\ +」および「/」を含まないBase64です。または、単純に言えば、上記の4つ(0、O、L、I)のない大文字と大文字と数字のセットです.Base64とは対照的に、エンコーディングの桁はバイト境界とよく一致しません元のデータこのため、このメソッドは大きな整数をエンコードするのに適していますが、バイナリデータのより長い部分をエンコードするようには設計されていません。アルファベットの文字の実際の順序はアプリケーションによって異なります。これは、「Base58」という用語だけでは完全に書式を記述することができない理由です。変種Base56は、Base 58と比較して1(o)とo(小文字o)を除きます。
Base58Check 'は、最初の数文字のデータタイプを明白にエンコードし、最後の数文字にエラー検出コードを含むBase58エンコーディングフォーマットです。<ref> Andreas M. Antonopoulos。 "Bitcoinをマスターする"。 セクション"Base58とBase58Checkエンコーディング"を参照してください。 (O'Reilly、2015)。 </ ref>
コンセプト
秘密鍵は公開鍵に変換できますが、公開鍵は秘密鍵に変換できません。ビットコインアドレスは実際には公開鍵ではなく、そのハッシュです。したがって、上記の公開鍵に対応するビットコインアドレスは、 172YRdGzPqyXm9rm1EWKwPXTRsmcApoPq6 </ code>です。
Bitcoin addressは、秘密鍵と公開鍵として16進形式で表示されません。これは彼にとって、Bitcoinはbase58checkと呼ばれる "圧縮された"形式を使用しているからです。 Base58は、58の異なる文字と数字を使用することを示唆しています(0、O、IとIは省略されています。 Base58は、私たちが2進数(2進数)、10進数(10進数)、16進数(16進数)の表現によく似た58進数の数字です。たとえば、バイナリ形式の10進数31337は '111101001101001'、16進数は '7A69'、ベース58では 'AKJ'になります。さて、書式の説明の接尾辞チェックは、base58の数字を翻訳する前に、4バイトの「チェックサム」を追加することを意味します。すべてのビットコインライブラリ(後ほどお話します)は自動的にbase58checkへの転送を行いますので、特別にプログラミングする必要はありません。
アルファベット・ベース58
{{#ev:youtube | GedV3S9X89c | 500 | right | Blockchainチュートリアル:Base-58エンコーディング}}
Base58 alphabet ':<code> 123456789ABCDEFGHJKLMNPQRSTUVWXYzabcdefghijkmnopqrstuvwxyz </ code>
タイプミスや転写エラーに対する保護機能を追加するため、Base58CheckはBase58で、エラーチェックコードが組み込まれています。 4バイトのチェックサムが符号化されたデータの最後に追加される。チェックサムは、符号化されたデータをハッシュすることによって得られ、したがって、転記および誤植の検出および防止に使用することができる。ソフトウェアは、デコード時にデータのチェックサムを計算し、コードのチェックサムと比較します。不一致はエラーを示し、Base58Checkデータは無効になります。たとえば、そのような確認は、存在しないBitcoinアドレスに資金を送って資金を失う可能性を防ぎます。
データ(数値)をBase58Check形式に変換するには、エンコードするデータの種類を決定するために使用される「バージョンバイト」と呼ばれるプレフィックスをデータに追加する必要があります。たとえば、Bitcoinアドレスの場合、接頭辞は0(16進法で0x00)ですが、秘密鍵の接頭辞は128(16進法では0x80)です。
次に、前の結果(接頭辞とデータ)に2回使用されたハッシュアルゴリズム[SHA-256 | SHA256]が2回あるという意味で、「double-SHA」のチェックサムを計算します。
<code> checksum = SHA256(SHA256(接頭辞+データ))</ code>
結果の32バイトのhash(ハッシュのハッシュ)から、最初の4バイトだけを取ります。これらの4バイトはエラーチェックコードまたはチェックサムとして機能します。このチェックサムは、行末に追加されます。結果は、接頭辞、データ、チェックサムの3つの要素で構成されます。この結果は、前述のBase58のアルファベットを使用してコード化されます。
アプリケーション
応用 | アルファベット | 除外されたBase64文字 |
---|---|---|
Bitcoinは、<ref> Bitcoinアドレスの技術的背景、IPFSハッシュ[<ref> ipfs / specs / blob / master / overviews / implement-api-bindings.md IPFS API実装ドキュメント </ ref> |
<code> 123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz </ code> |
<code> IOl0 + / </ code> |
Rippleは<ref> Accounts </ ref>に対処しています。 <code> rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz </ code> <ref> https://wiki.ripple.com/Encodings </ ref> | <code> IOl0 + / </ code> | |
Flickrの短いURL <ref> [1] </ ref> | <code> 123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ </ code> <ref> Flickr API </ ref> | <code> IOl0 + / </ code> |
リンク
関連項目
参考文献
<リファレンス/>