Dieses Mal bringe ich Ihnen Node.Js zum Generieren einer Bitcoin-Adresse (mit Code). Was sind die Vorsichtsmaßnahmen zum Generieren einer Bitcoin-Adresse mit Node.Js? Hier ist ein praktischer Fall, schauen wir uns das an.
Mit Node.js verwendet die 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
Bitcoin-Adresse generieren
1. Der private Schlüssel ist eine 32-Byte-Zahl CD63326 71FA445C4DD3
2. Öffentlicher Schlüssel zur Berechnung der elliptischen Kurve Nach der Generierung des privaten Schlüssels verwenden wir den Verschlüsselungsalgorithmus für elliptische Kurven (ECDSA-secp256k1), um den unkomprimierten öffentlichen Schlüssel zu berechnen, der dem privaten Schlüssel entspricht Bytes insgesamt. Erstes Das erste Byte ist 0x04, die letzten 32 Bytes sind die X-Koordinate und die letzten 32 Bytes sind die Y-Koordinate: Öffentlicher Schlüssel P. 255FB0A7A75DB985072968C72B036ED97BA2EF2DECE2ABCA5BE14792
Öffentlicher Schlüssel:0459DEE66AB619C4A9E215D070052D1AE3A2075E5F58C67516B2E4884A88C79BE9A5FA8CCD255FB0A7A75DB985072968C72B036ED97BA2. EF2DECE2ABCA5BE14 7923. Berechnen Sie den SHA-256-Hashwert des öffentlichen Schlüssels
ae9c74647a8c2f50fd832e397e36dbad05d86db3fe3d959a7c8a07c1ddda40 c64. Berechnen Sie den RIPEMD-160-Hash-Wert
05f9d05358aab2a28f19910036e67a7295b14aac5. Fügen Sie die Adressversionsnummer (Bitcoin-Mainnet 0x00) hinzu
0005f9d05358aab2a28f19910036e67a7295b14aacTatsächlich ist dies fast dasselbe, nämlich die komprimierte Adresse, die schließlich durch den obigen Code generiert wird.
6. Berechnen Sie den SHA-256-Hash-WertAber im tatsächlichen Bitcoin wird auch die Verifizierung hinzugefügt
9f35b0c37977a302512c22f586dd8da4ae1d20399f2ad3f75df23fbc024b4 b2d
7 . Berechnen Sie den SHA-256-Hash-Wert erneut (8-stelliges Hexadezimalsystem)
4b4f9bc89. Fügen Sie diese 4 Bytes am Ende der in Schritt 5 generierten Komprimierungsadresse hinzu
0005f9d05358aab2a28f19910036e67a7295b14aac4 b4f9bc810. Mit Base58 kodieren
Base58 besteht aus 1-9 und englischen Zeichen außer i, l, 0, o. Base58 kodiert das Ergebnis des vorherigen Schritts und erhält:
1YbeKoyePe8gxyAYh4E3Qyqb15Nnepmod
Empfohlene Lektüre:Ich glaube, Sie haben die Methode beherrscht, nachdem Sie den Fall in diesem Artikel gelesen haben. Bitte achten Sie auf andere chinesische PHP-Websites. Verwandte Artikel!
Praktische Fallanalyse der String- und Array-Deduplizierung
Wie Express + Mock die Front- und Backend-Parallelitätsentwicklung betreibt
Das obige ist der detaillierte Inhalt vonNode.Js generiert Bitcoin-Adresse (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!