Merge pull request #5 from ethereumjs/feature/vanitygen
Include vanity address generation
This commit is contained in:
commit
21e7127c15
|
@ -28,6 +28,7 @@ Features not supported:
|
||||||
Constructors:
|
Constructors:
|
||||||
|
|
||||||
* `generate([icap])` - create an instance based on a new random key (setting `icap` to true will generate an address suitable for the `ICAP Direct mode`)
|
* `generate([icap])` - create an instance based on a new random key (setting `icap` to true will generate an address suitable for the `ICAP Direct mode`)
|
||||||
|
* `generateVanityAddress(pattern)` - create an instance where the address is valid against the supplied pattern (**this will be very slow**)
|
||||||
* `fromPrivateKey(input)` - create an instance based on a raw private key
|
* `fromPrivateKey(input)` - create an instance based on a raw private key
|
||||||
* `fromExtendedPrivateKey(input)` - create an instance based on a BIP32 extended private key (xprv)
|
* `fromExtendedPrivateKey(input)` - create an instance based on a BIP32 extended private key (xprv)
|
||||||
* `fromPublicKey(input, [nonStrict])` - create an instance based on a public key (certain methods will not be available)
|
* `fromPublicKey(input, [nonStrict])` - create an instance based on a public key (certain methods will not be available)
|
||||||
|
|
15
index.js
15
index.js
|
@ -60,6 +60,21 @@ Wallet.generate = function (icapDirect) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Wallet.generateVanityAddress = function (pattern) {
|
||||||
|
if (typeof pattern !== 'object') {
|
||||||
|
pattern = new RegExp(pattern)
|
||||||
|
}
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
var privKey = crypto.randomBytes(32)
|
||||||
|
var address = ethUtil.privateToAddress(privKey)
|
||||||
|
|
||||||
|
if (pattern.test(address.toString('hex'))) {
|
||||||
|
return new Wallet(privKey)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Wallet.prototype.getPrivateKey = function () {
|
Wallet.prototype.getPrivateKey = function () {
|
||||||
return this.privKey
|
return this.privKey
|
||||||
}
|
}
|
||||||
|
|
|
@ -108,6 +108,15 @@ describe('.generate()', function () {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe('.generateVanityAddress()', function () {
|
||||||
|
it('should generate an account with 000 prefix', function () {
|
||||||
|
var wallet = Wallet.generateVanityAddress(/^000/)
|
||||||
|
assert.equal(wallet.getPrivateKey().length, 32)
|
||||||
|
assert.equal(wallet.getAddress()[0], 0)
|
||||||
|
assert.equal(wallet.getAddress()[1] >>> 4, 0)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
describe('.getV3Filename()', function () {
|
describe('.getV3Filename()', function () {
|
||||||
it('should work', function () {
|
it('should work', function () {
|
||||||
assert.equal(fixturewallet.getV3Filename(1457917509265), 'UTC--2016-03-14T01-05-09.265Z--b14ab53e38da1c172f877dbc6d65e4a1b0474c3c')
|
assert.equal(fixturewallet.getV3Filename(1457917509265), 'UTC--2016-03-14T01-05-09.265Z--b14ab53e38da1c172f877dbc6d65e4a1b0474c3c')
|
||||||
|
|
Loading…
Reference in New Issue