From 0c329a45e38abe4d4c1d36d259282b135a8d4245 Mon Sep 17 00:00:00 2001 From: Bernardo Ramos Date: Fri, 31 May 2024 16:49:33 -0300 Subject: [PATCH] accept account key (32 bytes) on GetState --- chain/chainservice.go | 9 +++++++-- cmd/aergocli/cmd/getstate.go | 13 +++++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/chain/chainservice.go b/chain/chainservice.go index d69fd8af7..f0ccb7bfc 100644 --- a/chain/chainservice.go +++ b/chain/chainservice.go @@ -713,7 +713,7 @@ func getAddressNameResolved(sdb *statedb.StateDB, account []byte) ([]byte, error if len(account) == types.NameLength { scs, err := statedb.GetNameAccountState(sdb) if err != nil { - logger.Error().Str("hash", base58.Encode(account)).Err(err).Msg("failed to get state for account") + logger.Error().Str("hash", base58.Encode(account)).Err(err).Msg("failed to get state for name account") return nil, err } return name.GetAddress(scs, account), nil @@ -770,7 +770,12 @@ func (cw *ChainWorker) Receive(context actor.Context) { }) return } - id := types.ToAccountID(address) + var id types.AccountID + if len(address) == 32 { + id = types.AccountID(types.ToHashID(address)) + } else { + id = types.ToAccountID(address) + } accState, err := sdb.GetAccountState(id) if err != nil { logger.Error().Str("hash", base58.Encode(address)).Err(err).Msg("failed to get state for account") diff --git a/cmd/aergocli/cmd/getstate.go b/cmd/aergocli/cmd/getstate.go index e30f80533..6dafe27c9 100644 --- a/cmd/aergocli/cmd/getstate.go +++ b/cmd/aergocli/cmd/getstate.go @@ -8,6 +8,7 @@ package cmd import ( "context" + "github.com/aergoio/aergo/v2/internal/enc/hex" "github.com/aergoio/aergo/v2/internal/enc/base58" "github.com/aergoio/aergo/v2/types" "github.com/aergoio/aergo/v2/types/jsonrpc" @@ -21,7 +22,7 @@ var getstateCmd = &cobra.Command{ } func init() { - getstateCmd.Flags().StringVar(&address, "address", "", "Get state from the address") + getstateCmd.Flags().StringVar(&address, "address", "", "Get state from the address or hex key") getstateCmd.MarkFlagRequired("address") getstateCmd.Flags().StringVar(&stateroot, "root", "", "Get the state at a specified state root") getstateCmd.Flags().BoolVar(&proof, "proof", false, "Get the proof for the state") @@ -33,7 +34,9 @@ func init() { func execGetState(cmd *cobra.Command, args []string) { var root []byte + var addr []byte var err error + if len(stateroot) != 0 { root, err = base58.Decode(stateroot) if err != nil { @@ -41,11 +44,17 @@ func execGetState(cmd *cobra.Command, args []string) { return } } - addr, err := types.DecodeAddress(address) + + if len(address) == 64 { + addr, err = hex.Decode(address) + } else { + addr, err = types.DecodeAddress(address) + } if err != nil { cmd.Printf("Failed: %s\n", err.Error()) return } + if staking { msg, err := client.GetStaking(context.Background(), &types.AccountAddress{Value: addr})