imp(transfer)!: use AddressCodec instead of Bech32 (backport #8573)#8616
imp(transfer)!: use AddressCodec instead of Bech32 (backport #8573)#8616gjermundgaraba wants to merge 2 commits intorelease/v10.3.xfrom
Conversation
* imp: added address codec to transfer * imp: address codec used in transfer * fix: tests * imp: test passing * imp: added addressCodec to PFM * imp: added receiver test * test: transfer cov * test: added cases * test: more cov * test: more cov * style: single line func def * test: new test works * imp: add basic test * imp: added migration guide * doc: added changelog * refactor: address codec moved
|
|
| var receiver sdk.AccAddress | ||
| var err error | ||
| if k.addressCodec != nil { | ||
| receiver, err = k.addressCodec.StringToBytes(data.Receiver) | ||
| } else { | ||
| receiver, err = sdk.AccAddressFromBech32(data.Receiver) | ||
| } | ||
| if err != nil { | ||
| return errorsmod.Wrapf(ibcerrors.ErrInvalidAddress, "failed to decode receiver address: %s", data.Receiver) |
There was a problem hiding this comment.
The error handling is inconsistent between the original and new code paths. In the original implementation, AccAddressFromBech32 failures were wrapped with the message "failed to decode receiver address". In the new implementation, this error wrapping only occurs after both addressCodec.StringToBytes and AccAddressFromBech32 have failed.
Consider standardizing the error handling by wrapping errors from both code paths consistently:
var receiver sdk.AccAddress
var err error
if k.addressCodec != nil {
receiver, err = k.addressCodec.StringToBytes(data.Receiver)
if err != nil {
return errorsmod.Wrapf(ibcerrors.ErrInvalidAddress, "failed to decode receiver address: %s", data.Receiver)
}
} else {
receiver, err = sdk.AccAddressFromBech32(data.Receiver)
if err != nil {
return errorsmod.Wrapf(ibcerrors.ErrInvalidAddress, "failed to decode receiver address: %s", data.Receiver)
}
}This ensures consistent error messages regardless of which address decoding method is used.
| var receiver sdk.AccAddress | |
| var err error | |
| if k.addressCodec != nil { | |
| receiver, err = k.addressCodec.StringToBytes(data.Receiver) | |
| } else { | |
| receiver, err = sdk.AccAddressFromBech32(data.Receiver) | |
| } | |
| if err != nil { | |
| return errorsmod.Wrapf(ibcerrors.ErrInvalidAddress, "failed to decode receiver address: %s", data.Receiver) | |
| var receiver sdk.AccAddress | |
| var err error | |
| if k.addressCodec != nil { | |
| receiver, err = k.addressCodec.StringToBytes(data.Receiver) | |
| if err != nil { | |
| return errorsmod.Wrapf(ibcerrors.ErrInvalidAddress, "failed to decode receiver address: %s", data.Receiver) | |
| } | |
| } else { | |
| receiver, err = sdk.AccAddressFromBech32(data.Receiver) | |
| if err != nil { | |
| return errorsmod.Wrapf(ibcerrors.ErrInvalidAddress, "failed to decode receiver address: %s", data.Receiver) | |
| } | |
| } |
Spotted by Diamond
Is this helpful? React 👍 or 👎 to let us know.
|
|
Co-authored-by: Gjermund Garaba gjermund@garaba.net
Description
closes: #XXXX
Before we can merge this PR, please make sure that all the following items have been
checked off. If any of the checklist items are not applicable, please leave them but
write a little note why.
docs/) if anything is changed.godoccomments if relevant.Files changedin the GitHub PR explorer.imp: added address codec to transfer
imp: address codec used in transfer
fix: tests
imp: test passing
imp: added addressCodec to PFM
imp: added receiver test
test: transfer cov
test: added cases
test: more cov
test: more cov
style: single line func def
test: new test works
imp: add basic test
imp: added migration guide
doc: added changelog
refactor: address codec moved