ホームページ > ウェブフロントエンド > jsチュートリアル > Node.Js を使用してビットコイン アドレスを生成する方法

Node.Js を使用してビットコイン アドレスを生成する方法

php中世界最好的语言
リリース: 2018-06-02 14:23:46
オリジナル
2011 人が閲覧しました

今回はNode.Jsを操作してビットコインアドレスを生成する方法と、Node.Jsを操作してビットコインアドレスを生成する際の注意点

を紹介します。実際の事例を見てみましょう。

Node.jsを使用すると、IDEはsublime 3を使用します。

var randomBytes = require('randombytes')
var BigInteger = require('bigi')
var ecurve = require('ecurve')
var crypto = require('crypto')
var cs = require('coinstring')
var secp256k1 = ecurve.getCurveByName('secp256k1')
var randombytes = randomBytes(32).toString('hex')
var privateKey = new Buffer(randombytes, 'hex')
console.log("私钥:" + privateKey.toString('hex'))
var ecparams = ecurve.getCurveByName('secp256k1')
var curvePt = ecparams.G.multiply(BigInteger.fromBuffer(privateKey))
var x = curvePt.affineX.toBuffer(32)
var y = curvePt.affineY.toBuffer(32)
var publicKey = Buffer.concat([new Buffer([0x04]), x, y])
console.log("标准地址:" + publicKey.toString('hex'))
//compressed
publicKey = curvePt.getEncoded(true) //true forces compressed public key
console.log("compressed:" + publicKey.toString('hex'))
var sha = crypto.createHash('sha256').update(publicKey).digest()
var pubkeyHash = crypto.createHash('rmd160').update(sha).digest()
// pubkeyHash of compressed public key
console.log("pubkeyHash:" + pubkeyHash.toString('hex')) 
// address of compressed public key
console.log("压缩地址:" + cs.encode(pubkeyHash, 0x0)) //<-- 0x0 is for public addresses
//这里还缺失校验和Base58编码
console.log(cs.encode(privateKey, 0x80)) //<--- 0x80 is for private addresses
console.log(cs.encode(Buffer.concat([privateKey, new Buffer([0])]), 0x80)) // <-- compressed private address
ログイン後にコピー
ビットコインアドレスを生成します

1. 秘密鍵は 32 バイトの数値です。例:

8F72F6B29E6E225A36B68DFE333C7CE5E55D83249D3D2CD6332671FA。 445C4DD3

2. 楕円曲線の計算 公開鍵が秘密鍵を生成した後、楕円を使用します。曲線暗号化アルゴリズム (ECDSA-secp256k1) は、秘密キーに対応する非圧縮公開キーを計算します。生成される公開キーは合計 65 バイトで、最初のバイトは 0x04、最後の 32 バイトは X 座標です。 32 バイトは Y 座標です: 公開鍵 P. 97BA2EF2DECE2ABCA5BE14792

0459DEE66AB619C4A9E215D070052D1AE3A2075E5F58C67516B2E4884A88C79 BE9A5FA8CCD255FB0A7A 75DB985072968C72B036ED97BA2EF2DECE2ABCA5BE14792

3 公開鍵の SHA -256 ハッシュを計算します

ae9c74647a8c2f50fd832e397e3。 6dbad05d86db3fe3d959a7c 8a07c1ddda40c6

4. RIPEMD を計算します。 -160 ハッシュ値

05f9d05358aab2a28f19910036e67a7295b14aac

5. アドレスバージョン番号(ビットコインメインネット0x00)を追加

0005f9d05358aab2a28f1 99 10036e67a7295b14aac

実際、これはほぼ同じで、上記のコードによって最終的に生成された圧縮アドレスです。 。

しかし、実際のビットコインでは検証も追加されます

6. SHA-256ハッシュ値を計算します

9f35b0c37977a302512c22f586dd8da4ae1d20399f2ad3f75df23fbc024b4b2d

7. SHA-256 ハッシュ値を再度計算します

4b4f9bc87616687957db64efaf4efb2c00d1d93d549a0b70b15812936046d0ac

8. 最初のものを取ります。前のステップの結果の 4 バイト (8 桁の 16 進数)

4b4f9bc8

9. これらの 4 バイトを、5 番目のステップで生成された圧縮アドレスの末尾に追加します

0005f9d05358aab2a28f19910036e67a7295b 14aac4b 4f9bc8

10. Base58 でエンコードします

Base58 は、1 ~ 9 と、i、l、0、o を除く英語の文字で構成されます。 前のステップの結果を Base58 でエンコードして次を取得します:

1YbeKoyePe8gxyAYh4E3Qyqb15Nnepmod

この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。 !

推奨書籍:

vue.js と element-ui を使用してメニュー ツリー構造を実装する方法

JS デコレーター関数の使用方法

以上がNode.Js を使用してビットコイン アドレスを生成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート