加入默克根计算函数
This commit is contained in:
parent
906316d38f
commit
e968ea686f
30
index.js
30
index.js
@ -364,6 +364,36 @@ module.exports = {
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
,
|
,
|
||||||
|
getMerkleRoot:function(todoHashList, option){
|
||||||
|
//深拷贝传入数组,防止引用对象被改变
|
||||||
|
let hashList = [...todoHashList]
|
||||||
|
if(!Array.isArray(hashList))
|
||||||
|
return null
|
||||||
|
var border = hashList.length;
|
||||||
|
if(border == 0)
|
||||||
|
return this.hash('')
|
||||||
|
if(border == 1)
|
||||||
|
return this.hash(hashList[0]);
|
||||||
|
while(1){
|
||||||
|
let i = 1,j = 0;
|
||||||
|
for(; i < border; i = i + 2){
|
||||||
|
hashList[j] = this.hash(hashList[i - 1] + hashList[i]);
|
||||||
|
if(border == 2){
|
||||||
|
return hashList[0];
|
||||||
|
}
|
||||||
|
if(i + 1 == border) break;
|
||||||
|
j = j + 1;
|
||||||
|
if(i + 2 == border){
|
||||||
|
i = i + 1;
|
||||||
|
hashList[j] = this.hash(hashList[i]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
border = j + 1;
|
||||||
|
}
|
||||||
|
return hashList
|
||||||
|
}
|
||||||
|
,
|
||||||
distanceSig:function(hash, sig){ // hash为64hex字符,sig为128hex字符。返回用hex表达的距离。
|
distanceSig:function(hash, sig){ // hash为64hex字符,sig为128hex字符。返回用hex表达的距离。
|
||||||
if (this.isSignature(sig) && this.isHash(hash)){
|
if (this.isSignature(sig) && this.isHash(hash)){
|
||||||
var hashSig=this.hash(sig) // 把签名也转成32字节的哈希,同样长度方便比较
|
var hashSig=this.hash(sig) // 把签名也转成32字节的哈希,同样长度方便比较
|
||||||
|
Loading…
Reference in New Issue
Block a user