@@ -420,7 +420,6 @@ public synchronized boolean pushTransactions(final TransactionCapsule trx)
420420 throw new DupTransactionException ("dup trans" );
421421 }
422422
423-
424423 if (!trx .validateSignature ()) {
425424 throw new ValidateSignatureException ("trans sig validate failed" );
426425 }
@@ -465,7 +464,7 @@ public void consumeBandwidth(TransactionCapsule trx) throws ValidateBandwidthExc
465464 }
466465 long bandwidthPerTransaction = getDynamicPropertiesStore ().getBandwidthPerTransaction ();
467466 if (bandwidth < bandwidthPerTransaction ) {
468- throw new ValidateBandwidthException ("bandwidth is not enough" );
467+ throw new ValidateBandwidthException ("bandwidth is not enough" );
469468 }
470469 accountCapsule .setBandwidth (bandwidth - bandwidthPerTransaction );
471470 accountCapsule .setLatestOperationTime (Time .getCurrentMillis ());
@@ -525,7 +524,7 @@ public void eraseBlock() throws BadItemException, ItemNotFoundException {
525524 }
526525
527526 private void applyBlock (BlockCapsule block )
528- throws ContractValidateException , ContractExeException , ValidateSignatureException {
527+ throws ContractValidateException , ContractExeException , ValidateSignatureException , ValidateBandwidthException {
529528 processBlock (block );
530529 this .blockStore .put (block .getBlockId ().getBytes (), block );
531530 this .blockIndexStore .put (block .getBlockId ());
@@ -559,6 +558,8 @@ private void switchFork(BlockCapsule newHead) {
559558 try (Dialog tmpDialog = revokingStore .buildDialog ()) {
560559 applyBlock (item );
561560 tmpDialog .commit ();
561+ } catch (ValidateBandwidthException e ) {
562+ logger .error ("high freq" , e );
562563 } catch (ValidateSignatureException e ) {
563564 logger .debug (e .getMessage (), e );
564565 } catch (ContractValidateException e ) {
@@ -583,7 +584,7 @@ private synchronized void filterPendingTrx(List<TransactionCapsule> listTrx) {
583584 */
584585 public synchronized void pushBlock (final BlockCapsule block )
585586 throws ValidateSignatureException , ContractValidateException , ContractExeException ,
586- UnLinkedBlockException , ValidateScheduleException {
587+ UnLinkedBlockException , ValidateScheduleException , ValidateBandwidthException {
587588
588589 try (PendingManager pm = new PendingManager (this )) {
589590
@@ -798,7 +799,7 @@ public boolean hasBlocks() {
798799 * Process transaction.
799800 */
800801 public boolean processTransaction (final TransactionCapsule trxCap )
801- throws ValidateSignatureException , ContractValidateException , ContractExeException {
802+ throws ValidateSignatureException , ContractValidateException , ContractExeException , ValidateBandwidthException {
802803
803804 if (trxCap == null ) {
804805 return false ;
@@ -809,6 +810,8 @@ public boolean processTransaction(final TransactionCapsule trxCap)
809810 final List <Actuator > actuatorList = ActuatorFactory .createActuator (trxCap , this );
810811 TransactionResultCapsule ret = new TransactionResultCapsule ();
811812
813+ consumeBandwidth (trxCap );
814+
812815 for (Actuator act : actuatorList ) {
813816 act .validate ();
814817 act .execute (ret );
@@ -835,7 +838,7 @@ public BlockCapsule getBlockByNum(final long num) throws ItemNotFoundException,
835838 public synchronized BlockCapsule generateBlock (
836839 final WitnessCapsule witnessCapsule , final long when , final byte [] privateKey )
837840 throws ValidateSignatureException , ContractValidateException , ContractExeException ,
838- UnLinkedBlockException , ValidateScheduleException {
841+ UnLinkedBlockException , ValidateScheduleException , ValidateBandwidthException {
839842
840843 final long timestamp = this .dynamicPropertiesStore .getLatestBlockHeaderTimestamp ();
841844 final long number = this .dynamicPropertiesStore .getLatestBlockHeaderNumber ();
@@ -936,7 +939,7 @@ private void setUtxoStore(final UtxoStore utxoStore) {
936939 * process block.
937940 */
938941 public void processBlock (BlockCapsule block )
939- throws ValidateSignatureException , ContractValidateException , ContractExeException {
942+ throws ValidateSignatureException , ContractValidateException , ContractExeException , ValidateBandwidthException {
940943 // todo set revoking db max size.
941944 this .updateDynamicProperties (block );
942945 this .updateSignedWitness (block );
0 commit comments