fix coinbase parsing.
This commit is contained in:
parent
2f6f3e11b1
commit
58d8e3ce53
@ -1161,6 +1161,10 @@ script.isScripthashInput = function isScripthashInput(s, redeem) {
|
||||
script.coinbaseBits = function coinbaseBits(s, block) {
|
||||
var value;
|
||||
|
||||
s = s.filter(function(chunk) {
|
||||
return Array.isArray(chunk) && chunk.length !== 0;
|
||||
});
|
||||
|
||||
if (!Array.isArray(s[0]))
|
||||
return { type: 'value', value: s[0] };
|
||||
|
||||
@ -1198,6 +1202,10 @@ script.coinbaseHeight = function coinbaseHeight(s, block) {
|
||||
script.coinbase = function coinbase(s, block) {
|
||||
var coinbase, data, nonce, flags;
|
||||
|
||||
s = s.filter(function(chunk) {
|
||||
return Array.isArray(chunk) && chunk.length !== 0;
|
||||
});
|
||||
|
||||
coinbase = {
|
||||
script: s,
|
||||
raw: s._raw || script.encode(s)
|
||||
@ -1213,7 +1221,7 @@ script.coinbase = function coinbase(s, block) {
|
||||
coinbase[data.type] = data.value;
|
||||
coinbase.nonce = nonce;
|
||||
coinbase.flags = flags;
|
||||
coinbase.text = utils.array2utf8(flags);
|
||||
coinbase.text = flags.map(utils.array2utf8);
|
||||
|
||||
return coinbase;
|
||||
};
|
||||
|
||||
@ -309,13 +309,21 @@ utils.writeAscii = function writeAscii(dst, str, off) {
|
||||
return i;
|
||||
};
|
||||
|
||||
utils.readAscii = function readAscii(arr, off, len) {
|
||||
utils.readAscii = function readAscii(arr, off, len, printable) {
|
||||
var str = '';
|
||||
var i = off;
|
||||
var c;
|
||||
|
||||
for (i = off; i < off + len; i++) {
|
||||
c = String.fromCharCode(arr[i] & 0xff);
|
||||
if (printable) {
|
||||
c = arr[i] & 0xff;
|
||||
if (c === 0x09 || c === 0x0a || c === 0x0d || (c > 0x1f && c < 0x7f))
|
||||
c = String.fromCharCode(c);
|
||||
else
|
||||
c = '';
|
||||
} else {
|
||||
c = String.fromCharCode(arr[i] & 0xff);
|
||||
}
|
||||
str += c;
|
||||
}
|
||||
|
||||
@ -328,8 +336,8 @@ utils.ascii2array = function ascii2array(str) {
|
||||
return dst;
|
||||
};
|
||||
|
||||
utils.array2ascii = function array2ascii(arr) {
|
||||
return utils.readAscii(arr, 0, arr.length);
|
||||
utils.array2ascii = function array2ascii(arr, printable) {
|
||||
return utils.readAscii(arr, 0, arr.length, true);
|
||||
};
|
||||
|
||||
utils.array2utf8 = function array2utf8(arr) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user