Address compatibility with pay-to-publickey output scripts.
This commit is contained in:
parent
05812b2301
commit
e3096d3646
@ -230,6 +230,9 @@ AddressService.prototype._extractAddressInfoFromScript = function(script) {
|
||||
var pubkey = script.chunks[0].buf;
|
||||
var address = Address.fromPublicKey(new PublicKey(pubkey), this.node.network);
|
||||
hashBuffer = address.hashBuffer;
|
||||
// pay-to-publickey doesn't have an address, however for compatibility
|
||||
// purposes, we can create an address
|
||||
addressType = Address.PayToPublicKeyHash;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -7,6 +7,8 @@ var bitcorenode = require('../../../');
|
||||
var AddressService = bitcorenode.services.Address;
|
||||
var blockData = require('../../data/livenet-345003.json');
|
||||
var bitcore = require('bitcore');
|
||||
var Script = bitcore.Script;
|
||||
var Address = bitcore.Address;
|
||||
var Networks = bitcore.Networks;
|
||||
var EventEmitter = require('events').EventEmitter;
|
||||
var errors = bitcorenode.errors;
|
||||
@ -106,6 +108,40 @@ describe('Address Service', function() {
|
||||
});
|
||||
});
|
||||
|
||||
describe('#_extractAddressInfoFromScript', function() {
|
||||
var am;
|
||||
before(function() {
|
||||
am = new AddressService({node: mocknode});
|
||||
am.node.network = Networks.livenet;
|
||||
});
|
||||
it('pay-to-publickey', function() {
|
||||
var pubkey = new bitcore.PublicKey('022df8750480ad5b26950b25c7ba79d3e37d75f640f8e5d9bcd5b150a0f85014da');
|
||||
var script = Script.buildPublicKeyOut(pubkey);
|
||||
var info = am._extractAddressInfoFromScript(script);
|
||||
info.addressType.should.equal(Address.PayToPublicKeyHash);
|
||||
info.hashBuffer.toString('hex').should.equal('9674af7395592ec5d91573aa8d6557de55f60147');
|
||||
});
|
||||
it('pay-to-publickeyhash', function() {
|
||||
var script = Script('OP_DUP OP_HASH160 20 0x0000000000000000000000000000000000000000 OP_EQUALVERIFY OP_CHECKSIG');
|
||||
var info = am._extractAddressInfoFromScript(script);
|
||||
info.addressType.should.equal(Address.PayToPublicKeyHash);
|
||||
info.hashBuffer.toString('hex').should.equal('0000000000000000000000000000000000000000');
|
||||
});
|
||||
it('pay-to-scripthash', function() {
|
||||
var script = Script('OP_HASH160 20 0x0000000000000000000000000000000000000000 OP_EQUAL');
|
||||
var info = am._extractAddressInfoFromScript(script);
|
||||
info.addressType.should.equal(Address.PayToScriptHash);
|
||||
info.hashBuffer.toString('hex').should.equal('0000000000000000000000000000000000000000');
|
||||
});
|
||||
it('non-address script type', function() {
|
||||
var buf = new Buffer(40);
|
||||
buf.fill(0);
|
||||
var script = Script('OP_RETURN 40 0x' + buf.toString('hex'));
|
||||
var info = am._extractAddressInfoFromScript(script);
|
||||
info.should.equal(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('#blockHandler', function() {
|
||||
var am;
|
||||
var testBlock = bitcore.Block.fromString(blockData);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user