refactor: 0 error

Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
2019-07-10 15:59:04 +08:00
parent cbc0ed72c4
commit 4527e437fa
39 changed files with 1802 additions and 1695 deletions

View File

@@ -27,14 +27,14 @@ function CreateHashMinimal(Block, MinerID) {
throw "BlockNum < BLOCKNUM_ALGO2";
return false;
}
var PrevHashNum = ReadUint32FromArr(Block.PrevHash, 28);
var Ret = GetHash(Block.SeqHash, PrevHashNum, Block.BlockNum, MinerID, 0, 0, 0, 0, 0);
var PrevHashNum = global.ReadUint32FromArr(Block.PrevHash, 28);
var Ret = global.GetHash(Block.SeqHash, PrevHashNum, Block.BlockNum, MinerID, 0, 0, 0, 0, 0);
Block.Hash = Ret.Hash;
Block.PowHash = Ret.PowHash;
Block.Power = GetPowPower(Block.PowHash);
Block.Power = global.GetPowPower(Block.PowHash);
Block.AddrHash = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
WriteUintToArrOnPos(Block.AddrHash, MinerID, 0);
WriteUint32ToArrOnPos(Block.AddrHash, PrevHashNum, 28);
global.WriteUintToArrOnPos(Block.AddrHash, MinerID, 0);
global.WriteUint32ToArrOnPos(Block.AddrHash, PrevHashNum, 28);
return true;
};
var MAX_MEMORY3 = 0, SHIFT_MASKA3;
@@ -61,8 +61,7 @@ function InitVer3(Block) {
try {
BufferNonce3 = new Uint32Array(MAX_MEMORY3);
BufferBlockNum3 = new Uint32Array(MAX_MEMORY3);
}
catch (e) {
} catch (e) {
SHIFT_MASKA3 = SHIFT_MASKA3 + 1;
MAX_MEMORY3 = MAX_MEMORY3 / 2;
global.ToLog("WAS ALLOC MEMORY ERROR. NEW TRY: " + MAX_MEMORY3);
@@ -88,10 +87,13 @@ function CreatePOWVersion3(Block, bHashPump) {
if (!Block.MaxLider) {
Block.HashCount = 0;
Block.MaxLider = {
Nonce0: 0, Nonce1: 0, Nonce2: 0, DeltaNum1: 0, DeltaNum2: 0, Hash1: [255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255], Hash2: [255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255],
Nonce0: 0,
Nonce1: 0,
Nonce2: 0,
DeltaNum1: 0,
DeltaNum2: 0,
Hash1: [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
Hash2: [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
};
}
var MaxLider = Block.MaxLider;
@@ -99,7 +101,7 @@ function CreatePOWVersion3(Block, bHashPump) {
var BlockNum = Block.BlockNum;
var Miner = Block.MinerID;
var StartNonceRnd = DELTA_NONCE + Block.LastNonce + Math.trunc(3000000000 * Math.random());
var List = GetNonceHashArr(BlockNum, Miner, StartNonceRnd, RunCount);
var List = global.GetNonceHashArr(BlockNum, Miner, StartNonceRnd, RunCount);
for (var n = 0; n < RunCount; n++) {
var Nonce = List.ArrNonce[n];
var HashNum = List.ArrHash[n] >>> SHIFT_MASKA3;
@@ -110,11 +112,11 @@ function CreatePOWVersion3(Block, bHashPump) {
if (bHashPump)
return;
var Ret = 0;
var PrevHashNum = ReadUint32FromArr(Block.PrevHash, 28);
var HashBase = GetHashFromNum2(BlockNum, PrevHashNum);
var PrevHashNum = global.ReadUint32FromArr(Block.PrevHash, 28);
var HashBase = global.GetHashFromNum2(BlockNum, PrevHashNum);
var Value1 = FindHashBuffer3(HashBase, BlockNum, Miner, 1);
if (Value1) {
var Hash1 = XORArr(HashBase, Value1.Hash);
var Hash1 = global.XORArr(HashBase, Value1.Hash);
if (global.CompareArr(MaxLider.Hash1, Hash1) > 0) {
MaxLider.Hash1 = Hash1;
MaxLider.Nonce1 = Value1.Nonce;
@@ -126,10 +128,10 @@ function CreatePOWVersion3(Block, bHashPump) {
var CountEnd = START_NONCE + 50000;
var Nonce0;
for (Nonce0 = START_NONCE; Nonce0 < CountEnd; Nonce0++) {
var HashCurrent = GetHashFromArrNum2(Block.SeqHash, Miner, Nonce0);
var HashCurrent = global.GetHashFromArrNum2(Block.SeqHash, Miner, Nonce0);
var Value2 = FindHashBuffer3(HashCurrent, BlockNum, Miner, 1);
if (Value2) {
var Hash2 = XORArr(HashCurrent, Value2.Hash);
var Hash2 = global.XORArr(HashCurrent, Value2.Hash);
if (global.CompareArr(MaxLider.Hash2, Hash2) > 0) {
MaxLider.Nonce0 = Nonce0;
MaxLider.Hash2 = Hash2;
@@ -145,13 +147,13 @@ function CreatePOWVersion3(Block, bHashPump) {
Block.LastNonce0 = Nonce0;
if (Ret) {
Block.AddrHash = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
WriteUintToArrOnPos(Block.AddrHash, Miner, 0);
WriteUintToArrOnPos(Block.AddrHash, MaxLider.Nonce0, 6);
WriteUintToArrOnPos(Block.AddrHash, MaxLider.Nonce1, 12);
WriteUintToArrOnPos(Block.AddrHash, MaxLider.Nonce2, 18);
WriteUint16ToArrOnPos(Block.AddrHash, MaxLider.DeltaNum1, 24);
WriteUint16ToArrOnPos(Block.AddrHash, MaxLider.DeltaNum2, 26);
WriteUint32ToArrOnPos(Block.AddrHash, PrevHashNum, 28);
global.WriteUintToArrOnPos(Block.AddrHash, Miner, 0);
global.WriteUintToArrOnPos(Block.AddrHash, MaxLider.Nonce0, 6);
global.WriteUintToArrOnPos(Block.AddrHash, MaxLider.Nonce1, 12);
global.WriteUintToArrOnPos(Block.AddrHash, MaxLider.Nonce2, 18);
global.WriteUint16ToArrOnPos(Block.AddrHash, MaxLider.DeltaNum1, 24);
global.WriteUint16ToArrOnPos(Block.AddrHash, MaxLider.DeltaNum2, 26);
global.WriteUint32ToArrOnPos(Block.AddrHash, PrevHashNum, 28);
Block.Hash = MaxLider.Hash2;
if (global.CompareArr(MaxLider.Hash1, MaxLider.Hash2) > 0) {
Block.PowHash = MaxLider.Hash1;
@@ -160,10 +162,10 @@ function CreatePOWVersion3(Block, bHashPump) {
Block.PowHash = MaxLider.Hash2;
}
if (BlockNum >= global.BLOCKNUM_TICKET_ALGO)
Block.Hash = sha3arr2(MaxLider.Hash1, MaxLider.Hash2);
Block.Hash = global.sha3arr2(MaxLider.Hash1, MaxLider.Hash2);
else
Block.Hash = shaarr2(MaxLider.Hash1, MaxLider.Hash2);
var Power = GetPowPower(Block.PowHash);
Block.Hash = global.shaarr2(MaxLider.Hash1, MaxLider.Hash2);
var Power = global.GetPowPower(Block.PowHash);
Block.HashCount = (1 << Power) >>> 0;
}
return Ret;
@@ -176,7 +178,7 @@ function FindHashBuffer3(HashFind, BlockNum, Miner, CountFind) {
var BlockNum2 = BufferBlockNum3[Index];
if (BlockNum2 && BlockNum2 > BlockNum - DELTA_LONG_MINING) {
var Nonce2 = DELTA_NONCE + BufferNonce3[Index];
var Hash2 = GetHashFromNum3(BlockNum2, Miner, Nonce2);
var Hash2 = global.GetHashFromNum3(BlockNum2, Miner, Nonce2);
return { Hash: Hash2, DeltaNum: BlockNum - BlockNum2, Nonce: Nonce2 };
}
}
@@ -193,7 +195,7 @@ global.GetNonceHashArr = function(BlockNum, Miner, StartNonceRnd, CountNonce) {
var ArrHash = [];
for (var n = 0; n < CountNonce; n++) {
var Nonce = StartNonceRnd + n;
var HashNonce = GetHashFromNum3(BlockNum, Miner, Nonce);
var HashNonce = global.GetHashFromNum3(BlockNum, Miner, Nonce);
var HashNum = (HashNonce[0] << 23) * 2 + (HashNonce[1] << 16) + (HashNonce[2] << 8) + HashNonce[3];
ArrNonce[n] = Nonce;
ArrHash[n] = HashNum;