@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user