add supersha.
This commit is contained in:
parent
4b0519a073
commit
d91a8b1086
@ -211,6 +211,17 @@ MTX.prototype.getSize = function getSize() {
|
|||||||
return bcoin.protocol.framer.tx.witnessSize(this);
|
return bcoin.protocol.framer.tx.witnessSize(this);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculate the size of the transaction
|
||||||
|
* with the witness excluded. Note that this
|
||||||
|
* is _not_ cached.
|
||||||
|
* @returns {Number} size
|
||||||
|
*/
|
||||||
|
|
||||||
|
MTX.prototype.getBaseSize = function getBaseSize() {
|
||||||
|
return bcoin.protocol.framer.tx.size(this);
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculate the virtual size of the transaction.
|
* Calculate the virtual size of the transaction.
|
||||||
* Note that this is _not_ cached.
|
* Note that this is _not_ cached.
|
||||||
|
|||||||
@ -322,6 +322,18 @@ TX.prototype.getSize = function getSize() {
|
|||||||
return this.getRaw().length;
|
return this.getRaw().length;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculate the size of the transaction
|
||||||
|
* without the witness.
|
||||||
|
* with the witness included.
|
||||||
|
* @returns {Number} size
|
||||||
|
*/
|
||||||
|
|
||||||
|
TX.prototype.getBaseSize = function getBaseSize() {
|
||||||
|
this.getRaw();
|
||||||
|
return this._size - this._witnessSize;
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test whether the transaction has a non-empty witness.
|
* Test whether the transaction has a non-empty witness.
|
||||||
* @returns {Boolean}
|
* @returns {Boolean}
|
||||||
@ -1088,7 +1100,7 @@ TX.prototype.isSane = function isSane(ret) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.getSize() > constants.block.MAX_SIZE) {
|
if (this.getBaseSize() > constants.block.MAX_SIZE) {
|
||||||
ret.reason = 'bad-txns-oversize';
|
ret.reason = 'bad-txns-oversize';
|
||||||
ret.score = 100;
|
ret.score = 100;
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@ -14,7 +14,7 @@ var utils = exports;
|
|||||||
var assert = require('assert');
|
var assert = require('assert');
|
||||||
var bn = require('bn.js');
|
var bn = require('bn.js');
|
||||||
var util = require('util');
|
var util = require('util');
|
||||||
var crypto, hash, aes;
|
var crypto, supersha, hash, aes;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Whether we're in a browser or not.
|
* Whether we're in a browser or not.
|
||||||
@ -27,6 +27,11 @@ utils.isBrowser =
|
|||||||
|
|
||||||
if (!utils.isBrowser) {
|
if (!utils.isBrowser) {
|
||||||
crypto = require('cry' + 'pto');
|
crypto = require('cry' + 'pto');
|
||||||
|
try {
|
||||||
|
supersha = require('super' + 'sha');
|
||||||
|
} catch (e) {
|
||||||
|
;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
hash = require('hash.js');
|
hash = require('hash.js');
|
||||||
aes = require('./aes');
|
aes = require('./aes');
|
||||||
@ -242,6 +247,11 @@ utils.sha1 = function sha1(data, enc) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
utils.sha256 = function sha256(data, enc) {
|
utils.sha256 = function sha256(data, enc) {
|
||||||
|
if (supersha) {
|
||||||
|
if (!Buffer.isBuffer(data))
|
||||||
|
data = new Buffer(data, enc);
|
||||||
|
return supersha.sha256(data);
|
||||||
|
}
|
||||||
return utils.hash('sha256', data, enc);
|
return utils.hash('sha256', data, enc);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -264,6 +274,11 @@ utils.ripesha = function ripesha(data, enc) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
utils.dsha256 = function dsha256(data, enc) {
|
utils.dsha256 = function dsha256(data, enc) {
|
||||||
|
if (supersha) {
|
||||||
|
if (!Buffer.isBuffer(data))
|
||||||
|
data = new Buffer(data, enc);
|
||||||
|
return supersha.dsha256(data);
|
||||||
|
}
|
||||||
return utils.sha256(utils.sha256(data, enc));
|
return utils.sha256(utils.sha256(data, enc));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user