Skip to content

Commit

Permalink
add checks in clu
Browse files Browse the repository at this point in the history
  • Loading branch information
temaniarpit27 committed Jul 4, 2022
1 parent 30bf8f4 commit a4afbc2
Show file tree
Hide file tree
Showing 2 changed files with 112 additions and 1 deletion.
2 changes: 1 addition & 1 deletion helper/unpack.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ func UnpackLog(abiObject *abi.ABI, out interface{}, event string, log *types.Log
}

selectedEvent := EventByID(abiObject, log.Topics[0].Bytes())
if selectedEvent == nil {
if selectedEvent == nil || selectedEvent.Name != event {
return errors.New("event signature does not match")
}

Expand Down
111 changes: 111 additions & 0 deletions staking/client/cli/tx.go
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,43 @@ func SendValidatorExitTx(cdc *codec.Codec) *cobra.Command {

nonce := viper.GetUint64(FlagNonce)

contractCallerObj, err := helper.NewContractCaller()
if err != nil {
return err
}

chainmanagerParams, err := util.GetChainmanagerParams(cliCtx)
if err != nil {
return err
}

// get main tx receipt
receipt, err := contractCallerObj.GetConfirmedTxReceipt(hmTypes.HexToHeimdallHash(txhash).EthHash(), chainmanagerParams.MainchainTxConfirmations)
if err != nil || receipt == nil {
return errors.New("Transaction is not confirmed yet. Please wait for sometime and try again")
}

abiObject := &contractCallerObj.StakingInfoABI
eventName := "UnstakeInit"
event := new(stakinginfo.StakinginfoUnstakeInit)
found := false
for _, vLog := range receipt.Logs {
topic := vLog.Topics[0].Bytes()
selectedEvent := helper.EventByID(abiObject, topic)
if selectedEvent != nil && selectedEvent.Name == eventName {
if err := helper.UnpackLog(abiObject, event, eventName, vLog); err != nil {
return err
}

found = true
break
}
}

if !found {
return fmt.Errorf("Invalid tx for validator unstake init")
}

// draf msg
msg := types.NewMsgValidatorExit(
proposer,
Expand Down Expand Up @@ -271,6 +308,43 @@ func SendValidatorUpdateTx(cdc *codec.Codec) *cobra.Command {
return fmt.Errorf("transaction hash has to be supplied")
}

contractCallerObj, err := helper.NewContractCaller()
if err != nil {
return err
}

chainmanagerParams, err := util.GetChainmanagerParams(cliCtx)
if err != nil {
return err
}

// get main tx receipt
receipt, err := contractCallerObj.GetConfirmedTxReceipt(hmTypes.HexToHeimdallHash(txhash).EthHash(), chainmanagerParams.MainchainTxConfirmations)
if err != nil || receipt == nil {
return errors.New("Transaction is not confirmed yet. Please wait for sometime and try again")
}

abiObject := &contractCallerObj.StakingInfoABI
eventName := "SignerChange"
event := new(stakinginfo.StakinginfoSignerChange)
found := false
for _, vLog := range receipt.Logs {
topic := vLog.Topics[0].Bytes()
selectedEvent := helper.EventByID(abiObject, topic)
if selectedEvent != nil && selectedEvent.Name == eventName {
if err := helper.UnpackLog(abiObject, event, eventName, vLog); err != nil {
return err
}

found = true
break
}
}

if !found {
return fmt.Errorf("Invalid tx for validator signer change")
}

msg := types.NewMsgSignerUpdate(
proposer,
validator,
Expand Down Expand Up @@ -346,6 +420,43 @@ func SendValidatorStakeUpdateTx(cdc *codec.Codec) *cobra.Command {
return errors.New("Invalid new stake amount")
}

contractCallerObj, err := helper.NewContractCaller()
if err != nil {
return err
}

chainmanagerParams, err := util.GetChainmanagerParams(cliCtx)
if err != nil {
return err
}

// get main tx receipt
receipt, err := contractCallerObj.GetConfirmedTxReceipt(hmTypes.HexToHeimdallHash(txhash).EthHash(), chainmanagerParams.MainchainTxConfirmations)
if err != nil || receipt == nil {
return errors.New("Transaction is not confirmed yet. Please wait for sometime and try again")
}

abiObject := &contractCallerObj.StakingInfoABI
eventName := "StakeUpdate"
event := new(stakinginfo.StakinginfoStakeUpdate)
found := false
for _, vLog := range receipt.Logs {
topic := vLog.Topics[0].Bytes()
selectedEvent := helper.EventByID(abiObject, topic)
if selectedEvent != nil && selectedEvent.Name == eventName {
if err := helper.UnpackLog(abiObject, event, eventName, vLog); err != nil {
return err
}

found = true
break
}
}

if !found {
return fmt.Errorf("Invalid tx for validator stake update")
}

msg := types.NewMsgStakeUpdate(
proposer,
validator,
Expand Down

0 comments on commit a4afbc2

Please sign in to comment.