Browse Source

TPCOperation.OperationFee as Int64

Multioperation can has invalid fee (negative) when new ops are added, so
is possible to store a potential negative fee (that will not be valid as
a operation)
PascalCoin 7 years ago
parent
commit
8ca335cc33
3 changed files with 14 additions and 15 deletions
  1. 1 1
      src/core/UBlockChain.pas
  2. 10 10
      src/core/UOpTransaction.pas
  3. 3 4
      src/core/UTxMultiOperation.pas

+ 1 - 1
src/core/UBlockChain.pas

@@ -212,7 +212,7 @@ Type
     Class Function OperationToOperationResume(Block : Cardinal; Operation : TPCOperation; getInfoForAllAccounts : Boolean; Affected_account_number : Cardinal; var OperationResume : TOperationResume) : Boolean; virtual;
     function OperationAmount : Int64; virtual; abstract;
     function OperationAmountByAccount(account : Cardinal) : Int64; virtual;
-    function OperationFee: UInt64; virtual; abstract;
+    function OperationFee: Int64; virtual; abstract;
     function OperationPayload : TRawBytes; virtual; abstract;
     function SignerAccount : Cardinal; virtual; abstract;
     procedure SignerAccounts(list : TList); virtual;

+ 10 - 10
src/core/UOpTransaction.pas

@@ -82,7 +82,7 @@ Type
     Class Function DoSignOperation(key : TECPrivateKey; var trans : TOpTransactionData) : Boolean;
     class function OpType : Byte; override;
     function OperationAmount : Int64; override;
-    function OperationFee : UInt64; override;
+    function OperationFee : Int64; override;
     function OperationPayload : TRawBytes; override;
     function SignerAccount : Cardinal; override;
     function DestinationAccount : Int64; override;
@@ -111,7 +111,7 @@ Type
     function GetBufferForOpHash(UseProtocolV2 : Boolean): TRawBytes; override;
     function DoOperation(AccountPreviousUpdatedBlock : TAccountPreviousBlockInfo; AccountTransaction : TPCSafeBoxTransaction; var errors : AnsiString) : Boolean; override;
     function OperationAmount : Int64; override;
-    function OperationFee : UInt64; override;
+    function OperationFee : Int64; override;
     function OperationPayload : TRawBytes; override;
     function SignerAccount : Cardinal; override;
     function DestinationAccount : Int64; override;
@@ -145,7 +145,7 @@ Type
     function GetBufferForOpHash(UseProtocolV2 : Boolean): TRawBytes; override;
     function DoOperation(AccountPreviousUpdatedBlock : TAccountPreviousBlockInfo; AccountTransaction : TPCSafeBoxTransaction; var errors : AnsiString) : Boolean; override;
     function OperationAmount : Int64; override;
-    function OperationFee : UInt64; override;
+    function OperationFee : Int64; override;
     function OperationPayload : TRawBytes; override;
     function SignerAccount : Cardinal; override;
     function N_Operation : Cardinal; override;
@@ -213,7 +213,7 @@ Type
     function GetBufferForOpHash(UseProtocolV2 : Boolean): TRawBytes; override;
     function DoOperation(AccountPreviousUpdatedBlock : TAccountPreviousBlockInfo; AccountTransaction : TPCSafeBoxTransaction; var errors : AnsiString) : Boolean; override;
     function OperationAmount : Int64; override;
-    function OperationFee : UInt64; override;
+    function OperationFee : Int64; override;
     function OperationPayload : TRawBytes; override;
     function SignerAccount : Cardinal; override;
     function DestinationAccount : Int64; override;
@@ -265,7 +265,7 @@ Type
     function GetBufferForOpHash(UseProtocolV2 : Boolean): TRawBytes; override;
     function DoOperation(AccountPreviousUpdatedBlock : TAccountPreviousBlockInfo; AccountTransaction : TPCSafeBoxTransaction; var errors : AnsiString) : Boolean; override;
     function OperationAmount : Int64; override;
-    function OperationFee : UInt64; override;
+    function OperationFee : Int64; override;
     function OperationPayload : TRawBytes; override;
     function SignerAccount : Cardinal; override;
     function DestinationAccount : Int64; override;
@@ -535,7 +535,7 @@ begin
   Result := 0;
 end;
 
-function TOpChangeAccountInfo.OperationFee: UInt64;
+function TOpChangeAccountInfo.OperationFee: Int64;
 begin
   Result := FData.fee;
 end;
@@ -943,7 +943,7 @@ begin
   Result := FData.amount;
 end;
 
-function TOpTransaction.OperationFee: UInt64;
+function TOpTransaction.OperationFee: Int64;
 begin
   Result := FData.fee;
 end;
@@ -1287,7 +1287,7 @@ begin
   Result := 0;
 end;
 
-function TOpChangeKey.OperationFee: UInt64;
+function TOpChangeKey.OperationFee: Int64;
 begin
   Result := FData.fee;
 end;
@@ -1442,7 +1442,7 @@ begin
   Result := 0;
 end;
 
-function TOpRecoverFounds.OperationFee: UInt64;
+function TOpRecoverFounds.OperationFee: Int64;
 begin
   Result := FData.fee;
 end;
@@ -1730,7 +1730,7 @@ begin
   Result := 0;
 end;
 
-function TOpListAccount.OperationFee: UInt64;
+function TOpListAccount.OperationFee: Int64;
 begin
   Result := FData.fee;
 end;

+ 3 - 4
src/core/UTxMultiOperation.pas

@@ -118,7 +118,7 @@ Type
     Function DoSignMultiOperationSigner(SignerAccount : Cardinal; key : TECPrivateKey) : Integer;
     class function OpType : Byte; override;
     function OperationAmount : Int64; override;
-    function OperationFee : UInt64; override;
+    function OperationFee : Int64; override;
     function OperationPayload : TRawBytes; override;
     function SignerAccount : Cardinal; override;
     procedure SignerAccounts(list : TList); override;
@@ -747,10 +747,9 @@ begin
   Result := FTotalAmount;
 end;
 
-function TOpMultiOperation.OperationFee: UInt64;
+function TOpMultiOperation.OperationFee: Int64;
 begin
-  If FTotalFee<0 then Result := 0 // Alert!
-  else Result := FTotalFee;
+  Result := FTotalFee;
 end;
 
 function TOpMultiOperation.OperationPayload: TRawBytes;