Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat!: Add bech32 prefix to authkeeper #9759

Merged
merged 73 commits into from
Aug 25, 2021
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
030fc2c
first draft
cyberbono3 Jul 20, 2021
556810d
tests pass
cyberbono3 Jul 23, 2021
8ec7872
add DefaultBech32Prefix
cyberbono3 Jul 23, 2021
52ec23d
add comments to auth/query.proto
cyberbono3 Jul 23, 2021
e636781
set sdk.Bech32MainPrefix argument in NewAccountKeeeper()
cyberbono3 Jul 26, 2021
9788e2c
update x/auth/atlas/atlas-v0.39.1.md
cyberbono3 Jul 26, 2021
3fcd6c3
fix TestBech32Prefix
cyberbono3 Jul 26, 2021
64f031f
fix tests
cyberbono3 Jul 26, 2021
befc823
Merge branch 'master' of https://github.com/cosmos/cosmos-sdk into cy…
cyberbono3 Jul 26, 2021
413cf7a
gofmt
cyberbono3 Jul 26, 2021
d9be317
update atlas-v0.39.1.md
cyberbono3 Jul 26, 2021
1dd726b
Merge branch 'master' into cyberbono3/add-bech32Prefix-to-authkeeper
cyberbono3 Jul 26, 2021
6a42f00
draft
cyberbono3 Jul 29, 2021
2861b30
Merge branch 'cyberbono3/add-bech32Prefix-to-authkeeper' of https://g…
cyberbono3 Jul 29, 2021
704b006
WIP applying aaron suggestions
cyberbono3 Jul 29, 2021
2459aa0
tests pass
cyberbono3 Aug 2, 2021
54945f1
apply aaron suggestions
cyberbono3 Aug 2, 2021
5992482
update proto comments
cyberbono3 Aug 2, 2021
1734485
update AddressBytesToString signature
cyberbono3 Aug 2, 2021
0cae2b4
add changelog entry for NewAccountKeeper API breaking change
cyberbono3 Aug 3, 2021
743b73c
introduce ConvertAddressStringToBytes and ConvertAddressBytesToString…
cyberbono3 Aug 4, 2021
d602c76
merge master into my branch and resolve conflicts
cyberbono3 Aug 4, 2021
0b5d411
revert unnecessary changes
cyberbono3 Aug 4, 2021
1a552d7
remove unnecessary code
cyberbono3 Aug 4, 2021
366e589
update codec comments
cyberbono3 Aug 4, 2021
ac607ee
address lint issues
cyberbono3 Aug 4, 2021
6cde687
Update CHANGELOG.md
cyberbono3 Aug 5, 2021
4f84700
Update proto/cosmos/auth/v1beta1/query.proto
cyberbono3 Aug 5, 2021
8d223e1
Update proto/cosmos/auth/v1beta1/query.proto
cyberbono3 Aug 5, 2021
9696a52
Update proto/cosmos/auth/v1beta1/query.proto
cyberbono3 Aug 5, 2021
888cf80
Update proto/cosmos/auth/v1beta1/query.proto
cyberbono3 Aug 5, 2021
afb95d5
Update types/address/codec.go
cyberbono3 Aug 5, 2021
21d3090
Update proto/cosmos/auth/v1beta1/query.proto
cyberbono3 Aug 5, 2021
404b31f
Update x/auth/keeper/keeper.go
cyberbono3 Aug 5, 2021
9c5941d
proto-gen
cyberbono3 Aug 5, 2021
7b77ced
apply reviewer comments
cyberbono3 Aug 5, 2021
acf5525
minor fixes
cyberbono3 Aug 5, 2021
c544184
implement VerifyFormat
cyberbono3 Aug 5, 2021
903cd03
Update CHANGELOG.md
cyberbono3 Aug 6, 2021
3afebd7
Update types/address/codec.go
cyberbono3 Aug 6, 2021
9289089
fix grpc query tests
cyberbono3 Aug 9, 2021
ecc5c3e
let VerifyAddressFormat call VerifyFormat
cyberbono3 Aug 9, 2021
570332c
gofmt
cyberbono3 Aug 9, 2021
aea81bc
rename address.Codec methods
cyberbono3 Aug 10, 2021
3d48438
proto gen
cyberbono3 Aug 10, 2021
e6ed444
remove TestCustomAddressVerifier
cyberbono3 Aug 11, 2021
e45fb18
Merge branch 'master' into cyberbono3/add-bech32Prefix-to-authkeeper
cyberbono3 Aug 12, 2021
76f9c8a
revert global GetConfig and TestCustomAddressVerifier
cyberbono3 Aug 15, 2021
35600c5
use sdkerrors in keeper.go
cyberbono3 Aug 17, 2021
e31297b
Update CHANGELOG.md
cyberbono3 Aug 18, 2021
9efcf4a
Update types/address.go
cyberbono3 Aug 18, 2021
60cf6e7
rename address codec interface methods
cyberbono3 Aug 18, 2021
293bdf1
move bech32_codec logic into separate file
cyberbono3 Aug 18, 2021
31bac6d
remove VerifyFormat
cyberbono3 Aug 19, 2021
12106d3
Update types/address/codec.go
cyberbono3 Aug 20, 2021
74cdb60
Update types/address/codec.go
cyberbono3 Aug 20, 2021
49f1858
add ref to VerifyAddressFormat TODO
cyberbono3 Aug 20, 2021
f12c44b
Merge branch 'master' of https://github.com/cosmos/cosmos-sdk into cy…
cyberbono3 Aug 20, 2021
3678bce
Update types/address/codec.go
cyberbono3 Aug 24, 2021
53844bb
Update x/auth/keeper/keeper.go
cyberbono3 Aug 24, 2021
b3fb3bd
Fix comments
amaury1093 Aug 24, 2021
131de71
Update x/auth/keeper/keeper.go
cyberbono3 Aug 24, 2021
b32ce72
Update x/auth/keeper/grpc_query_test.go
cyberbono3 Aug 24, 2021
acc6675
Update x/auth/keeper/keeper.go
cyberbono3 Aug 24, 2021
0b27c66
Update x/auth/keeper/keeper.go
cyberbono3 Aug 24, 2021
d4267bf
Update x/auth/keeper/grpc_query_test.go
cyberbono3 Aug 24, 2021
9aae756
Update x/auth/keeper/grpc_query_test.go
cyberbono3 Aug 24, 2021
3d2d5b0
address reviewer comments
cyberbono3 Aug 24, 2021
5d0ba44
Update x/auth/keeper/keeper.go
cyberbono3 Aug 25, 2021
a351a89
Update x/auth/keeper/grpc_query_test.go
cyberbono3 Aug 25, 2021
aa76cbc
Update x/auth/keeper/grpc_query_test.go
cyberbono3 Aug 25, 2021
fb9e5a3
apply reviewer comments
cyberbono3 Aug 25, 2021
4d2a866
Merge branch 'master' into cyberbono3/add-bech32Prefix-to-authkeeper
amaury1093 Aug 25, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 94 additions & 0 deletions docs/core/proto-docs.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,12 @@
- [PageResponse](#cosmos.base.query.v1beta1.PageResponse)

- [cosmos/auth/v1beta1/query.proto](#cosmos/auth/v1beta1/query.proto)
- [AccAddrFromBech32Request](#cosmos.auth.v1beta1.AccAddrFromBech32Request)
- [AccAddrFromBech32Response](#cosmos.auth.v1beta1.AccAddrFromBech32Response)
- [Bech32FromAccAddrRequest](#cosmos.auth.v1beta1.Bech32FromAccAddrRequest)
- [Bech32FromAccAddrResponse](#cosmos.auth.v1beta1.Bech32FromAccAddrResponse)
- [Bech32PrefixRequest](#cosmos.auth.v1beta1.Bech32PrefixRequest)
- [Bech32PrefixResponse](#cosmos.auth.v1beta1.Bech32PrefixResponse)
- [QueryAccountRequest](#cosmos.auth.v1beta1.QueryAccountRequest)
- [QueryAccountResponse](#cosmos.auth.v1beta1.QueryAccountResponse)
- [QueryAccountsRequest](#cosmos.auth.v1beta1.QueryAccountsRequest)
Expand Down Expand Up @@ -836,6 +842,91 @@ corresponding request message has used PageRequest.



<a name="cosmos.auth.v1beta1.AccAddrFromBech32Request"></a>

### AccAddrFromBech32Request



| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `bech32` | [string](#string) | | |






<a name="cosmos.auth.v1beta1.AccAddrFromBech32Response"></a>

### AccAddrFromBech32Response



| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `account_addr` | [bytes](#bytes) | | |






<a name="cosmos.auth.v1beta1.Bech32FromAccAddrRequest"></a>

### Bech32FromAccAddrRequest



| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `account_addr` | [bytes](#bytes) | | |






<a name="cosmos.auth.v1beta1.Bech32FromAccAddrResponse"></a>

### Bech32FromAccAddrResponse



| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `bech32` | [string](#string) | | |






<a name="cosmos.auth.v1beta1.Bech32PrefixRequest"></a>

### Bech32PrefixRequest







<a name="cosmos.auth.v1beta1.Bech32PrefixResponse"></a>

### Bech32PrefixResponse



| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `bech32_prefix` | [string](#string) | | |






<a name="cosmos.auth.v1beta1.QueryAccountRequest"></a>

### QueryAccountRequest
Expand Down Expand Up @@ -938,6 +1029,9 @@ Query defines the gRPC querier service.
| `Accounts` | [QueryAccountsRequest](#cosmos.auth.v1beta1.QueryAccountsRequest) | [QueryAccountsResponse](#cosmos.auth.v1beta1.QueryAccountsResponse) | Accounts returns all the existing accounts | GET|/cosmos/auth/v1beta1/accounts|
| `Account` | [QueryAccountRequest](#cosmos.auth.v1beta1.QueryAccountRequest) | [QueryAccountResponse](#cosmos.auth.v1beta1.QueryAccountResponse) | Account returns account details based on address. | GET|/cosmos/auth/v1beta1/accounts/{address}|
| `Params` | [QueryParamsRequest](#cosmos.auth.v1beta1.QueryParamsRequest) | [QueryParamsResponse](#cosmos.auth.v1beta1.QueryParamsResponse) | Params queries all parameters. | GET|/cosmos/auth/v1beta1/params|
| `Bech32Prefix` | [Bech32PrefixRequest](#cosmos.auth.v1beta1.Bech32PrefixRequest) | [Bech32PrefixResponse](#cosmos.auth.v1beta1.Bech32PrefixResponse) | Bech32 queries bech32Prefix | GET|/cosmos/auth/v1beta1/bech32|
| `Bech32FromAccAddr` | [Bech32FromAccAddrRequest](#cosmos.auth.v1beta1.Bech32FromAccAddrRequest) | [Bech32FromAccAddrResponse](#cosmos.auth.v1beta1.Bech32FromAccAddrResponse) | Bech32FromAccAddr converts Bech32 to Account string | GET|/cosmos/auth/v1beta1/bech32|
| `AccAddrFromBech32` | [AccAddrFromBech32Request](#cosmos.auth.v1beta1.AccAddrFromBech32Request) | [AccAddrFromBech32Response](#cosmos.auth.v1beta1.AccAddrFromBech32Response) | AccAddrFromBech32 converts Account string to Bech32 | GET|/cosmos/auth/v1beta1/bech32|

<!-- end services -->

Expand Down
43 changes: 43 additions & 0 deletions proto/cosmos/auth/v1beta1/query.proto
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,21 @@ service Query {
rpc Params(QueryParamsRequest) returns (QueryParamsResponse) {
option (google.api.http).get = "/cosmos/auth/v1beta1/params";
}

// Bech32 queries bech32Prefix
rpc Bech32Prefix(Bech32PrefixRequest) returns (Bech32PrefixResponse) {
option (google.api.http).get = "/cosmos/auth/v1beta1/bech32";
}

// Bech32FromAccAddr converts Bech32 to Account string
rpc Bech32FromAccAddr(Bech32FromAccAddrRequest) returns (Bech32FromAccAddrResponse) {
option (google.api.http).get = "/cosmos/auth/v1beta1/bech32";
cyberbono3 marked this conversation as resolved.
Show resolved Hide resolved
}

// AccAddrFromBech32 converts Account string to Bech32
rpc AccAddrFromBech32(AccAddrFromBech32Request) returns (AccAddrFromBech32Response) {
option (google.api.http).get = "/cosmos/auth/v1beta1/bech32";
}
}

// QueryAccountsRequest is the request type for the Query/Accounts RPC method.
Expand Down Expand Up @@ -66,3 +81,31 @@ message QueryParamsResponse {
// params defines the parameters of the module.
Params params = 1 [(gogoproto.nullable) = false];
}

// Bech32PrefixRequest is the request type for Bech32Prefix rpc method
message Bech32PrefixRequest {}

// Bech32PrefixResponse is the response type for Bech32Prefix rpc method
message Bech32PrefixResponse {
string bech32_prefix = 1;
}

// Bech32FromAccAddrRequest is the request type for Bech32FromAccAddr rpc method
message Bech32FromAccAddrRequest {
bytes account_addr = 1;
cyberbono3 marked this conversation as resolved.
Show resolved Hide resolved
}

// Bech32FromAccAddrResponse is the response type for Bech32FromAccAddr rpc method
message Bech32FromAccAddrResponse {
string bech32 = 1;
}

// AccAddrFromBech32Request is the request type for AccAddrFromBech32 rpc method
message AccAddrFromBech32Request {
string bech32 = 1;
}

// AccAddrFromBech32Response is the response type for AccAddrFromBech32 rpc method
message AccAddrFromBech32Response {
bytes account_addr = 1;
cyberbono3 marked this conversation as resolved.
Show resolved Hide resolved
}
7 changes: 5 additions & 2 deletions simapp/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,10 @@ import (
_ "github.com/cosmos/cosmos-sdk/client/docs/statik"
)

const appName = "SimApp"
const (
appName = "SimApp"
DefaultBech32Prefix = "cosmos"
)

var (
// DefaultNodeHome default home directories for the application daemon
Expand Down Expand Up @@ -230,7 +233,7 @@ func NewSimApp(

// add keepers
app.AccountKeeper = authkeeper.NewAccountKeeper(
appCodec, keys[authtypes.StoreKey], app.GetSubspace(authtypes.ModuleName), authtypes.ProtoBaseAccount, maccPerms,
appCodec, keys[authtypes.StoreKey], app.GetSubspace(authtypes.ModuleName), DefaultBech32Prefix, authtypes.ProtoBaseAccount, maccPerms,
cyberbono3 marked this conversation as resolved.
Show resolved Hide resolved
)
app.BankKeeper = bankkeeper.NewBaseKeeper(
appCodec, keys[banktypes.StoreKey], app.AccountKeeper, app.GetSubspace(banktypes.ModuleName), app.ModuleAccountAddrs(),
Expand Down
2 changes: 1 addition & 1 deletion x/auth/atlas/atlas-v0.39.1.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ account types for an application, as well as AnteHandler and authentication logi
func NewApp(...) *App {
// ...
app.AccountKeeper = auth.NewAccountKeeper(
app.cdc, keys[auth.StoreKey], app.subspaces[auth.ModuleName], auth.ProtoBaseAccount,
app.cdc, keys[auth.StoreKey], app.subspaces[auth.ModuleName], DefaultBech32Prefix, auth.ProtoBaseAccount,
cyberbono3 marked this conversation as resolved.
Show resolved Hide resolved
)
}
```
Expand Down
46 changes: 46 additions & 0 deletions x/auth/keeper/grpc_query.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,12 @@ package keeper

import (
"context"
"errors"
"strings"

"github.com/cosmos/cosmos-sdk/store/prefix"
"github.com/cosmos/cosmos-sdk/types/query"
"github.com/cosmos/cosmos-sdk/types/bech32"

"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
Expand Down Expand Up @@ -83,3 +86,46 @@ func (ak AccountKeeper) Params(c context.Context, req *types.QueryParamsRequest)

return &types.QueryParamsResponse{Params: params}, nil
}

func (ak AccountKeeper) Bech32Prefix(ctx context.Context, req *types.Bech32PrefixRequest) (*types.Bech32PrefixResponse, error) {
bech32Prefix := ak.GetBech32Prefix()
return &types.Bech32PrefixResponse{Bech32Prefix: bech32Prefix}, nil
}

func (ak AccountKeeper) Bech32FromAccAddr(ctx context.Context, req *types.Bech32FromAccAddrRequest) (*types.Bech32FromAccAddrResponse, error) {
if req == nil {
return nil, status.Errorf(codes.InvalidArgument, "empty request")
}

if len(req.AccountAddr) == 0 {
return nil, errors.New("empty bech32 string is not allowed")
}

bech32,err := bech32.ConvertAndEncode(ak.bech32Prefix, req.AccountAddr)
if err != nil {
return nil, err
}

return &types.Bech32FromAccAddrResponse{Bech32: bech32},nil
}

func (ak AccountKeeper) AccAddrFromBech32(ctx context.Context, req *types.AccAddrFromBech32Request) (*types.AccAddrFromBech32Response, error) {
if req == nil {
return nil, status.Errorf(codes.InvalidArgument, "empty request")
}

if len(strings.TrimSpace(req.Bech32)) == 0 {
return nil, errors.New("empty bech32 string is not allowed")
}

_, bz, err := bech32.DecodeAndConvert(req.Bech32)
if err != nil {
return nil, err
}

if err := sdk.VerifyAddressFormat(bz); err != nil {
return nil, err
}

return &types.AccAddrFromBech32Response{AccountAddr: bz},nil
}
Loading