소스 검색

Classic GUI hashrate in h/s and Kh/s

Allows good values for Hash/second and KiloHash/second in Classic GUI
PascalCoin 6 년 전
부모
커밋
eb79846707
2개의 변경된 파일45개의 추가작업 그리고 25개의 파일을 삭제
  1. 15 12
      src/gui-classic/UFRMWallet.pas
  2. 30 13
      src/gui-classic/UGridUtils.pas

+ 15 - 12
src/gui-classic/UFRMWallet.pas

@@ -1099,6 +1099,7 @@ begin
   FBackgroundLabel.Alignment := taCenter;
   FBackgroundLabel.WordWrap := True;
   cbHashRateUnits.Items.Clear;
+  cbHashRateUnits.Items.Add('h/s');
   cbHashRateUnits.Items.Add('Kh/s');
   cbHashRateUnits.Items.Add('Mh/s');
   cbHashRateUnits.Items.Add('Gh/s');
@@ -1137,12 +1138,13 @@ begin
   FUpdating := True;
   Try
     case cbHashRateUnits.ItemIndex of
-      0 : FBlockChainGrid.HashRateAs := hr_Kilo;
-      1 : FBlockChainGrid.HashRateAs := hr_Mega;
-      2 : FBlockChainGrid.HashRateAs := hr_Giga;
-      3 : FBlockChainGrid.HashRateAs := hr_Tera;
-      4 : FBlockChainGrid.HashRateAs := hr_Peta;
-      5 : FBlockChainGrid.HashRateAs := hr_Exa;
+      0 : FBlockChainGrid.HashRateAs := hr_Unit;
+      1 : FBlockChainGrid.HashRateAs := hr_Kilo;
+      2 : FBlockChainGrid.HashRateAs := hr_Mega;
+      3 : FBlockChainGrid.HashRateAs := hr_Giga;
+      4 : FBlockChainGrid.HashRateAs := hr_Tera;
+      5 : FBlockChainGrid.HashRateAs := hr_Peta;
+      6 : FBlockChainGrid.HashRateAs := hr_Exa;
     else FBlockChainGrid.HashRateAs := hr_Mega;
     end;
     FAppParams.ParamByName[CT_PARAM_ShowHashRateAs].Value := Integer(FBlockChainGrid.HashRateAs);
@@ -2122,12 +2124,13 @@ begin
   else FMinerPrivateKeyType := mpk_Random;
   ebHashRateBackBlocks.Text := IntToStr(FBlockChainGrid.HashRateAverageBlocksCount);
   Case FBlockChainGrid.HashRateAs of
-    hr_Kilo : cbHashRateUnits.ItemIndex:=0;
-    hr_Mega : cbHashRateUnits.ItemIndex:=1;
-    hr_Giga : cbHashRateUnits.ItemIndex:=2;
-    hr_Tera : cbHashRateUnits.ItemIndex:=3;
-    hr_Peta : cbHashRateUnits.ItemIndex:=4;
-    hr_Exa : cbHashRateUnits.ItemIndex:=5;
+    hr_Unit : cbHashRateUnits.ItemIndex:=0;
+    hr_Kilo : cbHashRateUnits.ItemIndex:=1;
+    hr_Mega : cbHashRateUnits.ItemIndex:=2;
+    hr_Giga : cbHashRateUnits.ItemIndex:=3;
+    hr_Tera : cbHashRateUnits.ItemIndex:=4;
+    hr_Peta : cbHashRateUnits.ItemIndex:=5;
+    hr_Exa : cbHashRateUnits.ItemIndex:=6;
   else cbHashRateUnits.ItemIndex:=-1;
   end;
 end;

+ 30 - 13
src/gui-classic/UGridUtils.pas

@@ -134,6 +134,8 @@ Type
     Volume : Int64;
     Reward, Fee : Int64;
     Target : Cardinal;
+    HashRateTargetHs : Double;
+    HashRateHs : Double;
     HashRateTargetKhs : Int64;
     HashRateKhs : Int64;
     MinerPayload : TRawBytes;
@@ -152,7 +154,7 @@ Type
 
   { TBlockChainGrid }
 
-  TShowHashRateAs = (hr_Kilo, hr_Mega, hr_Giga, hr_Tera, hr_Peta, hr_Exa);
+  TShowHashRateAs = (hr_Unit, hr_Kilo, hr_Mega, hr_Giga, hr_Tera, hr_Peta, hr_Exa);
 
   TBlockChainGrid = Class(TComponent)
   private
@@ -196,7 +198,7 @@ Type
   End;
 
 Const
-  CT_TBlockChainData_NUL : TBlockChainData = (Block:0;Timestamp:0;BlockProtocolVersion:0;BlockProtocolAvailable:0;OperationsCount:-1;Volume:-1;Reward:0;Fee:0;Target:0;HashRateTargetKhs:0;HashRateKhs:0;MinerPayload:'';PoW:'';SafeBoxHash:'';AccumulatedWork:0;TimeAverage200:0;TimeAverage150:0;TimeAverage100:0;TimeAverage75:0;TimeAverage50:0;TimeAverage25:0;TimeAverage10:0);
+  CT_TBlockChainData_NUL : TBlockChainData = (Block:0;Timestamp:0;BlockProtocolVersion:0;BlockProtocolAvailable:0;OperationsCount:-1;Volume:-1;Reward:0;Fee:0;Target:0;HashRateTargetHs:0;HashRateHs:0;HashRateTargetKhs:0;HashRateKhs:0;MinerPayload:'';PoW:'';SafeBoxHash:'';AccumulatedWork:0;TimeAverage200:0;TimeAverage150:0;TimeAverage100:0;TimeAverage75:0;TimeAverage50:0;TimeAverage25:0;TimeAverage10:0);
 
 
 implementation
@@ -1085,6 +1087,7 @@ begin
       6 : s := 'Target';
       7 : begin
         case HashRateAs of
+          hr_Unit : s := 'h/s';
           hr_Kilo : s := 'Kh/s';
           hr_Mega : s := 'Mh/s';
           hr_Giga : s := 'Gh/s';
@@ -1152,16 +1155,22 @@ begin
         s := IntToHex(bcd.Target,8);
         Canvas_TextRect(DrawGrid.Canvas,Rect,s,State,[tfLeft,tfVerticalCenter]);
       end else if ACol=7 then begin
-        case HashRateAs of
-          hr_Kilo : hr_base := 1;
-          hr_Mega : hr_base := 1000;
-          hr_Giga : hr_base := 1000000;
-          hr_Tera : hr_base := 1000000000;
-          hr_Peta : hr_base := 1000000000000;
-          hr_Exa  : hr_base := 1000000000000000;
-        else hr_base := 1;
+        if (HashRateAs = hr_Unit) then begin
+          s := Format('%.0n (%.0n)',[bcd.HashRateHs,bcd.HashRateTargetHs]);
+        end else if (HashRateAs = hr_Kilo) then begin
+          s := Format('%.2n (%.2n)',[bcd.HashRateHs/1000,bcd.HashRateTargetHs/1000]);
+        end else begin
+          case HashRateAs of
+            hr_Kilo : hr_base := 1;
+            hr_Mega : hr_base := 1000;
+            hr_Giga : hr_base := 1000000;
+            hr_Tera : hr_base := 1000000000;
+            hr_Peta : hr_base := 1000000000000;
+            hr_Exa  : hr_base := 1000000000000000;
+          else hr_base := 1;
+          end;
+          s := Format('%.2n (%.2n)',[bcd.HashRateKhs/hr_base,bcd.HashRateTargetKhs/hr_base]);
         end;
-        s := Format('%.2n (%.2n)',[bcd.HashRateKhs/hr_base,bcd.HashRateTargetKhs/hr_base]);
         Canvas_TextRect(DrawGrid.Canvas,Rect,s,State,[tfRight,tfVerticalCenter]);
       end else if ACol=8 then begin
         if TCrypto.IsHumanReadable(bcd.MinerPayload) then
@@ -1322,10 +1331,18 @@ begin
         bcd.Reward := opb.reward;
         bcd.Fee := opb.fee;
         bcd.Target := opb.compact_target;
-        bcd.HashRateKhs := Node.Bank.SafeBox.CalcBlockHashRateInKhs(bcd.Block,HashRateAverageBlocksCount);
+        bn := Node.Bank.SafeBox.CalcBlockHashRateInHs(bcd.Block,HashRateAverageBlocksCount);
+        try
+          bcd.HashRateHs := bn.Value;
+          bcd.HashRateKhs := bn.Divide(1000).Value;
+        finally
+          bn.Free;
+        end;
+        // bcd.HashRateKhs := Node.Bank.SafeBox.CalcBlockHashRateInKhs(bcd.Block,HashRateAverageBlocksCount); XXXXXXXX
         bn := TBigNum.TargetToHashRate(opb.compact_target);
         Try
-          bcd.HashRateTargetKhs := bn.Divide(1024).Divide(CT_NewLineSecondsAvg).Value;
+          bcd.HashRateTargetHs := bn.Value / (CT_NewLineSecondsAvg);
+          bcd.HashRateTargetKhs := bn.Divide(1000).Divide(CT_NewLineSecondsAvg).Value;
         finally
           bn.Free;
         end;