Browse Source

TESTNET 3.2

PascalCoin 7 years ago
parent
commit
ba65cc6007

+ 3 - 2
README.md

@@ -35,8 +35,7 @@ Also, consider a donation at PascalCoin development account: "0-10"
 ## History:  
 
 ### DEVELOPMENT STATUS
-- TODO: PIP - 0010
-- TODO: Add new network operations
+- PIP - 0010: 50% inflation reduction
 - New target calc on protocol V3 in order to reduce the sinusoidal effect
   - Harmonization of the sinusoidal effect modifying the rise / fall by 50% calculating over the last 10 blocks only when increase/decrease is high
 - New Safebox Snapshoting
@@ -47,6 +46,8 @@ Also, consider a donation at PascalCoin development account: "0-10"
     - Implementation of the PIP-0013 (not exactly but with similar features)	
   - Get account (code $0031)
     - This call will allow a simple third party app communicate directly to a node to get account info (balance, n_operation, name, public key... )
+  - Reserverd codes from $1000 to $1FFF
+    - A node will not break connection if those codes are used, but will response with ERRORCODE_NOT_IMPLEMENTED ($00FF)
 - MultiOperation: PIP-0017
   - Multioperation allows a transactional like operations, they can include transactions and change info operations in a signle multioperation
     - Allow to send coins from N accounts to M receivers in a transaction mixing, without knowledge of how many coins where sent from "Alice" to "Bob" if properly mixed

+ 2 - 2
src/core/UConst.pas

@@ -105,7 +105,7 @@ Const
   CT_NetProtocol_Version: Word = $0006; // Version 2.1.2 only allows net protocol 6 (Introduced on 2.0.0)
   // IMPORTANT NOTE!!!
   // NetProtocol_Available MUST BE always >= NetProtocol_version
-  CT_NetProtocol_Available: Word = $0006;  // Remember, >= NetProtocol_version !!!
+  CT_NetProtocol_Available: Word = $0007;  // Remember, >= NetProtocol_version !!!
 
   CT_MaxAccountOperationsPerBlockWithoutFee = 1;
 
@@ -150,7 +150,7 @@ Const
   CT_OpSubtype_MultiOperation_Global      = 91;
   CT_OpSubtype_MultiOperation_AccountInfo = 92;
 
-  CT_ClientAppVersion : AnsiString = {$IFDEF PRODUCTION}'2.1.9'{$ELSE}{$IFDEF TESTNET}'TESTNET 3.1 BETA'{$ELSE}{$ENDIF}{$ENDIF};
+  CT_ClientAppVersion : AnsiString = {$IFDEF PRODUCTION}'2.1.9'{$ELSE}{$IFDEF TESTNET}'TESTNET 3.2 CR'{$ELSE}{$ENDIF}{$ENDIF};
 
   CT_Discover_IPs =  'bpascal1.dynamic-dns.net;bpascal2.dynamic-dns.net;pascalcoin1.dynamic-dns.net;pascalcoin2.dynamic-dns.net;pascalcoin1.dns1.us;pascalcoin2.dns1.us;pascalcoin1.dns2.us;pascalcoin2.dns2.us';
 

+ 0 - 8
src/gui-classic/UFRMAbout.pas

@@ -69,16 +69,8 @@ uses
 {$ENDIF}
 
 procedure TFRMAbout.FormCreate(Sender: TObject);
-{$IFnDEF FPC}
-Var fvi : TFileVersionInfo;
-{$ENDIF}
 begin
-  {$IFDEF FPC}
   lblBuild.Caption :=  'Build: '+CT_ClientAppVersion;
-  {$ELSE}
-  fvi := TFolderHelper.GetTFileVersionInfo(Application.ExeName);
-  lblBuild.Caption :=  'Build: '+fvi.FileVersion;
-  {$ENDIF}
   lblProtocolVersion.Caption := Format('BlockChain Protocol: %d (%d)  -  Net Protocol: %d (%d)',[TNode.Node.Bank.SafeBox.CurrentProtocol,CT_BlockChain_Protocol_Available,
     CT_NetProtocol_Version, CT_NetProtocol_Available]);
 end;

+ 6 - 5
src/gui-classic/UFRMOperationsExplorer.dfm

@@ -180,13 +180,14 @@ object FRMOperationsExplorer: TFRMOperationsExplorer
           Action = ActRemove
           TabOrder = 4
         end
-        object Button1: TButton
-          Left = 261
-          Top = 16
-          Width = 75
+        object bbRandom: TButton
+          Left = 190
+          Top = 8
+          Width = 146
           Height = 25
-          Caption = 'Button1'
+          Caption = 'RANDOM OPERATIONS'
           TabOrder = 5
+          OnClick = bbRandomClick
         end
       end
     end

+ 0 - 8
src/gui-classic/UFRMOperationsExplorer.pas

@@ -63,8 +63,6 @@ type
     MenuItem4: TMenuItem;
     MenuItem5: TMenuItem;
     MenuItem6: TMenuItem;
-    MenuItem7: TMenuItem;
-    MiRPCCalls: TMenuItem;
     MiActions: TMenuItem;
     MiDivider1: TMenuItem;
     MiImportOperationsFromTxt: TMenuItem;
@@ -96,7 +94,6 @@ type
     procedure bbRandomClick(Sender: TObject);
     procedure bbRemoveClick(Sender: TObject);
     procedure bbSignClick(Sender: TObject);
-    procedure Button1Click(Sender: TObject);
     procedure FormCreate(Sender: TObject);
     procedure FormDestroy(Sender: TObject);
     procedure lbOperationsClick(Sender: TObject);
@@ -353,11 +350,6 @@ begin
   UpdateSelectedOperationInfo;
 end;
 
-procedure TFRMOperationsExplorer.Button1Click(Sender: TObject);
-begin
-
-end;
-
 procedure TFRMOperationsExplorer.bbAddOpChangeClick(Sender: TObject);
 Var op : TPCOperation;
   mop : TOpMultiOperation;

+ 0 - 1
src/gui-classic/UFRMPayloadDecoder.lfm

@@ -16,7 +16,6 @@ object FRMPayloadDecoder: TFRMPayloadDecoder
   OnCreate = FormCreate
   Position = poOwnerFormCenter
   LCLVersion = '1.8.0.6'
-  Visible = False
   object Label1: TLabel
     Left = 20
     Height = 13

+ 275 - 0
src/gui-classic/UFRMRPCCalls.dfm

@@ -0,0 +1,275 @@
+object FRMRPCCalls: TFRMRPCCalls
+  Left = 515
+  Top = 250
+  BorderIcons = [biSystemMenu, biMaximize]
+  Caption = 'RPC Calls'
+  ClientHeight = 433
+  ClientWidth = 760
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'Tahoma'
+  Font.Style = []
+  OldCreateOrder = True
+  Position = poOwnerFormCenter
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object Splitter1: TSplitter
+    Left = 424
+    Top = 50
+    Width = 5
+    Height = 366
+    Align = alRight
+  end
+  object pnlTop: TPanel
+    Left = 0
+    Top = 0
+    Width = 760
+    Height = 50
+    Align = alTop
+    BevelOuter = bvNone
+    BorderWidth = 5
+    TabOrder = 0
+    object lblTopCaption: TLabel
+      Left = 5
+      Top = 5
+      Width = 750
+      Height = 40
+      Align = alClient
+      AutoSize = False
+      Caption = 
+        'WARNING! Execute only calls you understand. Execute unknown call' +
+        's provided by third person can cause that you lost your keys/bal' +
+        'ance!'
+      Color = clBtnFace
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clRed
+      Font.Height = -16
+      Font.Name = 'Tahoma'
+      Font.Style = [fsBold]
+      ParentColor = False
+      ParentFont = False
+      Layout = tlCenter
+      WordWrap = True
+    end
+  end
+  object pnlBottom: TPanel
+    Left = 0
+    Top = 416
+    Width = 760
+    Height = 17
+    Align = alBottom
+    BevelOuter = bvNone
+    TabOrder = 1
+  end
+  object pnlRight: TPanel
+    Left = 429
+    Top = 50
+    Width = 331
+    Height = 366
+    Align = alRight
+    BevelOuter = bvNone
+    TabOrder = 2
+    DesignSize = (
+      331
+      366)
+    object Label1: TLabel
+      Left = 16
+      Top = 43
+      Width = 36
+      Height = 13
+      Caption = 'Method'
+      Color = clBtnFace
+      ParentColor = False
+    end
+    object Label2: TLabel
+      Left = 16
+      Top = 13
+      Width = 32
+      Height = 13
+      Caption = 'Server'
+      Color = clBtnFace
+      ParentColor = False
+    end
+    object ebMethod: TEdit
+      Left = 70
+      Top = 40
+      Width = 184
+      Height = 21
+      TabOrder = 1
+      Text = 'ebMethod'
+    end
+    object pageControl: TPageControl
+      Left = 16
+      Top = 75
+      Width = 289
+      Height = 222
+      ActivePage = tsKeyNames
+      Anchors = [akLeft, akTop, akRight, akBottom]
+      TabOrder = 2
+      object tsKeyNames: TTabSheet
+        Caption = 'Key/Value Params'
+        object vlKeyParams: TValueListEditor
+          Left = 0
+          Top = 0
+          Width = 281
+          Height = 194
+          Align = alClient
+          KeyOptions = [keyEdit, keyAdd, keyDelete, keyUnique]
+          Strings.Strings = (
+            '')
+          TabOrder = 0
+          ColWidths = (
+            64
+            211)
+        end
+      end
+      object tsJSONParams: TTabSheet
+        Caption = 'Params as JSON'
+        ExplicitLeft = 0
+        ExplicitTop = 0
+        ExplicitWidth = 0
+        ExplicitHeight = 0
+        object mJSONParams: TMemo
+          Left = 0
+          Top = 0
+          Width = 238
+          Height = 172
+          Align = alClient
+          ScrollBars = ssVertical
+          TabOrder = 0
+        end
+      end
+    end
+    object bbSendCommand: TBitBtn
+      Left = 72
+      Top = 305
+      Width = 168
+      Height = 46
+      Anchors = [akLeft, akBottom]
+      Caption = '&Send'
+      Default = True
+      DoubleBuffered = True
+      Glyph.Data = {
+        36040000424D3604000000000000360000002800000010000000100000000100
+        2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
+        FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+        FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+        FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+        FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000
+        00000000000000000000FFFFFF0046986FFF379064FF0B774240FFFFFF00FFFF
+        FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000
+        000000000000FFFFFF0054A07AFF78BCA1FF7DB99EFF368F63FF0B774240FFFF
+        FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000FFFF
+        FF00FFFFFF0054A07AFF7BBEA4FF39A681FF55B191FF7AB698FF399166FF0B77
+        4240FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0054A0
+        7A0054A07AFF7CC0A6FF3CA985FF76BDA1FF7FBBA0FF4FB592FF7BBEA2FF54A0
+        7AFF0B77424054A07A0054A07A00FFFFFF00FFFFFF00FFFFFF0054A07A0054A0
+        7AFF7DC1A7FF4DB391FF7FBB9FFF4D9C75FF3E946AFF7BC5A9FF40B18BFF7BBE
+        A2FF54A07AFF0B77424054A07A0054A07A00FFFFFF00FFFFFF0054A07AFF7FC3
+        A8FF5FBB9BFF7FBBA0FF3A9166FF0B7742600B7742404D9C75FF7BC5A9FF4EBC
+        97FF7BBEA2FF54A07AFF0B7742400B77421054A07A00FFFFFF000B7742303A91
+        66FC7FBBA0FF3A9166FC0B77423000000000000000000B77426054A07AFF7BC5
+        A9FF4EBE99FF5CC2A0FF54A07AFF0B77423F0B77421054A07A00000000000B77
+        42203A9166F60B774220000000000000000000000000FFFFFF000B77424054A0
+        7AFF7CCAAEFF52C39DFF81BDA2FF54A07AFF0B77423F54A07A00000000000000
+        0000000000000000000000000000000000000000000000000000000000000B77
+        424054A07AFF6DC9A8FF57C7A2FF7BCCAFFF54A07AFF0B774239000000000000
+        000000000000000000000000000000000000000000000000000000000000FFFF
+        FF000B77424C54A07AFF7BCCAFFF81CBAFFF54A07AFF0B77423F000000000000
+        000000000000000000000000000000000000000000000000000000000000FFFF
+        FF00FFFFFF000B77423D54A07AFF54A07AFF0B774247FFFFFF00FFFFFF00FFFF
+        FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+        FF00FFFFFF00FFFFFF000B77423F0B77423FFFFFFF00FFFFFF00FFFFFF00FFFF
+        FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+        FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+        FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
+        FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00}
+      ParentDoubleBuffered = False
+      TabOrder = 3
+      OnClick = bbSendCommandClick
+    end
+    object ebServerURL: TEdit
+      Left = 70
+      Top = 8
+      Width = 184
+      Height = 21
+      TabStop = False
+      TabOrder = 0
+      Text = 'ebServerURL'
+    end
+  end
+  object pnlInfo: TPanel
+    Left = 0
+    Top = 50
+    Width = 424
+    Height = 366
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 3
+    object Splitter2: TSplitter
+      Left = 0
+      Top = 192
+      Width = 424
+      Height = 5
+      Cursor = crVSplit
+      Align = alBottom
+    end
+    object pnlInfoBottom: TPanel
+      Left = 0
+      Top = 197
+      Width = 424
+      Height = 169
+      Align = alBottom
+      BevelOuter = bvNone
+      TabOrder = 0
+      object mLastResult: TMemo
+        Left = 0
+        Top = 24
+        Width = 424
+        Height = 145
+        Align = alClient
+        ScrollBars = ssVertical
+        TabOrder = 0
+      end
+      object pnlLastCall: TPanel
+        Left = 0
+        Top = 0
+        Width = 424
+        Height = 24
+        Align = alTop
+        BevelOuter = bvNone
+        TabOrder = 1
+        object Label3: TLabel
+          Left = 8
+          Top = 3
+          Width = 72
+          Height = 13
+          Caption = 'Last call result:'
+          Color = clBtnFace
+          ParentColor = False
+        end
+        object lblLastCallResultState: TLabel
+          Left = 112
+          Top = 3
+          Width = 31
+          Height = 13
+          Caption = 'STATE'
+          Color = clBtnFace
+          ParentColor = False
+        end
+      end
+    end
+    object mCalls: TMemo
+      Left = 0
+      Top = 0
+      Width = 424
+      Height = 192
+      Align = alClient
+      ScrollBars = ssVertical
+      TabOrder = 1
+    end
+  end
+end

+ 8 - 4
src/gui-classic/UFRMRPCCalls.pas

@@ -30,7 +30,7 @@ uses
   Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls,
   StdCtrls, ValEdit, ComCtrls, Buttons, UJSONFunctions, blcksock, httpsend,
   UConst,
-  UAccounts;
+  UAccounts, Grids;
 
 type
 
@@ -80,7 +80,11 @@ Const
 
 implementation
 
-{$R *.lfm}
+{$IFnDEF FPC}
+  {$R *.dfm}
+{$ELSE}
+  {$R *.lfm}
+{$ENDIF}
 
 { TFRMRPCCalls }
 
@@ -90,7 +94,7 @@ begin
   ebMethod.Text:='';
   mJSONParams.Clear;
   mCalls.Clear;
-  vlKeyParams.Clear;
+  {$IFDEF FPC}vlKeyParams.Clear;{$ENDIF}
   vlKeyParams.TitleCaptions.Text:='Key'+#10+'Value';
   ebServerURL.Text:=FServerURL;
   pageControl.ActivePage:=tsKeyNames;
@@ -149,7 +153,7 @@ end;
 
 procedure TFRMRPCCalls.ShowCallInfo(infoType: TInfoType; value: String);
 begin
-  mCalls.Lines.Add('%s [%s] %s',[FormatDateTime('hh:nn:ss.zzz',Now),CT_TIntoType_Str[infoType],value]);
+  mCalls.Lines.Add(Format('%s [%s] %s',[FormatDateTime('hh:nn:ss.zzz',Now),CT_TIntoType_Str[infoType],value]));
 end;
 
 procedure TFRMRPCCalls.DoSendJSON(json: TPCJSONObject);

+ 91 - 0
src/gui-classic/UFRMRandomOperations.dfm

@@ -0,0 +1,91 @@
+object FRMRandomOperations: TFRMRandomOperations
+  Left = 876
+  Top = 391
+  Caption = 'Random Operations'
+  ClientHeight = 229
+  ClientWidth = 439
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'Tahoma'
+  Font.Style = []
+  OldCreateOrder = True
+  Position = poOwnerFormCenter
+  OnClose = FormClose
+  OnCloseQuery = FormCloseQuery
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  PixelsPerInch = 96
+  TextHeight = 13
+  object pnlTop: TPanel
+    Left = 0
+    Top = 0
+    Width = 439
+    Height = 66
+    Align = alTop
+    BevelOuter = bvNone
+    BorderWidth = 10
+    TabOrder = 0
+    object lblTopCaption: TLabel
+      Left = 10
+      Top = 10
+      Width = 419
+      Height = 46
+      Align = alClient
+      AutoSize = False
+      Caption = 
+        'WARNING! This form will generate RANDOM operations using your pr' +
+        'ivate keys!!!'
+      Color = clBtnFace
+      Font.Charset = DEFAULT_CHARSET
+      Font.Color = clRed
+      Font.Height = -13
+      Font.Name = 'Tahoma'
+      Font.Style = [fsBold]
+      ParentColor = False
+      ParentFont = False
+      Layout = tlCenter
+      WordWrap = True
+    end
+  end
+  object pnlClient: TPanel
+    Left = 0
+    Top = 66
+    Width = 439
+    Height = 163
+    Align = alClient
+    BevelOuter = bvNone
+    TabOrder = 1
+    object pnlTop1: TPanel
+      Left = 0
+      Top = 0
+      Width = 439
+      Height = 42
+      Align = alTop
+      BevelOuter = bvNone
+      TabOrder = 0
+      object bbRandomOperations: TButton
+        Left = 16
+        Top = 8
+        Width = 195
+        Height = 25
+        Caption = 'Random Operations'
+        TabOrder = 0
+        OnClick = bbRandomOperationsClick
+      end
+    end
+    object mLogs: TMemo
+      Left = 0
+      Top = 42
+      Width = 439
+      Height = 121
+      Align = alClient
+      Lines.Strings = (
+        'mLogs')
+      ScrollBars = ssBoth
+      TabOrder = 1
+      WordWrap = False
+    end
+  end
+end

+ 5 - 1
src/gui-classic/UFRMRandomOperations.pas

@@ -77,7 +77,11 @@ type
 
 implementation
 
-{$R *.lfm}
+{$IFnDEF FPC}
+  {$R *.dfm}
+{$ELSE}
+  {$R *.lfm}
+{$ENDIF}
 
 { TRandomGenerateOperation }
 

+ 29 - 1
src/gui-classic/UFRMWallet.dfm

@@ -636,6 +636,10 @@ object FRMWallet: TFRMWallet
         object tsMultiSelectAccounts: TTabSheet
           Caption = 'Selected accounts for massive operations'
           ImageIndex = 1
+          ExplicitLeft = 0
+          ExplicitTop = 0
+          ExplicitWidth = 0
+          ExplicitHeight = 0
           object dgSelectedAccounts: TDrawGrid
             Left = 41
             Top = 31
@@ -825,6 +829,10 @@ object FRMWallet: TFRMWallet
     object tsPendingOperations: TTabSheet
       Caption = 'Pending Operations'
       ImageIndex = 5
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
       object dgPendingOperations: TDrawGrid
         Left = 0
         Top = 86
@@ -872,6 +880,10 @@ object FRMWallet: TFRMWallet
     object tsBlockChain: TTabSheet
       Caption = 'BlockChain Explorer'
       ImageIndex = 1
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
       object Panel2: TPanel
         Left = 0
         Top = 0
@@ -917,6 +929,10 @@ object FRMWallet: TFRMWallet
     object tsOperations: TTabSheet
       Caption = 'Operations Explorer'
       ImageIndex = 1
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
       object Panel1: TPanel
         Left = 0
         Top = 0
@@ -962,6 +978,10 @@ object FRMWallet: TFRMWallet
     object tsLogs: TTabSheet
       Caption = 'Logs'
       ImageIndex = 2
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
       object pnlTopLogs: TPanel
         Left = 0
         Top = 0
@@ -991,6 +1011,10 @@ object FRMWallet: TFRMWallet
     object tsNodeStats: TTabSheet
       Caption = 'Node Stats'
       ImageIndex = 3
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
       DesignSize = (
         841
         404)
@@ -1056,6 +1080,10 @@ object FRMWallet: TFRMWallet
     object tsMessages: TTabSheet
       Caption = 'Messages'
       ImageIndex = 6
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
       DesignSize = (
         841
         404)
@@ -1300,7 +1328,7 @@ object FRMWallet: TFRMWallet
     Left = 105
     Top = 180
     Bitmap = {
-      494C010102000800340210003000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
+      494C010102000800380210003000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
       0000000000003600000028000000400000003000000001002000000000000030
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000002A292929D60B0B0BF4111111EE0000006B000000000000

+ 2 - 2
src/gui-classic/UFRMWallet.lfm

@@ -388,9 +388,9 @@ object FRMWallet: TFRMWallet
     Height = 466
     Top = 91
     Width = 865
-    ActivePage = tsBlockChain
+    ActivePage = tsMyAccounts
     Align = alClient
-    TabIndex = 2
+    TabIndex = 0
     TabOrder = 2
     OnChange = PageControlChange
     object tsMyAccounts: TTabSheet

+ 2 - 2
src/gui-classic/UFRMWallet.pas

@@ -30,8 +30,8 @@ uses
   Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,
   ExtCtrls, ComCtrls, UWallet, StdCtrls, ULog, Grids, UAppParams, UBlockChain,
   UNode, UGridUtils, UJSONFunctions, UAccounts, Menus, ImgList, UNetProtocol,
-  UCrypto, Buttons, UPoolMining, URPC, UFRMAccountSelect, UFRMRPCCalls, UConst,
-  UTxMultiOperation;
+  UCrypto, Buttons, UPoolMining, URPC, UFRMAccountSelect, UConst,
+  UFRMRPCCalls, UTxMultiOperation;
 
 Const
   CM_PC_WalletKeysChanged = WM_USER + 1;