bitcore/Address.js

48 lines
1.2 KiB
JavaScript
Raw Normal View History

'use strict';
var imports = require('soop').imports();
var parent = imports.parent || require('./util/VersionedData');
2014-03-14 23:27:06 -07:00
var networks= imports.networks || require('./networks');
2013-07-07 11:02:00 -07:00
function Address() {
Address.super(this, arguments);
}
2013-07-07 11:02:00 -07:00
Address.parent = parent;
parent.applyEncodingsTo(Address);
2013-07-07 11:02:00 -07:00
Address.prototype.validate = function() {
this.doAsBinary(function() {
Address.super(this, 'validate', arguments);
if(this.data.length !== 21) throw new Error('invalid data length');
});
2014-03-19 14:44:24 -07:00
if (typeof this.network() === 'undefined') throw new Error('invalid network');
};
Address.prototype.isValid = function() {
var answer = Address.super(this, 'isValid', arguments);
2014-03-11 06:21:26 -07:00
return answer;
};
2013-07-07 11:02:00 -07:00
2014-03-14 23:27:06 -07:00
Address.prototype.network = function() {
var version = this.version();
var livenet = networks.livenet;
var testnet = networks.testnet;
var answer;
2014-04-07 14:30:49 -07:00
if (version === livenet.addressVersion || version === livenet.P2SHVersion)
2014-03-14 23:27:06 -07:00
answer = livenet;
2014-04-07 14:30:49 -07:00
else if (version === testnet.addressVersion || version === testnet.P2SHVersion)
2014-03-14 23:27:06 -07:00
answer = testnet;
return answer;
};
2014-03-19 12:20:41 -07:00
Address.prototype.isScript = function() {
2014-04-07 14:30:49 -07:00
return this.isValid() && this.version() === this.network().P2SHVersion;
2014-03-19 12:20:41 -07:00
};
module.exports = require('soop')(Address);