From 0855077aba0783ec7f323401da09f5b35d94a965 Mon Sep 17 00:00:00 2001 From: Cal Bera Date: Tue, 9 Jan 2024 11:01:19 -0500 Subject: [PATCH] fix(gov): Add value decoder for attribute key "sender" (#1397) ## Summary by CodeRabbit - **New Features** - Improved governance contract with enhanced address conversion capabilities. - Enhanced telemetry and metrics collection within the application for better performance monitoring. - Expanded Ethereum execution layer functionality with new backend integration. - **Refactor** - Streamlined configuration initialization for improved application setup. --------- Co-authored-by: ocnc Co-authored-by: itsdevbear --- cosmos/precompile/governance/governance.go | 8 ++++++++ cosmos/precompile/governance/governance_test.go | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/cosmos/precompile/governance/governance.go b/cosmos/precompile/governance/governance.go index 167b41730..fbe3def96 100644 --- a/cosmos/precompile/governance/governance.go +++ b/cosmos/precompile/governance/governance.go @@ -82,6 +82,7 @@ func (c *Contract) CustomValueDecoders() ethprecompile.ValueDecoders { return ethprecompile.ValueDecoders{ AttributeProposalSender: log.ConvertCommonHexAddress, AttributeProposalVote: ConvertStringToVote, + sdk.AttributeKeySender: c.ConvertAccAddressFromString, } } @@ -564,3 +565,10 @@ func ConvertStringToVote(attributeValue string) (any, error) { } return vote, nil } + +// ConvertAccAddressFromString converts a Cosmos string representing a account address to a +// common.Address. +func (c *Contract) ConvertAccAddressFromString(attributeValue string) (any, error) { + // extract the sdk.AccAddress from string value as common.Address + return cosmlib.EthAddressFromString(c.addressCodec, attributeValue) +} diff --git a/cosmos/precompile/governance/governance_test.go b/cosmos/precompile/governance/governance_test.go index 7f7e551a2..95e598430 100644 --- a/cosmos/precompile/governance/governance_test.go +++ b/cosmos/precompile/governance/governance_test.go @@ -107,7 +107,7 @@ var _ = Describe("Governance Precompile", func() { It("Should have precompile tests and custom value decoders", func() { _, err := sf.Build(contract, nil) Expect(err).ToNot(HaveOccurred()) - Expect(contract.CustomValueDecoders()).To(HaveLen(2)) + Expect(contract.CustomValueDecoders()).To(HaveLen(3)) }) When("Unmarshal message and return any", func() {