mirror of
https://github.com/0glabs/0g-chain.git
synced 2024-12-27 00:35:18 +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>
190 lines
7.3 KiB
Protocol Buffer
190 lines
7.3 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package ibc.lightclients.solomachine.v2;
|
|
|
|
option go_package = "github.com/cosmos/ibc-go/v3/modules/light-clients/06-solomachine/types";
|
|
|
|
import "ibc/core/connection/v1/connection.proto";
|
|
import "ibc/core/channel/v1/channel.proto";
|
|
import "gogoproto/gogo.proto";
|
|
import "google/protobuf/any.proto";
|
|
|
|
// ClientState defines a solo machine client that tracks the current consensus
|
|
// state and if the client is frozen.
|
|
message ClientState {
|
|
option (gogoproto.goproto_getters) = false;
|
|
// latest sequence of the client state
|
|
uint64 sequence = 1;
|
|
// frozen sequence of the solo machine
|
|
bool is_frozen = 2 [(gogoproto.moretags) = "yaml:\"is_frozen\""];
|
|
ConsensusState consensus_state = 3 [(gogoproto.moretags) = "yaml:\"consensus_state\""];
|
|
// when set to true, will allow governance to update a solo machine client.
|
|
// The client will be unfrozen if it is frozen.
|
|
bool allow_update_after_proposal = 4 [(gogoproto.moretags) = "yaml:\"allow_update_after_proposal\""];
|
|
}
|
|
|
|
// ConsensusState defines a solo machine consensus state. The sequence of a
|
|
// consensus state is contained in the "height" key used in storing the
|
|
// consensus state.
|
|
message ConsensusState {
|
|
option (gogoproto.goproto_getters) = false;
|
|
// public key of the solo machine
|
|
google.protobuf.Any public_key = 1 [(gogoproto.moretags) = "yaml:\"public_key\""];
|
|
// diversifier allows the same public key to be re-used across different solo
|
|
// machine clients (potentially on different chains) without being considered
|
|
// misbehaviour.
|
|
string diversifier = 2;
|
|
uint64 timestamp = 3;
|
|
}
|
|
|
|
// Header defines a solo machine consensus header
|
|
message Header {
|
|
option (gogoproto.goproto_getters) = false;
|
|
// sequence to update solo machine public key at
|
|
uint64 sequence = 1;
|
|
uint64 timestamp = 2;
|
|
bytes signature = 3;
|
|
google.protobuf.Any new_public_key = 4 [(gogoproto.moretags) = "yaml:\"new_public_key\""];
|
|
string new_diversifier = 5 [(gogoproto.moretags) = "yaml:\"new_diversifier\""];
|
|
}
|
|
|
|
// Misbehaviour defines misbehaviour for a solo machine which consists
|
|
// of a sequence and two signatures over different messages at that sequence.
|
|
message Misbehaviour {
|
|
option (gogoproto.goproto_getters) = false;
|
|
string client_id = 1 [(gogoproto.moretags) = "yaml:\"client_id\""];
|
|
uint64 sequence = 2;
|
|
SignatureAndData signature_one = 3 [(gogoproto.moretags) = "yaml:\"signature_one\""];
|
|
SignatureAndData signature_two = 4 [(gogoproto.moretags) = "yaml:\"signature_two\""];
|
|
}
|
|
|
|
// SignatureAndData contains a signature and the data signed over to create that
|
|
// signature.
|
|
message SignatureAndData {
|
|
option (gogoproto.goproto_getters) = false;
|
|
bytes signature = 1;
|
|
DataType data_type = 2 [(gogoproto.moretags) = "yaml:\"data_type\""];
|
|
bytes data = 3;
|
|
uint64 timestamp = 4;
|
|
}
|
|
|
|
// TimestampedSignatureData contains the signature data and the timestamp of the
|
|
// signature.
|
|
message TimestampedSignatureData {
|
|
option (gogoproto.goproto_getters) = false;
|
|
bytes signature_data = 1 [(gogoproto.moretags) = "yaml:\"signature_data\""];
|
|
uint64 timestamp = 2;
|
|
}
|
|
|
|
// SignBytes defines the signed bytes used for signature verification.
|
|
message SignBytes {
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
uint64 sequence = 1;
|
|
uint64 timestamp = 2;
|
|
string diversifier = 3;
|
|
// type of the data used
|
|
DataType data_type = 4 [(gogoproto.moretags) = "yaml:\"data_type\""];
|
|
// marshaled data
|
|
bytes data = 5;
|
|
}
|
|
|
|
// DataType defines the type of solo machine proof being created. This is done
|
|
// to preserve uniqueness of different data sign byte encodings.
|
|
enum DataType {
|
|
option (gogoproto.goproto_enum_prefix) = false;
|
|
|
|
// Default State
|
|
DATA_TYPE_UNINITIALIZED_UNSPECIFIED = 0 [(gogoproto.enumvalue_customname) = "UNSPECIFIED"];
|
|
// Data type for client state verification
|
|
DATA_TYPE_CLIENT_STATE = 1 [(gogoproto.enumvalue_customname) = "CLIENT"];
|
|
// Data type for consensus state verification
|
|
DATA_TYPE_CONSENSUS_STATE = 2 [(gogoproto.enumvalue_customname) = "CONSENSUS"];
|
|
// Data type for connection state verification
|
|
DATA_TYPE_CONNECTION_STATE = 3 [(gogoproto.enumvalue_customname) = "CONNECTION"];
|
|
// Data type for channel state verification
|
|
DATA_TYPE_CHANNEL_STATE = 4 [(gogoproto.enumvalue_customname) = "CHANNEL"];
|
|
// Data type for packet commitment verification
|
|
DATA_TYPE_PACKET_COMMITMENT = 5 [(gogoproto.enumvalue_customname) = "PACKETCOMMITMENT"];
|
|
// Data type for packet acknowledgement verification
|
|
DATA_TYPE_PACKET_ACKNOWLEDGEMENT = 6 [(gogoproto.enumvalue_customname) = "PACKETACKNOWLEDGEMENT"];
|
|
// Data type for packet receipt absence verification
|
|
DATA_TYPE_PACKET_RECEIPT_ABSENCE = 7 [(gogoproto.enumvalue_customname) = "PACKETRECEIPTABSENCE"];
|
|
// Data type for next sequence recv verification
|
|
DATA_TYPE_NEXT_SEQUENCE_RECV = 8 [(gogoproto.enumvalue_customname) = "NEXTSEQUENCERECV"];
|
|
// Data type for header verification
|
|
DATA_TYPE_HEADER = 9 [(gogoproto.enumvalue_customname) = "HEADER"];
|
|
}
|
|
|
|
// HeaderData returns the SignBytes data for update verification.
|
|
message HeaderData {
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
// header public key
|
|
google.protobuf.Any new_pub_key = 1 [(gogoproto.moretags) = "yaml:\"new_pub_key\""];
|
|
// header diversifier
|
|
string new_diversifier = 2 [(gogoproto.moretags) = "yaml:\"new_diversifier\""];
|
|
}
|
|
|
|
// ClientStateData returns the SignBytes data for client state verification.
|
|
message ClientStateData {
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
bytes path = 1;
|
|
google.protobuf.Any client_state = 2 [(gogoproto.moretags) = "yaml:\"client_state\""];
|
|
}
|
|
|
|
// ConsensusStateData returns the SignBytes data for consensus state
|
|
// verification.
|
|
message ConsensusStateData {
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
bytes path = 1;
|
|
google.protobuf.Any consensus_state = 2 [(gogoproto.moretags) = "yaml:\"consensus_state\""];
|
|
}
|
|
|
|
// ConnectionStateData returns the SignBytes data for connection state
|
|
// verification.
|
|
message ConnectionStateData {
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
bytes path = 1;
|
|
ibc.core.connection.v1.ConnectionEnd connection = 2;
|
|
}
|
|
|
|
// ChannelStateData returns the SignBytes data for channel state
|
|
// verification.
|
|
message ChannelStateData {
|
|
option (gogoproto.goproto_getters) = false;
|
|
|
|
bytes path = 1;
|
|
ibc.core.channel.v1.Channel channel = 2;
|
|
}
|
|
|
|
// PacketCommitmentData returns the SignBytes data for packet commitment
|
|
// verification.
|
|
message PacketCommitmentData {
|
|
bytes path = 1;
|
|
bytes commitment = 2;
|
|
}
|
|
|
|
// PacketAcknowledgementData returns the SignBytes data for acknowledgement
|
|
// verification.
|
|
message PacketAcknowledgementData {
|
|
bytes path = 1;
|
|
bytes acknowledgement = 2;
|
|
}
|
|
|
|
// PacketReceiptAbsenceData returns the SignBytes data for
|
|
// packet receipt absence verification.
|
|
message PacketReceiptAbsenceData {
|
|
bytes path = 1;
|
|
}
|
|
|
|
// NextSequenceRecvData returns the SignBytes data for verification of the next
|
|
// sequence to be received.
|
|
message NextSequenceRecvData {
|
|
bytes path = 1;
|
|
uint64 next_seq_recv = 2 [(gogoproto.moretags) = "yaml:\"next_seq_recv\""];
|
|
}
|