rpc: fix balance overflow (#219)

Closes #218
This commit is contained in:
yihuang 2021-07-02 17:29:47 +08:00 committed by GitHub
parent f7d975ada2
commit 6e983a9da1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 408 additions and 187 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -390,7 +390,7 @@ QueryAccountResponse is the response type for the Query/Account RPC method.
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| `balance` | [int64](#int64) | | balance is the balance of the EVM denomination. | | `balance` | [string](#string) | | balance is the balance of the EVM denomination. |
| `code_hash` | [string](#string) | | code hash is the hex-formatted code bytes from the EOA. | | `code_hash` | [string](#string) | | code hash is the hex-formatted code bytes from the EOA. |
| `nonce` | [uint64](#uint64) | | nonce is the account's sequence number. | | `nonce` | [uint64](#uint64) | | nonce is the account's sequence number. |
@ -422,7 +422,7 @@ QueryBalanceResponse is the response type for the Query/Balance RPC method.
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| `balance` | [int64](#int64) | | balance is the balance of the EVM denomination. | | `balance` | [string](#string) | | balance is the balance of the EVM denomination. |

View File

@ -215,7 +215,12 @@ func (e *PublicAPI) GetBalance(address common.Address, blockNum rpctypes.BlockNu
return nil, err return nil, err
} }
return (*hexutil.Big)(big.NewInt(res.Balance)), nil val, ok := sdk.NewIntFromString(res.Balance)
if !ok {
return nil, errors.New("invalid balance")
}
return (*hexutil.Big)(val.BigInt()), nil
} }
// GetStorageAt returns the contract storage at the given address, block number, and key. // GetStorageAt returns the contract storage at the given address, block number, and key.
@ -992,10 +997,15 @@ func (e *PublicAPI) GetProof(address common.Address, storageKeys []string, block
accProofStr = proof.String() accProofStr = proof.String()
} }
balance, ok := sdk.NewIntFromString(res.Balance)
if !ok {
return nil, errors.New("invalid balance")
}
return &rpctypes.AccountResult{ return &rpctypes.AccountResult{
Address: address, Address: address,
AccountProof: []string{accProofStr}, AccountProof: []string{accProofStr},
Balance: (*hexutil.Big)(big.NewInt(res.Balance)), Balance: (*hexutil.Big)(balance.BigInt()),
CodeHash: common.HexToHash(res.CodeHash), CodeHash: common.HexToHash(res.CodeHash),
Nonce: hexutil.Uint64(res.Nonce), Nonce: hexutil.Uint64(res.Nonce),
StorageHash: common.Hash{}, // NOTE: Ethermint doesn't have a storage hash. TODO: implement? StorageHash: common.Hash{}, // NOTE: Ethermint doesn't have a storage hash. TODO: implement?

View File

@ -79,7 +79,7 @@ message QueryAccountRequest {
// QueryAccountResponse is the response type for the Query/Account RPC method. // QueryAccountResponse is the response type for the Query/Account RPC method.
message QueryAccountResponse { message QueryAccountResponse {
// balance is the balance of the EVM denomination. // balance is the balance of the EVM denomination.
int64 balance = 1; string balance = 1;
// code hash is the hex-formatted code bytes from the EOA. // code hash is the hex-formatted code bytes from the EOA.
string code_hash = 2; string code_hash = 2;
// nonce is the account's sequence number. // nonce is the account's sequence number.
@ -136,7 +136,7 @@ message QueryBalanceRequest {
// QueryBalanceResponse is the response type for the Query/Balance RPC method. // QueryBalanceResponse is the response type for the Query/Balance RPC method.
message QueryBalanceResponse { message QueryBalanceResponse {
// balance is the balance of the EVM denomination. // balance is the balance of the EVM denomination.
int64 balance = 1; string balance = 1;
} }
// QueryStorageRequest is the request type for the Query/Storage RPC method. // QueryStorageRequest is the request type for the Query/Storage RPC method.

View File

@ -36,7 +36,7 @@ func (k Keeper) Account(c context.Context, req *types.QueryAccountRequest) (*typ
k.WithContext(ctx) k.WithContext(ctx)
return &types.QueryAccountResponse{ return &types.QueryAccountResponse{
Balance: k.GetBalance(addr).Int64(), Balance: k.GetBalance(addr).String(),
CodeHash: k.GetCodeHash(addr).Hex(), CodeHash: k.GetCodeHash(addr).Hex(),
Nonce: k.GetNonce(addr), Nonce: k.GetNonce(addr),
}, nil }, nil
@ -127,7 +127,7 @@ func (k Keeper) Balance(c context.Context, req *types.QueryBalanceRequest) (*typ
balanceInt := k.GetBalance(ethcmn.HexToAddress(req.Address)) balanceInt := k.GetBalance(ethcmn.HexToAddress(req.Address))
return &types.QueryBalanceResponse{ return &types.QueryBalanceResponse{
Balance: balanceInt.Int64(), Balance: balanceInt.String(),
}, nil }, nil
} }

View File

@ -36,7 +36,7 @@ func (suite *KeeperTestSuite) TestQueryAccount() {
"invalid address", "invalid address",
func() { func() {
expAccount = &types.QueryAccountResponse{ expAccount = &types.QueryAccountResponse{
Balance: 0, Balance: "0",
CodeHash: common.BytesToHash(ethcrypto.Keccak256(nil)).Hex(), CodeHash: common.BytesToHash(ethcrypto.Keccak256(nil)).Hex(),
Nonce: 0, Nonce: 0,
} }
@ -56,7 +56,7 @@ func (suite *KeeperTestSuite) TestQueryAccount() {
suite.Require().NoError(err) suite.Require().NoError(err)
expAccount = &types.QueryAccountResponse{ expAccount = &types.QueryAccountResponse{
Balance: 100, Balance: "100",
CodeHash: common.BytesToHash(ethcrypto.Keccak256(nil)).Hex(), CodeHash: common.BytesToHash(ethcrypto.Keccak256(nil)).Hex(),
Nonce: 0, Nonce: 0,
} }
@ -168,7 +168,7 @@ func (suite *KeeperTestSuite) TestQueryCosmosAccount() {
func (suite *KeeperTestSuite) TestQueryBalance() { func (suite *KeeperTestSuite) TestQueryBalance() {
var ( var (
req *types.QueryBalanceRequest req *types.QueryBalanceRequest
expBalance int64 expBalance string
) )
testCases := []struct { testCases := []struct {
@ -178,7 +178,7 @@ func (suite *KeeperTestSuite) TestQueryBalance() {
}{ }{
{"invalid address", {"invalid address",
func() { func() {
expBalance = 0 expBalance = "0"
req = &types.QueryBalanceRequest{ req = &types.QueryBalanceRequest{
Address: invalidAddress, Address: invalidAddress,
} }
@ -194,7 +194,7 @@ func (suite *KeeperTestSuite) TestQueryBalance() {
err = suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, suite.address.Bytes(), amt) err = suite.app.BankKeeper.SendCoinsFromModuleToAccount(suite.ctx, types.ModuleName, suite.address.Bytes(), amt)
suite.Require().NoError(err) suite.Require().NoError(err)
expBalance = 100 expBalance = "100"
req = &types.QueryBalanceRequest{ req = &types.QueryBalanceRequest{
Address: suite.address.String(), Address: suite.address.String(),
} }

View File

@ -72,7 +72,7 @@ var xxx_messageInfo_QueryAccountRequest proto.InternalMessageInfo
// QueryAccountResponse is the response type for the Query/Account RPC method. // QueryAccountResponse is the response type for the Query/Account RPC method.
type QueryAccountResponse struct { type QueryAccountResponse struct {
// balance is the balance of the EVM denomination. // balance is the balance of the EVM denomination.
Balance int64 `protobuf:"varint,1,opt,name=balance,proto3" json:"balance,omitempty"` Balance string `protobuf:"bytes,1,opt,name=balance,proto3" json:"balance,omitempty"`
// code hash is the hex-formatted code bytes from the EOA. // code hash is the hex-formatted code bytes from the EOA.
CodeHash string `protobuf:"bytes,2,opt,name=code_hash,json=codeHash,proto3" json:"code_hash,omitempty"` CodeHash string `protobuf:"bytes,2,opt,name=code_hash,json=codeHash,proto3" json:"code_hash,omitempty"`
// nonce is the account's sequence number. // nonce is the account's sequence number.
@ -112,11 +112,11 @@ func (m *QueryAccountResponse) XXX_DiscardUnknown() {
var xxx_messageInfo_QueryAccountResponse proto.InternalMessageInfo var xxx_messageInfo_QueryAccountResponse proto.InternalMessageInfo
func (m *QueryAccountResponse) GetBalance() int64 { func (m *QueryAccountResponse) GetBalance() string {
if m != nil { if m != nil {
return m.Balance return m.Balance
} }
return 0 return ""
} }
func (m *QueryAccountResponse) GetCodeHash() string { func (m *QueryAccountResponse) GetCodeHash() string {
@ -381,7 +381,7 @@ var xxx_messageInfo_QueryBalanceRequest proto.InternalMessageInfo
// QueryBalanceResponse is the response type for the Query/Balance RPC method. // QueryBalanceResponse is the response type for the Query/Balance RPC method.
type QueryBalanceResponse struct { type QueryBalanceResponse struct {
// balance is the balance of the EVM denomination. // balance is the balance of the EVM denomination.
Balance int64 `protobuf:"varint,1,opt,name=balance,proto3" json:"balance,omitempty"` Balance string `protobuf:"bytes,1,opt,name=balance,proto3" json:"balance,omitempty"`
} }
func (m *QueryBalanceResponse) Reset() { *m = QueryBalanceResponse{} } func (m *QueryBalanceResponse) Reset() { *m = QueryBalanceResponse{} }
@ -417,11 +417,11 @@ func (m *QueryBalanceResponse) XXX_DiscardUnknown() {
var xxx_messageInfo_QueryBalanceResponse proto.InternalMessageInfo var xxx_messageInfo_QueryBalanceResponse proto.InternalMessageInfo
func (m *QueryBalanceResponse) GetBalance() int64 { func (m *QueryBalanceResponse) GetBalance() string {
if m != nil { if m != nil {
return m.Balance return m.Balance
} }
return 0 return ""
} }
// QueryStorageRequest is the request type for the Query/Storage RPC method. // QueryStorageRequest is the request type for the Query/Storage RPC method.
@ -1077,77 +1077,77 @@ func init() {
} }
var fileDescriptor_8bbc79ec2b6c5cb2 = []byte{ var fileDescriptor_8bbc79ec2b6c5cb2 = []byte{
// 1119 bytes of a gzipped FileDescriptorProto // 1117 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x97, 0x4d, 0x6f, 0x1b, 0x45, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x97, 0x4d, 0x6f, 0x1b, 0x45,
0x18, 0xc7, 0xbd, 0x8d, 0x13, 0x27, 0x4f, 0x12, 0x08, 0x83, 0x29, 0x61, 0x5b, 0x9c, 0xb0, 0xa8, 0x18, 0xc7, 0xbd, 0x8d, 0x13, 0x27, 0x4f, 0x12, 0x08, 0x83, 0x29, 0x61, 0x5b, 0x9c, 0xb0, 0xa8,
0xb1, 0xf3, 0xd2, 0xdd, 0xda, 0xbc, 0x95, 0x0a, 0x09, 0xe2, 0x4a, 0xa1, 0x52, 0x2b, 0x54, 0x9c, 0xb1, 0xf3, 0xd2, 0x9d, 0xda, 0xbc, 0x95, 0x0a, 0x09, 0xe2, 0x4a, 0xa1, 0x52, 0x2b, 0x54, 0x9c,
0x8a, 0x03, 0x17, 0x6b, 0xbc, 0x1e, 0xad, 0xad, 0xac, 0x77, 0xdc, 0x9d, 0xb5, 0x95, 0x28, 0xca, 0x8a, 0x03, 0x17, 0x6b, 0xbc, 0x5e, 0xad, 0xad, 0xac, 0x77, 0xdc, 0x9d, 0xb5, 0x95, 0x28, 0xca,
0x85, 0x03, 0x02, 0xc1, 0x01, 0xc4, 0x01, 0x84, 0x84, 0xd4, 0x2b, 0x37, 0xbe, 0x02, 0xb7, 0x1e, 0x85, 0x03, 0x02, 0xc1, 0x01, 0xc4, 0x01, 0x84, 0x84, 0xd4, 0x2b, 0x37, 0xbe, 0x02, 0xb7, 0x1e,
0x2b, 0x71, 0xe1, 0x80, 0x10, 0x4a, 0x38, 0xf0, 0x31, 0xd0, 0xbc, 0xac, 0xbd, 0x6b, 0x7b, 0xbd, 0x2b, 0x71, 0xe1, 0x80, 0x10, 0x4a, 0x38, 0xf0, 0x31, 0xd0, 0xbc, 0xac, 0xbd, 0x6b, 0x7b, 0xbd,
0x0e, 0xe2, 0x36, 0x33, 0x7e, 0x5e, 0x7e, 0xcf, 0x33, 0xcf, 0xce, 0x5f, 0x06, 0x83, 0x04, 0x2d, 0x0e, 0xe2, 0x36, 0x33, 0xfb, 0xbc, 0xfc, 0x9e, 0x67, 0x1e, 0xcf, 0x5f, 0x06, 0xc3, 0x0e, 0x5a,
0xe2, 0x77, 0xda, 0x5e, 0x60, 0x91, 0x7e, 0xc7, 0xea, 0x97, 0xb1, 0xdb, 0x6d, 0xe1, 0xb2, 0xf5, 0xb6, 0xdf, 0x69, 0x7b, 0x01, 0xb6, 0xfb, 0x1d, 0xdc, 0x2f, 0x13, 0xb7, 0xdb, 0x22, 0x65, 0xfc,
0xb8, 0x47, 0xfc, 0x13, 0xb3, 0xeb, 0xd3, 0x80, 0xa2, 0xab, 0x03, 0x1b, 0x93, 0xf4, 0x3b, 0x66, 0xb8, 0x67, 0xfb, 0x27, 0x66, 0xd7, 0xa7, 0x01, 0x45, 0x57, 0x07, 0x36, 0xa6, 0xdd, 0xef, 0x98,
0x68, 0xa3, 0xe7, 0x1d, 0xea, 0x50, 0x61, 0x62, 0xf1, 0x95, 0xb4, 0xd6, 0x77, 0x6c, 0xca, 0x3a, 0xa1, 0x8d, 0x9e, 0x77, 0xa8, 0x43, 0x85, 0x09, 0xe6, 0x2b, 0x69, 0xad, 0xef, 0x58, 0x94, 0x75,
0x94, 0x59, 0x0d, 0xcc, 0x88, 0x0c, 0x63, 0xf5, 0xcb, 0x0d, 0x12, 0xe0, 0xb2, 0xd5, 0xc5, 0x4e, 0x28, 0xc3, 0x0d, 0xc2, 0x6c, 0x19, 0x06, 0xf7, 0xcb, 0x0d, 0x3b, 0x20, 0x65, 0xdc, 0x25, 0x4e,
0xdb, 0xc3, 0x41, 0x9b, 0x7a, 0xca, 0xf6, 0xba, 0x43, 0xa9, 0xe3, 0x12, 0x0b, 0x77, 0xdb, 0x16, 0xdb, 0x23, 0x41, 0x9b, 0x7a, 0xca, 0xf6, 0xba, 0x43, 0xa9, 0xe3, 0xda, 0x98, 0x74, 0xdb, 0x98,
0xf6, 0x3c, 0x1a, 0x88, 0x1f, 0x99, 0xfa, 0x75, 0x33, 0x81, 0x8d, 0x43, 0x08, 0x0b, 0xe3, 0x5d, 0x78, 0x1e, 0x0d, 0xc4, 0x47, 0xa6, 0xbe, 0x6e, 0x26, 0xb0, 0x71, 0x08, 0x61, 0x61, 0xbc, 0x0b,
0x78, 0xf1, 0x63, 0x9e, 0x61, 0xdf, 0xb6, 0x69, 0xcf, 0x0b, 0x6a, 0xe4, 0x71, 0x8f, 0xb0, 0x00, 0x2f, 0x7e, 0xcc, 0x33, 0xec, 0x5b, 0x16, 0xed, 0x79, 0x41, 0xcd, 0x7e, 0xdc, 0xb3, 0x59, 0x80,
0xad, 0x43, 0x0e, 0x37, 0x9b, 0x3e, 0x61, 0x6c, 0x5d, 0xdb, 0xd4, 0x4a, 0x4b, 0xb5, 0x70, 0x7b, 0xd6, 0x21, 0x47, 0x9a, 0x4d, 0xdf, 0x66, 0x6c, 0x5d, 0xdb, 0xd4, 0x4a, 0x4b, 0xb5, 0x70, 0x7b,
0x67, 0xf1, 0x8b, 0x27, 0x1b, 0x99, 0x7f, 0x9e, 0x6c, 0x64, 0x0c, 0x1b, 0xf2, 0x71, 0x57, 0xd6, 0x67, 0xf1, 0x8b, 0x27, 0x1b, 0x99, 0x7f, 0x9e, 0x6c, 0x64, 0x0c, 0x0b, 0xf2, 0x71, 0x57, 0xd6,
0xa5, 0x1e, 0x23, 0xdc, 0xb7, 0x81, 0x5d, 0xec, 0xd9, 0x44, 0xf8, 0xce, 0xd5, 0xc2, 0x2d, 0xba, 0xa5, 0x1e, 0xb3, 0xb9, 0x6f, 0x83, 0xb8, 0xc4, 0xb3, 0xec, 0xd0, 0x57, 0x6d, 0xd1, 0x35, 0x58,
0x06, 0x4b, 0x36, 0x6d, 0x92, 0x7a, 0x0b, 0xb3, 0xd6, 0xfa, 0x15, 0x11, 0x77, 0x91, 0x1f, 0xdc, 0xb2, 0x68, 0xd3, 0xae, 0xb7, 0x08, 0x6b, 0xad, 0x5f, 0x11, 0xdf, 0x16, 0xf9, 0xc1, 0x3d, 0xc2,
0xc3, 0xac, 0x85, 0xf2, 0x30, 0xef, 0x51, 0xee, 0x34, 0xb7, 0xa9, 0x95, 0xb2, 0x35, 0xb9, 0x31, 0x5a, 0x28, 0x0f, 0xf3, 0x1e, 0xe5, 0x4e, 0x73, 0x9b, 0x5a, 0x29, 0x5b, 0x93, 0x1b, 0xe3, 0x7d,
0xde, 0x87, 0x57, 0x44, 0x92, 0xbb, 0xa2, 0x25, 0xff, 0x81, 0xf2, 0x73, 0x0d, 0xf4, 0x49, 0x11, 0x78, 0x45, 0x24, 0xb9, 0x2b, 0x5a, 0xf2, 0x1f, 0x28, 0x3f, 0xd7, 0x40, 0x9f, 0x14, 0x41, 0xc1,
0x14, 0xec, 0x0d, 0x78, 0x4e, 0x76, 0xbb, 0x1e, 0x8f, 0xb4, 0x2a, 0x4f, 0xf7, 0xe5, 0x21, 0xd2, 0xde, 0x80, 0xe7, 0x64, 0xb7, 0xeb, 0xf1, 0x48, 0xab, 0xf2, 0x74, 0x5f, 0x1e, 0x22, 0x1d, 0x16,
0x61, 0x91, 0xf1, 0xa4, 0x9c, 0xef, 0x8a, 0xe0, 0x1b, 0xec, 0x79, 0x08, 0x2c, 0xa3, 0xd6, 0xbd, 0x19, 0x4f, 0xca, 0xf9, 0xae, 0x08, 0xbe, 0xc1, 0x9e, 0x87, 0x20, 0x32, 0x6a, 0xdd, 0xeb, 0x75,
0x5e, 0xa7, 0x41, 0x7c, 0x55, 0xc1, 0xaa, 0x3a, 0xfd, 0x48, 0x1c, 0x1a, 0xf7, 0xe1, 0xba, 0xe0, 0x1a, 0xb6, 0xaf, 0x2a, 0x58, 0x55, 0xa7, 0x1f, 0x89, 0x43, 0xe3, 0x3e, 0x5c, 0x17, 0x1c, 0x9f,
0xf8, 0x04, 0xbb, 0xed, 0x26, 0x0e, 0xa8, 0x3f, 0x52, 0xcc, 0x6b, 0xb0, 0x62, 0x53, 0x6f, 0x94, 0x10, 0xb7, 0xdd, 0x24, 0x01, 0xf5, 0x47, 0x8a, 0x79, 0x0d, 0x56, 0x2c, 0xea, 0x8d, 0x72, 0x2c,
0x63, 0x99, 0x9f, 0xed, 0x8f, 0x55, 0xf5, 0x95, 0x06, 0xaf, 0x26, 0x44, 0x53, 0x85, 0x15, 0xe1, 0xf3, 0xb3, 0xfd, 0xb1, 0xaa, 0xbe, 0xd2, 0xe0, 0xd5, 0x84, 0x68, 0xaa, 0xb0, 0x22, 0x3c, 0x1f,
0xf9, 0x90, 0x2a, 0x1e, 0x31, 0x84, 0xfd, 0x1f, 0x4b, 0x0b, 0x87, 0xa8, 0x2a, 0xef, 0xf9, 0x32, 0x52, 0xc5, 0x23, 0x86, 0xb0, 0xff, 0x63, 0x69, 0xe1, 0x10, 0x55, 0xe5, 0x3d, 0x5f, 0xe6, 0x7a,
0xd7, 0x73, 0x4b, 0x0d, 0xd1, 0xc0, 0x35, 0x6d, 0x88, 0x8c, 0xfb, 0x2a, 0xd9, 0x61, 0x40, 0x7d, 0x6e, 0xa9, 0x21, 0x1a, 0xb8, 0xa6, 0x0d, 0x91, 0x71, 0x5f, 0x25, 0x3b, 0x0c, 0xa8, 0x4f, 0x9c,
0xec, 0xa4, 0x27, 0x43, 0x6b, 0x30, 0x77, 0x44, 0x4e, 0xd4, 0xbc, 0xf1, 0x65, 0x24, 0xfd, 0x9e, 0xf4, 0x64, 0x68, 0x0d, 0xe6, 0x8e, 0xec, 0x13, 0x35, 0x6f, 0x7c, 0x19, 0x49, 0xbf, 0xa7, 0xd2,
0x4a, 0x3f, 0x08, 0xa6, 0xd2, 0xe7, 0x61, 0xbe, 0x8f, 0xdd, 0x1e, 0x51, 0xb1, 0xe4, 0xc6, 0x78, 0x0f, 0x82, 0xa9, 0xf4, 0x79, 0x98, 0xef, 0x13, 0xb7, 0x17, 0x26, 0x97, 0x1b, 0xe3, 0x6d, 0x58,
0x1b, 0xd6, 0xd4, 0x28, 0x35, 0x2f, 0x55, 0x64, 0x11, 0x5e, 0x88, 0xf8, 0xa9, 0x14, 0x08, 0xb2, 0x53, 0xa3, 0xd4, 0xbc, 0x54, 0x91, 0x45, 0x78, 0x21, 0xe2, 0xa7, 0x52, 0x20, 0xc8, 0xf2, 0xd9,
0x7c, 0xf6, 0x85, 0xd7, 0x4a, 0x4d, 0xac, 0x8d, 0x0a, 0x20, 0x61, 0xf8, 0xe8, 0xf8, 0x01, 0x75, 0x17, 0x5e, 0x2b, 0x35, 0xb1, 0x36, 0x2a, 0x80, 0x84, 0xe1, 0xa3, 0xe3, 0x07, 0xd4, 0x61, 0x61,
0x58, 0x98, 0x02, 0x41, 0x56, 0x7c, 0x31, 0x32, 0xbe, 0x58, 0x47, 0x82, 0x1f, 0xa8, 0x7e, 0x84, 0x0a, 0x04, 0x59, 0xf1, 0x8b, 0x91, 0xf1, 0xc5, 0x3a, 0x12, 0xfc, 0x40, 0xf5, 0x23, 0xf4, 0x51,
0x3e, 0x2a, 0xbc, 0x05, 0x59, 0x97, 0x3a, 0x1c, 0x6a, 0xae, 0xb4, 0x5c, 0xb9, 0x66, 0x4e, 0x7e, 0xe1, 0x31, 0x64, 0x5d, 0xea, 0x70, 0xa8, 0xb9, 0xd2, 0x72, 0xe5, 0x9a, 0x39, 0xf9, 0x05, 0x32,
0x81, 0xcc, 0x07, 0xd4, 0xa9, 0x09, 0x43, 0xe3, 0x0c, 0x5e, 0x92, 0x37, 0xe1, 0x52, 0xfb, 0x28, 0x1f, 0x50, 0xa7, 0x26, 0x0c, 0x8d, 0x33, 0x78, 0x49, 0xde, 0x84, 0x4b, 0xad, 0xa3, 0x94, 0xf4,
0x25, 0x3d, 0x3a, 0x00, 0x18, 0x3e, 0x45, 0xa2, 0xb5, 0xcb, 0x95, 0x2d, 0x53, 0x7e, 0x33, 0x26, 0xe8, 0x00, 0x60, 0xf8, 0x14, 0x89, 0xd6, 0x2e, 0x57, 0xb6, 0x4c, 0xf9, 0x9b, 0x31, 0xf9, 0xbb,
0x7f, 0xb7, 0x4c, 0xf9, 0xfc, 0xa9, 0x77, 0xcb, 0x7c, 0x38, 0xbc, 0xa9, 0x5a, 0xc4, 0x33, 0x52, 0x65, 0xca, 0xe7, 0x4f, 0xbd, 0x5b, 0xe6, 0xc3, 0xe1, 0x4d, 0xd5, 0x22, 0x9e, 0x91, 0x32, 0x7e,
0xc6, 0xcf, 0x1a, 0x5c, 0x1d, 0xcd, 0xaf, 0x4a, 0x39, 0x80, 0x5c, 0x70, 0x5c, 0x8f, 0x54, 0x53, 0xd6, 0xe0, 0xea, 0x68, 0x7e, 0x55, 0xca, 0x01, 0xe4, 0x82, 0xe3, 0x7a, 0xa4, 0x9a, 0x62, 0x52,
0x4c, 0xaa, 0xe6, 0x91, 0x8f, 0x3d, 0x86, 0x6d, 0x1e, 0x9a, 0x47, 0xa8, 0x66, 0x9f, 0xfe, 0xb9, 0x35, 0x8f, 0x7c, 0xe2, 0x31, 0x62, 0xf1, 0xd0, 0x3c, 0x42, 0x35, 0xfb, 0xf4, 0xcf, 0x8d, 0x4c,
0x91, 0xa9, 0x2d, 0x04, 0xa2, 0x35, 0xe8, 0xc3, 0x09, 0xd0, 0xc5, 0x54, 0x68, 0x09, 0x11, 0xa5, 0x6d, 0x21, 0x10, 0xad, 0x41, 0x1f, 0x4e, 0x80, 0x2e, 0xa6, 0x42, 0x4b, 0x88, 0x28, 0xb5, 0xb1,
0x36, 0xd6, 0xa3, 0xa8, 0x55, 0x97, 0xd2, 0x8e, 0xaa, 0xcd, 0xb0, 0xe0, 0xe5, 0xb1, 0x5f, 0x86, 0x1e, 0x45, 0xad, 0xba, 0x94, 0x76, 0x54, 0x6d, 0x06, 0x86, 0x97, 0xc7, 0xbe, 0x0c, 0x47, 0xaa,
0x23, 0xd5, 0xe0, 0x07, 0xea, 0xc2, 0xe5, 0xc6, 0xc8, 0xab, 0x1b, 0x7f, 0x88, 0x7d, 0xdc, 0x09, 0xc1, 0x0f, 0xd4, 0x85, 0xcb, 0x8d, 0x91, 0x57, 0x37, 0xfe, 0x90, 0xf8, 0xa4, 0x13, 0xb6, 0xdc,
0x5b, 0x6e, 0x1c, 0xaa, 0x3b, 0x0d, 0x4f, 0x55, 0x88, 0xf7, 0x60, 0xa1, 0x2b, 0x4e, 0x44, 0x8c, 0x38, 0x54, 0x77, 0x1a, 0x9e, 0xaa, 0x10, 0xef, 0xc1, 0x42, 0x57, 0x9c, 0x88, 0x18, 0xcb, 0x95,
0xe5, 0x4a, 0x21, 0xa9, 0x0f, 0xd2, 0x2f, 0x2c, 0x5f, 0xfa, 0x18, 0xf7, 0x14, 0xf5, 0x21, 0xd7, 0x42, 0x52, 0x1f, 0xa4, 0x5f, 0x58, 0xbe, 0xf4, 0x31, 0xee, 0x29, 0xea, 0x43, 0xae, 0x11, 0xd6,
0x08, 0xfb, 0x2e, 0x76, 0xdd, 0xf4, 0x6f, 0x27, 0x0f, 0xf3, 0x6d, 0xaf, 0xdb, 0x0b, 0x44, 0xb7, 0x5d, 0xe2, 0xba, 0xe9, 0xbf, 0x9d, 0x3c, 0xcc, 0xb7, 0xbd, 0x6e, 0x2f, 0x10, 0xdd, 0x5a, 0xa9,
0x56, 0x6a, 0x72, 0x63, 0xdc, 0x54, 0x55, 0x46, 0x23, 0x0d, 0xa7, 0xba, 0x89, 0x03, 0x1c, 0x4e, 0xc9, 0x8d, 0x71, 0x53, 0x55, 0x19, 0x8d, 0x34, 0x9c, 0xea, 0x26, 0x09, 0x48, 0x38, 0xd5, 0x7c,
0x35, 0x5f, 0x57, 0xfe, 0x58, 0x85, 0x79, 0x61, 0x8f, 0xbe, 0xd7, 0x20, 0xa7, 0x1e, 0x2a, 0xb4, 0x5d, 0xf9, 0x63, 0x15, 0xe6, 0x85, 0x3d, 0xfa, 0x5e, 0x83, 0x9c, 0x7a, 0xa8, 0xd0, 0x6e, 0x12,
0x9b, 0x04, 0x3f, 0x41, 0x8f, 0xf4, 0xbd, 0xd9, 0x8c, 0x25, 0x84, 0x51, 0xfe, 0xec, 0xb7, 0xbf, 0xfc, 0x04, 0x3d, 0xd2, 0xf7, 0x66, 0x33, 0x96, 0x10, 0x46, 0xf9, 0xb3, 0xdf, 0xfe, 0xfe, 0xee,
0xbf, 0xbb, 0xb2, 0x8b, 0xb6, 0xad, 0x04, 0xfd, 0x53, 0xcf, 0x97, 0x75, 0xaa, 0xea, 0x3c, 0x43, 0xca, 0x2e, 0xda, 0xc6, 0x09, 0xfa, 0xa7, 0x9e, 0x2f, 0x7c, 0xaa, 0xea, 0x3c, 0x43, 0xbf, 0x68,
0xbf, 0x68, 0xb0, 0x1a, 0x53, 0x08, 0x54, 0x9e, 0x9a, 0x72, 0x92, 0x1e, 0xe9, 0x95, 0xcb, 0xb8, 0xb0, 0x1a, 0x53, 0x08, 0x54, 0x9e, 0x9a, 0x72, 0x92, 0x1e, 0xe9, 0x95, 0xcb, 0xb8, 0x28, 0xd6,
0x28, 0xd6, 0xdb, 0x82, 0xb5, 0x82, 0x6e, 0x25, 0xb1, 0x86, 0xf2, 0x34, 0x86, 0xfc, 0xab, 0x06, 0xdb, 0x82, 0xb5, 0x82, 0x6e, 0x25, 0xb1, 0x86, 0xf2, 0x34, 0x86, 0xfc, 0xab, 0x06, 0x6b, 0xa3,
0x6b, 0xa3, 0xcf, 0x3f, 0x7a, 0x73, 0x2a, 0x42, 0x82, 0xf6, 0xe8, 0x6f, 0x5d, 0xd2, 0x4b, 0xb1, 0xcf, 0x3f, 0x7a, 0x73, 0x2a, 0x42, 0x82, 0xf6, 0xe8, 0x6f, 0x5d, 0xd2, 0x4b, 0xb1, 0x7f, 0x20,
0x7f, 0x20, 0xd8, 0xef, 0xa0, 0xdb, 0x49, 0xec, 0xfd, 0xd0, 0x73, 0x88, 0x1f, 0xd5, 0xb8, 0x33, 0xd8, 0xef, 0xa0, 0xdb, 0x49, 0xec, 0xfd, 0xd0, 0x73, 0x88, 0x1f, 0xd5, 0xb8, 0x33, 0xf4, 0x83,
0xf4, 0x83, 0x06, 0x39, 0xf5, 0xf4, 0xa7, 0x0c, 0x44, 0x5c, 0x5b, 0x52, 0x06, 0x62, 0x44, 0x4d, 0x06, 0x39, 0xf5, 0xf4, 0xa7, 0x0c, 0x44, 0x5c, 0x5b, 0x52, 0x06, 0x62, 0x44, 0x4d, 0x8c, 0x8a,
0x8c, 0x8a, 0x00, 0xdd, 0x43, 0x3b, 0x49, 0xa0, 0x4a, 0x5c, 0x58, 0xa4, 0xbd, 0x3f, 0x69, 0x90, 0x00, 0xdd, 0x43, 0x3b, 0x49, 0xa0, 0x4a, 0x5c, 0x58, 0xa4, 0xbd, 0x3f, 0x69, 0x90, 0x53, 0xb2,
0x53, 0xb2, 0x90, 0x82, 0x16, 0x57, 0xa2, 0x14, 0xb4, 0x11, 0xa5, 0x31, 0xde, 0x11, 0x68, 0x65, 0x90, 0x82, 0x16, 0x57, 0xa2, 0x14, 0xb4, 0x11, 0xa5, 0x31, 0xde, 0x11, 0x68, 0x65, 0x84, 0x93,
0x64, 0x25, 0xa1, 0x31, 0xe9, 0x30, 0x24, 0xb3, 0x4e, 0x8f, 0xc8, 0xc9, 0x19, 0xfa, 0x5a, 0x83, 0xd0, 0x98, 0x74, 0x18, 0x92, 0xe1, 0xd3, 0x23, 0xfb, 0xe4, 0x0c, 0x7d, 0xad, 0x41, 0x96, 0x0b,
0x2c, 0x17, 0x14, 0x54, 0x4a, 0x99, 0xba, 0x81, 0x56, 0xe9, 0xdb, 0x33, 0x58, 0x2a, 0x2c, 0x4b, 0x0a, 0x2a, 0xa5, 0x4c, 0xdd, 0x40, 0xab, 0xf4, 0xed, 0x19, 0x2c, 0x15, 0x16, 0x16, 0x58, 0xdb,
0x60, 0x6d, 0xa3, 0x62, 0xf2, 0x58, 0x36, 0x63, 0xed, 0xfa, 0x56, 0x83, 0x05, 0x29, 0x41, 0x68, 0xa8, 0x98, 0x3c, 0x96, 0xcd, 0x58, 0xbb, 0xbe, 0xd5, 0x60, 0x41, 0x4a, 0x10, 0xda, 0x99, 0x9a,
0x67, 0x6a, 0x9a, 0x98, 0xb6, 0xe9, 0xbb, 0x33, 0xd9, 0x2a, 0x28, 0x53, 0x40, 0x95, 0xd0, 0x56, 0x26, 0xa6, 0x6d, 0xfa, 0xee, 0x4c, 0xb6, 0x0a, 0xca, 0x14, 0x50, 0x25, 0xb4, 0x95, 0x04, 0xa5,
0x12, 0x94, 0x92, 0x09, 0xeb, 0x94, 0x8b, 0x94, 0xb8, 0xc2, 0xa5, 0x81, 0x9c, 0xa0, 0x9b, 0xd3, 0x64, 0x02, 0x9f, 0x72, 0x91, 0x12, 0x57, 0xb8, 0x34, 0x90, 0x13, 0x74, 0x73, 0xfa, 0xc8, 0x8c,
0x47, 0x66, 0x44, 0xf6, 0x74, 0x73, 0x56, 0xf3, 0x59, 0x1f, 0x9d, 0x06, 0x77, 0x89, 0xf1, 0xfd, 0xc8, 0x9e, 0x6e, 0xce, 0x6a, 0x3e, 0xeb, 0xa3, 0xd3, 0xe0, 0x2e, 0x31, 0xbe, 0x1f, 0x35, 0x80,
0xa8, 0x01, 0x0c, 0x95, 0x02, 0xcd, 0x90, 0x31, 0x2a, 0x36, 0xba, 0x35, 0xb3, 0xbd, 0x42, 0xdc, 0xa1, 0x52, 0xa0, 0x19, 0x32, 0x46, 0xc5, 0x46, 0xc7, 0x33, 0xdb, 0x2b, 0xc4, 0x5d, 0x81, 0x78,
0x15, 0x88, 0x37, 0xd0, 0xeb, 0xd3, 0x11, 0x85, 0x32, 0xa1, 0x2f, 0x35, 0x58, 0x90, 0x3a, 0x92, 0x03, 0xbd, 0x3e, 0x1d, 0x51, 0x28, 0x13, 0xfa, 0x52, 0x83, 0x05, 0xa9, 0x23, 0x29, 0x17, 0x1a,
0x72, 0xa1, 0x31, 0xe9, 0x4a, 0xb9, 0xd0, 0xb8, 0xa0, 0x19, 0x5b, 0x02, 0x68, 0x13, 0x15, 0x92, 0x93, 0xae, 0x94, 0x0b, 0x8d, 0x0b, 0x9a, 0xb1, 0x25, 0x80, 0x36, 0x51, 0x21, 0x09, 0x48, 0x4a,
0x80, 0xa4, 0x74, 0x89, 0x46, 0x0d, 0xc5, 0x26, 0xa5, 0x51, 0x63, 0xfa, 0x96, 0xd2, 0xa8, 0x71, 0x97, 0x68, 0xd4, 0x50, 0x6c, 0x52, 0x1a, 0x35, 0xa6, 0x6f, 0x29, 0x8d, 0x1a, 0x57, 0xb1, 0xf4,
0x15, 0x4b, 0x6f, 0x14, 0x13, 0x3e, 0x75, 0x1b, 0xbb, 0x6e, 0xb5, 0xfa, 0xf4, 0xbc, 0xa0, 0x3d, 0x46, 0x31, 0xe1, 0x53, 0xb7, 0x88, 0xeb, 0x56, 0xab, 0x4f, 0xcf, 0x0b, 0xda, 0xb3, 0xf3, 0x82,
0x3b, 0x2f, 0x68, 0x7f, 0x9d, 0x17, 0xb4, 0x6f, 0x2e, 0x0a, 0x99, 0x67, 0x17, 0x85, 0xcc, 0xef, 0xf6, 0xd7, 0x79, 0x41, 0xfb, 0xe6, 0xa2, 0x90, 0x79, 0x76, 0x51, 0xc8, 0xfc, 0x7e, 0x51, 0xc8,
0x17, 0x85, 0xcc, 0xa7, 0x25, 0xa7, 0x1d, 0xb4, 0x7a, 0x0d, 0xd3, 0xa6, 0x1d, 0x2b, 0x68, 0x61, 0x7c, 0x5a, 0x72, 0xda, 0x41, 0xab, 0xd7, 0x30, 0x2d, 0xda, 0xc1, 0x41, 0x8b, 0xf8, 0xac, 0xcd,
0x9f, 0xb5, 0x59, 0x24, 0xe0, 0xb1, 0x08, 0x19, 0x9c, 0x74, 0x09, 0x6b, 0x2c, 0x88, 0x7f, 0x63, 0x22, 0x01, 0x8f, 0x45, 0xc8, 0xe0, 0xa4, 0x6b, 0xb3, 0xc6, 0x82, 0xf8, 0x37, 0xf6, 0xc6, 0xbf,
0x6f, 0xfc, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xbb, 0x62, 0xa4, 0x45, 0x4d, 0x0e, 0x00, 0x00, 0x01, 0x00, 0x00, 0xff, 0xff, 0x4e, 0x4f, 0xb9, 0xc4, 0x4d, 0x0e, 0x00, 0x00,
} }
// Reference imports to suppress errors if they are not otherwise used. // Reference imports to suppress errors if they are not otherwise used.
@ -1676,10 +1676,12 @@ func (m *QueryAccountResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i-- i--
dAtA[i] = 0x12 dAtA[i] = 0x12
} }
if m.Balance != 0 { if len(m.Balance) > 0 {
i = encodeVarintQuery(dAtA, i, uint64(m.Balance)) i -= len(m.Balance)
copy(dAtA[i:], m.Balance)
i = encodeVarintQuery(dAtA, i, uint64(len(m.Balance)))
i-- i--
dAtA[i] = 0x8 dAtA[i] = 0xa
} }
return len(dAtA) - i, nil return len(dAtA) - i, nil
} }
@ -1874,10 +1876,12 @@ func (m *QueryBalanceResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i _ = i
var l int var l int
_ = l _ = l
if m.Balance != 0 { if len(m.Balance) > 0 {
i = encodeVarintQuery(dAtA, i, uint64(m.Balance)) i -= len(m.Balance)
copy(dAtA[i:], m.Balance)
i = encodeVarintQuery(dAtA, i, uint64(len(m.Balance)))
i-- i--
dAtA[i] = 0x8 dAtA[i] = 0xa
} }
return len(dAtA) - i, nil return len(dAtA) - i, nil
} }
@ -2373,8 +2377,9 @@ func (m *QueryAccountResponse) Size() (n int) {
} }
var l int var l int
_ = l _ = l
if m.Balance != 0 { l = len(m.Balance)
n += 1 + sovQuery(uint64(m.Balance)) if l > 0 {
n += 1 + l + sovQuery(uint64(l))
} }
l = len(m.CodeHash) l = len(m.CodeHash)
if l > 0 { if l > 0 {
@ -2469,8 +2474,9 @@ func (m *QueryBalanceResponse) Size() (n int) {
} }
var l int var l int
_ = l _ = l
if m.Balance != 0 { l = len(m.Balance)
n += 1 + sovQuery(uint64(m.Balance)) if l > 0 {
n += 1 + l + sovQuery(uint64(l))
} }
return n return n
} }
@ -2788,10 +2794,10 @@ func (m *QueryAccountResponse) Unmarshal(dAtA []byte) error {
} }
switch fieldNum { switch fieldNum {
case 1: case 1:
if wireType != 0 { if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Balance", wireType) return fmt.Errorf("proto: wrong wireType = %d for field Balance", wireType)
} }
m.Balance = 0 var stringLen uint64
for shift := uint(0); ; shift += 7 { for shift := uint(0); ; shift += 7 {
if shift >= 64 { if shift >= 64 {
return ErrIntOverflowQuery return ErrIntOverflowQuery
@ -2801,11 +2807,24 @@ func (m *QueryAccountResponse) Unmarshal(dAtA []byte) error {
} }
b := dAtA[iNdEx] b := dAtA[iNdEx]
iNdEx++ iNdEx++
m.Balance |= int64(b&0x7F) << shift stringLen |= uint64(b&0x7F) << shift
if b < 0x80 { if b < 0x80 {
break break
} }
} }
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthQuery
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthQuery
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Balance = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 2: case 2:
if wireType != 2 { if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field CodeHash", wireType) return fmt.Errorf("proto: wrong wireType = %d for field CodeHash", wireType)
@ -3412,10 +3431,10 @@ func (m *QueryBalanceResponse) Unmarshal(dAtA []byte) error {
} }
switch fieldNum { switch fieldNum {
case 1: case 1:
if wireType != 0 { if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Balance", wireType) return fmt.Errorf("proto: wrong wireType = %d for field Balance", wireType)
} }
m.Balance = 0 var stringLen uint64
for shift := uint(0); ; shift += 7 { for shift := uint(0); ; shift += 7 {
if shift >= 64 { if shift >= 64 {
return ErrIntOverflowQuery return ErrIntOverflowQuery
@ -3425,11 +3444,24 @@ func (m *QueryBalanceResponse) Unmarshal(dAtA []byte) error {
} }
b := dAtA[iNdEx] b := dAtA[iNdEx]
iNdEx++ iNdEx++
m.Balance |= int64(b&0x7F) << shift stringLen |= uint64(b&0x7F) << shift
if b < 0x80 { if b < 0x80 {
break break
} }
} }
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthQuery
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthQuery
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Balance = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
default: default:
iNdEx = preIndex iNdEx = preIndex
skippy, err := skipQuery(dAtA[iNdEx:]) skippy, err := skipQuery(dAtA[iNdEx:])