mirror of
https://github.com/0glabs/0g-chain.git
synced 2024-11-14 03:55:19 +00:00
c511c56560
* ibc v3 upgrade * ibc no longer uses confio * add proofs proto for ibc/v3 * wip add ethermint module * update cosmos to 0.45.0 * add ethermint proto & bug fixes * remove todo * update docs * fix a number of bugs * minor comments update * fix breaking tests * Wrap bank keeper for EVM to convert decimals (#1154) * Add bankkeeper wrapper for evm * Remove agas from init-new-chain.sh, use ukava for evm_denom * Fix sdk.Coins conversion, require min 1 coin amount * Remove gas from init script idk how this happened lol * Remove debug logging stmt * Restore original init ukava amounts * Fix inplace coins conversion * Use evmtypes.BankKeeper interface insteadof banktypes * Add TestGetBalance * Add doc comments, remove temp actualAmt vars actualAmt vars replaced with inline calls to make it more clear that the converted value is being used, as opposed to accidentally reusing the raw EVM amt. * Add TestSetBalance * Add TestIdempotentConversion * Panic if converted coin from EVM is 0 This happens if a value is less than 1ukava * Deep copy coins instead of in place modification * Update test coins amount * Add panic tests for small EVM amounts * Use evmtypes.BankKeeper as NewEVMBankKeeper param * Tidy test setup * ensure sdk config is set when creating new apps * Respond EVM bank keeper GetBalance with SpendableCoins Co-authored-by: Nick DeLuca <nickdeluca08@gmail.com> * further speed up docker builds * feat: restore previous keys add defaults, add eth flag (#1172) * feat: restore previous keys add defaults, add eth flag * remove outdated comment * fix: remove redundant flag default * evm bank keeper with akava handling * fix issues * add remaining tests * add emv module to app * add missing imports * clean up comments * wip akava keeper * evm keeper * fix genesis import * reduce module permissions * add bank keeper tests * cleanup tests * genesis tests * change defaults * add eth faucet key & fix issues * switch to kava ethermint * add a lot of tests * add balances invariant * add evm tests * Remove panic if Swagger disabled in config (#1155) (#1183) Co-authored-by: Derrick Lee <derrick@dlee.dev> * add invariant to catch any akava balance > 1 ukava * clarify name of balances invariant * connect invariants to app * fix evmbankkeeper akava issues * add spec for evmutil * remove zero balance accounts from state * minor adustments * update to ethermint 0.10.0 * fix eth ante * add missing godoc comment * Update x/evmutil/spec/01_concepts.md Co-authored-by: Kevin Davis <karzak@users.noreply.github.com> * Update x/evmutil/spec/01_concepts.md Co-authored-by: Kevin Davis <karzak@users.noreply.github.com> * Update ethermint to v0.12 (#1203) * update to ethermint v0.12.2 * use app.Options for new evm options * fix missed references to app.Options * use ethermint branch while waiting on upstream fix * evm migrations for tesnet alpha 2 (#1206) * update to ethermint v0.12.2 * use app.Options for new evm options * fix missed references to app.Options * use ethermint branch while waiting on upstream fix * add upgrade handler for evm-alpha testnet 2 * v17 migration setup + evm modules * refactor migrate states * x/feemarket migration * v17 migrations setup + evm modules migration (#1210) * v17 migration setup + evm modules * refactor migrate states * update gen time * fix: update genesis time in test output Co-authored-by: karzak <kjydavis3@gmail.com> * add savings module to app blockers Co-authored-by: Derrick Lee <derrick@dlee.dev> Co-authored-by: Nick DeLuca <nickdeluca08@gmail.com> Co-authored-by: rhuairahrighairigh <ruaridh.odonnell@gmail.com> Co-authored-by: Kevin Davis <karzak@users.noreply.github.com> Co-authored-by: Ruaridh <rhuairahrighairidh@users.noreply.github.com> Co-authored-by: karzak <kjydavis3@gmail.com>
116 lines
5.6 KiB
Protocol Buffer
116 lines
5.6 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package ibc.lightclients.tendermint.v1;
|
|
|
|
option go_package = "github.com/cosmos/ibc-go/v3/modules/light-clients/07-tendermint/types";
|
|
|
|
import "tendermint/types/validator.proto";
|
|
import "tendermint/types/types.proto";
|
|
import "proofs.proto";
|
|
import "google/protobuf/duration.proto";
|
|
import "google/protobuf/timestamp.proto";
|
|
import "ibc/core/client/v1/client.proto";
|
|
import "ibc/core/commitment/v1/commitment.proto";
|
|
import "gogoproto/gogo.proto";
|
|
|
|
// ClientState from Tendermint tracks the current validator set, latest height,
|
|
// and a possible frozen height.
|
|
message ClientState {
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
string chain_id = 1;
|
|
Fraction trust_level = 2 [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"trust_level\""];
|
|
// duration of the period since the LastestTimestamp during which the
|
|
// submitted headers are valid for upgrade
|
|
google.protobuf.Duration trusting_period = 3
|
|
[(gogoproto.nullable) = false, (gogoproto.stdduration) = true, (gogoproto.moretags) = "yaml:\"trusting_period\""];
|
|
// duration of the staking unbonding period
|
|
google.protobuf.Duration unbonding_period = 4 [
|
|
(gogoproto.nullable) = false,
|
|
(gogoproto.stdduration) = true,
|
|
(gogoproto.moretags) = "yaml:\"unbonding_period\""
|
|
];
|
|
// defines how much new (untrusted) header's Time can drift into the future.
|
|
google.protobuf.Duration max_clock_drift = 5
|
|
[(gogoproto.nullable) = false, (gogoproto.stdduration) = true, (gogoproto.moretags) = "yaml:\"max_clock_drift\""];
|
|
// Block height when the client was frozen due to a misbehaviour
|
|
ibc.core.client.v1.Height frozen_height = 6
|
|
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"frozen_height\""];
|
|
// Latest height the client was updated to
|
|
ibc.core.client.v1.Height latest_height = 7
|
|
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"latest_height\""];
|
|
|
|
// Proof specifications used in verifying counterparty state
|
|
repeated ics23.ProofSpec proof_specs = 8 [(gogoproto.moretags) = "yaml:\"proof_specs\""];
|
|
|
|
// Path at which next upgraded client will be committed.
|
|
// Each element corresponds to the key for a single CommitmentProof in the
|
|
// chained proof. NOTE: ClientState must stored under
|
|
// `{upgradePath}/{upgradeHeight}/clientState` ConsensusState must be stored
|
|
// under `{upgradepath}/{upgradeHeight}/consensusState` For SDK chains using
|
|
// the default upgrade module, upgrade_path should be []string{"upgrade",
|
|
// "upgradedIBCState"}`
|
|
repeated string upgrade_path = 9 [(gogoproto.moretags) = "yaml:\"upgrade_path\""];
|
|
|
|
// This flag, when set to true, will allow governance to recover a client
|
|
// which has expired
|
|
bool allow_update_after_expiry = 10 [(gogoproto.moretags) = "yaml:\"allow_update_after_expiry\""];
|
|
// This flag, when set to true, will allow governance to unfreeze a client
|
|
// whose chain has experienced a misbehaviour event
|
|
bool allow_update_after_misbehaviour = 11 [(gogoproto.moretags) = "yaml:\"allow_update_after_misbehaviour\""];
|
|
}
|
|
|
|
// ConsensusState defines the consensus state from Tendermint.
|
|
message ConsensusState {
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
// timestamp that corresponds to the block height in which the ConsensusState
|
|
// was stored.
|
|
google.protobuf.Timestamp timestamp = 1 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true];
|
|
// commitment root (i.e app hash)
|
|
ibc.core.commitment.v1.MerkleRoot root = 2 [(gogoproto.nullable) = false];
|
|
bytes next_validators_hash = 3 [
|
|
(gogoproto.casttype) = "github.com/tendermint/tendermint/libs/bytes.HexBytes",
|
|
(gogoproto.moretags) = "yaml:\"next_validators_hash\""
|
|
];
|
|
}
|
|
|
|
// Misbehaviour is a wrapper over two conflicting Headers
|
|
// that implements Misbehaviour interface expected by ICS-02
|
|
message Misbehaviour {
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
string client_id = 1 [(gogoproto.moretags) = "yaml:\"client_id\""];
|
|
Header header_1 = 2 [(gogoproto.customname) = "Header1", (gogoproto.moretags) = "yaml:\"header_1\""];
|
|
Header header_2 = 3 [(gogoproto.customname) = "Header2", (gogoproto.moretags) = "yaml:\"header_2\""];
|
|
}
|
|
|
|
// Header defines the Tendermint client consensus Header.
|
|
// It encapsulates all the information necessary to update from a trusted
|
|
// Tendermint ConsensusState. The inclusion of TrustedHeight and
|
|
// TrustedValidators allows this update to process correctly, so long as the
|
|
// ConsensusState for the TrustedHeight exists, this removes race conditions
|
|
// among relayers The SignedHeader and ValidatorSet are the new untrusted update
|
|
// fields for the client. The TrustedHeight is the height of a stored
|
|
// ConsensusState on the client that will be used to verify the new untrusted
|
|
// header. The Trusted ConsensusState must be within the unbonding period of
|
|
// current time in order to correctly verify, and the TrustedValidators must
|
|
// hash to TrustedConsensusState.NextValidatorsHash since that is the last
|
|
// trusted validator set at the TrustedHeight.
|
|
message Header {
|
|
.tendermint.types.SignedHeader signed_header = 1
|
|
[(gogoproto.embed) = true, (gogoproto.moretags) = "yaml:\"signed_header\""];
|
|
|
|
.tendermint.types.ValidatorSet validator_set = 2 [(gogoproto.moretags) = "yaml:\"validator_set\""];
|
|
ibc.core.client.v1.Height trusted_height = 3
|
|
[(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"trusted_height\""];
|
|
.tendermint.types.ValidatorSet trusted_validators = 4 [(gogoproto.moretags) = "yaml:\"trusted_validators\""];
|
|
}
|
|
|
|
// Fraction defines the protobuf message type for tmmath.Fraction that only
|
|
// supports positive values.
|
|
message Fraction {
|
|
uint64 numerator = 1;
|
|
uint64 denominator = 2;
|
|
}
|