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

Interchain security rebase #13722

Merged
merged 49 commits into from
Nov 1, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
c50ebe9
feat: store ABCI validator updates in transient store
fedekunze Sep 16, 2021
9b8d920
fix test build
fedekunze Sep 16, 2021
57f5633
change transient key name
AdityaSripal Nov 10, 2021
30985a0
add UnbondingDelegationEntryCreated hook
jtremback Oct 14, 2021
83f2868
add id to UnbondingDelegationEntry
jtremback Oct 14, 2021
6e78767
changes to add simple version of staking ccv hooks
jtremback Oct 15, 2021
fe36b17
ubde id to string
jtremback Oct 15, 2021
4e5e193
rough draft of more efficient technique
jtremback Oct 16, 2021
c13716b
change hook api and do some clean ups
jtremback Oct 29, 2021
890c47e
use ByEntry index and keep stopped entries in Entries array
jtremback Nov 5, 2021
71e928a
correct error convention
jtremback Nov 5, 2021
53f2184
add comment
jtremback Nov 5, 2021
9e468ac
some cleanups
jtremback Nov 5, 2021
1433612
comment cleanup
jtremback Nov 5, 2021
82e1f0f
finish hooking up hooks
jtremback Nov 5, 2021
b7b5da6
get the tests to pass
jtremback Nov 5, 2021
7ebe44f
proof of concept with embedded mock hooks
jtremback Nov 8, 2021
7ff872b
first unit test of CCV hooks
jtremback Nov 9, 2021
a84c23f
fix forgotten pointer bug
jtremback Nov 9, 2021
d5b64ea
move hook mocks into own file
jtremback Nov 10, 2021
48d1cf7
added test for completing stopped unbonding early
jtremback Nov 10, 2021
fb8108a
added staking hooks template
jtremback Nov 10, 2021
9b365d3
correct file and module names
jtremback Nov 10, 2021
2c0437a
clean up and fix import error
jtremback Nov 11, 2021
1b776a3
move staking hooks template to types
jtremback Nov 11, 2021
b293d64
fix hooks after merge
jtremback Nov 16, 2021
2413b86
fix silly proto bug
jtremback Jan 6, 2022
58c103c
feat: Add AfterValidatorDowntime hook in slashing module (#10938)
sainoe Jan 12, 2022
29c717a
update: Remove slashing module hooks (#11425)
sainoe Mar 23, 2022
e75e83f
Finish staking hooks merge (#11677)
jtremback May 10, 2022
4cc2851
feat: enable double-signing evidence in Interchain-Security (#11921)
sainoe May 23, 2022
c783aea
chore: remove direct reliance on staking from slashing (backport #121…
mergify[bot] Jun 7, 2022
67c8163
fix: make ModuleAccountInvariants pass for IS SDK changes (#12554)
mpoke Jul 19, 2022
df7683a
Revert "fix: make ModuleAccountInvariants pass for IS SDK changes (#1…
mpoke Aug 1, 2022
9ebbd57
fix: make ModuleAccountInvariants pass for IS SDK changes (#12783)
mpoke Aug 1, 2022
bbb8d86
fix: [Interchain Security] `validatorUnbondingCanComplete` must take …
mpoke Aug 5, 2022
63a1efc
fix: [Interchain Security] Fix leak in unbonding hooks (#12849)
mpoke Aug 9, 2022
a63f1f7
docs: [Interchain Security] update spec (#12848)
mpoke Aug 9, 2022
e2a7cd3
store ValidatorUpdates in normal store (#12845)
mpoke Aug 9, 2022
402f4c0
Update x/slashing/keeper/signing_info.go
mpoke Aug 11, 2022
7f34d09
Update x/staking/keeper/val_state_change.go
mpoke Aug 11, 2022
53d139e
Update x/staking/keeper/val_state_change.go
mpoke Aug 11, 2022
5df5b1c
Update x/slashing/keeper/infractions.go
mpoke Aug 11, 2022
0b5c039
Update x/staking/keeper/val_state_change.go
mpoke Aug 11, 2022
7cfdd65
Update x/staking/keeper/val_state_change.go
mpoke Aug 11, 2022
8ba98c8
fix compile errors
mpoke Aug 11, 2022
846d015
remove stakingtypes.TStoreKey
mpoke Aug 11, 2022
06d4a64
fix: decrease minimums for genesis parameters (#13106)
shaspitz Sep 1, 2022
4ce26e1
Merge branch 'ics-45.6' into interchain-security-rebase
jtremback Nov 1, 2022
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
36 changes: 36 additions & 0 deletions docs/core/proto-docs.md
Original file line number Diff line number Diff line change
Expand Up @@ -480,8 +480,10 @@
- [UnbondingDelegationEntry](#cosmos.staking.v1beta1.UnbondingDelegationEntry)
- [ValAddresses](#cosmos.staking.v1beta1.ValAddresses)
- [Validator](#cosmos.staking.v1beta1.Validator)
- [ValidatorUpdates](#cosmos.staking.v1beta1.ValidatorUpdates)

- [BondStatus](#cosmos.staking.v1beta1.BondStatus)
- [InfractionType](#cosmos.staking.v1beta1.InfractionType)

- [cosmos/staking/v1beta1/genesis.proto](#cosmos/staking/v1beta1/genesis.proto)
- [GenesisState](#cosmos.staking.v1beta1.GenesisState)
Expand Down Expand Up @@ -6745,6 +6747,8 @@ RedelegationEntry defines a redelegation object with relevant metadata.
| `completion_time` | [google.protobuf.Timestamp](#google.protobuf.Timestamp) | | completion_time defines the unix time for redelegation completion. |
| `initial_balance` | [string](#string) | | initial_balance defines the initial balance when redelegation started. |
| `shares_dst` | [string](#string) | | shares_dst is the amount of destination-validator shares created by redelegation. |
| `unbonding_id` | [uint64](#uint64) | | Incrementing id that uniquely identifies this entry |
| `unbonding_on_hold_ref_count` | [int64](#int64) | | Strictly positive if this entry's unbonding has been stopped by external modules |



Expand Down Expand Up @@ -6819,6 +6823,8 @@ UnbondingDelegationEntry defines an unbonding object with relevant metadata.
| `completion_time` | [google.protobuf.Timestamp](#google.protobuf.Timestamp) | | completion_time is the unix time for unbonding completion. |
| `initial_balance` | [string](#string) | | initial_balance defines the tokens initially scheduled to receive at completion. |
| `balance` | [string](#string) | | balance defines the tokens to receive at completion. |
| `unbonding_id` | [uint64](#uint64) | | Incrementing id that uniquely identifies this entry |
| `unbonding_on_hold_ref_count` | [int64](#int64) | | Strictly positive if this entry's unbonding has been stopped by external modules |



Expand Down Expand Up @@ -6866,6 +6872,23 @@ multiplied by exchange rate.
| `unbonding_time` | [google.protobuf.Timestamp](#google.protobuf.Timestamp) | | unbonding_time defines, if unbonding, the min time for the validator to complete unbonding. |
| `commission` | [Commission](#cosmos.staking.v1beta1.Commission) | | commission defines the commission parameters. |
| `min_self_delegation` | [string](#string) | | min_self_delegation is the validator's self declared minimum self delegation. |
| `unbonding_on_hold_ref_count` | [int64](#int64) | | strictly positive if this validator's unbonding has been stopped by external modules |
| `unbonding_ids` | [uint64](#uint64) | repeated | list of unbonding ids, each uniquely identifing an unbonding of this validator |






<a name="cosmos.staking.v1beta1.ValidatorUpdates"></a>

### ValidatorUpdates
ValidatorUpdates defines an array of abci.ValidatorUpdate objects.


| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `updates` | [tendermint.abci.ValidatorUpdate](#tendermint.abci.ValidatorUpdate) | repeated | |



Expand All @@ -6887,6 +6910,19 @@ BondStatus is the status of a validator.
| BOND_STATUS_BONDED | 3 | BONDED defines a validator that is bonded. |



<a name="cosmos.staking.v1beta1.InfractionType"></a>

### InfractionType
InfractionType indicates the infraction type a validator commited.

| Name | Number | Description |
| ---- | ------ | ----------- |
| INFRACTION_TYPE_UNSPECIFIED | 0 | UNSPECIFIED defines an empty infraction type. |
| INFRACTION_TYPE_DOUBLE_SIGN | 1 | DOUBLE_SIGN defines a validator that double-signs a block. |
| INFRACTION_TYPE_DOWNTIME | 2 | DOWNTIME defines a validator that missed signing too many blocks. |


<!-- end enums -->

<!-- end HasExtensions -->
Expand Down
2 changes: 0 additions & 2 deletions proto/cosmos/bank/v1beta1/query.proto
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,6 @@ message QueryAllBalancesResponse {
// balances is the balances of all the coins.
repeated cosmos.base.v1beta1.Coin balances = 1
[(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"];

// pagination defines the pagination in the response.
cosmos.base.query.v1beta1.PageResponse pagination = 2;
}
Expand All @@ -113,7 +112,6 @@ message QuerySpendableBalancesResponse {
// balances is the spendable balances of all the coins.
repeated cosmos.base.v1beta1.Coin balances = 1
[(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"];

// pagination defines the pagination in the response.
cosmos.base.query.v1beta1.PageResponse pagination = 2;
}
Expand Down
36 changes: 36 additions & 0 deletions proto/cosmos/staking/v1beta1/staking.proto
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import "google/protobuf/timestamp.proto";
import "cosmos_proto/cosmos.proto";
import "cosmos/base/v1beta1/coin.proto";
import "tendermint/types/types.proto";
import "tendermint/abci/types.proto";

option go_package = "github.com/cosmos/cosmos-sdk/x/staking/types";

Expand Down Expand Up @@ -117,6 +118,12 @@ message Validator {
(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int",
(gogoproto.nullable) = false
];

// strictly positive if this validator's unbonding has been stopped by external modules
int64 unbonding_on_hold_ref_count = 12;

// list of unbonding ids, each uniquely identifing an unbonding of this validator
repeated uint64 unbonding_ids = 13;
}

// BondStatus is the status of a validator.
Expand Down Expand Up @@ -226,6 +233,12 @@ message UnbondingDelegationEntry {
];
// balance defines the tokens to receive at completion.
string balance = 4 [(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", (gogoproto.nullable) = false];

// Incrementing id that uniquely identifies this entry
uint64 unbonding_id = 5;

// Strictly positive if this entry's unbonding has been stopped by external modules
int64 unbonding_on_hold_ref_count = 6;
}

// RedelegationEntry defines a redelegation object with relevant metadata.
Expand All @@ -247,6 +260,12 @@ message RedelegationEntry {
// shares_dst is the amount of destination-validator shares created by redelegation.
string shares_dst = 4
[(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", (gogoproto.nullable) = false];

// Incrementing id that uniquely identifies this entry
uint64 unbonding_id = 5;

// Strictly positive if this entry's unbonding has been stopped by external modules
int64 unbonding_on_hold_ref_count = 6;
}

// Redelegation contains the list of a particular delegator's redelegating bonds
Expand Down Expand Up @@ -332,3 +351,20 @@ message Pool {
(gogoproto.moretags) = "yaml:\"bonded_tokens\""
];
}

// InfractionType indicates the infraction type a validator commited.
enum InfractionType {
option (gogoproto.goproto_enum_prefix) = false;

// UNSPECIFIED defines an empty infraction type.
INFRACTION_TYPE_UNSPECIFIED = 0 [(gogoproto.enumvalue_customname) = "InfractionEmpty"];
// DOUBLE_SIGN defines a validator that double-signs a block.
INFRACTION_TYPE_DOUBLE_SIGN = 1 [(gogoproto.enumvalue_customname) = "DoubleSign"];
// DOWNTIME defines a validator that missed signing too many blocks.
INFRACTION_TYPE_DOWNTIME = 2 [(gogoproto.enumvalue_customname) = "Downtime"];
}

// ValidatorUpdates defines an array of abci.ValidatorUpdate objects.
message ValidatorUpdates {
repeated tendermint.abci.ValidatorUpdate updates = 1 [(gogoproto.nullable) = false];
}
1 change: 1 addition & 0 deletions simapp/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,7 @@ func NewSimApp(
authzkeeper.StoreKey,
)
tkeys := sdk.NewTransientStoreKeys(paramstypes.TStoreKey)

// NOTE: The testingkey is just mounted for testing purposes. Actual applications should
// not include this key.
memKeys := sdk.NewMemoryStoreKeys(capabilitytypes.MemStoreKey, "testingkey")
Expand Down
110 changes: 53 additions & 57 deletions x/bank/types/query.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading