hashgraph / hedera-services

Crypto, token, consensus, file, and smart contract services for the Hedera public ledger
Apache License 2.0
266 stars 119 forks source link

negative Id for StakedNodeId in token service #13961

Closed povolev15 closed 2 weeks ago

povolev15 commented 2 weeks ago

This is a user error, where they passed negative Id for StakedNodeId . It should have returned INVALID_STAKING_ID. But, because we construct new Node() without checking if the value is negative, we threw an IllegalArgumentException . We should fix it here


2024-06-20 19:15:37.855 ERROR 660  HandleWorkflow - Possibly CATASTROPHIC failure while handling a user transaction
java.lang.IllegalArgumentException: id must be non-negative
    at com.swirlds.common.platform.NodeId.<init>(NodeId.java:69) ~[swirlds-common-0.50.0.jar:?]
    at com.hedera.node.app.info.NetworkInfoImpl.nodeInfo(NetworkInfoImpl.java:92) ~[?:?]
    at com.hedera.node.app.service.token.impl.validators.StakingValidator.validateStakedId(StakingValidator.java:130) ~[app-service-token-impl-0.50.0.jar:?]
    at com.hedera.node.app.service.token.impl.validators.StakingValidator.validateStakedIdForUpdate(StakingValidator.java:108) ~[app-service-token-impl-0.50.0.jar:?]
    at com.hedera.node.app.service.token.impl.handlers.CryptoUpdateHandler.validateFields(CryptoUpdateHandler.java:309) ~[app-service-token-impl-0.50.0.jar:?]
    at com.hedera.node.app.service.token.impl.handlers.CryptoUpdateHandler.validateSemantics(CryptoUpdateHandler.java:244) ~[app-service-token-impl-0.50.0.jar:?]
    at com.hedera.node.app.service.token.impl.handlers.CryptoUpdateHandler.handle(CryptoUpdateHandler.java:162) ~[app-service-token-impl-0.50.0.jar:?]
    at com.hedera.node.app.workflows.dispatcher.TransactionDispatcher.dispatchHandle(TransactionDispatcher.java:146) ~[?:?]
    at com.hedera.node.app.workflows.handle.HandleWorkflow.handleUserTransaction(HandleWorkflow.java:600) ~[?:?]
    at com.hedera.node.app.workflows.handle.HandleWorkflow.handlePlatformTransaction(HandleWorkflow.java:322) ~[?:?]
    at com.hedera.node.app.workflows.handle.HandleWorkflow.handleRound(HandleWorkflow.java:288) ~[?:?]
    at com.hedera.node.app.Hedera.onHandleConsensusRound(Hedera.java:954) ~[?:?]
    at com.hedera.node.app.state.HederaLifecyclesImpl.onHandleConsensusRound(HederaLifecyclesImpl.java:110) ~[?:?]
    at com.hedera.node.app.state.merkle.MerkleHederaState.handleConsensusRound(MerkleHederaState.java:328) ~[?:?]
    at com.swirlds.platform.state.TransactionHandler.handleRound(TransactionHandler.java:60) ~[swirlds-platform-core-0.50.0.jar:?]
    at com.swirlds.platform.state.SwirldStateManager.handleConsensusRound(SwirldStateManager.java:122) ~[swirlds-platform-core-0.50.0.jar:?]
    at com.swirlds.platform.eventhandling.ConsensusRoundHandler.handleConsensusRound(ConsensusRoundHandler.java:212) ~[swirlds-platform-core-0.50.0.jar:?]
    at com.swirlds.common.wiring.wires.input.BindableInputWire.lambda$bind$1(BindableInputWire.java:111) ~[swirlds-common-0.50.0.jar:?]
    at com.swirlds.common.wiring.schedulers.internal.SequentialThreadTask.handle(SequentialThreadTask.java:34) ~[swirlds-common-0.50.0.jar:?]
    at com.swirlds.common.wiring.schedulers.internal.SequentialThreadTaskScheduler.run(SequentialThreadTaskScheduler.java:191) ~[swirlds-common-0.50.0.jar:?]
    at java.base/java.lang.Thread.run(Thread.java:1583) [?:?]```