From a442d9522523e1777fa0a5dc7ae0c254371259ab Mon Sep 17 00:00:00 2001 From: AntonAndell Date: Mon, 12 Feb 2024 12:17:47 +0100 Subject: [PATCH] 807 add client specific hashing on ack and packet data (#825) * feat: hash depending on client type * feat: add IBC prefix for ics-08 clients and bugfixes (#826) * feat: Add revision number to light client heights Add revision number but for now do not add support for resseting chain height * revert to using two clients * feat: add IBC prefix for ics-08 clients and bugfixes * fix: hash ack value before sending to verify membership for ics8 client --------- Co-authored-by: izyak --------- Co-authored-by: izyak --- .../core/integration/IBCIntegrationTest.java | 2 +- .../main/java/ibc/ics02/client/IBCClient.java | 5 +- .../ibc/ics03/connection/IBCConnection.java | 18 +- .../java/ibc/ics04/channel/IBCPacket.java | 54 +- .../ibc/ics23/commitment/types/Merkle.java | 4 +- .../java/ibc/ics24/host/IBCCommitment.java | 9 +- .../src/main/java/ibc/ics24/host/IBCHost.java | 19 + .../main/java/ibc/ics24/host/IBCStore.java | 3 + .../java/ibc/ics25/handler/IBCHandler.java | 7 +- .../java/ibc/ics02/client/ClientTest.java | 6 +- .../java/ibc/ics04/channel/PacketTest.java | 8 +- .../ibc/ics25/handler/IBCHandlerTest.java | 2 +- .../ibc/ics25/handler/IBCHandlerTestBase.java | 2 +- .../java/icon/ibc/interfaces/IIBCClient.java | 4 +- .../ics-08-tendermint/build.gradle | 71 + .../ICS08TendermintLightClient.java | 335 + .../java/ibc/ics08/tendermint/Tendermint.java | 270 + .../ics08/tendermint/TendermintHelper.java | 162 + .../ibc/ics08/tendermint/LightClientTest.java | 330 + .../ics08/tendermint/LightClientTestBase.java | 334 + .../tendermint/data/adjacent/commit.1.json | 54 + .../tendermint/data/adjacent/commit.2.json | 54 + .../tendermint/data/adjacent/commit.3.json | 54 + .../data/adjacent/validators.1.json | 25 + .../data/adjacent/validators.2.json | 25 + .../data/adjacent/validators.3.json | 25 + .../tendermint/data/malicious/commit.1.json | 48 + .../tendermint/data/malicious/commit.2.json | 47 + .../tendermint/data/malicious/commit.3.json | 47 + .../data/malicious/validators.1.json | 16 + .../data/malicious/validators.2.json | 16 + .../data/malicious/validators.3.json | 16 + .../data/multi-validator/commit.1.json | 480 + .../data/multi-validator/commit.2.json | 480 + .../data/multi-validator/commit.3.json | 480 + .../data/multi-validator/validators.1.json | 664 + .../data/multi-validator/validators.2.json | 664 + .../data/multi-validator/validators.3.json | 664 + .../tendermint/data/simple/commit.1.json | 48 + .../tendermint/data/simple/commit.2.json | 47 + .../tendermint/data/simple/commit.3.json | 47 + .../tendermint/data/simple/validators.1.json | 16 + .../tendermint/data/simple/validators.2.json | 16 + .../tendermint/data/simple/validators.3.json | 16 + .../test/proto/amino/AminoProto.java | 0 .../proto/cosmos/ics23/v1/BatchEntry.java | 0 .../cosmos/ics23/v1/BatchEntryOrBuilder.java | 0 .../proto/cosmos/ics23/v1/BatchProof.java | 0 .../cosmos/ics23/v1/BatchProofOrBuilder.java | 0 .../cosmos/ics23/v1/CommitmentProof.java | 0 .../ics23/v1/CommitmentProofOrBuilder.java | 0 .../cosmos/ics23/v1/CompressedBatchEntry.java | 0 .../v1/CompressedBatchEntryOrBuilder.java | 0 .../cosmos/ics23/v1/CompressedBatchProof.java | 0 .../v1/CompressedBatchProofOrBuilder.java | 0 .../ics23/v1/CompressedExistenceProof.java | 0 .../v1/CompressedExistenceProofOrBuilder.java | 0 .../ics23/v1/CompressedNonExistenceProof.java | 0 .../CompressedNonExistenceProofOrBuilder.java | 0 .../proto/cosmos/ics23/v1/ExistenceProof.java | 0 .../ics23/v1/ExistenceProofOrBuilder.java | 0 .../test/proto/cosmos/ics23/v1/HashOp.java | 0 .../test/proto/cosmos/ics23/v1/InnerOp.java | 0 .../cosmos/ics23/v1/InnerOpOrBuilder.java | 0 .../test/proto/cosmos/ics23/v1/InnerSpec.java | 0 .../cosmos/ics23/v1/InnerSpecOrBuilder.java | 0 .../test/proto/cosmos/ics23/v1/LeafOp.java | 0 .../cosmos/ics23/v1/LeafOpOrBuilder.java | 0 .../test/proto/cosmos/ics23/v1/LengthOp.java | 0 .../cosmos/ics23/v1/NonExistenceProof.java | 0 .../ics23/v1/NonExistenceProofOrBuilder.java | 0 .../test/proto/cosmos/ics23/v1/ProofSpec.java | 0 .../cosmos/ics23/v1/ProofSpecOrBuilder.java | 0 .../proto/cosmos/ics23/v1/ProofsProto.java | 0 .../CancelSoftwareUpgradeProposal.java | 0 ...ancelSoftwareUpgradeProposalOrBuilder.java | 0 .../cosmos/upgrade/v1beta1/ModuleVersion.java | 0 .../v1beta1/ModuleVersionOrBuilder.java | 0 .../proto/cosmos/upgrade/v1beta1/Plan.java | 0 .../cosmos/upgrade/v1beta1/PlanOrBuilder.java | 0 .../v1beta1/SoftwareUpgradeProposal.java | 0 .../SoftwareUpgradeProposalOrBuilder.java | 0 .../cosmos/upgrade/v1beta1/UpgradeProto.java | 0 .../test/proto/cosmos_proto/CosmosProto.java | 0 .../cosmos_proto/InterfaceDescriptor.java | 0 .../InterfaceDescriptorOrBuilder.java | 0 .../proto/cosmos_proto/ScalarDescriptor.java | 0 .../ScalarDescriptorOrBuilder.java | 0 .../test/proto/cosmos_proto/ScalarType.java | 0 .../test/proto/gogoproto/GogoProto.java | 0 .../core/client/v1/ClientConsensusStates.java | 0 .../v1/ClientConsensusStatesOrBuilder.java | 0 .../proto/ibc/core/client/v1/ClientProto.java | 0 .../core/client/v1/ClientUpdateProposal.java | 0 .../v1/ClientUpdateProposalOrBuilder.java | 0 .../client/v1/ConsensusStateWithHeight.java | 0 .../v1/ConsensusStateWithHeightOrBuilder.java | 0 .../test/proto/ibc/core/client/v1/Height.java | 0 .../ibc/core/client/v1/HeightOrBuilder.java | 0 .../core/client/v1/IdentifiedClientState.java | 0 .../v1/IdentifiedClientStateOrBuilder.java | 0 .../test/proto/ibc/core/client/v1/Params.java | 0 .../ibc/core/client/v1/ParamsOrBuilder.java | 0 .../ibc/core/client/v1/UpgradeProposal.java | 0 .../client/v1/UpgradeProposalOrBuilder.java | 0 .../core/commitment/v1/CommitmentProto.java | 0 .../ibc/core/commitment/v1/MerklePath.java | 0 .../commitment/v1/MerklePathOrBuilder.java | 0 .../ibc/core/commitment/v1/MerklePrefix.java | 0 .../commitment/v1/MerklePrefixOrBuilder.java | 0 .../ibc/core/commitment/v1/MerkleProof.java | 0 .../commitment/v1/MerkleProofOrBuilder.java | 0 .../ibc/core/commitment/v1/MerkleRoot.java | 0 .../commitment/v1/MerkleRootOrBuilder.java | 0 .../tendermint/v1/ClientState.java | 0 .../tendermint/v1/ClientStateOrBuilder.java | 0 .../tendermint/v1/ConsensusState.java | 0 .../v1/ConsensusStateOrBuilder.java | 0 .../lightclients/tendermint/v1/Fraction.java | 0 .../tendermint/v1/FractionOrBuilder.java | 0 .../lightclients/tendermint/v1/Header.java | 0 .../tendermint/v1/HeaderOrBuilder.java | 0 .../tendermint/v1/Misbehaviour.java | 0 .../tendermint/v1/MisbehaviourOrBuilder.java | 0 .../tendermint/v1/TendermintLightProto.java | 0 .../icon/lightclient/v1/BlockUpdate.java | 0 .../lightclient/v1/BlockUpdateOrBuilder.java | 0 .../icon/lightclient/v1/ClientState.java | 0 .../lightclient/v1/ClientStateOrBuilder.java | 0 .../icon/lightclient/v1/ConsensusState.java | 0 .../v1/ConsensusStateOrBuilder.java | 0 .../proto/icon/lightclient/v1/LightProto.java | 0 .../icon/lightclient/v1/Misbehaviour.java | 0 .../lightclient/v1/MisbehaviourOrBuilder.java | 0 .../proto/icon/lightclient/v1/TrustLevel.java | 0 .../lightclient/v1/TrustLevelOrBuilder.java | 0 .../icon/proto/core/channel/Channel.java | 0 .../proto/core/channel/ChannelOrBuilder.java | 0 .../icon/proto/core/channel/ChannelProto.java | 0 .../proto/icon/proto/core/channel/Packet.java | 0 .../proto/core/channel/PacketOrBuilder.java | 0 .../icon/proto/core/channel/PacketState.java | 0 .../core/channel/PacketStateOrBuilder.java | 0 .../icon/proto/core/client/ClientProto.java | 0 .../proto/icon/proto/core/client/Height.java | 0 .../proto/core/client/HeightOrBuilder.java | 0 .../proto/core/commitment/BatchEntry.java | 0 .../core/commitment/BatchEntryOrBuilder.java | 0 .../proto/core/commitment/BatchProof.java | 0 .../core/commitment/BatchProofOrBuilder.java | 0 .../core/commitment/CommitmentProof.java | 0 .../commitment/CommitmentProofOrBuilder.java | 0 .../core/commitment/CommitmentProto.java | 0 .../core/commitment/CompressedBatchEntry.java | 0 .../CompressedBatchEntryOrBuilder.java | 0 .../core/commitment/CompressedBatchProof.java | 0 .../CompressedBatchProofOrBuilder.java | 0 .../commitment/CompressedExistenceProof.java | 0 .../CompressedExistenceProofOrBuilder.java | 0 .../CompressedNonExistenceProof.java | 0 .../CompressedNonExistenceProofOrBuilder.java | 0 .../proto/core/commitment/ExistenceProof.java | 0 .../commitment/ExistenceProofOrBuilder.java | 0 .../icon/proto/core/commitment/HashOp.java | 0 .../icon/proto/core/commitment/InnerOp.java | 0 .../core/commitment/InnerOpOrBuilder.java | 0 .../icon/proto/core/commitment/InnerSpec.java | 0 .../core/commitment/InnerSpecOrBuilder.java | 0 .../icon/proto/core/commitment/LeafOp.java | 0 .../core/commitment/LeafOpOrBuilder.java | 0 .../icon/proto/core/commitment/LengthOp.java | 0 .../proto/core/commitment/MerklePath.java | 0 .../core/commitment/MerklePathOrBuilder.java | 0 .../proto/core/commitment/MerklePrefix.java | 0 .../commitment/MerklePrefixOrBuilder.java | 0 .../proto/core/commitment/MerkleProof.java | 0 .../core/commitment/MerkleProofOrBuilder.java | 0 .../proto/core/commitment/MerkleRoot.java | 0 .../core/commitment/MerkleRootOrBuilder.java | 0 .../core/commitment/NonExistenceProof.java | 0 .../NonExistenceProofOrBuilder.java | 0 .../icon/proto/core/commitment/ProofSpec.java | 0 .../core/commitment/ProofSpecOrBuilder.java | 0 .../proto/core/commitment/ProofsProto.java | 0 .../proto/core/connection/ConnectionEnd.java | 0 .../connection/ConnectionEndOrBuilder.java | 0 .../core/connection/ConnectionProto.java | 0 .../proto/core/connection/Counterparty.java | 0 .../connection/CounterpartyOrBuilder.java | 0 .../icon/proto/core/connection/Version.java | 0 .../core/connection/VersionOrBuilder.java | 0 .../test/proto/icon/types/v1/BTPHeader.java | 0 .../icon/types/v1/BTPHeaderOrBuilder.java | 0 .../test/proto/icon/types/v1/BlockIDFlag.java | 0 .../test/proto/icon/types/v1/MerkleNode.java | 0 .../icon/types/v1/MerkleNodeOrBuilder.java | 0 .../proto/icon/types/v1/MerkleProofs.java | 0 .../icon/types/v1/MerkleProofsOrBuilder.java | 0 .../proto/icon/types/v1/SignedHeader.java | 0 .../icon/types/v1/SignedHeaderOrBuilder.java | 0 .../proto/icon/types/v1/SignedMsgType.java | 0 .../test/proto/icon/types/v1/TypesProto.java | 0 .../proto/tendermint/crypto/DominoOp.java | 0 .../tendermint/crypto/DominoOpOrBuilder.java | 0 .../proto/tendermint/crypto/KeysProto.java | 0 .../test/proto/tendermint/crypto/Proof.java | 0 .../test/proto/tendermint/crypto/ProofOp.java | 0 .../tendermint/crypto/ProofOpOrBuilder.java | 0 .../proto/tendermint/crypto/ProofOps.java | 0 .../tendermint/crypto/ProofOpsOrBuilder.java | 0 .../tendermint/crypto/ProofOrBuilder.java | 0 .../proto/tendermint/crypto/ProofProto.java | 0 .../proto/tendermint/crypto/PublicKey.java | 0 .../tendermint/crypto/PublicKeyOrBuilder.java | 0 .../test/proto/tendermint/crypto/ValueOp.java | 0 .../tendermint/crypto/ValueOpOrBuilder.java | 0 .../test/proto/tendermint/types/BlockID.java | 0 .../proto/tendermint/types/BlockIDFlag.java | 0 .../tendermint/types/BlockIDOrBuilder.java | 0 .../proto/tendermint/types/BlockMeta.java | 0 .../tendermint/types/BlockMetaOrBuilder.java | 0 .../test/proto/tendermint/types/Commit.java | 0 .../tendermint/types/CommitOrBuilder.java | 0 .../proto/tendermint/types/CommitSig.java | 0 .../tendermint/types/CommitSigOrBuilder.java | 0 .../test/proto/tendermint/types/Data.java | 0 .../proto/tendermint/types/DataOrBuilder.java | 0 .../test/proto/tendermint/types/Header.java | 0 .../tendermint/types/HeaderOrBuilder.java | 0 .../proto/tendermint/types/LightBlock.java | 0 .../tendermint/types/LightBlockOrBuilder.java | 0 .../test/proto/tendermint/types/Part.java | 0 .../proto/tendermint/types/PartOrBuilder.java | 0 .../proto/tendermint/types/PartSetHeader.java | 0 .../types/PartSetHeaderOrBuilder.java | 0 .../test/proto/tendermint/types/Proposal.java | 0 .../tendermint/types/ProposalOrBuilder.java | 0 .../proto/tendermint/types/SignedHeader.java | 0 .../types/SignedHeaderOrBuilder.java | 0 .../proto/tendermint/types/SignedMsgType.java | 0 .../tendermint/types/SimpleValidator.java | 0 .../types/SimpleValidatorOrBuilder.java | 0 .../test/proto/tendermint/types/TxProof.java | 0 .../tendermint/types/TxProofOrBuilder.java | 0 .../proto/tendermint/types/TypesProto.java | 0 .../proto/tendermint/types/Validator.java | 0 .../tendermint/types/ValidatorOrBuilder.java | 0 .../tendermint/types/ValidatorProto.java | 0 .../proto/tendermint/types/ValidatorSet.java | 0 .../types/ValidatorSetOrBuilder.java | 0 .../test/proto/tendermint/types/Vote.java | 0 .../proto/tendermint/types/VoteOrBuilder.java | 0 .../test/proto/tendermint/version/App.java | 0 .../tendermint/version/AppOrBuilder.java | 0 .../proto/tendermint/version/Consensus.java | 0 .../version/ConsensusOrBuilder.java | 0 .../proto/tendermint/version/TypesProto.java | 0 .../lightclients/tendermint/build.gradle | 5 +- .../main/java/ibc/tendermint/Tendermint.java | 6 +- .../java/ibc/tendermint/TendermintHelper.java | 62 +- .../ibc/tendermint/TendermintLightClient.java | 55 +- .../java/ibc/tendermint/LightClientTest.java | 84 +- .../ibc/tendermint/LightClientTestBase.java | 53 +- .../commit.1.json | 72 + .../commit.2.json | 72 + .../commit.3.json | 72 + .../validators.1.json | 52 + .../validators.2.json | 52 + .../validators.3.json | 52 + .../ibc/tendermint/light/TendermintLight.java | 11972 ++++++++++++++++ .../proto/clients/tendermint/BlockID.java | 59 + .../proto/clients/tendermint/BlockIDFlag.java | 11 + .../clients/tendermint/CanonicalBlockID.java | 59 + .../tendermint/CanonicalPartSetHeader.java | 60 + .../clients/tendermint/CanonicalVote.java | 130 + .../proto/clients/tendermint/ClientState.java | 181 + .../icon/proto/clients/tendermint/Commit.java | 96 + .../proto/clients/tendermint/CommitSig.java | 94 + .../proto/clients/tendermint/Consensus.java | 60 + .../clients/tendermint/ConsensusState.java | 77 + .../proto/clients/tendermint/Duration.java | 60 + .../proto/clients/tendermint/Fraction.java | 60 + .../proto/clients/tendermint/LightHeader.java | 265 + .../clients/tendermint/PartSetHeader.java | 60 + .../proto/clients/tendermint/PublicKey.java | 76 + .../clients/tendermint/SignedHeader.java | 59 + .../clients/tendermint/SignedMsgType.java | 11 + .../clients/tendermint/SimpleValidator.java | 60 + .../proto/clients/tendermint/Timestamp.java | 60 + .../proto/clients/tendermint/TmHeader.java | 94 + .../proto/clients/tendermint/Validator.java | 94 + .../clients/tendermint/ValidatorSet.java | 79 + .../icon/proto/clients/tendermint/Vote.java | 163 + .../proto/core/commitment/BatchEntry.java | 59 + .../proto/core/commitment/BatchProof.java | 44 + .../core/commitment/CommitmentProof.java | 93 + .../core/commitment/CompressedBatchEntry.java | 59 + .../core/commitment/CompressedBatchProof.java | 61 + .../commitment/CompressedExistenceProof.java | 96 + .../CompressedNonExistenceProof.java | 76 + .../proto/core/commitment/ExistenceProof.java | 95 + .../icon/proto/core/commitment/HashOp.java | 17 + .../icon/proto/core/commitment/InnerOp.java | 77 + .../icon/proto/core/commitment/InnerSpec.java | 131 + .../icon/proto/core/commitment/LeafOp.java | 111 + .../icon/proto/core/commitment/LengthOp.java | 21 + .../proto/core/commitment/MerklePath.java | 45 + .../proto/core/commitment/MerklePrefix.java | 42 + .../proto/core/commitment/MerkleProof.java | 44 + .../proto/core/commitment/MerkleRoot.java | 42 + .../core/commitment/NonExistenceProof.java | 76 + .../icon/proto/core/commitment/ProofSpec.java | 112 + .../main/java/ibc/icon/score/util/Proto.java | 16 +- contracts/javascore/settings.gradle | 4 + .../clients/tendermint/TendermintLight.proto | 206 + 315 files changed, 21630 insertions(+), 168 deletions(-) create mode 100644 contracts/javascore/lightclients/ics-08-tendermint/build.gradle create mode 100644 contracts/javascore/lightclients/ics-08-tendermint/src/main/java/ibc/ics08/tendermint/ICS08TendermintLightClient.java create mode 100644 contracts/javascore/lightclients/ics-08-tendermint/src/main/java/ibc/ics08/tendermint/Tendermint.java create mode 100644 contracts/javascore/lightclients/ics-08-tendermint/src/main/java/ibc/ics08/tendermint/TendermintHelper.java create mode 100644 contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/LightClientTest.java create mode 100644 contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/LightClientTestBase.java create mode 100644 contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/adjacent/commit.1.json create mode 100644 contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/adjacent/commit.2.json create mode 100644 contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/adjacent/commit.3.json create mode 100644 contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/adjacent/validators.1.json create mode 100644 contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/adjacent/validators.2.json create mode 100644 contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/adjacent/validators.3.json create mode 100644 contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/malicious/commit.1.json create mode 100644 contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/malicious/commit.2.json create mode 100644 contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/malicious/commit.3.json create mode 100644 contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/malicious/validators.1.json create mode 100644 contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/malicious/validators.2.json create mode 100644 contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/malicious/validators.3.json create mode 100644 contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/multi-validator/commit.1.json create mode 100644 contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/multi-validator/commit.2.json create mode 100644 contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/multi-validator/commit.3.json create mode 100644 contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/multi-validator/validators.1.json create mode 100644 contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/multi-validator/validators.2.json create mode 100644 contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/multi-validator/validators.3.json create mode 100644 contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/simple/commit.1.json create mode 100644 contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/simple/commit.2.json create mode 100644 contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/simple/commit.3.json create mode 100644 contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/simple/validators.1.json create mode 100644 contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/simple/validators.2.json create mode 100644 contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/simple/validators.3.json rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/amino/AminoProto.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/ics23/v1/BatchEntry.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/ics23/v1/BatchEntryOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/ics23/v1/BatchProof.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/ics23/v1/BatchProofOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/ics23/v1/CommitmentProof.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/ics23/v1/CommitmentProofOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/ics23/v1/CompressedBatchEntry.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/ics23/v1/CompressedBatchEntryOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/ics23/v1/CompressedBatchProof.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/ics23/v1/CompressedBatchProofOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/ics23/v1/CompressedExistenceProof.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/ics23/v1/CompressedExistenceProofOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/ics23/v1/CompressedNonExistenceProof.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/ics23/v1/CompressedNonExistenceProofOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/ics23/v1/ExistenceProof.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/ics23/v1/ExistenceProofOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/ics23/v1/HashOp.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/ics23/v1/InnerOp.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/ics23/v1/InnerOpOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/ics23/v1/InnerSpec.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/ics23/v1/InnerSpecOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/ics23/v1/LeafOp.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/ics23/v1/LeafOpOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/ics23/v1/LengthOp.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/ics23/v1/NonExistenceProof.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/ics23/v1/NonExistenceProofOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/ics23/v1/ProofSpec.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/ics23/v1/ProofSpecOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/ics23/v1/ProofsProto.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/upgrade/v1beta1/CancelSoftwareUpgradeProposal.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/upgrade/v1beta1/CancelSoftwareUpgradeProposalOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/upgrade/v1beta1/ModuleVersion.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/upgrade/v1beta1/ModuleVersionOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/upgrade/v1beta1/Plan.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/upgrade/v1beta1/PlanOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/upgrade/v1beta1/SoftwareUpgradeProposal.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/upgrade/v1beta1/SoftwareUpgradeProposalOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos/upgrade/v1beta1/UpgradeProto.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos_proto/CosmosProto.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos_proto/InterfaceDescriptor.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos_proto/InterfaceDescriptorOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos_proto/ScalarDescriptor.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos_proto/ScalarDescriptorOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/cosmos_proto/ScalarType.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/gogoproto/GogoProto.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/core/client/v1/ClientConsensusStates.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/core/client/v1/ClientConsensusStatesOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/core/client/v1/ClientProto.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/core/client/v1/ClientUpdateProposal.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/core/client/v1/ClientUpdateProposalOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/core/client/v1/ConsensusStateWithHeight.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/core/client/v1/ConsensusStateWithHeightOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/core/client/v1/Height.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/core/client/v1/HeightOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/core/client/v1/IdentifiedClientState.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/core/client/v1/IdentifiedClientStateOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/core/client/v1/Params.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/core/client/v1/ParamsOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/core/client/v1/UpgradeProposal.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/core/client/v1/UpgradeProposalOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/core/commitment/v1/CommitmentProto.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/core/commitment/v1/MerklePath.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/core/commitment/v1/MerklePathOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/core/commitment/v1/MerklePrefix.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/core/commitment/v1/MerklePrefixOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/core/commitment/v1/MerkleProof.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/core/commitment/v1/MerkleProofOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/core/commitment/v1/MerkleRoot.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/core/commitment/v1/MerkleRootOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/lightclients/tendermint/v1/ClientState.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/lightclients/tendermint/v1/ClientStateOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/lightclients/tendermint/v1/ConsensusState.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/lightclients/tendermint/v1/ConsensusStateOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/lightclients/tendermint/v1/Fraction.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/lightclients/tendermint/v1/FractionOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/lightclients/tendermint/v1/Header.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/lightclients/tendermint/v1/HeaderOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/lightclients/tendermint/v1/Misbehaviour.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/lightclients/tendermint/v1/MisbehaviourOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/ibc/lightclients/tendermint/v1/TendermintLightProto.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/lightclient/v1/BlockUpdate.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/lightclient/v1/BlockUpdateOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/lightclient/v1/ClientState.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/lightclient/v1/ClientStateOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/lightclient/v1/ConsensusState.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/lightclient/v1/ConsensusStateOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/lightclient/v1/LightProto.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/lightclient/v1/Misbehaviour.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/lightclient/v1/MisbehaviourOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/lightclient/v1/TrustLevel.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/lightclient/v1/TrustLevelOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/channel/Channel.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/channel/ChannelOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/channel/ChannelProto.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/channel/Packet.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/channel/PacketOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/channel/PacketState.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/channel/PacketStateOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/client/ClientProto.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/client/Height.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/client/HeightOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/BatchEntry.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/BatchEntryOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/BatchProof.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/BatchProofOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/CommitmentProof.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/CommitmentProofOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/CommitmentProto.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/CompressedBatchEntry.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/CompressedBatchEntryOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/CompressedBatchProof.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/CompressedBatchProofOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/CompressedExistenceProof.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/CompressedExistenceProofOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/CompressedNonExistenceProof.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/CompressedNonExistenceProofOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/ExistenceProof.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/ExistenceProofOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/HashOp.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/InnerOp.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/InnerOpOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/InnerSpec.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/InnerSpecOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/LeafOp.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/LeafOpOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/LengthOp.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/MerklePath.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/MerklePathOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/MerklePrefix.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/MerklePrefixOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/MerkleProof.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/MerkleProofOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/MerkleRoot.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/MerkleRootOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/NonExistenceProof.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/NonExistenceProofOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/ProofSpec.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/ProofSpecOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/commitment/ProofsProto.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/connection/ConnectionEnd.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/connection/ConnectionEndOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/connection/ConnectionProto.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/connection/Counterparty.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/connection/CounterpartyOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/connection/Version.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/proto/core/connection/VersionOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/types/v1/BTPHeader.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/types/v1/BTPHeaderOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/types/v1/BlockIDFlag.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/types/v1/MerkleNode.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/types/v1/MerkleNodeOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/types/v1/MerkleProofs.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/types/v1/MerkleProofsOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/types/v1/SignedHeader.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/types/v1/SignedHeaderOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/types/v1/SignedMsgType.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/icon/types/v1/TypesProto.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/crypto/DominoOp.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/crypto/DominoOpOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/crypto/KeysProto.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/crypto/Proof.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/crypto/ProofOp.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/crypto/ProofOpOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/crypto/ProofOps.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/crypto/ProofOpsOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/crypto/ProofOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/crypto/ProofProto.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/crypto/PublicKey.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/crypto/PublicKeyOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/crypto/ValueOp.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/crypto/ValueOpOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/BlockID.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/BlockIDFlag.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/BlockIDOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/BlockMeta.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/BlockMetaOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/Commit.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/CommitOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/CommitSig.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/CommitSigOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/Data.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/DataOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/Header.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/HeaderOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/LightBlock.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/LightBlockOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/Part.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/PartOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/PartSetHeader.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/PartSetHeaderOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/Proposal.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/ProposalOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/SignedHeader.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/SignedHeaderOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/SignedMsgType.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/SimpleValidator.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/SimpleValidatorOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/TxProof.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/TxProofOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/TypesProto.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/Validator.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/ValidatorOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/ValidatorProto.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/ValidatorSet.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/ValidatorSetOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/Vote.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/types/VoteOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/version/App.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/version/AppOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/version/Consensus.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/version/ConsensusOrBuilder.java (100%) rename contracts/javascore/lightclients/{tendermint/src/test/java/ibc => ics-08-tendermint/src/test/java/ibc/ics08}/tendermint/test/proto/tendermint/version/TypesProto.java (100%) create mode 100644 contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/data/validator-with-long-voting-power/commit.1.json create mode 100644 contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/data/validator-with-long-voting-power/commit.2.json create mode 100644 contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/data/validator-with-long-voting-power/commit.3.json create mode 100644 contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/data/validator-with-long-voting-power/validators.1.json create mode 100644 contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/data/validator-with-long-voting-power/validators.2.json create mode 100644 contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/data/validator-with-long-voting-power/validators.3.json create mode 100644 contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/light/TendermintLight.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/BlockID.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/BlockIDFlag.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/CanonicalBlockID.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/CanonicalPartSetHeader.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/CanonicalVote.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/ClientState.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/Commit.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/CommitSig.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/Consensus.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/ConsensusState.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/Duration.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/Fraction.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/LightHeader.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/PartSetHeader.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/PublicKey.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/SignedHeader.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/SignedMsgType.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/SimpleValidator.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/Timestamp.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/TmHeader.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/Validator.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/ValidatorSet.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/Vote.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/BatchEntry.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/BatchProof.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/CommitmentProof.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/CompressedBatchEntry.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/CompressedBatchProof.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/CompressedExistenceProof.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/CompressedNonExistenceProof.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/ExistenceProof.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/HashOp.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/InnerOp.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/InnerSpec.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/LeafOp.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/LengthOp.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/MerklePath.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/MerklePrefix.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/MerkleProof.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/MerkleRoot.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/NonExistenceProof.java create mode 100644 contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/ProofSpec.java create mode 100644 proto/clients/tendermint/TendermintLight.proto diff --git a/contracts/javascore/ibc/src/intTest/java/ibc/core/integration/IBCIntegrationTest.java b/contracts/javascore/ibc/src/intTest/java/ibc/core/integration/IBCIntegrationTest.java index 40836db6c..0dba5f8b8 100644 --- a/contracts/javascore/ibc/src/intTest/java/ibc/core/integration/IBCIntegrationTest.java +++ b/contracts/javascore/ibc/src/intTest/java/ibc/core/integration/IBCIntegrationTest.java @@ -64,7 +64,7 @@ static void setup() throws Exception { @Test @Order(0) void registerClient() { - getClientInterface(owner).registerClient(clientType, mockLightClient._address()); + getClientInterface(owner).registerClient(clientType, mockLightClient._address(), 0); } @Test diff --git a/contracts/javascore/ibc/src/main/java/ibc/ics02/client/IBCClient.java b/contracts/javascore/ibc/src/main/java/ibc/ics02/client/IBCClient.java index f014a5c96..a22700d38 100644 --- a/contracts/javascore/ibc/src/main/java/ibc/ics02/client/IBCClient.java +++ b/contracts/javascore/ibc/src/main/java/ibc/ics02/client/IBCClient.java @@ -3,6 +3,7 @@ import ibc.icon.score.util.Logger; import ibc.icon.score.util.NullChecker; import ibc.ics24.host.IBCHost; +import ibc.ics24.host.IBCStore; import icon.ibc.interfaces.ILightClient; import icon.ibc.structs.messages.MsgCreateClient; import icon.ibc.structs.messages.MsgUpdateClient; @@ -16,9 +17,10 @@ public class IBCClient extends IBCHost { static Logger logger = new Logger("ibc-core"); - public void registerClient(String clientType, Address lightClient) { + public void registerClient(String clientType, Address lightClient, int hashType) { Context.require(clientRegistry.get(clientType) == null, "Already registered."); clientRegistry.set(clientType, lightClient); + IBCStore.hashType.set(clientType, hashType); } public String _createClient(MsgCreateClient msg) { @@ -32,6 +34,7 @@ public String _createClient(MsgCreateClient msg) { clientTypes.set(clientId, msg.getClientType()); clientImplementations.set(clientId, lightClientAddr); btpNetworkId.set(clientId, msg.getBtpNetworkId()); + // hashMethod.set(clientId, msg.getHashMethod()); ILightClient client = getClient(clientId); client.createClient(clientId, msg.getClientState(), msg.getConsensusState()); diff --git a/contracts/javascore/ibc/src/main/java/ibc/ics03/connection/IBCConnection.java b/contracts/javascore/ibc/src/main/java/ibc/ics03/connection/IBCConnection.java index 147917c5e..211e75585 100644 --- a/contracts/javascore/ibc/src/main/java/ibc/ics03/connection/IBCConnection.java +++ b/contracts/javascore/ibc/src/main/java/ibc/ics03/connection/IBCConnection.java @@ -1,17 +1,18 @@ package ibc.ics03.connection; import java.math.BigInteger; -import java.util.Arrays; import java.util.List; import icon.proto.core.client.Height; import icon.proto.core.connection.ConnectionEnd; import icon.proto.core.connection.Counterparty; import icon.proto.core.connection.Version; +import ibc.core.commitment.v1.MerklePrefix; import ibc.icon.score.util.ByteUtil; import ibc.icon.score.util.Logger; import ibc.ics02.client.IBCClient; import ibc.ics24.host.IBCCommitment; +import ibc.ics24.host.IBCHost; import icon.ibc.interfaces.ILightClient; import icon.ibc.structs.messages.MsgConnectionOpenAck; import icon.ibc.structs.messages.MsgConnectionOpenConfirm; @@ -24,6 +25,12 @@ public class IBCConnection extends IBCClient { public static final String v1Identifier = "1"; public static final List supportedV1Features = List.of("ORDER_ORDERED", "ORDER_UNORDERED"); + public static final MerklePrefix ICS08PREFIX = new MerklePrefix(); + static { + ICS08PREFIX.setKeyPrefix("ibc".getBytes()); + + } + Logger logger = new Logger("ibc-core"); public String _connectionOpenInit(MsgConnectionOpenInit msg) { @@ -67,6 +74,9 @@ public String _connectionOpenTry(MsgConnectionOpenTry msg) { Counterparty expectedCounterparty = new Counterparty(); expectedCounterparty.setClientId(msg.getClientId()); expectedCounterparty.setConnectionId(""); + if (IBCCommitment.getHashType(msg.getClientId()) == IBCHost.HashType.ICS08.type) { + expectedCounterparty.setPrefix(ICS08PREFIX); + } ConnectionEnd expectedConnection = new ConnectionEnd(); expectedConnection.setClientId(counterparty.getClientId()); @@ -108,6 +118,9 @@ public byte[] _connectionOpenAck(MsgConnectionOpenAck msg) { Counterparty expectedCounterparty = new Counterparty(); expectedCounterparty.setClientId(connection.getClientId()); expectedCounterparty.setConnectionId(msg.getConnectionId()); + if (IBCCommitment.getHashType(connection.getClientId()) == IBCHost.HashType.ICS08.type) { + expectedCounterparty.setPrefix(ICS08PREFIX); + } ConnectionEnd expectedConnection = new ConnectionEnd(); expectedConnection.setClientId(connection.getCounterparty().getClientId()); @@ -150,6 +163,9 @@ public byte[] _connectionOpenConfirm(MsgConnectionOpenConfirm msg) { Counterparty expectedCounterparty = new Counterparty(); expectedCounterparty.setClientId(connection.getClientId()); expectedCounterparty.setConnectionId(msg.getConnectionId()); + if (IBCCommitment.getHashType(connection.getClientId()) == IBCHost.HashType.ICS08.type) { + expectedCounterparty.setPrefix(ICS08PREFIX); + } ConnectionEnd expectedConnection = new ConnectionEnd(); expectedConnection.setClientId(connection.getCounterparty().getClientId()); diff --git a/contracts/javascore/ibc/src/main/java/ibc/ics04/channel/IBCPacket.java b/contracts/javascore/ibc/src/main/java/ibc/ics04/channel/IBCPacket.java index 4cca5cedb..08812678e 100644 --- a/contracts/javascore/ibc/src/main/java/ibc/ics04/channel/IBCPacket.java +++ b/contracts/javascore/ibc/src/main/java/ibc/ics04/channel/IBCPacket.java @@ -3,6 +3,7 @@ import ibc.icon.score.util.ByteUtil; import ibc.icon.score.util.Proto; import ibc.ics24.host.IBCCommitment; +import ibc.ics24.host.IBCHost; import icon.ibc.interfaces.ILightClient; import icon.ibc.structs.messages.MsgRequestTimeoutPacket; import score.Context; @@ -58,7 +59,7 @@ public void _sendPacket(Packet packet) { packet.getSourceChannel(), packet.getSequence()); - byte[] packetCommitment = createPacketCommitment(packet); + byte[] packetCommitment = createPacketCommitment(connection.getClientId(), packet); commitments.set(packetCommitmentKey, packetCommitment); packetHeights.at(packet.getSourcePort()).at(packet.getSourceChannel()).set(packet.getSequence(), Context.getBlockHeight()); @@ -99,7 +100,7 @@ public void _recvPacket(Packet packet, byte[] proof, byte[] proofHeight) { byte[] commitmentPath = IBCCommitment.packetCommitmentPath(packet.getSourcePort(), packet.getSourceChannel(), packet.getSequence()); - byte[] commitmentBytes = createPacketCommitmentBytes(packet); + byte[] commitmentBytes = createPacketCommitmentBytes(connection.getClientId(), packet); verifyPacketCommitment( connection, @@ -145,7 +146,7 @@ public void _writeAcknowledgement(String destinationPortId, String destinationCh byte[] ackCommitmentKey = IBCCommitment.packetAcknowledgementCommitmentKey(destinationPortId, destinationChannel, sequence); Context.require(commitments.get(ackCommitmentKey) == null, "acknowledgement for packet already exists"); - byte[] ackCommitment = IBCCommitment.keccak256(acknowledgement); + byte[] ackCommitment = createAcknowledgmentCommitment(connection.getClientId(), acknowledgement); commitments.set(ackCommitmentKey, ackCommitment); ackHeights.at(destinationPortId).at(destinationChannel).set(sequence, Context.getBlockHeight()); @@ -174,18 +175,19 @@ public void _acknowledgePacket(Packet packet, byte[] acknowledgement, byte[] pro packet.getSourceChannel(), packet.getSequence()); byte[] packetCommitment = commitments.get(packetCommitmentKey); Context.require(packetCommitment != null, "packet commitment not found"); - byte[] commitment = createPacketCommitment(packet); + byte[] commitment = createPacketCommitment(connection.getClientId(), packet); Context.require(Arrays.equals(packetCommitment, commitment), "commitment byte[] are not equal"); byte[] packetAckPath = IBCCommitment.packetAcknowledgementCommitmentPath(packet.getDestinationPort(), packet.getDestinationChannel(), packet.getSequence()); + byte[] commitmentBytes = createAcknowledgmentCommitmentBytes(connection.getClientId(), acknowledgement); verifyPacketAcknowledgement( connection, proofHeight, proof, packetAckPath, - acknowledgement); + commitmentBytes); if (channel.getOrdering() == Channel.Order.ORDER_ORDERED) { DictDB nextSequenceAckSourcePort = nextSequenceAcknowledgements @@ -236,7 +238,7 @@ public void _requestTimeout(MsgRequestTimeoutPacket msg) { byte[] commitmentPath = IBCCommitment.packetCommitmentPath(packet.getSourcePort(), packet.getSourceChannel(), packet.getSequence()); - byte[] commitmentBytes = createPacketCommitmentBytes(packet); + byte[] commitmentBytes = createPacketCommitmentBytes(connection.getClientId(), packet); verifyPacketCommitment( connection, proofHeight, @@ -300,7 +302,7 @@ public void _timeoutPacket(Packet packet, byte[] proofHeight, byte[] proof, BigI packet.getSourceChannel(), packet.getSequence()); byte[] packetCommitment = commitments.get(packetCommitmentKey); Context.require(packetCommitment != null, "packet commitment not found"); - byte[] commitment = createPacketCommitment(packet); + byte[] commitment = createPacketCommitment(connection.getClientId(), packet); Context.require(Arrays.equals(packetCommitment, commitment), "commitment byte[] are not equal"); @@ -432,11 +434,20 @@ private BigInteger calcBlockDelay(BigInteger timeDelay) { return blockDelay; } - private byte[] createPacketCommitment(Packet packet) { - return IBCCommitment.keccak256(createPacketCommitmentBytes(packet)); + private byte[] createPacketCommitment(String clientId, Packet packet) { + return IBCCommitment.keccak256(createPacketCommitmentBytes(clientId, packet)); + } + + private byte[] createPacketCommitmentBytes(String clientId, Packet packet) { + int hashType = IBCCommitment.getHashType(clientId); + if (hashType == IBCHost.HashType.ICS08.type) { + return createIBCPacketCommitmentBytes(packet); + } + + return createWasmPacketCommitmentBytes(packet); } - public static byte[] createPacketCommitmentBytes(Packet packet) { + public static byte[] createWasmPacketCommitmentBytes(Packet packet) { return ByteUtil.join( Proto.encodeFixed64(packet.getTimeoutTimestamp(), false), Proto.encodeFixed64(packet.getTimeoutHeight().getRevisionNumber(), @@ -446,6 +457,29 @@ public static byte[] createPacketCommitmentBytes(Packet packet) { IBCCommitment.keccak256(packet.getData())); } + public static byte[] createIBCPacketCommitmentBytes(Packet packet) { + return IBCCommitment.sha256(ByteUtil.join( + Proto.encodeFixed64(packet.getTimeoutTimestamp(), false), + Proto.encodeFixed64(packet.getTimeoutHeight().getRevisionNumber(), + false), + Proto.encodeFixed64(packet.getTimeoutHeight().getRevisionHeight(), + false), + IBCCommitment.sha256(packet.getData()))); + } + + private byte[] createAcknowledgmentCommitment(String clientId, byte[] ack) { + return IBCCommitment.keccak256(createAcknowledgmentCommitmentBytes(clientId, ack)); + } + + public static byte[] createAcknowledgmentCommitmentBytes(String clientId, byte[] ack) { + int hashType = IBCCommitment.getHashType(clientId); + if (hashType == IBCHost.HashType.ICS08.type) { + return IBCCommitment.sha256(ack); + } + + return ack; + } + private boolean lt(Height h1, Height h2) { return h1.getRevisionNumber().compareTo(h2.getRevisionNumber()) < 0 || (h1.getRevisionNumber().equals(h2.getRevisionNumber()) diff --git a/contracts/javascore/ibc/src/main/java/ibc/ics23/commitment/types/Merkle.java b/contracts/javascore/ibc/src/main/java/ibc/ics23/commitment/types/Merkle.java index 802ba75af..8efd8d4a0 100644 --- a/contracts/javascore/ibc/src/main/java/ibc/ics23/commitment/types/Merkle.java +++ b/contracts/javascore/ibc/src/main/java/ibc/ics23/commitment/types/Merkle.java @@ -20,10 +20,10 @@ public class Merkle { Proof.getTendermintSpec() ); - public static MerklePath applyPrefix(String path) { + public static MerklePath applyPrefix(String prefix, String path) { var mpath = new MerklePath(); List keyPath = new ArrayList<>(); - keyPath.add(StringUtil.bytesToHex("wasm".getBytes())); + keyPath.add(prefix); keyPath.add(path); mpath.setKeyPath(keyPath); return mpath; diff --git a/contracts/javascore/ibc/src/main/java/ibc/ics24/host/IBCCommitment.java b/contracts/javascore/ibc/src/main/java/ibc/ics24/host/IBCCommitment.java index c36785c28..3ffbc18ad 100644 --- a/contracts/javascore/ibc/src/main/java/ibc/ics24/host/IBCCommitment.java +++ b/contracts/javascore/ibc/src/main/java/ibc/ics24/host/IBCCommitment.java @@ -11,8 +11,8 @@ * "https://github.com/cosmos/ibc/tree/main/spec/core/ics-024-host-requirements#path-space">path-space */ public class IBCCommitment { - private static final String KECCAK256 = "keccak-256"; - private static final String SHA256 = "sha-256"; + public static final String KECCAK256 = "keccak-256"; + public static final String SHA256 = "sha-256"; public static byte[] keccak256(byte[] msg) { return Context.hash(KECCAK256, msg); @@ -22,6 +22,11 @@ public static byte[] sha256(byte[] msg) { return Context.hash(SHA256, msg); } + public static int getHashType(String clientId) { + String clientType = IBCStore.clientTypes.get(clientId); + return IBCStore.hashType.getOrDefault(clientType, IBCHost.HashType.WASM.type); + } + public static byte[] clientStatePath(String clientId) { return StringUtil.encodePacked("clients/", clientId, "/clientState"); } diff --git a/contracts/javascore/ibc/src/main/java/ibc/ics24/host/IBCHost.java b/contracts/javascore/ibc/src/main/java/ibc/ics24/host/IBCHost.java index c6c15c421..a5237ba09 100644 --- a/contracts/javascore/ibc/src/main/java/ibc/ics24/host/IBCHost.java +++ b/contracts/javascore/ibc/src/main/java/ibc/ics24/host/IBCHost.java @@ -11,6 +11,25 @@ public class IBCHost extends IBCStore { private static final String TAG = "IBCHOST: "; private static final Address chainScore = Address.fromString("cx0000000000000000000000000000000000000000"); + public enum HashType { + WASM(0), + ICS08(1); + + public final int type; + HashType(int type){ this.type = type; } + + public int type() { return type; } + + static public HashType of(int type) { + for(HashType t : values()) { + if (t.type == type) { + return t; + } + } + throw new IllegalArgumentException(); + } + } + /*** * claimCapability allows the IBC app module to claim a capability that core IBC * passes to it diff --git a/contracts/javascore/ibc/src/main/java/ibc/ics24/host/IBCStore.java b/contracts/javascore/ibc/src/main/java/ibc/ics24/host/IBCStore.java index d641338ff..318f63e12 100644 --- a/contracts/javascore/ibc/src/main/java/ibc/ics24/host/IBCStore.java +++ b/contracts/javascore/ibc/src/main/java/ibc/ics24/host/IBCStore.java @@ -35,6 +35,7 @@ public abstract class IBCStore extends ModuleManager implements IIBCHost { private static final String BTP_NETWORK_ID = "btpNetworkId"; private static final String TIMEOUT_REQUESTS = "timeout_requests"; private static final String ACK_HEIGHTS = "ackHeights"; + private static final String HASH_METHOD = "hashMethod"; // DB Variables // Commitments @@ -81,6 +82,8 @@ public abstract class IBCStore extends ModuleManager implements IIBCHost { public static final DictDB btpNetworkId = Context.newDictDB(BTP_NETWORK_ID, Integer.class); public static final DictDB timeoutRequests = Context.newDictDB(TIMEOUT_REQUESTS, Boolean.class); + public static final DictDB hashType = Context.newDictDB(HASH_METHOD, Integer.class); + @External(readonly = true) public byte[] getCommitment(byte[] key) { return commitments.get(key); diff --git a/contracts/javascore/ibc/src/main/java/ibc/ics25/handler/IBCHandler.java b/contracts/javascore/ibc/src/main/java/ibc/ics25/handler/IBCHandler.java index 0036e25c6..9f1e82de0 100644 --- a/contracts/javascore/ibc/src/main/java/ibc/ics25/handler/IBCHandler.java +++ b/contracts/javascore/ibc/src/main/java/ibc/ics25/handler/IBCHandler.java @@ -3,9 +3,11 @@ import score.Address; import score.Context; import score.annotation.External; +import score.annotation.Optional; import java.math.BigInteger; +import ibc.ics24.host.IBCHost; import icon.ibc.structs.messages.MsgCreateClient; public class IBCHandler extends IBCHandlerPacket { @@ -24,9 +26,10 @@ public String name() { * registerClient registers a new client type into the client registry */ @External - public void registerClient(String clientType, Address client) { + public void registerClient(String clientType, Address client, @Optional int hashType) { onlyOwner(); - super.registerClient(clientType, client); + IBCHost.HashType.of(hashType); + super.registerClient(clientType, client, hashType); } @External diff --git a/contracts/javascore/ibc/src/test/java/ibc/ics02/client/ClientTest.java b/contracts/javascore/ibc/src/test/java/ibc/ics02/client/ClientTest.java index 5bd18f389..06fb9fa8a 100644 --- a/contracts/javascore/ibc/src/test/java/ibc/ics02/client/ClientTest.java +++ b/contracts/javascore/ibc/src/test/java/ibc/ics02/client/ClientTest.java @@ -44,13 +44,13 @@ public void setup() throws Exception { void registerClient_alreadyRegistered() { // Arrange String clientType = "clientType"; - client.invoke(owner, "registerClient", clientType, lightClient.getAddress()); + client.invoke(owner, "registerClient", clientType, lightClient.getAddress(), 0); // Act & Assert String expectedErrorMessage = "Already registered"; Executable registerWithSameType = () -> { client.invoke(owner, "registerClient", clientType, - lightClient.getAddress()); + lightClient.getAddress(), 0); }; AssertionError e = assertThrows(AssertionError.class, registerWithSameType); assertTrue(e.getMessage().contains(expectedErrorMessage)); @@ -85,7 +85,7 @@ void createClient() { String expectedClientId = msg.getClientType() + "-0"; // Act - client.invoke(owner, "registerClient", msg.getClientType(), lightClient.getAddress()); + client.invoke(owner, "registerClient", msg.getClientType(), lightClient.getAddress(), 0); client.invoke(owner, "_createClient", msg); // Assert diff --git a/contracts/javascore/ibc/src/test/java/ibc/ics04/channel/PacketTest.java b/contracts/javascore/ibc/src/test/java/ibc/ics04/channel/PacketTest.java index d1715036f..a40a30f11 100644 --- a/contracts/javascore/ibc/src/test/java/ibc/ics04/channel/PacketTest.java +++ b/contracts/javascore/ibc/src/test/java/ibc/ics04/channel/PacketTest.java @@ -1,6 +1,6 @@ package ibc.ics04.channel; -import static ibc.ics04.channel.IBCPacket.createPacketCommitmentBytes; +import static ibc.ics04.channel.IBCPacket.createWasmPacketCommitmentBytes; import static org.junit.jupiter.api.Assertions.assertArrayEquals; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -405,7 +405,7 @@ void recvPacket_outOfOrder_UnOrdered() { basePacket.getSourceChannel(), basePacket.getSequence()); byte[] commitmentPath2 = IBCCommitment.packetCommitmentPath(basePacket.getSourcePort(), basePacket.getSourceChannel(), basePacket.getSequence().add(BigInteger.ONE)); - byte[] commitmentBytes = createPacketCommitmentBytes(basePacket); + byte[] commitmentBytes = createWasmPacketCommitmentBytes(basePacket); // Act basePacket.setSequence(BigInteger.TWO); @@ -450,7 +450,7 @@ void recvPacket_UnOrdered() { byte[] commitmentPath = IBCCommitment.packetCommitmentPath(basePacket.getSourcePort(), basePacket.getSourceChannel(), basePacket.getSequence()); - byte[] commitmentBytes = createPacketCommitmentBytes(basePacket); + byte[] commitmentBytes = createWasmPacketCommitmentBytes(basePacket); // Act packet.invoke(owner, "_recvPacket", basePacket, proof, proofHeight.encode()); @@ -470,7 +470,7 @@ void recvPacket_Ordered() { byte[] commitmentPath = IBCCommitment.packetCommitmentPath(basePacket.getSourcePort(), basePacket.getSourceChannel(), basePacket.getSequence()); - byte[] commitmentBytes = createPacketCommitmentBytes(basePacket); + byte[] commitmentBytes = createWasmPacketCommitmentBytes(basePacket); // Act packet.invoke(owner, "_recvPacket", basePacket, proof, proofHeight.encode()); diff --git a/contracts/javascore/ibc/src/test/java/ibc/ics25/handler/IBCHandlerTest.java b/contracts/javascore/ibc/src/test/java/ibc/ics25/handler/IBCHandlerTest.java index b14c93804..85b697bc7 100644 --- a/contracts/javascore/ibc/src/test/java/ibc/ics25/handler/IBCHandlerTest.java +++ b/contracts/javascore/ibc/src/test/java/ibc/ics25/handler/IBCHandlerTest.java @@ -252,7 +252,7 @@ void setExpectedTimePerBlock() throws Exception { void handlerAdminPermissions() { // TODO: should be a admin and not a owner. assertOnlyCallableBy(owner, "bindPort", portId); - assertOnlyCallableBy(owner, "registerClient", clientType, lightClient.getAddress()); + assertOnlyCallableBy(owner, "registerClient", clientType, lightClient.getAddress(), 0); assertOnlyCallableBy(owner, "setExpectedTimePerBlock", BigInteger.TWO); } diff --git a/contracts/javascore/ibc/src/test/java/ibc/ics25/handler/IBCHandlerTestBase.java b/contracts/javascore/ibc/src/test/java/ibc/ics25/handler/IBCHandlerTestBase.java index 83bf08808..3c07930f8 100644 --- a/contracts/javascore/ibc/src/test/java/ibc/ics25/handler/IBCHandlerTestBase.java +++ b/contracts/javascore/ibc/src/test/java/ibc/ics25/handler/IBCHandlerTestBase.java @@ -95,7 +95,7 @@ protected void setup() throws Exception { void createClient() { // Arrange - handler.invoke(owner, "registerClient", clientType, lightClient.getAddress()); + handler.invoke(owner, "registerClient", clientType, lightClient.getAddress(), 0); MsgCreateClient msg = new MsgCreateClient(); msg.setClientState(new byte[0]); msg.setConsensusState(new byte[0]); diff --git a/contracts/javascore/lib/src/main/java/icon/ibc/interfaces/IIBCClient.java b/contracts/javascore/lib/src/main/java/icon/ibc/interfaces/IIBCClient.java index a9bebbd3a..8322ef664 100644 --- a/contracts/javascore/lib/src/main/java/icon/ibc/interfaces/IIBCClient.java +++ b/contracts/javascore/lib/src/main/java/icon/ibc/interfaces/IIBCClient.java @@ -5,6 +5,7 @@ import icon.ibc.structs.messages.MsgUpdateClient; import score.Address; import score.annotation.EventLog; +import score.annotation.Optional; @ScoreClient public interface IIBCClient { @@ -19,8 +20,9 @@ public interface IIBCClient { * {@code @dev} registerClient registers a new client type into the client registry * @param clientType Type of client * @param lightClient Light client contract address + * @param hashType Optional hashType (WASM or ICS08) default WASM */ - void registerClient(String clientType, Address client); + void registerClient(String clientType, Address client, @Optional int hashType); /** * {@code @dev} createClient creates a new client state and populates it with a given diff --git a/contracts/javascore/lightclients/ics-08-tendermint/build.gradle b/contracts/javascore/lightclients/ics-08-tendermint/build.gradle new file mode 100644 index 000000000..9428377b7 --- /dev/null +++ b/contracts/javascore/lightclients/ics-08-tendermint/build.gradle @@ -0,0 +1,71 @@ +version = '0.1.0' + +dependencies { + compileOnly("foundation.icon:javaee-api:$javaeeVersion") + implementation("foundation.icon:javaee-scorex:$scorexVersion") + implementation project(':lib') + implementation project(':score-util') + implementation project(':ibc') + implementation project(':proto-lib') + + testImplementation 'com.google.protobuf:protobuf-javalite:3.16.3' + testImplementation 'com.google.protobuf:protobuf-java-util:3.16.3' + testImplementation 'foundation.icon:javaee-rt:0.9.3' + testImplementation("org.mockito:mockito-core:$mockitoCoreVersion") + testImplementation("org.mockito:mockito-inline:$mockitoCoreVersion") + testImplementation("foundation.icon:javaee-unittest:$javaeeUnittestVersion") + testAnnotationProcessor("foundation.icon:javaee-score-client:$scoreClientVersion") + testImplementation project(':test-lib') + testImplementation("foundation.icon:javaee-score-client:$scoreClientVersion") + testImplementation("com.fasterxml.jackson.core:jackson-databind:$jacksonVersion") + testImplementation("foundation.icon:icon-sdk:$iconsdkVersion") + testImplementation("org.junit.jupiter:junit-jupiter-api:$jupiterApiVersion") + testImplementation("org.junit.jupiter:junit-jupiter-params:$jupiterParamsVersion") + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:$jupiterEngineVersion") +} + +test { + useJUnitPlatform() +} + +tasks.named('compileJava') { + dependsOn(':ibc:optimizedJar') + dependsOn(':score-util:jar') + dependsOn(':lib:jar') +} + +optimizedJar { + mainClassName = 'ibc.ics08.tendermint.ICS08TendermintLightClient' + duplicatesStrategy = DuplicatesStrategy.EXCLUDE + from { + configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } + } +} + +deployJar { + endpoints { + berlin { + uri = 'https://berlin.net.solidwallet.io/api/v3' + nid = 0x7 + } + lisbon { + uri = 'https://lisbon.net.solidwallet.io/api/v3' + nid = 0x2 + } + local { + uri = 'http://localhost:9082/api/v3' + nid = 0x3 + } + uat { + uri = project.findProperty('uat.host') as String + nid = property('uat.nid') as Integer + to = "$tendermint"?:null + } + } + keystore = rootProject.hasProperty('keystoreName') ? "$keystoreName" : '' + password = rootProject.hasProperty('keystorePass') ? "$keystorePass" : '' + + parameters { + arg('ibcHandler', "$ibcCore") + } +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/ics-08-tendermint/src/main/java/ibc/ics08/tendermint/ICS08TendermintLightClient.java b/contracts/javascore/lightclients/ics-08-tendermint/src/main/java/ibc/ics08/tendermint/ICS08TendermintLightClient.java new file mode 100644 index 000000000..4e9b4664c --- /dev/null +++ b/contracts/javascore/lightclients/ics-08-tendermint/src/main/java/ibc/ics08/tendermint/ICS08TendermintLightClient.java @@ -0,0 +1,335 @@ +package ibc.ics08.tendermint; + +import icon.ibc.interfaces.ILightClient; +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.NullChecker; +import ibc.icon.score.util.StringUtil; +import ibc.ics23.commitment.types.Merkle; +import ibc.ics24.host.IBCCommitment; +import cosmos.ics23.v1.*; +import google.protobuf.*; +import tendermint.types.*; +import ibc.core.commitment.v1.*; +import ibc.lightclients.tendermint.v1.*; +import ibc.core.client.v1.Height; +import score.Address; +import score.BranchDB; +import score.Context; +import score.DictDB; +import score.annotation.External; +import score.annotation.Optional; + +import java.math.BigInteger; +import java.util.Arrays; +import java.util.Map; + +import static ibc.ics08.tendermint.TendermintHelper.*; +import static ibc.ics23.commitment.types.Merkle.applyPrefix; +import static score.Context.require; + +public class ICS08TendermintLightClient extends Tendermint implements ILightClient { + public final Address ibcHandler; + + public static final String CLIENT_STATES = "CLIENT_STATES"; + public static final String CONSENSUS_STATES = "CONSENSUS_STATES"; + public static final String PROCESSED_TIMES = "PROCESSED_TIMES"; + public static final String PROCESSED_HEIGHTS = "PROCESSED_HEIGHTS"; + + public static final DictDB clientStates = Context.newDictDB(CLIENT_STATES, byte[].class); + public static final BranchDB> consensusStates = Context.newBranchDB( + CONSENSUS_STATES, byte[].class); + public static final BranchDB> processedTimes = Context.newBranchDB( + PROCESSED_TIMES, BigInteger.class); + public static final BranchDB> processedHeights = Context.newBranchDB( + PROCESSED_HEIGHTS, BigInteger.class); + + public ICS08TendermintLightClient(Address ibcHandler) { + this.ibcHandler = ibcHandler; + } + + private void onlyHandler() { + Address caller = Context.getCaller(); + Context.require(caller.equals(ibcHandler), "Only the IBC handler: " + ibcHandler + " is allowed"); + } + + /** + * @dev getTimestampAtHeight returns the timestamp of the consensus state at the + * given height. + */ + @External(readonly = true) + public BigInteger getTimestampAtHeight( + String clientId, + byte[] height) { + Height decodedHeight = Height.decode(height); + byte[] encodedConsensusState = consensusStates.at(clientId).get(decodedHeight.getRevisionHeight()); + NullChecker.requireNotNull(encodedConsensusState, + "height: " + decodedHeight.getRevisionHeight() + " does not have a consensus state"); + ConsensusState consensusState = ConsensusState.decode(encodedConsensusState); + return consensusState.getTimestamp().getSeconds(); + } + + /** + * @dev getLatestHeight returs latest height stored in the given client state + */ + @External(readonly = true) + public byte[] getLatestHeight(String clientId) { + byte[] encodedClientState = clientStates.get(clientId); + NullChecker.requireNotNull(encodedClientState, "Client does not exist"); + ClientState clientState = ClientState.decode(encodedClientState); + return clientState.getLatestHeight().encode(); + } + + @External(readonly = true) + public byte[] getConsensusState( + String clientId, + byte[] height) { + Height decodedHeight = Height.decode(height); + return consensusStates.at(clientId).get(decodedHeight.getRevisionHeight()); + } + + @External(readonly = true) + public byte[] getClientState(String clientId) { + return clientStates.get(clientId); + } + + /** + * @dev createClient creates a new client with the given state + */ + @External + public Map createClient(String clientId, byte[] clientStateBytes, byte[] consensusStateBytes) { + onlyHandler(); + Context.require(clientStates.get(clientId) == null, "Client already exists"); + ClientState clientState = ClientState.decode(clientStateBytes); + + Context.require(!clientState.getTrustLevel().getDenominator().equals(BigInteger.ZERO), + "trustLevel has zero Denominator"); + + clientStates.set(clientId, clientStateBytes); + consensusStates.at(clientId).set(clientState.getLatestHeight().getRevisionHeight(), consensusStateBytes); + + return Map.of( + "clientStateCommitment", IBCCommitment.keccak256(clientStateBytes), + "consensusStateCommitment", IBCCommitment.keccak256(consensusStateBytes), + "height", clientState.getLatestHeight().encode()); + } + + /** + * @dev checkHeaderAndUpdateState validates the header + */ + @External + public Map updateClient(String clientId, byte[] clientMessageBytes) { + onlyHandler(); + ibc.lightclients.tendermint.v1.Header tmHeader = ibc.lightclients.tendermint.v1.Header.decode(clientMessageBytes); + boolean conflictingHeader = false; + // Check if the Client store already has a consensus state for the header's + // height + // If the consensus state exists, and it matches the header then we return early + // since header has already been submitted in a previous UpdateClient. + byte[] prevConsState = consensusStates.at(clientId) + .get(tmHeader.getSignedHeader().getHeader().getHeight()); + if (prevConsState != null) { + // This header has already been submitted and the necessary state is already + // stored + Context.require(!Arrays.equals(prevConsState, toConsensusState(tmHeader).encode()), + "LC: This header has already been submitted"); + + // A consensus state already exists for this height, but it does not match the + // provided header. + // Thus, we must check that this header is valid, and if so we will freeze the + // client. + conflictingHeader = true; + } + + byte[] encodedClientState = clientStates.get(clientId); + require(encodedClientState != null, "LC: client state is invalid"); + ClientState clientState = ClientState.decode(encodedClientState); + byte[] encodedTrustedonsensusState = consensusStates.at(clientId).get(tmHeader.getTrustedHeight().getRevisionHeight()); + require(encodedTrustedonsensusState != null, "LC: consensusState not found at trusted height"); + ConsensusState trustedConsensusState = ConsensusState.decode(encodedTrustedonsensusState); + + Timestamp currentTime = getCurrentTime(); + checkValidity(clientState, trustedConsensusState, tmHeader, currentTime); + + // Header is different from existing consensus state and also valid, so freeze + // the client and return + if (conflictingHeader) { + BigInteger revision = getRevisionNumber(tmHeader.getSignedHeader().getHeader().getChainId()); + clientState.setFrozenHeight(newHeight(tmHeader.getSignedHeader().getHeader().getHeight(), revision)); + encodedClientState = clientState.encode(); + clientStates.set(clientId, encodedClientState); + + byte[] encodedConsensusState = toConsensusState(tmHeader).encode(); + consensusStates.at(clientId).set(clientState.getLatestHeight().getRevisionHeight(), encodedConsensusState); + processedHeights.at(clientId).set(tmHeader.getSignedHeader().getHeader().getHeight(), + BigInteger.valueOf(Context.getBlockHeight())); + processedTimes.at(clientId).set(tmHeader.getSignedHeader().getHeader().getHeight(), + BigInteger.valueOf(Context.getBlockTimestamp())); + + return Map.of( + "clientStateCommitment", IBCCommitment.keccak256(encodedClientState), + "consensusStateCommitment", IBCCommitment.keccak256(encodedConsensusState), + "height", + newHeight(tmHeader.getSignedHeader().getHeader().getHeight(), revision).encode()); + } + + // update the consensus state from a new header and set processed time metadata + if (tmHeader.getSignedHeader().getHeader().getHeight().compareTo(clientState.getLatestHeight().getRevisionHeight()) > 0) { + BigInteger revision = getRevisionNumber(tmHeader.getSignedHeader().getHeader().getChainId()); + clientState.setLatestHeight(newHeight(tmHeader.getSignedHeader().getHeader().getHeight(), revision)); + encodedClientState = clientState.encode(); + clientStates.set(clientId, encodedClientState); + } + + byte[] encodedConsensusState = toConsensusState(tmHeader).encode(); + consensusStates.at(clientId).set(tmHeader.getSignedHeader().getHeader().getHeight(), + encodedConsensusState); + processedHeights.at(clientId).set(tmHeader.getSignedHeader().getHeader().getHeight(), + BigInteger.valueOf(Context.getBlockHeight())); + processedTimes.at(clientId).set(tmHeader.getSignedHeader().getHeader().getHeight(), + BigInteger.valueOf(Context.getBlockTimestamp())); + + return Map.of( + "clientStateCommitment", IBCCommitment.keccak256(encodedClientState), + "consensusStateCommitment", IBCCommitment.keccak256(encodedConsensusState), + "height", clientState.getLatestHeight().encode()); + } + + @External(readonly = true) + public void verifyMembership( + String clientId, + byte[] heightBytes, + BigInteger delayTimePeriod, + BigInteger delayBlockPeriod, + byte[] proof, + byte[] prefix, + byte[] path, + byte[] value) { + Height height = Height.decode(heightBytes); + ClientState clientState = ClientState.decode(mustGetClientState(clientId)); + validateArgs(clientState, height.getRevisionHeight(), prefix, proof); + validateDelayPeriod(clientId, height, delayTimePeriod, delayBlockPeriod); + + ConsensusState consensusState = ConsensusState + .decode(mustGetConsensusState(clientId, height.getRevisionHeight())); + + var root = consensusState.getRoot(); + var merkleProof = MerkleProof.decode(proof); + var merklePath = applyPrefix(StringUtil.bytesToHex(prefix), StringUtil.bytesToHex(path)); + + Merkle.verifyMembership(merkleProof, Merkle.SDK_SPEC, root, merklePath, value); + } + + @External(readonly = true) + public void verifyNonMembership( + String clientId, + byte[] heightBytes, + BigInteger delayTimePeriod, + BigInteger delayBlockPeriod, + byte[] proof, + byte[] prefix, + byte[] path) { + Height height = Height.decode(heightBytes); + ClientState clientState = ClientState.decode(mustGetClientState(clientId)); + validateArgs(clientState, height.getRevisionHeight(), prefix, proof); + validateDelayPeriod(clientId, height, delayTimePeriod, delayBlockPeriod); + + ConsensusState consensusState = ConsensusState + .decode(mustGetConsensusState(clientId, height.getRevisionHeight())); + + var root = consensusState.getRoot(); + var merkleProof = MerkleProof.decode(proof); + var merklePath = applyPrefix(StringUtil.bytesToHex(prefix), StringUtil.bytesToHex(path)); + + Merkle.verifyNonMembership(merkleProof, Merkle.SDK_SPEC, root, merklePath); + } + + // checkValidity checks if the Tendermint header is valid. + public void checkValidity( + ClientState clientState, + ConsensusState trustedConsensusState, + ibc.lightclients.tendermint.v1.Header tmHeader, + Timestamp currentTime) { + // assert header height is newer than consensus state + require( + tmHeader.getSignedHeader().getHeader().getHeight() + .compareTo(tmHeader.getTrustedHeight().getRevisionHeight()) > 0, + "LC: Trusted height is higher than untrusted header height"); + + tendermint.types.Header lc = new tendermint.types.Header(); + lc.setChainId(clientState.getChainId()); + lc.setHeight(tmHeader.getTrustedHeight().getRevisionHeight()); + lc.setTime(trustedConsensusState.getTimestamp()); + lc.setNextValidatorsHash(trustedConsensusState.getNextValidatorsHash()); + + ValidatorSet trustedVals = tmHeader.getTrustedValidators(); + SignedHeader trustedHeader = new SignedHeader(); + trustedHeader.setHeader(lc); + + SignedHeader untrustedHeader = tmHeader.getSignedHeader(); + ValidatorSet untrustedVals = tmHeader.getValidatorSet(); + + Context.require(!isExpired(trustedHeader, clientState.getTrustingPeriod(), currentTime), + "header can't be expired"); + + boolean ok = verify( + clientState.getTrustingPeriod(), + clientState.getMaxClockDrift(), + clientState.getTrustLevel(), + trustedHeader, + trustedVals, + untrustedHeader, + untrustedVals, + currentTime); + + require(ok, "LC: failed to verify header"); + } + + private void validateArgs(ClientState cs, BigInteger height, byte[] prefix, byte[] proof) { + Context.require(cs.getLatestHeight().getRevisionHeight().compareTo(height) >= 0, + "Latest height must be greater or equal to proof height"); + Context.require(cs.getFrozenHeight().getRevisionHeight().equals(BigInteger.ZERO) || + cs.getFrozenHeight().getRevisionHeight().compareTo(height) >= 0, + "Client is Frozen"); + Context.require(prefix.length > 0, "Prefix cant be empty"); + Context.require(proof.length > 0, "Proof cant be empty"); + } + + private void validateDelayPeriod(String clientId, Height height, + BigInteger delayPeriodTime, + BigInteger delayPeriodBlocks) { + BigInteger currentTime = BigInteger.valueOf(Context.getBlockTimestamp()); + BigInteger validTime = mustGetProcessedTime(clientId, + height.getRevisionHeight()).add(delayPeriodTime); + + BigInteger currentHeight = BigInteger.valueOf(Context.getBlockHeight()); + BigInteger validHeight = mustGetProcessedHeight(clientId, + height.getRevisionHeight()).add(delayPeriodBlocks); + + Context.require(currentTime.compareTo(validTime) >= 0, "Delay Time period has not yet passed"); + Context.require(currentHeight.compareTo(validHeight) >= 0, "Delay Height has not yet passed"); + } + + private byte[] mustGetClientState(String clientId) { + byte[] clientState = clientStates.get(clientId); + require(clientState != null, "LC: client state not found"); + return clientState; + } + + private byte[] mustGetConsensusState(String clientId, BigInteger height) { + byte[] consensusState = consensusStates.at(clientId).get(height); + require(consensusState != null, "LC: consensus state not found"); + return consensusState; + } + + private BigInteger mustGetProcessedTime(String clientId, BigInteger height) { + BigInteger processedTime = processedTimes.at(clientId).get(height); + require(processedTime != null, "LC: processed time not found"); + return processedTime; + } + + private BigInteger mustGetProcessedHeight(String clientId, BigInteger height) { + BigInteger processedHeight = processedHeights.at(clientId).get(height); + require(processedHeight != null, "LC: processed height not found"); + return processedHeight; + } +} diff --git a/contracts/javascore/lightclients/ics-08-tendermint/src/main/java/ibc/ics08/tendermint/Tendermint.java b/contracts/javascore/lightclients/ics-08-tendermint/src/main/java/ibc/ics08/tendermint/Tendermint.java new file mode 100644 index 000000000..70b35251f --- /dev/null +++ b/contracts/javascore/lightclients/ics-08-tendermint/src/main/java/ibc/ics08/tendermint/Tendermint.java @@ -0,0 +1,270 @@ +package ibc.ics08.tendermint; + +import static ibc.ics08.tendermint.TendermintHelper.*; + +import java.math.BigInteger; +import java.util.Arrays; + +import ibc.icon.score.util.Proto; +import tendermint.types.*; +import google.protobuf.*; +import ibc.lightclients.tendermint.v1.*; +import score.Context; + +public abstract class Tendermint { + protected boolean verify( + Duration trustingPeriod, + Duration maxClockDrift, + Fraction trustLevel, + SignedHeader trustedHeader, + ValidatorSet trustedVals, + SignedHeader untrustedHeader, + ValidatorSet untrustedVals, + Timestamp currentTime) { + verifyNewHeaderAndVals(untrustedHeader, untrustedVals, trustedHeader, currentTime, maxClockDrift); + + boolean isAdjacent = untrustedHeader.getHeader().getHeight() + .equals(trustedHeader.getHeader().getHeight().add(BigInteger.ONE)); + if (isAdjacent) { + return verifyAdjacent(trustedHeader, untrustedHeader, untrustedVals, trustingPeriod, currentTime, + maxClockDrift); + } + + return verifyNonAdjacent( + trustedHeader, + trustedVals, + untrustedHeader, + untrustedVals, + trustingPeriod, + currentTime, + maxClockDrift, + trustLevel); + + } + + protected boolean verifyAdjacent( + SignedHeader trustedHeader, + SignedHeader untrustedHeader, + ValidatorSet untrustedVals, + Duration trustingPeriod, + Timestamp currentTime, + Duration maxClockDrift) { + + // Check the validator hashes are the same + Context.require( + Arrays.equals(untrustedHeader.getHeader().getValidatorsHash(), + trustedHeader.getHeader().getNextValidatorsHash()), + "expected old header next validators to match those from new header"); + + // Ensure that +2/3 of new validators signed correctly. + return verifyCommitLight( + untrustedVals, + trustedHeader.getHeader().getChainId(), + untrustedHeader.getCommit().getBlockId(), + untrustedHeader.getHeader().getHeight(), + untrustedHeader.getCommit()); + + } + + protected boolean verifyNonAdjacent( + SignedHeader trustedHeader, + ValidatorSet trustedVals, + SignedHeader untrustedHeader, + ValidatorSet untrustedVals, + Duration trustingPeriod, + Timestamp currentTime, + Duration maxClockDrift, + Fraction trustLevel) { + + // assert that trustedVals is NextValidators of last trusted header + // to do this, we check that trustedVals.Hash() == consState.NextValidatorsHash + Context.require(Arrays.equals(hash(trustedVals), trustedHeader.getHeader().getNextValidatorsHash()), + "LC: headers trusted validators does not hash to latest trusted validators"); + + // Ensure that +`trustLevel` (default 1/3) or more of last trusted validators + // signed correctly. + verifyCommitLightTrusting(trustedVals, trustedHeader.getHeader().getChainId(), untrustedHeader.getCommit(), + trustLevel); + + // Ensure that +2/3 of new validators signed correctly. + return verifyCommitLight( + untrustedVals, + trustedHeader.getHeader().getChainId(), + untrustedHeader.getCommit().getBlockId(), + untrustedHeader.getHeader().getHeight(), + untrustedHeader.getCommit()); + + } + + protected void verifyNewHeaderAndVals( + SignedHeader untrustedHeader, + ValidatorSet untrustedVals, + SignedHeader trustedHeader, + Timestamp currentTime, + Duration maxClockDrift) { + // SignedHeader validate basic + Context.require(untrustedHeader.getHeader().getChainId().equals(trustedHeader.getHeader().getChainId()), + "header belongs to another chain"); + Context.require(untrustedHeader.getCommit().getHeight().equals(untrustedHeader.getHeader().getHeight()), + "header and commit height mismatch"); + + byte[] untrustedHeaderBlockHash = hash(untrustedHeader.getHeader()); + Context.require(Arrays.equals(untrustedHeaderBlockHash, untrustedHeader.getCommit().getBlockId().getHash()), + "commit signs signs block failed"); + + Context.require(untrustedHeader.getHeader().getHeight().compareTo(trustedHeader.getHeader().getHeight()) > 0, + "expected new header height to be greater than one of old header"); + Context.require( + gt(untrustedHeader.getHeader().getTime(), trustedHeader.getHeader().getTime()), + "expected new header time to be after old header time"); + + Timestamp curentTimestamp = new Timestamp(); + curentTimestamp.setSeconds(currentTime.getSeconds().add(maxClockDrift.getSeconds())); + curentTimestamp.setNanos(currentTime.getNanos().add(maxClockDrift.getNanos())); + Context.require(gt(curentTimestamp, untrustedHeader.getHeader().getTime()), + "new header has time from the future"); + + byte[] validatorsHash = hash(untrustedVals); + Context.require(Arrays.equals(untrustedHeader.getHeader().getValidatorsHash(), validatorsHash), + "expected new header validators to match those that were supplied at height XX"); + } + + protected boolean verifyCommitLightTrusting( + ValidatorSet trustedVals, + String chainID, + Commit commit, + Fraction trustLevel) { + BigInteger talliedVotingPower = BigInteger.ZERO; + boolean[] seenVals = new boolean[trustedVals.getValidators().size()]; + + CommitSig commitSig; + BigInteger totalVotingPowerMulByNumerator = getTotalVotingPower(trustedVals) + .multiply(trustLevel.getNumerator()); + BigInteger votingPowerNeeded = totalVotingPowerMulByNumerator.divide(trustLevel.getDenominator()); + + int signaturesLength = commit.getSignatures().size(); + for (int idx = 0; idx < signaturesLength; idx++) { + commitSig = commit.getSignatures().get(idx); + + // no need to verify absent or nil votes. + if (commitSig.getBlockIdFlag() != BlockIDFlag.BLOCK_ID_FLAG_COMMIT) { + continue; + } + + // We don't know the validators that committed this block, so we have to + // check for each vote if its validator is already known. + int valIdx = getByAddress(trustedVals, commitSig.getValidatorAddress()); + if (valIdx == -1) { + continue; + } + + // check for double vote of validator on the same commit + Context.require(!seenVals[valIdx], "double vote of validator on the same commit"); + seenVals[valIdx] = true; + + Validator val = trustedVals.getValidators().get(valIdx); + + // validate signature + byte[] message = voteSignBytesDelim(commit, chainID, idx); + byte[] sig = commitSig.getSignature(); + + if (!verifySig(val, message, sig)) { + return false; + } + + talliedVotingPower = talliedVotingPower.add(val.getVotingPower()); + + if (talliedVotingPower.compareTo(votingPowerNeeded) > 0) { + return true; + } + + } + + return false; + } + + // VerifyCommitLight verifies +2/3 of the set had signed the given commit. + // + // This method is primarily used by the light client and does not check all the + // signatures. + protected boolean verifyCommitLight( + ValidatorSet validators, + String chainID, + BlockID blockID, + BigInteger height, + Commit commit) { + Context.require(validators.getValidators().size() == commit.getSignatures().size(), + "invalid commmit signatures"); + + Context.require(height.equals(commit.getHeight()), "invalid commit height"); + + Context.require(commit.getBlockId().equals(blockID), "invalid commit -- wrong block ID"); + Validator val; + CommitSig commitSig; + + BigInteger talliedVotingPower = BigInteger.ZERO; + BigInteger votingPowerNeeded = getTotalVotingPower(validators).multiply(BigInteger.TWO) + .divide(BigInteger.valueOf(3)); + + int signaturesLength = commit.getSignatures().size(); + for (int i = 0; i < signaturesLength; i++) { + commitSig = commit.getSignatures().get(i); + + // no need to verify absent or nil votes. + if (commitSig.getBlockIdFlag() != BlockIDFlag.BLOCK_ID_FLAG_COMMIT) { + continue; + } + + val = validators.getValidators().get(i); + + byte[] message = voteSignBytesDelim(commit, chainID, i); + byte[] sig = commitSig.getSignature(); + + if (!verifySig(val, message, sig)) { + return false; + } + + talliedVotingPower = talliedVotingPower.add(val.getVotingPower()); + + if (talliedVotingPower.compareTo(votingPowerNeeded) > 0) { + return true; + } + } + + return false; + } + + public boolean verifySig( + Validator val, + byte[] message, + byte[] sig) { + if (val.getPubKey().getEd25519() != null) { + return verifySig("ed25519", message, sig, val.getPubKey().getEd25519()); + } else { + return verifySig("ecdsa-secp256k1", message, sig, val.getPubKey().getSecp256k1()); + } + } + + public boolean verifySig( + String alg, + byte[] message, + byte[] sig, + byte[] pubKey) { + return Context.verifySignature(alg, message, sig, pubKey); + } + + protected byte[] voteSignBytes( + Commit commit, + String chainID, + int idx) { + + return toCanonicalVote(commit, idx, chainID); + } + + protected byte[] voteSignBytesDelim( + Commit commit, + String chainID, + int idx) { + return Proto.encodeDelim(voteSignBytes(commit, chainID, idx)); + } +} diff --git a/contracts/javascore/lightclients/ics-08-tendermint/src/main/java/ibc/ics08/tendermint/TendermintHelper.java b/contracts/javascore/lightclients/ics-08-tendermint/src/main/java/ibc/ics08/tendermint/TendermintHelper.java new file mode 100644 index 000000000..ce8c4a809 --- /dev/null +++ b/contracts/javascore/lightclients/ics-08-tendermint/src/main/java/ibc/ics08/tendermint/TendermintHelper.java @@ -0,0 +1,162 @@ +package ibc.ics08.tendermint; + +import java.math.BigInteger; +import java.util.Arrays; + +import ibc.icon.score.util.MerkleTree; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ByteUtil; +import tendermint.types.Commit; +import tendermint.types.CommitSig; +import ibc.lightclients.tendermint.v1.ConsensusState; +import tendermint.types.Header; +import ibc.core.commitment.v1.MerkleRoot; +import tendermint.types.SignedHeader; +import tendermint.types.SignedMsgType; +import tendermint.types.SimpleValidator; +import tendermint.types.Validator; +import tendermint.types.ValidatorSet; +import ibc.core.client.v1.Height; + +import google.protobuf.Timestamp; +import google.protobuf.Duration; +import score.Context; + +public class TendermintHelper { + public static final BigInteger MICRO_SECONDS_IN_A_SECOND = BigInteger.valueOf(1_000_000); + + public static byte[] toCanonicalVote(Commit commit, int valIdx, String chainId) { + CommitSig commitSig = commit.getSignatures().get(valIdx); + return ByteUtil.join( + Proto.encode(1, SignedMsgType.SIGNED_MSG_TYPE_PRECOMMIT), + Proto.encodeFixed64(2, commit.getHeight()), + Proto.encodeFixed64(3, commit.getRound()), + Proto.encode(4, commit.getBlockId()), + Proto.encode(5, commitSig.getTimestamp()), + Proto.encode(6, chainId)); + } + + public static ConsensusState toConsensusState(ibc.lightclients.tendermint.v1.Header header) { + ConsensusState state = new ConsensusState(); + state.setNextValidatorsHash(header.getSignedHeader().getHeader().getNextValidatorsHash()); + state.setTimestamp(header.getSignedHeader().getHeader().getTime()); + MerkleRoot merkleRoot = new MerkleRoot(); + merkleRoot.setHash(header.getSignedHeader().getHeader().getAppHash()); + state.setRoot(merkleRoot); + + return state; + } + + public static BigInteger getTotalVotingPower(ValidatorSet validatorSet) { + BigInteger sum = BigInteger.ZERO; + for (Validator validator : validatorSet.getValidators()) { + sum = sum.add(validator.getVotingPower()); + } + + validatorSet.setTotalVotingPower(sum); + return validatorSet.getTotalVotingPower(); + } + + public static BigInteger getRevisionNumber(String chainId) { + int id = chainId.lastIndexOf("-"); + if (id >= 0) { + return new BigInteger(chainId.substring(id+1)); + } + return BigInteger.ZERO; + } + + public static int getByAddress(ValidatorSet validatorSet, byte[] addr) { + int size = validatorSet.getValidators().size(); + for (int idx = 0; idx < size; idx++) { + if (Arrays.equals(validatorSet.getValidators().get(idx).getAddress(), addr)) { + return idx; + } + } + + return -1; + } + + public static Height newHeight(BigInteger blockHeight, BigInteger revision) { + Height height = new Height(); + height.setRevisionHeight(blockHeight); + height.setRevisionNumber(revision); + + return height; + } + + public static SimpleValidator toSimpleValidator(Validator validator) { + SimpleValidator simpleValidator = new SimpleValidator(); + simpleValidator.setPubKey(validator.getPubKey()); + simpleValidator.setVotingPower(validator.getVotingPower()); + + return simpleValidator; + } + + public static boolean gt(Timestamp t1, Timestamp t2) { + if (t1.getSeconds().compareTo(t2.getSeconds()) > 0) { + return true; + } + + if (t1.getSeconds().equals(t2.getSeconds()) && t1.getNanos().compareTo(t2.getNanos()) > 0) { + return true; + } + + return false; + } + + public static boolean isExpired(SignedHeader header, Duration trustingPeriod, Timestamp currentTime) { + Timestamp expirationTime = new Timestamp(); + expirationTime.setSeconds(header.getHeader().getTime().getSeconds().add(trustingPeriod.getSeconds())); + expirationTime.setNanos(header.getHeader().getTime().getNanos()); + + return gt(currentTime, expirationTime); + } + + public static Timestamp getCurrentTime() { + BigInteger timeInMicro = BigInteger.valueOf(Context.getBlockTimestamp()); + BigInteger seconds = timeInMicro.divide(MICRO_SECONDS_IN_A_SECOND); + BigInteger microSeconds = timeInMicro.remainder(MICRO_SECONDS_IN_A_SECOND); + BigInteger nanoSeconds = microSeconds.multiply(BigInteger.valueOf(1000)); + + Timestamp currentTime = new Timestamp(); + currentTime.setSeconds(seconds); + currentTime.setNanos(nanoSeconds); + + return currentTime; + } + + public static byte[] hash(ValidatorSet validatorSet) { + int size = validatorSet.getValidators().size(); + byte[][] data = new byte[size][]; + for (int i = 0; i < size; i++) { + data[i] = toSimpleValidator(validatorSet.getValidators().get(i)).encode(); + } + + return MerkleTree.merkleRootHash(data, 0, size); + } + + public static byte[] hash(Header header) { + byte[] hbz = Proto.encode(1, header.getVersion().getBlock()); + byte[] pbt = header.getTime().encode(); + byte[] bzbi = header.getLastBlockId().encode(); + + byte[][] all = new byte[][] { + hbz, + Proto.encode(1, header.getChainId()), + Proto.encode(1, header.getHeight()), + pbt, + bzbi, + Proto.encode(1, header.getLastCommitHash()), + Proto.encode(1, header.getDataHash()), + Proto.encode(1, header.getValidatorsHash()), + Proto.encode(1, header.getNextValidatorsHash()), + Proto.encode(1, header.getConsensusHash()), + Proto.encode(1, header.getAppHash()), + Proto.encode(1, header.getLastResultsHash()), + Proto.encode(1, header.getEvidenceHash()), + Proto.encode(1, header.getProposerAddress()) + }; + + return MerkleTree.merkleRootHash(all, 0, all.length); + } +} diff --git a/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/LightClientTest.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/LightClientTest.java new file mode 100644 index 000000000..0f934fa91 --- /dev/null +++ b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/LightClientTest.java @@ -0,0 +1,330 @@ +package ibc.ics08.tendermint; + +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.doNothing; + +import java.math.BigInteger; + + +import com.google.protobuf.Timestamp; +import com.google.protobuf.Duration; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.ibc.core.client.v1.Height; + +import score.Address; + +import com.ibc.lightclients.tendermint.v1.*; +import com.tendermint.types.*; + +public class LightClientTest extends LightClientTestBase { + + @BeforeEach + protected void setup() throws Exception { + super.setup(); + } + + @Test + void createClient() throws Exception { + // Arrange + SignedHeader initialHeader = parseSignedHeader(1); + + // Act + initializeClient(1); + + // Assert + ClientState clientState = getClientState(); + assertEquals(clientState.getLatestHeight().getRevisionHeight(), initialHeader.getHeader().getHeight()); + assertEquals(clientState.getAllowUpdateAfterExpiry(), allowUpdateAfterExpiry); + assertEquals(clientState.getAllowUpdateAfterMisbehaviour(), allowUpdateAfterMisbehaviour); + assertEquals(clientState.getChainId(), initialHeader.getHeader().getChainId()); + assertEquals(clientState.getFrozenHeight(), Height.newBuilder().build()); + assertEquals(clientState.getMaxClockDrift(), maxClockDrift); + assertEquals(clientState.getTrustLevel(), trustLevel); + assertEquals(clientState.getTrustingPeriod(), trustingPeriod); + assertEquals(clientState.getUnbondingPeriod(), Duration.getDefaultInstance()); + } + + @Test + void createClient_withZeroDenomTrustLevel() throws Exception { + // Arrange + // Default is zero denominator + trustLevel = Fraction.getDefaultInstance(); + String expectedErrorMessage = "trustLevel has zero Denominator"; + + // Act & Assert + AssertionError e = assertThrows(AssertionError.class, () -> initializeClient(1)); + assertTrue(e.getMessage().contains(expectedErrorMessage)); + } + + @Test + void update_NonAdjacentInOrder() throws Exception { + // Arrange + SignedHeader lastHeader = parseSignedHeader(3); + + // Act + initializeClient(1); + updateClient(2, 1); + updateClient(3, 2); + + // Assert + ClientState clientState = getClientState(); + assertEquals(clientState.getLatestHeight().getRevisionHeight(), lastHeader.getHeader().getHeight()); + assertConsensusState(parseSignedHeader(1)); + assertConsensusState(parseSignedHeader(2)); + assertConsensusState(lastHeader); + } + + @Test + void update_NonAdjacentOutOfOrder() throws Exception { + // Arrange + SignedHeader lastHeader = parseSignedHeader(3); + + // Act + initializeClient(1); + updateClient(3, 1); + updateClient(2, 1); + + // Assert + ClientState clientState = getClientState(); + assertEquals(clientState.getLatestHeight().getRevisionHeight(), lastHeader.getHeader().getHeight()); + assertConsensusState(parseSignedHeader(1)); + assertConsensusState(parseSignedHeader(2)); + assertConsensusState(lastHeader); + } + + @Test + void updateMultiValidator() throws Exception { + // Arrange + blockSetPath = BLOCK_SET_MUTILPLE_VALIDATORS; + SignedHeader lastHeader = parseSignedHeader(3); + + // Act + initializeClient(1); + updateClient(2, 1); + updateClient(3, 2); + + // Assert + ClientState clientState = getClientState(); + assertEquals(clientState.getLatestHeight().getRevisionHeight(), lastHeader.getHeader().getHeight()); + assertConsensusState(parseSignedHeader(1)); + assertConsensusState(parseSignedHeader(2)); + assertConsensusState(lastHeader); + } + + @Test + void updateAdjacentBlocks() throws Exception { + // Arrange + blockSetPath = BLOCK_SET_ADJACENT; + SignedHeader lastHeader = parseSignedHeader(3); + + // Act + initializeClient(1); + updateClient(2, 1); + updateClient(3, 2); + + // Assert + ClientState clientState = getClientState(); + assertEquals(clientState.getLatestHeight().getRevisionHeight(), lastHeader.getHeader().getHeight()); + assertConsensusState(parseSignedHeader(1)); + assertConsensusState(parseSignedHeader(2)); + assertConsensusState(lastHeader); + } + + @Test + void updateConflictingHeader() throws Exception { + // Arrange + blockSetPath = BLOCK_SET_MALICIOUS; + SignedHeader duplicatedHeader = parseSignedHeader(3); + initializeClient(1); + updateClient(2, 1); + doNothing().when(clientSpy).checkValidity( + any(ibc.lightclients.tendermint.v1.ClientState.class), + any(ibc.lightclients.tendermint.v1.ConsensusState.class), + any(ibc.lightclients.tendermint.v1.Header.class), + any()); + + // Act + updateClient(3, 1); + + // Assert + ClientState clientState = getClientState(); + assertEquals(clientState.getFrozenHeight().getRevisionHeight(), duplicatedHeader.getHeader().getHeight()); + } + + @Test + void update_withNonTrustedHeight() throws Exception { + // Arrange + initializeClient(1); + String expectedErrorMessage = "LC: consensusState not found at trusted height"; + + // Act & Assert + AssertionError e = assertThrows(AssertionError.class, () -> updateClient(3, 2)); + assertTrue(e.getMessage().contains(expectedErrorMessage)); + } + + @Test + void update_withTrustOnFutureBlock() throws Exception { + // Arrange + initializeClient(1); + updateClient(3, 1); + String expectedErrorMessage = "LC: Trusted height is higher than untrusted header height"; + + // Act & Assert + AssertionError e = assertThrows(AssertionError.class, () -> updateClient(2, 3)); + assertTrue(e.getMessage().contains(expectedErrorMessage)); + } + + @Test + void update_withoutInit() throws Exception { + // Arrange + String expectedErrorMessage = "LC: client state is invalid"; + + // Act & Assert + AssertionError e = assertThrows(AssertionError.class, () -> updateClient(3, 2)); + assertTrue(e.getMessage().contains(expectedErrorMessage)); + } + + @Test + void doubleUpdate() throws Exception { + // Arrange + initializeClient(1); + updateClient(3, 1); + String expectedErrorMessage = "LC: This header has already been submitted"; + + // Act & Assert + AssertionError e = assertThrows(AssertionError.class, () -> updateClient(3, 1)); + assertTrue(e.getMessage().contains(expectedErrorMessage)); + } + + @Test + void initOnlyByIBCHandler() { + // Arrange + Address handlerAddress = ibcHandler.getAddress(); + ibcHandler = sm.createAccount(); + String expectedErrorMessage = "Only the IBC handler: " + handlerAddress + " is allowed"; + + // Act & Assert + AssertionError e = assertThrows(AssertionError.class, () -> initializeClient(1)); + assertTrue(e.getMessage().contains(expectedErrorMessage)); + } + + @Test + void updateOnlyByIBCHandler() throws Exception { + // Arrange + initializeClient(1); + Address handlerAddress = ibcHandler.getAddress(); + ibcHandler = sm.createAccount(); + String expectedErrorMessage = "Only the IBC handler: " + handlerAddress + " is allowed"; + + // Act & Assert + AssertionError e = assertThrows(AssertionError.class, () -> updateClient(2, 1)); + assertTrue(e.getMessage().contains(expectedErrorMessage)); + } + + @Test + void alreadyInitialized() throws Exception { + // Arrange + initializeClient(1); + String expectedErrorMessage = "Client already exists"; + + // Act & Assert + AssertionError e = assertThrows(AssertionError.class, () -> initializeClient(2)); + assertTrue(e.getMessage().contains(expectedErrorMessage)); + } + + @Test + void getTimestampAtHeight() throws Exception { + // Arrange + initializeClient(1); + updateClient(2, 1); + SignedHeader header1 = parseSignedHeader(1); + SignedHeader header2 = parseSignedHeader(2); + + Height height1 = Height.newBuilder().setRevisionHeight(header1.getHeader().getHeight()).build(); + Height height2 = Height.newBuilder().setRevisionHeight(header2.getHeader().getHeight()).build(); + long expectedTime1 = header1.getHeader().getTime().getSeconds(); + long expectedTime2 = header2.getHeader().getTime().getSeconds(); + + // Act + BigInteger t1 = (BigInteger) client.call("getTimestampAtHeight", clientId, height1.toByteArray()); + BigInteger t2 = (BigInteger) client.call("getTimestampAtHeight", clientId, height2.toByteArray()); + + // Assert + assertEquals(expectedTime1, t1.longValue()); + assertEquals(expectedTime2, t2.longValue()); + } + + @Test + void getTimestampAtHeight_noConsensusState() throws Exception { + // Arrange + Height height = Height.newBuilder().setRevisionHeight(1).build(); + String expectedErrorMessage = "height: " + height.getRevisionHeight() + + " does not have a consensus state"; + + // Act & Assert + AssertionError e = assertThrows(AssertionError.class, + () -> client.call("getTimestampAtHeight", clientId, height.toByteArray())); + assertTrue(e.getMessage().contains(expectedErrorMessage)); + } + + @Test + void getLatestHeight() throws Exception { + // Arrange + SignedHeader header1 = parseSignedHeader(1); + SignedHeader header2 = parseSignedHeader(2); + + BigInteger revision = TendermintHelper.getRevisionNumber(header1.getHeader().getChainId()); + Height height1 = Height.newBuilder().setRevisionHeight(header1.getHeader().getHeight()).setRevisionNumber(revision.intValue()).build(); + Height height2 = Height.newBuilder().setRevisionHeight(header2.getHeader().getHeight()).setRevisionNumber(revision.intValue()).build(); + + // Act + initializeClient(1); + + // Assert + assertArrayEquals(height1.toByteArray(), (byte[]) client.call("getLatestHeight", clientId)); + + // Act + updateClient(2, 1); + + // Assert + assertArrayEquals(height2.toByteArray(), (byte[]) client.call("getLatestHeight", clientId)); + } + + @Test + void getLatestHeight_noClientState() throws Exception { + // Arrange + String expectedErrorMessage = "Client does not exist"; + + // Act & Assert + AssertionError e = assertThrows(AssertionError.class, + () -> client.call("getLatestHeight", clientId)); + assertTrue(e.getMessage().contains(expectedErrorMessage)); + } + + @Test + void updateExpired() throws Exception { + // Arrange + SignedHeader header = parseSignedHeader(1); + + long time = header.getHeader().getTime().getSeconds() * 1000 * 1000; + long currentTime = System.currentTimeMillis() * 1000 + (sm.getBlock().getHeight() * 2_000_000); + long period = currentTime - time; + trustingPeriod = Duration.newBuilder() + .setSeconds((period / (1000 * 1000)) - 3).build(); + initializeClient(1); + + String expectedErrorMessage = "header can't be expired"; + + // Act & Assert + AssertionError e = assertThrows(AssertionError.class, + () -> updateClient(3, 1)); + assertTrue(e.getMessage().contains(expectedErrorMessage)); + } +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/LightClientTestBase.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/LightClientTestBase.java new file mode 100644 index 000000000..8256adcd8 --- /dev/null +++ b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/LightClientTestBase.java @@ -0,0 +1,334 @@ +package ibc.ics08.tendermint; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.protobuf.ByteString; +import com.iconloop.score.test.Account; +import com.iconloop.score.test.Score; +import com.iconloop.score.test.ServiceManager; +import com.iconloop.score.test.TestBase; +import foundation.icon.ee.util.Crypto; +import ibc.lightclients.tendermint.v1.*; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.MockedStatic; +import org.mockito.Mockito; +import org.mockito.stubbing.Answer; +import score.Context; + +import java.io.File; +import java.math.BigInteger; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.time.Instant; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.Base64; +import java.util.List; + +import org.junit.jupiter.api.AfterEach; +import org.mockito.MockedStatic; +import org.mockito.Mockito; +import org.mockito.stubbing.Answer; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.protobuf.ByteString; +import com.iconloop.score.test.Account; +import com.iconloop.score.test.Score; +import com.iconloop.score.test.ServiceManager; +import com.iconloop.score.test.TestBase; + +import com.google.protobuf.Timestamp; +import com.google.protobuf.Duration; +import score.Context; +import foundation.icon.ee.util.Crypto; + +import com.ibc.lightclients.tendermint.v1.*; +import com.ibc.lightclients.tendermint.v1.ConsensusState; +import com.ibc.lightclients.tendermint.v1.ClientState; +import com.ibc.lightclients.tendermint.v1.Header; +import com.tendermint.types.*; +import com.tendermint.crypto.*; +import com.ibc.lightclients.tendermint.v1.Fraction; +import com.ibc.core.client.v1.Height; +import com.ibc.core.commitment.v1.MerkleRoot; +import com.tendermint.version.Consensus; + +import static org.mockito.Mockito.spy; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.any; +import static org.mockito.Mockito.spy; + +public class LightClientTestBase extends TestBase { + protected final ServiceManager sm = getServiceManager(); + protected final Account owner = sm.createAccount(); + protected Account ibcHandler = sm.createAccount(); + protected Score client; + protected ICS08TendermintLightClient clientSpy; + protected String clientId = "client-1"; + protected static final DateTimeFormatter INSTANT_FORMAT = DateTimeFormatter.ISO_INSTANT; + protected static final BigInteger day = BigInteger.valueOf(86400); + + protected static Fraction trustLevel; + protected static Duration trustingPeriod; + protected static Duration maxClockDrift; + protected static boolean allowUpdateAfterExpiry = false; + protected static boolean allowUpdateAfterMisbehaviour = false; + protected final MockedStatic contextMock = Mockito.mockStatic(Context.class, Mockito.CALLS_REAL_METHODS); + protected static final String BLOCK_SET_BASE_PATH = "src/test/java/ibc/ics08/tendermint/data/"; + protected static final String BLOCK_SET_SIMPLE = BLOCK_SET_BASE_PATH + "simple/"; + protected static final String BLOCK_SET_MUTILPLE_VALIDATORS = BLOCK_SET_BASE_PATH + "multi-validator/"; + protected static final String BLOCK_SET_ADJACENT = BLOCK_SET_BASE_PATH + "adjacent/"; + protected static final String BLOCK_SET_MALICIOUS = BLOCK_SET_BASE_PATH + "malicious/"; + protected String blockSetPath = BLOCK_SET_SIMPLE; + + static { + trustLevel = Fraction.newBuilder() + .setNumerator(BigInteger.TWO.longValue()) + .setDenominator(BigInteger.valueOf(3).longValue()).build(); + + trustingPeriod = Duration.newBuilder() + .setSeconds(day.multiply(BigInteger.valueOf(10000)).longValue()) + .setNanos(0).build(); + + maxClockDrift = Duration.newBuilder() + .setSeconds(10) + .setNanos(0).build(); + + } + + private String getCommitPath(int order) { + return blockSetPath + "commit." + order + ".json"; + + } + + private String getValidatorPath(int order) { + return blockSetPath + "validators." + order + ".json"; + } + + protected void setup() throws Exception { + contextMock.when(() -> Context.getBlockTimestamp()) + .thenReturn(System.currentTimeMillis() * 1000 + (sm.getBlock().getHeight() * 2_000_000)); + + client = sm.deploy(owner, ICS08TendermintLightClient.class, ibcHandler.getAddress()); + + clientSpy = (ICS08TendermintLightClient) spy(client.getInstance()); + client.setInstance(clientSpy); + + Mockito.doAnswer((Answer) invocation -> { + final Object[] args = invocation.getArguments(); + return Crypto.verifySignature((String) args[0], (byte[]) args[1], (byte[]) args[2], (byte[]) args[3]); + }).when(clientSpy).verifySig(any(String.class), any(byte[].class), any(byte[].class), any(byte[].class)); + + trustLevel = Fraction.newBuilder() + .setNumerator(BigInteger.TWO.longValue()) + .setDenominator(BigInteger.valueOf(3).longValue()).build(); + + trustingPeriod = Duration.newBuilder() + .setSeconds(day.multiply(BigInteger.valueOf(10000)).longValue()) + .setNanos(0).build(); + + maxClockDrift = Duration.newBuilder() + .setSeconds(10) + .setNanos(0).build(); + } + + @AfterEach + protected void teardown() { + contextMock.close(); + } + + protected void initializeClient(int blockOrder) throws Exception { + Header header = Header.newBuilder() + .setSignedHeader(parseSignedHeader(blockOrder)) + .setValidatorSet(parseValidatorSet(blockOrder)).build(); + BigInteger revisionNumber = TendermintHelper.getRevisionNumber(header.getSignedHeader().getHeader().getChainId()); + ClientState clientState = ClientState.newBuilder() + .setChainId(header.getSignedHeader().getHeader().getChainId()) + .setTrustLevel(trustLevel) + .setTrustingPeriod(trustingPeriod) + .setMaxClockDrift(maxClockDrift) + .setLatestHeight(Height.newBuilder() + .setRevisionHeight(header.getSignedHeader().getHeader().getHeight()) + .setRevisionNumber(revisionNumber.intValue())) + .setAllowUpdateAfterExpiry(allowUpdateAfterExpiry) + .setAllowUpdateAfterMisbehaviour(allowUpdateAfterMisbehaviour).build(); + + MerkleRoot root = MerkleRoot.newBuilder() + .setHash(header.getSignedHeader().getHeader().getAppHash()).build(); + + ConsensusState consensusState = ConsensusState.newBuilder() + .setTimestamp(header.getSignedHeader().getHeader().getTime()) + .setRoot(root) + .setNextValidatorsHash(header.getSignedHeader().getHeader().getNextValidatorsHash()).build(); + + client.invoke(ibcHandler, "createClient", clientId, clientState.toByteArray(), + consensusState.toByteArray(), new byte[0]); + } + + protected void updateClient(int blockOrder, int referenceBlock) throws Exception { + Header header = createHeader(blockOrder, referenceBlock); + client.invoke(ibcHandler, "updateClient", clientId, header.toByteArray()); + } + + protected ConsensusState getConsensusState(Height height) throws Exception { + return ConsensusState.parseFrom((byte[]) client.call("getConsensusState", clientId, height.toByteArray())); + } + + protected ClientState getClientState() throws Exception { + return ClientState.parseFrom((byte[]) client.call("getClientState", clientId)); + } + + protected void assertConsensusState(SignedHeader header) throws Exception { + Height height = Height.newBuilder().setRevisionHeight(header.getHeader().getHeight()).build(); + ConsensusState consensusState = getConsensusState(height); + assertEquals(header.getHeader().getNextValidatorsHash(), consensusState.getNextValidatorsHash()); + assertEquals(header.getHeader().getAppHash(), consensusState.getRoot().getHash()); + assertEquals(header.getHeader().getTime(), consensusState.getTimestamp()); + } + + protected Header createHeader(int blockOrder, int referenceBlock) throws Exception { + Header header = Header.newBuilder() + .setSignedHeader(parseSignedHeader(blockOrder)) + .setValidatorSet(parseValidatorSet(blockOrder)) + .setTrustedHeight(Height.newBuilder().setRevisionHeight(parseSignedHeader(referenceBlock).getHeader().getHeight())) + .setTrustedValidators(parseValidatorSet(referenceBlock)).build(); + return header; + } + + protected SignedHeader parseSignedHeader(int blockOrder) throws Exception { + + ObjectMapper mapper = new ObjectMapper(); + String loc = getCommitPath(blockOrder); + File file = new File(loc); + String content = new String(Files.readAllBytes(Paths.get(file.toURI()))); + JsonNode json = mapper.readTree(content); + + JsonNode jsonHeader = json.get("signed_header").get("header"); + Consensus version = Consensus.newBuilder() + .setBlock(jsonHeader.get("version").get("block").asInt()).build(); + + com.tendermint.types.Header lightHeader = com.tendermint.types.Header.newBuilder() + .setVersion(version) + .setChainId(jsonHeader.get("chain_id").asText()) + .setHeight(jsonHeader.get("height").asInt()) + .setTime(jsonToTimestamp(jsonHeader.get("time"))) + .setLastBlockId(parseBlockId(jsonHeader.get("last_block_id"))) + .setLastCommitHash(jsonToBytes(jsonHeader.get("last_commit_hash"))) + .setDataHash(jsonToBytes(jsonHeader.get("data_hash"))) + .setValidatorsHash(jsonToBytes(jsonHeader.get("validators_hash"))) + .setNextValidatorsHash(jsonToBytes(jsonHeader.get("next_validators_hash"))) + .setConsensusHash(jsonToBytes(jsonHeader.get("consensus_hash"))) + .setAppHash(jsonToBytes(jsonHeader.get("app_hash"))) + .setLastResultsHash(jsonToBytes(jsonHeader.get("last_results_hash"))) + .setEvidenceHash(jsonToBytes(jsonHeader.get("evidence_hash"))) + .setProposerAddress(jsonToBytes(jsonHeader.get("proposer_address"))).build(); + + JsonNode jsonCommit = json.get("signed_header").get("commit"); + + Commit commit = Commit.newBuilder() + .setHeight(jsonCommit.get("height").asInt()) + .setRound(jsonCommit.get("round").asInt()) + .setBlockId(parseBlockId(jsonCommit.get("block_id"))) + .addAllSignatures(parseCommitSig(jsonCommit.get("signatures"))).build(); + + SignedHeader signedHeader = SignedHeader.newBuilder() + .setHeader(lightHeader) + .setCommit(commit).build(); + + return signedHeader; + } + + protected ValidatorSet parseValidatorSet(int blockOrder) throws Exception { + ObjectMapper mapper = new ObjectMapper(); + String loc = getValidatorPath(blockOrder); + File file = new File(loc); + String content = new String(Files.readAllBytes(Paths.get(file.toURI()))); + JsonNode json = mapper.readTree(content); + ValidatorSet.Builder validatorSet = ValidatorSet.newBuilder(); + List validators = new ArrayList<>(); + json.get("validators").elements().forEachRemaining((node) -> { + PublicKey publicKey = PublicKey.newBuilder() + .setEd25519( + ByteString.copyFrom(Base64.getDecoder().decode(node.get("pub_key").get("value").asText()))) + .build(); + + Validator validator = Validator.newBuilder() + .setAddress(jsonToBytes(node.get("address"))) + .setPubKey(publicKey) + .setVotingPower(node.get("voting_power").asLong()) + .setProposerPriority(node.get("proposer_priority").asLong()).build(); + + validators.add(validator); + }); + validatorSet.addAllValidators(validators); + + return validatorSet.build(); + } + + protected BlockID parseBlockId(JsonNode json) { + PartSetHeader partSetHeader = PartSetHeader.newBuilder() + .setHash(jsonToBytes(json.get("parts").get("hash"))) + .setTotal(json.get("parts").get("total").asInt()).build(); + BlockID blockID = BlockID.newBuilder() + .setHash(jsonToBytes(json.get("hash"))) + .setPartSetHeader(partSetHeader).build(); + return blockID; + } + + protected List parseCommitSig(JsonNode json) { + List commitSigs = new ArrayList(); + + json.elements().forEachRemaining((node) -> { + CommitSig commitSig = CommitSig.newBuilder() + .setBlockIdFlagValue(node.get("block_id_flag").asInt()) + .setValidatorAddress(jsonToBytes(node.get("validator_address"))) + .setTimestamp(jsonToTimestamp(node.get("timestamp"))) + .setSignature(ByteString.copyFrom(Base64.getDecoder().decode(node.get("signature").asText()))) + .build(); + + commitSigs.add(commitSig); + }); + + return commitSigs; + } + + protected ByteString jsonToBytes(JsonNode val) { + return ByteString.copyFrom(hexStringToByteArray(val.asText())); + } + + private Timestamp jsonToTimestamp(JsonNode val) { + Instant time = Instant.from(INSTANT_FORMAT.parse(val.asText())); + Timestamp timestamp = Timestamp.newBuilder() + .setSeconds(time.getEpochSecond()) + .setNanos(time.getNano()).build(); + + return timestamp; + } + + public static byte[] hexStringToByteArray(String s) { + int len = s.length(); + byte[] data = new byte[len / 2]; + for (int i = 0; i < len; i += 2) { + data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) + + Character.digit(s.charAt(i + 1), 16)); + } + return data; + } + + public static void printBytes(byte[] bytes) { + for (int j = 0; j < bytes.length; j++) { + System.out.format("%02X ", bytes[j]); + } + System.out.println(); + } + + public static void printBytesToDec(byte[] bytes) { + for (int j = 0; j < bytes.length; j++) { + System.out.format("%d, ", bytes[j]); + } + System.out.println(); + } +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/adjacent/commit.1.json b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/adjacent/commit.1.json new file mode 100644 index 000000000..38e0fb710 --- /dev/null +++ b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/adjacent/commit.1.json @@ -0,0 +1,54 @@ +{ + "signed_header": { + "header": { + "version": { + "block": "11" + }, + "chain_id": "constantine-1", + "height": "700000", + "time": "2023-03-05T06:03:13.892949502Z", + "last_block_id": { + "hash": "FF2CF8143C8B2F8871E573DE146C4E0E79B8D030A22D9AF28282E5307E4380C1", + "parts": { + "total": 1, + "hash": "29DADA6DCA2DF74F16CCAA85FCCBEA29F0B550705827E9A6D7E7D174A076E4B4" + } + }, + "last_commit_hash": "2B9B336257F94C70E0BCD7E2FAB928822F935F1997EB21F711D6DD8EB01EDE70", + "data_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "validators_hash": "8709E9FA0E08639B827795D4164091605857D99BF4A9DD98541B3282706F2D0C", + "next_validators_hash": "8709E9FA0E08639B827795D4164091605857D99BF4A9DD98541B3282706F2D0C", + "consensus_hash": "3AB4B0648EC46497FE810009B6AB29A5E18983B0A615BE174305F94968486602", + "app_hash": "BB6B04BE515CDAB7994923F45DFD45AEFB73A912616BF9AC714BC9519112262E", + "last_results_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "evidence_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "proposer_address": "227950C1373382B7B12B2A1A12FFD9FC2C4A60FD" + }, + "commit": { + "height": "700000", + "round": 0, + "block_id": { + "hash": "D41BE7EE3CBC48C6CB05F7E07DCF05D66CA0B8EE3FCD04FF9722FDB60BF8C587", + "parts": { + "total": 1, + "hash": "43D423A73CE62FC554B6189CF8812D010799C11D6468F7D5A138CB756C242E0B" + } + }, + "signatures": [ + { + "block_id_flag": 2, + "validator_address": "227950C1373382B7B12B2A1A12FFD9FC2C4A60FD", + "timestamp": "2023-03-05T06:03:18.927225911Z", + "signature": "Ykvm8lXUSREvG6wqf9AQnWXMJviae3pEYhCcVPBdLACqK9tC8xb/9p0HjbQnfbZf+/eMCDkWFHvsxHUyIRyEBg==" + }, + { + "block_id_flag": 3, + "validator_address": "CFA65AE4EA6A81DC44F45C017E3F108CE1EF578E", + "timestamp": "2023-03-05T06:03:19.274263383Z", + "signature": "OcBXko1m0YylyAgy7Y1NkfZqUg1x72fc4JBCIADlUUTmwVHFlraDxrlLQlRwW75CfTWktlACz3J5Lx7F863OAw==" + } + ] + } + }, + "canonical": true +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/adjacent/commit.2.json b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/adjacent/commit.2.json new file mode 100644 index 000000000..5391b90da --- /dev/null +++ b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/adjacent/commit.2.json @@ -0,0 +1,54 @@ +{ + "signed_header": { + "header": { + "version": { + "block": "11" + }, + "chain_id": "constantine-1", + "height": "700001", + "time": "2023-03-05T06:03:18.927225911Z", + "last_block_id": { + "hash": "D41BE7EE3CBC48C6CB05F7E07DCF05D66CA0B8EE3FCD04FF9722FDB60BF8C587", + "parts": { + "total": 1, + "hash": "43D423A73CE62FC554B6189CF8812D010799C11D6468F7D5A138CB756C242E0B" + } + }, + "last_commit_hash": "9CE92CDDA78247889406A81677804B2A15DF1F597B4DD81D161D9CFF3E57F498", + "data_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "validators_hash": "8709E9FA0E08639B827795D4164091605857D99BF4A9DD98541B3282706F2D0C", + "next_validators_hash": "8709E9FA0E08639B827795D4164091605857D99BF4A9DD98541B3282706F2D0C", + "consensus_hash": "3AB4B0648EC46497FE810009B6AB29A5E18983B0A615BE174305F94968486602", + "app_hash": "1055313708B0720BAD42846A80AF1B67E3C2FA9879610FF1BBAA4386CE17C127", + "last_results_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "evidence_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "proposer_address": "227950C1373382B7B12B2A1A12FFD9FC2C4A60FD" + }, + "commit": { + "height": "700001", + "round": 0, + "block_id": { + "hash": "9F77C6DC6B8C7DD7397507F3221200C49E4EE4EFB7BE28F5A1C143DB98456E1E", + "parts": { + "total": 1, + "hash": "F97ED07A2C6262A9DC51F1016D40C281E7370A7A2961FE51E6F990950DF6EC20" + } + }, + "signatures": [ + { + "block_id_flag": 2, + "validator_address": "227950C1373382B7B12B2A1A12FFD9FC2C4A60FD", + "timestamp": "2023-03-05T06:03:23.967317529Z", + "signature": "XwAkmN9ZimTDslQKpT16zjt13rOdwtDD1eqaU1aoo/trrBJr7qI2Y9VeBb7OyJh6c5fcrNBWiTpY6dfHFBCTAQ==" + }, + { + "block_id_flag": 3, + "validator_address": "CFA65AE4EA6A81DC44F45C017E3F108CE1EF578E", + "timestamp": "2023-03-05T06:03:24.244164307Z", + "signature": "6wG4Gx66+gWI5cfhPm+BV69GYM/7TDR1n3b1qurBWqXdFQc1mLPa4rHZnYnYQm9tRGE9VXy8Z93+F6lTkLsVCg==" + } + ] + } + }, + "canonical": true +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/adjacent/commit.3.json b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/adjacent/commit.3.json new file mode 100644 index 000000000..d05a23d92 --- /dev/null +++ b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/adjacent/commit.3.json @@ -0,0 +1,54 @@ +{ + "signed_header": { + "header": { + "version": { + "block": "11" + }, + "chain_id": "constantine-1", + "height": "700002", + "time": "2023-03-05T06:03:23.967317529Z", + "last_block_id": { + "hash": "9F77C6DC6B8C7DD7397507F3221200C49E4EE4EFB7BE28F5A1C143DB98456E1E", + "parts": { + "total": 1, + "hash": "F97ED07A2C6262A9DC51F1016D40C281E7370A7A2961FE51E6F990950DF6EC20" + } + }, + "last_commit_hash": "2E11B6346778738DF365BE0D9CEC29197D862AFF682329946DEE4FD569DA8EE9", + "data_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "validators_hash": "8709E9FA0E08639B827795D4164091605857D99BF4A9DD98541B3282706F2D0C", + "next_validators_hash": "8709E9FA0E08639B827795D4164091605857D99BF4A9DD98541B3282706F2D0C", + "consensus_hash": "3AB4B0648EC46497FE810009B6AB29A5E18983B0A615BE174305F94968486602", + "app_hash": "62F1E8CE658C9AD5FBFC5815E52E3ED703B21A52C710E5DCA99E5CF320476651", + "last_results_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "evidence_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "proposer_address": "227950C1373382B7B12B2A1A12FFD9FC2C4A60FD" + }, + "commit": { + "height": "700002", + "round": 0, + "block_id": { + "hash": "BCD9E1FB37E917F4CA049407F655D31173E297AE1F03B7ED701639162B1C6441", + "parts": { + "total": 1, + "hash": "8FD53C91CCFC179E351589F5A07679375D3A1485E88BC4739987A5474FB4EC8D" + } + }, + "signatures": [ + { + "block_id_flag": 2, + "validator_address": "227950C1373382B7B12B2A1A12FFD9FC2C4A60FD", + "timestamp": "2023-03-05T06:03:29.001051558Z", + "signature": "EFvLaDeu39wkOOTgIzlC/9zUN/7jRXTbJ+zhTdToeXhqAG1EAZSzwQa3wymOEqDFMCNh/r64NcEZa5ywVmhRDg==" + }, + { + "block_id_flag": 3, + "validator_address": "CFA65AE4EA6A81DC44F45C017E3F108CE1EF578E", + "timestamp": "2023-03-05T06:03:29.245998033Z", + "signature": "iUWnXkUclfP7NykNtrV1EmM+AVyfnf3WuG3oaEASvE1JVua+bz7iNa64HJAcMmMETR3gsfFbMTfyMgORqTkgBQ==" + } + ] + } + }, + "canonical": true +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/adjacent/validators.1.json b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/adjacent/validators.1.json new file mode 100644 index 000000000..0ba7fffb7 --- /dev/null +++ b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/adjacent/validators.1.json @@ -0,0 +1,25 @@ +{ + "block_height": "700000", + "validators": [ + { + "address": "227950C1373382B7B12B2A1A12FFD9FC2C4A60FD", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "aaUuEVdox13TAVptDii1sThWwRz7EkEGrXAx0polEpo=" + }, + "voting_power": "100000057", + "proposer_priority": "56089014" + }, + { + "address": "CFA65AE4EA6A81DC44F45C017E3F108CE1EF578E", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "hQzxEzbHaEmKfAAim9q6U3l2coKCXBTpmOOtsmKLPh8=" + }, + "voting_power": "3", + "proposer_priority": "-56089014" + } + ], + "count": "2", + "total": "2" +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/adjacent/validators.2.json b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/adjacent/validators.2.json new file mode 100644 index 000000000..55473d6e1 --- /dev/null +++ b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/adjacent/validators.2.json @@ -0,0 +1,25 @@ +{ + "block_height": "700001", + "validators": [ + { + "address": "227950C1373382B7B12B2A1A12FFD9FC2C4A60FD", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "aaUuEVdox13TAVptDii1sThWwRz7EkEGrXAx0polEpo=" + }, + "voting_power": "100000057", + "proposer_priority": "56089011" + }, + { + "address": "CFA65AE4EA6A81DC44F45C017E3F108CE1EF578E", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "hQzxEzbHaEmKfAAim9q6U3l2coKCXBTpmOOtsmKLPh8=" + }, + "voting_power": "3", + "proposer_priority": "-56089011" + } + ], + "count": "2", + "total": "2" +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/adjacent/validators.3.json b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/adjacent/validators.3.json new file mode 100644 index 000000000..4f2115ae0 --- /dev/null +++ b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/adjacent/validators.3.json @@ -0,0 +1,25 @@ +{ + "block_height": "700002", + "validators": [ + { + "address": "227950C1373382B7B12B2A1A12FFD9FC2C4A60FD", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "aaUuEVdox13TAVptDii1sThWwRz7EkEGrXAx0polEpo=" + }, + "voting_power": "100000057", + "proposer_priority": "56089008" + }, + { + "address": "CFA65AE4EA6A81DC44F45C017E3F108CE1EF578E", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "hQzxEzbHaEmKfAAim9q6U3l2coKCXBTpmOOtsmKLPh8=" + }, + "voting_power": "3", + "proposer_priority": "-56089008" + } + ], + "count": "2", + "total": "2" +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/malicious/commit.1.json b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/malicious/commit.1.json new file mode 100644 index 000000000..96ea29c2a --- /dev/null +++ b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/malicious/commit.1.json @@ -0,0 +1,48 @@ +{ + "signed_header": { + "header": { + "version": { + "block": "11" + }, + "chain_id": "constantine-1", + "height": "600000", + "time": "2023-02-27T10:17:56.252368746Z", + "last_block_id": { + "hash": "A5103ECD1C6655398B63C8DC05171D828174572EDDF2B3C73E5BD4C5D47A31FE", + "parts": { + "total": 1, + "hash": "97EF30567AA0FA6254AA9CA68172DEA9FC68A6D3DA81D5AA47D2FE990C21472E" + } + }, + "last_commit_hash": "DBE402AD7A9530D58B30E4A394713F77567A5CEE9023FE1819FC3EF902BF587C", + "data_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "validators_hash": "E9C656841119D33056056DFE6FCC1F833BD55AF231C27326432579E9AFAE9DA8", + "next_validators_hash": "E9C656841119D33056056DFE6FCC1F833BD55AF231C27326432579E9AFAE9DA8", + "consensus_hash": "3AB4B0648EC46497FE810009B6AB29A5E18983B0A615BE174305F94968486602", + "app_hash": "27BA3C0678BF7F5C1567405E4511FE44B4131468FFF97EE7C4F895ABD4EEB76D", + "last_results_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "evidence_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "proposer_address": "227950C1373382B7B12B2A1A12FFD9FC2C4A60FD" + }, + "commit": { + "height": "600000", + "round": 0, + "block_id": { + "hash": "D85FAAEE1D9F90220B2E968B6DF69DC13B25F1E999554436DB3396F3A26BE626", + "parts": { + "total": 1, + "hash": "C33D4BFA5C6C61098F0AF84BC77D45DC324D776AAD92AB095D0D68DDC1F38BDB" + } + }, + "signatures": [ + { + "block_id_flag": 2, + "validator_address": "227950C1373382B7B12B2A1A12FFD9FC2C4A60FD", + "timestamp": "2023-02-27T10:18:01.280744845Z", + "signature": "pU32m1HxXePffgQp6Vfb92oNIiuSmSTWF08zgFou6ixNQyKA4MgdkKcKRqSaBLZWIyaJL3+y9XpYQF/47T/1DQ==" + } + ] + } + }, + "canonical": true +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/malicious/commit.2.json b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/malicious/commit.2.json new file mode 100644 index 000000000..e512e3298 --- /dev/null +++ b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/malicious/commit.2.json @@ -0,0 +1,47 @@ +{ + "signed_header": { + "header": { + "version": { + "block": "11" + }, + "chain_id": "constantine-1", + "height": "600050", + "time": "2023-02-27T10:22:07.868871373Z", + "last_block_id": { + "hash": "E3430B303BD920B672C06AD0B85FD0A6E1DD1265195F569141AA1ADC9474A79A", + "parts": { + "total": 1, + "hash": "E6C2B9E50E197EBCEB681BC8694F0C0D777D1F8C0F19CA1297AB153C35CAA66D" + } + }, + "last_commit_hash": "7B5BB01ECB16A9A1D0B88AC162E9053CE719DB159E5AB94844F71AFB43C7305E", + "data_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "validators_hash": "E9C656841119D33056056DFE6FCC1F833BD55AF231C27326432579E9AFAE9DA8", + "next_validators_hash": "E9C656841119D33056056DFE6FCC1F833BD55AF231C27326432579E9AFAE9DA8", + "consensus_hash": "3AB4B0648EC46497FE810009B6AB29A5E18983B0A615BE174305F94968486602", + "app_hash": "26A5F36E17C8F3E755214539FB367063C8D11C9064D6A0EBDBF3892EA6EFCD4C", + "last_results_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "evidence_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "proposer_address": "227950C1373382B7B12B2A1A12FFD9FC2C4A60FD" + }, + "commit": { + "height": "600050", + "round": 0, + "block_id": { + "hash": "FDFD129A34954000DF019F2EC84AE2748F0552A6C1D970A25D2998F3A4DA16D2", + "parts": { + "total": 1, + "hash": "B54FD2705B47AF15CBE31F6124209CC1E5C92C26FEF160A5A113C2FDA88231B2" + } + }, + "signatures": [ + { + "block_id_flag": 2, + "validator_address": "227950C1373382B7B12B2A1A12FFD9FC2C4A60FD", + "timestamp": "2023-02-27T10:22:12.898442942Z", + "signature": "XEBf5ACNZPLDDhbeGINBxOlNcjXN+R3jFD0pqAR4DCWprjd8mCQ7ZwBKWrnH7Yml/z0RUTocWgoDlXbrCkyeCg==" + } + ] + } + } +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/malicious/commit.3.json b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/malicious/commit.3.json new file mode 100644 index 000000000..910f84082 --- /dev/null +++ b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/malicious/commit.3.json @@ -0,0 +1,47 @@ +{ + "signed_header": { + "header": { + "version": { + "block": "11" + }, + "chain_id": "constantine-1", + "height": "600050", + "time": "2023-02-27T10:22:07.868871373Z", + "last_block_id": { + "hash": "E3430B303BD920B672C06AD0B85FD0A6E1DD1265195F569141AA1ADC9474A79A", + "parts": { + "total": 1, + "hash": "E6C2B9E50E197EBCEB681BC8694F0C0D777D1F8C0F19CA1297AB153C35CAA66D" + } + }, + "last_commit_hash": "7B5BB01ECB16A9A1D0B88AC162E9053CE719DB159E5AB94844F71AFB43C7305E", + "data_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "validators_hash": "E9C656841119D33056056DFE6FCC1F833BD55AF231C27326432579E9AFAE9DA8", + "next_validators_hash": "E9C656841119D33056056DFE6FCC1F833BD55AF231C27326432579E9AFAE9DA8", + "consensus_hash": "3AB4B0648EC46497FE810009B6AB29A5E18983B0A615BE174305F94968486602", + "app_hash": "26A5F36F17C8F3E755214539FB367063C8D11C9064D6A0EBDBF3892EA6EFCD4C", + "last_results_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "evidence_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "proposer_address": "227950C1373382B7B12B2A1A12FFD9FC2C4A60FD" + }, + "commit": { + "height": "600050", + "round": 0, + "block_id": { + "hash": "FDFD129A34954000DF019F2EC84AE2748F0552A6C1D970A25D2998F3A4DA16D2", + "parts": { + "total": 1, + "hash": "B54FD2705B47AF15CBE31F6124209CC1E5C92C26FEF160A5A113C2FDA88231B2" + } + }, + "signatures": [ + { + "block_id_flag": 2, + "validator_address": "227950C1373382B7B12B2A1A12FFD9FC2C4A60FD", + "timestamp": "2023-02-27T10:22:12.898442942Z", + "signature": "XEBf5ACNZPLDDhbeGINBxOlNcjXN+R3jFD0pqAR4DCWprjd8mCQ7ZwBKWrnH7Yml/z0RUTocWgoDlXbrCkyeCg==" + } + ] + } + } +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/malicious/validators.1.json b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/malicious/validators.1.json new file mode 100644 index 000000000..b381c35f0 --- /dev/null +++ b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/malicious/validators.1.json @@ -0,0 +1,16 @@ +{ + "block_height": "600000", + "validators": [ + { + "address": "227950C1373382B7B12B2A1A12FFD9FC2C4A60FD", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "aaUuEVdox13TAVptDii1sThWwRz7EkEGrXAx0polEpo=" + }, + "voting_power": "100000049", + "proposer_priority": "0" + } + ], + "count": "1", + "total": "1" +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/malicious/validators.2.json b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/malicious/validators.2.json new file mode 100644 index 000000000..cc2a95b6b --- /dev/null +++ b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/malicious/validators.2.json @@ -0,0 +1,16 @@ +{ + "block_height": "600050", + "validators": [ + { + "address": "227950C1373382B7B12B2A1A12FFD9FC2C4A60FD", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "aaUuEVdox13TAVptDii1sThWwRz7EkEGrXAx0polEpo=" + }, + "voting_power": "100000049", + "proposer_priority": "0" + } + ], + "count": "1", + "total": "1" +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/malicious/validators.3.json b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/malicious/validators.3.json new file mode 100644 index 000000000..cc2a95b6b --- /dev/null +++ b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/malicious/validators.3.json @@ -0,0 +1,16 @@ +{ + "block_height": "600050", + "validators": [ + { + "address": "227950C1373382B7B12B2A1A12FFD9FC2C4A60FD", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "aaUuEVdox13TAVptDii1sThWwRz7EkEGrXAx0polEpo=" + }, + "voting_power": "100000049", + "proposer_priority": "0" + } + ], + "count": "1", + "total": "1" +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/multi-validator/commit.1.json b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/multi-validator/commit.1.json new file mode 100644 index 000000000..4d5abbbc2 --- /dev/null +++ b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/multi-validator/commit.1.json @@ -0,0 +1,480 @@ +{ + "signed_header": { + "header": { + "version": { + "block": "11" + }, + "chain_id": "torii-1", + "height": "700000", + "time": "2022-06-03T13:35:50.101488944Z", + "last_block_id": { + "hash": "7612A4E50A7C3963234C12926CD6D1BDE6976B48C86FCBA234A39B9E1013F8F5", + "parts": { + "total": 1, + "hash": "8412E2BE244468C9EAEFDF9EDCB786E87B493F0128A2D52E659EB621A2714434" + } + }, + "last_commit_hash": "5A16B046C7BE949D8D94ED67C68C3D2B403A0FDFA755978E0E44CF510BD849D5", + "data_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "validators_hash": "D7FD67B64A7E4A554C6F99CA3A5B0D622CA8655C106EAB15B8BF06B1824EB6A4", + "next_validators_hash": "D7FD67B64A7E4A554C6F99CA3A5B0D622CA8655C106EAB15B8BF06B1824EB6A4", + "consensus_hash": "F67860470DBFE423526B3C6771B18C1235E1FA658076F5E256552FB1F3501A14", + "app_hash": "930CD3CE7EB375564DB7E90EE390B3744DA9367AB0540BF780543EA4791B9139", + "last_results_hash": "3B90F715776DAA933D619E771D22076BA1F6FD1D035E8429E12F330F0F51D9B0", + "evidence_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "proposer_address": "C97C186A87209EA864B432E03EF0441E18D709BB" + }, + "commit": { + "height": "700000", + "round": 0, + "block_id": { + "hash": "54ABC987C2F0A0996FA210CAC5ACE9CC647BCC092F94DAB8389E9BB0A7D34257", + "parts": { + "total": 1, + "hash": "9C2528D6B338A136EAFE3E72E80BE1C8477AE27A9F909B8473E95741F79FEBB4" + } + }, + "signatures": [ + { + "block_id_flag": 2, + "validator_address": "C97C186A87209EA864B432E03EF0441E18D709BB", + "timestamp": "2022-06-03T13:35:55.754818219Z", + "signature": "BVy+N8t9DE/DtRLJe03RxX7AMuMaTtX9vyOnclgQyVWnpl78W3WgnSQFTBZzOk0i2mUM5Y4grkIfMQzX7tlkAg==" + }, + { + "block_id_flag": 2, + "validator_address": "DA694585BB239BD51FF6FBF61C10B1E85B2DB707", + "timestamp": "2022-06-03T13:35:55.75223464Z", + "signature": "e9/EMCtD6u/K1IvevPaLLDJyZBz+AQJygWI3i+1fIofKFrGCRgyll9X3hwVSXdHAmeJA5klNocjmg0d840mcBg==" + }, + { + "block_id_flag": 2, + "validator_address": "9FBFE65AD18294A346B540F7396D92DF32880966", + "timestamp": "2022-06-03T13:35:55.754420668Z", + "signature": "9F+1dYNW/pfy4/nA6eyJ8/LG6ZQCakwzfX5vSU/ohVqvtjMG/OKtULRxLhNC3D1XGbPwCnAuk92DR+HLCaqSAA==" + }, + { + "block_id_flag": 2, + "validator_address": "BC9D4BD4F1F544FC1E136A92A368CBFC28D0BBEF", + "timestamp": "2022-06-03T13:35:55.785195996Z", + "signature": "wJotiqVAVNqpAm3BdcRgASK4BrwWvYKX28W8q/OPqkpGhGw4FOSq+NDCy4InCiaTs4H09hd9N2xU90hBTqGNDg==" + }, + { + "block_id_flag": 2, + "validator_address": "9FB1318DC46AB8E9D25263DF34C568FE4177FAED", + "timestamp": "2022-06-03T13:35:55.910403509Z", + "signature": "c1lIgbTpaXbF57pZngUKlRHhFYMmvNVojX1KpNgQPi5ThQuYnah21Kbyhlqw2btVfRsuCLVPmaEcq9FTHpG3CA==" + }, + { + "block_id_flag": 2, + "validator_address": "1E4E9FBC795E5C3F1BE3507F6008F40257A8E09D", + "timestamp": "2022-06-03T13:35:55.728438697Z", + "signature": "THvG/fKjSxbbSg7weuACNc9f3Ln15FWQvXHDeSVQSJSGLr1WvMUBTGBBrIrZpPLJ2PqsOdzpu0IkBADkSItxCQ==" + }, + { + "block_id_flag": 2, + "validator_address": "1ECCEB94F3459F9921B0C1D398A3E46283A35285", + "timestamp": "2022-06-03T13:35:55.796899744Z", + "signature": "E5YaDcZ2fy5T/3yNI9nYbKQR9D09ep2k/H3F0bCu7vGl+RBO1CXi4WvFVYy0gbxhjzgfYAr4HSFV4EmeJYusAg==" + }, + { + "block_id_flag": 2, + "validator_address": "8971B56A1262D888E76DDF6C78339135122B9FD5", + "timestamp": "2022-06-03T13:35:55.685746913Z", + "signature": "3981SsDA5WgkFeM0oSzMwN/N4TA2iMU7IxfiTK9hhnxh+XULnZDDcdBPlIY0TBetH35htbv1iX+hNScalg1JDA==" + }, + { + "block_id_flag": 2, + "validator_address": "44A774BBD9B1621C7A752F4BF4FC97ECD19C9339", + "timestamp": "2022-06-03T13:35:55.75118462Z", + "signature": "wF/psfoMtC3wMMGT4udfZ9nmZg251Af7a5lvHu7m+OvFe9cczQSu8d4q960aPhYWGMEuku5yTrZ4uf2YFbjkCA==" + }, + { + "block_id_flag": 2, + "validator_address": "1FB705E4792863FDC9FB000C11D0725656A9D641", + "timestamp": "2022-06-03T13:35:55.810490301Z", + "signature": "+2Cvci+81E/UDmnu69TyWC6B37GflOVho+iVy20FCGTdjz5UFVy55cTxrv7vbZMZ3KlOyax+RnQQHGi6uLItAQ==" + }, + { + "block_id_flag": 2, + "validator_address": "7C7DA4D5C5C9846F9D02BCA0FCC8BF30FC0039A0", + "timestamp": "2022-06-03T13:35:55.768851934Z", + "signature": "Ry9mBF+vhls/JhdYo/CD2Y3x2To/guPvF5Yeg+bOWMfjHkD0+GXSoDtZJAkzf3EXFAd9Kft7r/t9MhU4B/84CQ==" + }, + { + "block_id_flag": 2, + "validator_address": "B310BA4A7B39A9D38A67E93E798CE9549F8407F7", + "timestamp": "2022-06-03T13:35:55.790483426Z", + "signature": "M8VUvw12QEBmfZq0oxOrZSGIoO2R1hTJ7vxWC+U3TYX86wJ0iLJTyHiOCIVsi3kSqZgzMRxN9GcyeN5wvORZDA==" + }, + { + "block_id_flag": 2, + "validator_address": "305EEF06E09EB104BF1564DAF31F4277C31AD984", + "timestamp": "2022-06-03T13:35:55.860597728Z", + "signature": "SUEwxiPwI6gpV2u5ZP7PHUqT1aHewUnAjYvbsLxhn8rcpi+IQL4z8IC5BDEu6lIEtRTBAf3kbUG+HIOpZxvmAw==" + }, + { + "block_id_flag": 2, + "validator_address": "CF4B8BCC61E1B2207107F986283ABDD61B0E874F", + "timestamp": "2022-06-03T13:35:55.745476141Z", + "signature": "IRqS7GT27OugkGGikGmRyo8BPmjmvADOkovSEhuXt3NLGZDoZpEtjTQ0hrsHgCxNxAloi/D5basgQf2wwNPhDQ==" + }, + { + "block_id_flag": 2, + "validator_address": "0323A66E6E48A50BDBAB3832B082B3F2614A433E", + "timestamp": "2022-06-03T13:35:55.777095648Z", + "signature": "ONtbwtqyk3WdUGLeYupQvzENadEPsfzAfmgI10HTwJnwt4cn12/0gJNazc+n8GPM6jSA+c5SPxYJFKRc/RVBDg==" + }, + { + "block_id_flag": 2, + "validator_address": "E0D23AE41C8F2A204F652CE826E08668DE9A07B8", + "timestamp": "2022-06-03T13:35:55.742895232Z", + "signature": "FKlfP1k10dI2USy71wVazRriA4p80AFu0YFfT0R29+VXY/b/gufSyUgnwcQAIBXEJ8R7C5Ff2IcUXt5YXe0yDw==" + }, + { + "block_id_flag": 2, + "validator_address": "3439FB7806A3661A7A53D6B28B6771ACD7B00411", + "timestamp": "2022-06-03T13:35:55.779446564Z", + "signature": "0vFj5Cqsr0PjKr8h99cOoR7670AGAwaDABY6ZoHHMpQCGIcQQ/ztQGBGc/bQlybfEfgD4td4c3zwGnU6UmmEAA==" + }, + { + "block_id_flag": 2, + "validator_address": "76EA8281CC939495A4A54656C59B9075E9257FC4", + "timestamp": "2022-06-03T13:35:55.768029463Z", + "signature": "5u2fzs8vf9rh0XLRokWqMHTq2t0FPf9OEZGvzzc66OBeYtWbPkqjd8QoWcNtZZSeLadO0ZmxUKH9dI1XsCihCA==" + }, + { + "block_id_flag": 2, + "validator_address": "684616FF14EAE8BE5613DA40864EA85812469308", + "timestamp": "2022-06-03T13:35:55.790533474Z", + "signature": "eAwmuFm1DhTKwVv9176ud7g3VNCD5Ffx7eQ5XO7QDc1zRCk5ZBW37MXSTGJSDwK2nE6fVCpgz8uGiY+Px2MbBg==" + }, + { + "block_id_flag": 2, + "validator_address": "43790BA2E57D02A8944B670B46D62ACBBDDE73FE", + "timestamp": "2022-06-03T13:35:55.873837389Z", + "signature": "x2FWJ35Cl5Ro/3PX95PQ7zcium2/ew8O4ciAtH434R03qObjF4dxGbiYIK8jGfcLZSYzbHfEqg9W/w+hjaArCg==" + }, + { + "block_id_flag": 2, + "validator_address": "A35A6E459554E336C2A07CE78BA4EC1250AC3338", + "timestamp": "2022-06-03T13:35:55.830037041Z", + "signature": "EGjgmsPWjHkuF2F61YUYZdF3yrj3fwok/npkzDXdbMakjNjtwrGGDwk8ha8Nd+vEBXEsjrwoTKcuTtOTGBSHBQ==" + }, + { + "block_id_flag": 2, + "validator_address": "5802A80D39D378A6218E52F4EB50ECCF4583264B", + "timestamp": "2022-06-03T13:35:55.766111922Z", + "signature": "33CqE0IaCa8LH5xl3TEF9DQM6CUixON/zGLwf6zagOMwouduY/fjvKPnJKFHKjcw8HH+06WHW8Eh/uCdc9ZYDA==" + }, + { + "block_id_flag": 2, + "validator_address": "8047FA49FCE5E85107E88AE0152E079D9CBD320F", + "timestamp": "2022-06-03T13:35:55.859595385Z", + "signature": "y9Z8fI8yzvPwYL/7xJZK2IHtxu6w9YN9xYyR//aCC4VV6H6e9twBiE4lbmOdfCvbBY2sIVGWJgPdHaAQ0PHfDg==" + }, + { + "block_id_flag": 2, + "validator_address": "B4A950629CC31E385E6269F7B62314ED57650EE8", + "timestamp": "2022-06-03T13:35:55.760842355Z", + "signature": "yoVJt9bZHhYBM4UUXbq7uN++sKjZdJaIWomvT+kY4l6V13/Q6FfZ7p/Gz0RQ4M984YWRfE6Uys759x9eJtTyCQ==" + }, + { + "block_id_flag": 2, + "validator_address": "B95ECC721FCDD6893107699AED4A0FAA62E97D11", + "timestamp": "2022-06-03T13:35:55.776082641Z", + "signature": "IYpJue6Vhq2LgAf3gXoyrMqQzWVKIyA/NXSflzJ10QXilAXEk4xtRLNETU5ktHTCaLua1HQEH0jWncl75SOmDQ==" + }, + { + "block_id_flag": 2, + "validator_address": "ED61B1DEE5F79C521F521B78DB93559FEB2E3B82", + "timestamp": "2022-06-03T13:35:55.799543959Z", + "signature": "F16w+GqPJKvObo4CpmrRKWU4ImYQR+/dQ6BOro4BWtoAyzT6djzIeBiecqfpngw5k2Dk1ay+oex1yK/v0wO2Cw==" + }, + { + "block_id_flag": 2, + "validator_address": "A92A1DE1BB768A065F87DF5811FC0F32FA7CD57E", + "timestamp": "2022-06-03T13:35:55.755220017Z", + "signature": "4Gfral3cIln592UWDp6icF0/3X1Yu71ytQnEVC06nbHm5d+rDVdhZoTcVuXt5RwPj1pdwMm/2nLgEuzGdeuwAQ==" + }, + { + "block_id_flag": 2, + "validator_address": "83F719426E00721A9208DBFE2B30D6DC75FE6645", + "timestamp": "2022-06-03T13:35:55.775647373Z", + "signature": "AeDmWszwyqOYG1f0O4BJxzqHMUmXHGbTQyTysMtcJ/B+kWbPYvJwAOFB3eViYb6luRbPav0OZK5cX1t53iPpAQ==" + }, + { + "block_id_flag": 2, + "validator_address": "710FEF6FF4693C657CB24AADF1623E861A5AF906", + "timestamp": "2022-06-03T13:35:55.665776737Z", + "signature": "xmDL2gCKMZcMqUXKgFMpHT2ZTyU+nVWUVwA2NsWOieZQt1wbm1lAkUGpBPTsGQ0QXeVlPMpdFH9a4qRG2XszCg==" + }, + { + "block_id_flag": 2, + "validator_address": "C8BB72DD64C161F5A23874F480DCD12BD2C2647D", + "timestamp": "2022-06-03T13:35:55.811286326Z", + "signature": "+uy8y9ipaHvoI3f/X3JAZtyAK5BJFy+v6z6hxgzwRpqYjq4UD6dk3x79z4TOQty06FFkzviCPq0C+xOZZLGnCw==" + }, + { + "block_id_flag": 2, + "validator_address": "17E4639B5116509EC04C4AABFA69506317801783", + "timestamp": "2022-06-03T13:35:55.744985013Z", + "signature": "GWhE4+6rTGQVT15kEQfw1XT+tFmFHOKJw7uhkDhiXYLj2GMV122trNt5Jg+XuqtQRRnQrmYPVGOAsTs+t4rjBg==" + }, + { + "block_id_flag": 2, + "validator_address": "1CDD0EF99F36CC3028237886FA00CE45AABD60E5", + "timestamp": "2022-06-03T13:35:55.813779723Z", + "signature": "Q41vMZ++2SVAwE3GJJ90w+kLaPeQ5UAn4BRSvLaGrt22YveyWzT5Rb8/4KZ9qdIQtUG996pSppm9q7qoP5LNDA==" + }, + { + "block_id_flag": 2, + "validator_address": "80DA42EB9A25BD341A18B2D989BB86DFD4413A05", + "timestamp": "2022-06-03T13:35:55.773983092Z", + "signature": "Ce+RmOkY72p3lq0XInZlGrrsMtn35NBOFn71q1tYbE3kuaR2EG4vZTEHG8qvEho0S1QNiWzhq1MNo+fqtwSPDA==" + }, + { + "block_id_flag": 2, + "validator_address": "916D131FCDC899B83D0C3B56DDD6614B339C997E", + "timestamp": "2022-06-03T13:35:55.752739285Z", + "signature": "VkWR14Y2ZExLk6gZt7a4pf1ykVpQQTqxtz2ddLHyub7WPsQ9J32KLi6hGFGbwY3fbXILip/hRsRIZk5ChfMoDw==" + }, + { + "block_id_flag": 2, + "validator_address": "903EED41E608EFD3E2DBA2C561F7331C1AE0D82D", + "timestamp": "2022-06-03T13:35:55.869777308Z", + "signature": "VW1iO9UYqCKarcV/sEN5vALfIEZURl2MMx6AxXjEWniJl2a+isGecizI+AGsN02TL9bW1UIegG921lidzyYpAw==" + }, + { + "block_id_flag": 2, + "validator_address": "A262DDACC4F532340A2B389CF3EAA29B6846D142", + "timestamp": "2022-06-03T13:35:55.716423476Z", + "signature": "jEqEnnr0KmsfDWeD9CxzjH590wy7Ql1z1UatDMnaEsGBrjYKeiyG0JN/Jrqclul8CugTzGYxduB0dGBuOJmEAw==" + }, + { + "block_id_flag": 2, + "validator_address": "9F579C855F835F1CB71ABF2960A244FC0AF671EA", + "timestamp": "2022-06-03T13:35:55.738115459Z", + "signature": "xSwvQCb7FpRNAJqhL3MlpKw2iRUypqJts5Ud8pF6Smv03rz8G5tr7iB4ytTrd/s7n2QtfjMnesNEgjHdtviBCA==" + }, + { + "block_id_flag": 2, + "validator_address": "2026B424B984B681F91C88874820CE927965C492", + "timestamp": "2022-06-03T13:35:55.669136279Z", + "signature": "uGoBYoeTKXOAWkRfI9knL0+9DDQvftPcUXsrFBfErMT1bDE5AqHlu3D4FUGud3GwviBMd5pvJqzrFV9BPsTYAg==" + }, + { + "block_id_flag": 2, + "validator_address": "92C70850FA51E11384826C5F574F5B13B5706554", + "timestamp": "2022-06-03T13:35:55.895362026Z", + "signature": "KkQJQ/GQuZIweb4MrWTPc2CjkJUvYtpIxxKdR176EiceMFhK/4ruoT9mFJUU6wWCPzMZUHz8/sUJW/mnx5DgAg==" + }, + { + "block_id_flag": 2, + "validator_address": "1A30424D3A05B7E61B1936477C338E316E5D7D66", + "timestamp": "2022-06-03T13:35:55.767390164Z", + "signature": "e9E+s5tQMq6y3kA2jbG8rWJWf+Fg14ZNOsppXYni3ClKqSCIGZDB+QUlelsiaVkXGiuImVm4Y4Ss0CV+SWjaCA==" + }, + { + "block_id_flag": 2, + "validator_address": "CB1814F7CDAFE24C0A836B627082710636562B98", + "timestamp": "2022-06-03T13:35:55.773529664Z", + "signature": "8HPhU4+lD4acMsPtHe3/VrsgJHDjHelrTPhwX6J7e9Lw6bwAVxdTQLbgi+qk7fTe31JnsmfhThurzOamU/9CAw==" + }, + { + "block_id_flag": 2, + "validator_address": "DC9424AFE6C83F68813337B5FB4EC62C2330C9E6", + "timestamp": "2022-06-03T13:35:55.809448815Z", + "signature": "u6rWOcha6qmKRCEu49MWdZjWEM9F7rkveRGT/7wjzcHG6EdoJXzlPavA78azeRzxZdYOD+eeG0dMC4JjcW5rAQ==" + }, + { + "block_id_flag": 2, + "validator_address": "91938313E6AC32D56F07B39ACC580B1E7E5A29E8", + "timestamp": "2022-06-03T13:35:55.748101444Z", + "signature": "EFGTLt7jppITaEanwWgwjHWVmLxnkzsx+MlbSXxM/o0k6MiZYxhVHnqKlQ8VEx4rVXf5ciiRkngkOHLBImfhAA==" + }, + { + "block_id_flag": 2, + "validator_address": "6A24190F2C8C0878BB134D146FE9333094171256", + "timestamp": "2022-06-03T13:35:55.746294523Z", + "signature": "yD16Gj6HBagT1mdcmWBf80QFrcm4OuotZAlrgPATBv7ESIQrvfsbpfg77qFZUyFppUlvRx/w5Jo3Xv+EAyIaDQ==" + }, + { + "block_id_flag": 2, + "validator_address": "60A7F8F9EE0BE23DAC5183B36BEB14AEF2D3A879", + "timestamp": "2022-06-03T13:35:55.761892792Z", + "signature": "xdg1qq4wwjN+lXkIpqIJPW2gLyqbo6wPIjBD1q+7J/Yp7dAAc6Ft68dhaUqpVNZHX7Edb4EuXaVvcE264BdYCg==" + }, + { + "block_id_flag": 2, + "validator_address": "43FC3AB6FE3D33C41842553EAFC8393A7FD00C23", + "timestamp": "2022-06-03T13:35:55.7528551Z", + "signature": "8zqsWGoP/7Qu2di8rYmiz2kB8EG8Uapve8MktvBxBoPkVPpzT7bvGLm4P47NmaHHTbkov7gPUxTrudjBl6CDDw==" + }, + { + "block_id_flag": 2, + "validator_address": "B684A0D2CB2D1AC7F9AC890B4678006A1D5B09E0", + "timestamp": "2022-06-03T13:35:55.7990176Z", + "signature": "wVocHbMEKuSLdFR6GRbud0u3JmRzdvhHM2bDmzkSU1JqANJ8bEZ+OyLEWWrYHIGBo2INVcoyC3uxh2Z0FfvxDQ==" + }, + { + "block_id_flag": 2, + "validator_address": "19DD6B3CA0DEB5F6FE0E1A78AD53D408EA0CA8F0", + "timestamp": "2022-06-03T13:35:55.753414473Z", + "signature": "zeto2mpKNT+2Hs6A0BrYCjaz5QHFKsoBxc/XjynnrjUcoZbsM4LayFIY13KHCyjMKTahvPyYuOF+qiKo/x+QCw==" + }, + { + "block_id_flag": 2, + "validator_address": "987AF576DFCAE3B71C38FC729174739811C6626A", + "timestamp": "2022-06-03T13:35:55.814725263Z", + "signature": "LmbWjHS6aWSx6KxA5PG2Zv52bIX1OdK2MXvdDApdnRFu0k6z/CB9aeG9d9rvr19n1Lwt4ceg5k7yN9Qb1mgLDg==" + }, + { + "block_id_flag": 2, + "validator_address": "BAFE51BA7636EFAA64E59649321EAFC4E1D0F03B", + "timestamp": "2022-06-03T13:35:55.893201756Z", + "signature": "Bk9lyPDvcC5+k8JeIjf40dRunkKtx4hpauJTvw/fzcE9+ZFr47JTLcDoz/jF7b/XYXdA5+BfCPVW8EtzjpxqDw==" + }, + { + "block_id_flag": 2, + "validator_address": "AB135B41694E5EC24367110CC9DB1DC7852D6E82", + "timestamp": "2022-06-03T13:35:55.819771973Z", + "signature": "vbXJixBGjbPelJQJD7i4KyF8bvp+k2SzCAgT4irWMLaoYeDRpSLJAfUEp8rxwuAfhHSCi50acH/TuK2+iDtdAg==" + }, + { + "block_id_flag": 2, + "validator_address": "5C950EA844C3F38BB3BB51C6634FFAE18DBE8811", + "timestamp": "2022-06-03T13:35:55.760226369Z", + "signature": "f8pOjAyXuz+7MXnQ2y5uPlFvETJpYqGXekdqgiWGY3BP1b6+AfBudYYCFGzgszD5MTwX0c9O+S2zuhzLb8wEBw==" + }, + { + "block_id_flag": 2, + "validator_address": "B4BB763F2BCDF710991355B1FE4FDCE83C0874A2", + "timestamp": "2022-06-03T13:35:55.769735137Z", + "signature": "EHYV8c/iiW8eT1I0aLcjorj/USCHIvh7Q09XV+32JE0UOFpVZcN0zhYOEt9P94lhSwFLygjMuVEEMn5oxUryBA==" + }, + { + "block_id_flag": 1, + "validator_address": "", + "timestamp": "0001-01-01T00:00:00Z", + "signature": null + }, + { + "block_id_flag": 2, + "validator_address": "94D21453B366ADA7F50F12CA907CDA7A4AB7F214", + "timestamp": "2022-06-03T13:35:55.762781843Z", + "signature": "NYzmnPGtR+X2aUOUX93xZGOQUXj1lgy+Sc35TXcntqo+PgS9K1NvP9syjrpExJtj6DoYyxZLxVWILV7+kx8+AA==" + }, + { + "block_id_flag": 2, + "validator_address": "B699C4799E8F6C7D038682C0441AD28E6E43E677", + "timestamp": "2022-06-03T13:35:55.755470675Z", + "signature": "j2iBtQWfvRwrRr8YL9D2YM1M+wWqJoYVb0Angdirt8MIwiP9JFvdmk0AUYDWWqKQtSCPsirU5sS54vyAZr8PDA==" + }, + { + "block_id_flag": 2, + "validator_address": "246C9C9846C2899D0DA109BCFADAA6260685B4C3", + "timestamp": "2022-06-03T13:35:55.859719292Z", + "signature": "KdnjmWDQbHpckLgA8zuoOkBmOp5ZVIC2MyNPmeQwXqkIjFPszPYGvBK8Gex/MGYnEUqdodCtCdSRqXR83dZ+Ag==" + }, + { + "block_id_flag": 2, + "validator_address": "E3DF8B64C6EE018BE7EC6BB9BC3ABFB67D99A630", + "timestamp": "2022-06-03T13:35:55.772229442Z", + "signature": "phMqXYq0qT6Ogl8YGyELC5bJEradkPuaKmbSmG13O9w4E9HUr958SKj4OY1VC/CtCXXdTwsyGx51jUZsUs1cCA==" + }, + { + "block_id_flag": 2, + "validator_address": "CF941683BB7851E824695E7ABA86D57C6E32F5D3", + "timestamp": "2022-06-03T13:35:55.769108465Z", + "signature": "mDws8j1MgraCC7RW/Kdro63b2qmnRcmgbZ7b9BOuXhh4bMDsUoOWzVm4DzHlRhvDIsY87ciliiBdNoLD6V2mCQ==" + }, + { + "block_id_flag": 2, + "validator_address": "7219BF2BF60498F19DC51B33588DEB9F9D30B392", + "timestamp": "2022-06-03T13:35:55.771974892Z", + "signature": "gfMlUmOBRwUFT0/85gnTgTLcOcORgMikuYS15HN0Zxwj3Hr/nyYuNDziUd2UoKmt4w2nl10d1G3+9ioGmh3yDA==" + }, + { + "block_id_flag": 2, + "validator_address": "75B513290765236B2F1C3FCAACF35A7FBAFBFB6F", + "timestamp": "2022-06-03T13:35:55.743666929Z", + "signature": "dbs5C8CJXT0iRM6rwC1yujrTXbah6p3HWYzlepseolt0zh35sdQxR+qLTTW9l9fFJVakbABZc3HmnkxEH2XhDw==" + }, + { + "block_id_flag": 2, + "validator_address": "3C672A568D8B4D3261132A92CC572F21D4F85C1C", + "timestamp": "2022-06-03T13:35:55.771239891Z", + "signature": "8g80O96VGJjCohwm1LC5g+IA4TFfktGKQqwvO8oSVmURXwRKvEz0uiOgE60mFEDZF1Z5c29HBUvAjtZtJ2YJCw==" + }, + { + "block_id_flag": 2, + "validator_address": "208FF031498FA42FFED6829C8A4884CDC72BE06A", + "timestamp": "2022-06-03T13:35:55.76864075Z", + "signature": "YkQ+8taohQ2wnV/9shwTzAYtYjY7lSznvGjVThjsajaTB+Ygb9uotwqYyJ5hmFlx4tKNg0XM8XTMIYi0w2gCAA==" + }, + { + "block_id_flag": 2, + "validator_address": "CA572745CF6C1437547BB3961D3D04EE8C88DA30", + "timestamp": "2022-06-03T13:35:55.847332906Z", + "signature": "abDhhCedT6svmsLQ30CABCWGZbKOLReGjnG/wrZYFUjd2/XVTzj+Vnwz3syLI68RGssfzj5cwpUM1bRRSEbUDA==" + }, + { + "block_id_flag": 2, + "validator_address": "164A8F8019C8B800A8BEB03CA04428B881812E04", + "timestamp": "2022-06-03T13:35:56.11786174Z", + "signature": "j1hI/hqoqijeLpWUfQ7Jjj+9iriEYaYa1WtXAbFPGx2R5xuUqzbnC9B/tv8oWM7BSippguUNYdqbPxQ7cwy6AQ==" + }, + { + "block_id_flag": 2, + "validator_address": "206DC4AC92A0CF215D8C8AF98B7A84966CE43E45", + "timestamp": "2022-06-03T13:35:55.805981767Z", + "signature": "zIRmZzaRbwhCYEyolXsMOQbmXN7zs0DdmyPJtWgoEMQwMHz0NJCIYeauzMt3HiiXLBKGEPGVbqrdVKbmm9KaAQ==" + }, + { + "block_id_flag": 2, + "validator_address": "3655C2522526E342E1BAE250B7E01C728E97BF61", + "timestamp": "2022-06-03T13:35:55.781612808Z", + "signature": "HkUYBdlNVEL25jXeU7p3dkXAjdrM49XamERN9StVW2ViUaFAV0jIkECXobaQu8Y4gywAzA3e/WEYsB8fv/+XDg==" + }, + { + "block_id_flag": 2, + "validator_address": "50A7130BA74D071391EF45678BE2444955FA4AD4", + "timestamp": "2022-06-03T13:35:55.795000483Z", + "signature": "N8GWyQ6YF34GlL++V2T7I85NHO670TuiLGfkyxy74hckDX1OdY914/Bh3AX9u52Whe4elSwFKh5KShO9ixtXBA==" + }, + { + "block_id_flag": 2, + "validator_address": "556EA605A9374CE54C157DD42395B4047E327914", + "timestamp": "2022-06-03T13:35:55.819703961Z", + "signature": "MY6y4L94ADzfqjwRZbapzqL7AGfmjoKJO5xHnSsFsFWHJqzgSuYszAgi8f13cOutrx+nzC6C3LcMjs9dIXlnAw==" + }, + { + "block_id_flag": 2, + "validator_address": "64BBCDCC1BA3D6CB934A5BBC9F45121A40EF81B2", + "timestamp": "2022-06-03T13:35:55.739332116Z", + "signature": "NYKv8DZvtKFKvkbS8Fy/UoT6Yw81H5EGYtr3iPys6xv64dvTf0zIE9m89HlV+iFtIouVfDRoc+XOTRITMEkKAg==" + }, + { + "block_id_flag": 2, + "validator_address": "6B00AA4C9E824A9E042AA49A5CF40591FDFF2021", + "timestamp": "2022-06-03T13:35:55.757298351Z", + "signature": "6D6PaGs9rieb/Pldq34y1Ntq6/uag1dXJTBaHUHXxvgxAUwL36H5/ljPzuohj1g5TGO5ysIaDEs2UR8Q/C8nBA==" + }, + { + "block_id_flag": 2, + "validator_address": "A2E2A0CC28C652A9EA47D666B2CDE5122DE5A8E1", + "timestamp": "2022-06-03T13:35:55.791807553Z", + "signature": "IDmAMZWai3hZGkMJYLVtw3DD+auIuGIh2Yh7N1W/lARTf4/3a7Rp+/m+Igv5NrxnlMpRJJRswWyUcSKs6/aLBQ==" + }, + { + "block_id_flag": 2, + "validator_address": "E314D1F70E07277B21E80FBF4BCA6AFBDB07C367", + "timestamp": "2022-06-03T13:35:55.818566881Z", + "signature": "SkDwwDcUDr1bhlc03OBzeJ27Ave5GLUI+xeBpjrgOeMAxVtQsV1v9rr5IfAlludPaSrROabMCkQbsCS4/k5rBw==" + } + ] + } + }, + "canonical": true +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/multi-validator/commit.2.json b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/multi-validator/commit.2.json new file mode 100644 index 000000000..5c29f6c77 --- /dev/null +++ b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/multi-validator/commit.2.json @@ -0,0 +1,480 @@ +{ + "signed_header": { + "header": { + "version": { + "block": "11" + }, + "chain_id": "torii-1", + "height": "700022", + "time": "2022-06-03T13:37:56.855963583Z", + "last_block_id": { + "hash": "13FC028F5E88096C6D5DE366ECC1B33E55149CBDCB37FEAC3959F5EF35A9F156", + "parts": { + "total": 1, + "hash": "A3D5C359E9CB8FECA59924AF960CEED6F2AFBC28E65280102D346BB112EA4745" + } + }, + "last_commit_hash": "06946149C9054EBA16ED34D67CC64F926C1DC2AB24F1F1A2D6499DE369C9A4D1", + "data_hash": "02BFA4EA112B5D1CCA5486659B12710E46DA0357DEAA6CEB19B9424A16ACC9F3", + "validators_hash": "C942BF2E377FB1EB6FC1E484519F3130A4EA8307D45EBD988DB0D5EF9C8974E9", + "next_validators_hash": "C942BF2E377FB1EB6FC1E484519F3130A4EA8307D45EBD988DB0D5EF9C8974E9", + "consensus_hash": "F67860470DBFE423526B3C6771B18C1235E1FA658076F5E256552FB1F3501A14", + "app_hash": "111B00FB2733AAD28ADD1373B41A20091A532C4AF1803BEDA9F4CA8C6A93A724", + "last_results_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "evidence_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "proposer_address": "9FB1318DC46AB8E9D25263DF34C568FE4177FAED" + }, + "commit": { + "height": "700022", + "round": 0, + "block_id": { + "hash": "6E81D1F70AA3EA0EE9E6DD9F19DEB9D7B865F116030F20D78544633323FB6663", + "parts": { + "total": 1, + "hash": "0F25EB0305205F993628F61C5CE9587FC2E8E031DA0E06B3E4FB8A500FD5C673" + } + }, + "signatures": [ + { + "block_id_flag": 2, + "validator_address": "C97C186A87209EA864B432E03EF0441E18D709BB", + "timestamp": "2022-06-03T13:38:02.956824996Z", + "signature": "xDcPIbqXxiH2LX5fddAvSsbW7OhIekWsGcMrJXRKf8lU/TsGSWzYn2vo/YQZRpVJlnRm1sjFYN595Ru7PiJxBQ==" + }, + { + "block_id_flag": 2, + "validator_address": "DA694585BB239BD51FF6FBF61C10B1E85B2DB707", + "timestamp": "2022-06-03T13:38:03.088835659Z", + "signature": "Ig30X5IENoC+Uc1JuA8GEoARBAmcNj5JfsGZ1r98VWFx0XZEp5VZWOs49qreLzdEkm++liRYTvIOmqI2wFXgDA==" + }, + { + "block_id_flag": 2, + "validator_address": "9FBFE65AD18294A346B540F7396D92DF32880966", + "timestamp": "2022-06-03T13:38:02.950662014Z", + "signature": "YMUnvB3NyTMhzf6+nPZ4CPjyp13EyerLDKsSd2Rti/5wCSho36Lq1jI2NLyE2t1JUyW7MwxadEl7z10SHqWwDQ==" + }, + { + "block_id_flag": 2, + "validator_address": "BC9D4BD4F1F544FC1E136A92A368CBFC28D0BBEF", + "timestamp": "2022-06-03T13:38:03.001798725Z", + "signature": "MOEBfDjUdsaMHCEAQ4byykts6Qq0IG5jFNTgPFSZS5iBCw2j+voZEKtv+4u5hSID7gR5YW47PsGGgLOJlDZNCg==" + }, + { + "block_id_flag": 2, + "validator_address": "9FB1318DC46AB8E9D25263DF34C568FE4177FAED", + "timestamp": "2022-06-03T13:38:03.138793884Z", + "signature": "XeGS9qrz29gyPpKyVQ02BiOmb71ZN8rbKsj4tPbxx0nRrcosSshHhf/iGEJ7hVsAZOVsbT/vENrSOYI6zciYCQ==" + }, + { + "block_id_flag": 2, + "validator_address": "1E4E9FBC795E5C3F1BE3507F6008F40257A8E09D", + "timestamp": "2022-06-03T13:38:03.056039744Z", + "signature": "Ktr+MVLNsyNzS+r2d1bpMQ7ouFW93vQditYFcaazzJRWhGBvBH6ncJ/FHOaEwSko7XPWntkLUdmXao7IB350BQ==" + }, + { + "block_id_flag": 2, + "validator_address": "1ECCEB94F3459F9921B0C1D398A3E46283A35285", + "timestamp": "2022-06-03T13:38:02.984209124Z", + "signature": "K+LIzwnkHwEJSy54d+8I2sAW9dA7cRDh4zReLB4IxIaHumVgV3isAGI8T7oQnq8IPdTjSkB1ofX6+s1/oOSfDA==" + }, + { + "block_id_flag": 2, + "validator_address": "8971B56A1262D888E76DDF6C78339135122B9FD5", + "timestamp": "2022-06-03T13:38:03.033300601Z", + "signature": "AvwjtbuYh3inOr0J4Lohnpmy5R8RLRCfO/2s9+mjwvxxiyocxsf1XmUYhyZ+iJfEkCXSMXKZZyKTO2kX27oMCQ==" + }, + { + "block_id_flag": 2, + "validator_address": "44A774BBD9B1621C7A752F4BF4FC97ECD19C9339", + "timestamp": "2022-06-03T13:38:02.909225961Z", + "signature": "mfuPliLAzVcNzO6bFjHZEPtV9BlMINJIxcpLCpYpwgHSJ453LtIGfO7fU6C/JZKri6LXBLeHCsmPkxJhgiEjAw==" + }, + { + "block_id_flag": 2, + "validator_address": "1FB705E4792863FDC9FB000C11D0725656A9D641", + "timestamp": "2022-06-03T13:38:03.051358887Z", + "signature": "Pd9dAEMjw6VSnrMiBBdDjiTjTCRXXO2r7BFqDMrMdgjBYYVbRu4xSwLdd1h1tghjwsHNgMrDyE7JuKUT1tVhAw==" + }, + { + "block_id_flag": 2, + "validator_address": "7C7DA4D5C5C9846F9D02BCA0FCC8BF30FC0039A0", + "timestamp": "2022-06-03T13:38:02.962081829Z", + "signature": "Y39mFnBQiig8pIN9xqSSTKFIjVP/mJSWahUMLh8zkGdurAJw20+WsyQK9vGlX9ZlPzBAbPLCnVxErtCJHByPCQ==" + }, + { + "block_id_flag": 2, + "validator_address": "B310BA4A7B39A9D38A67E93E798CE9549F8407F7", + "timestamp": "2022-06-03T13:38:02.945785906Z", + "signature": "8kz2ewH10CNAmT1TmQmFKIemWt03HjKvuGVguY1f9jb//ojy856w+ZhV1ECk6nEB0RLXndcObBTEyJL1GiPuCA==" + }, + { + "block_id_flag": 2, + "validator_address": "305EEF06E09EB104BF1564DAF31F4277C31AD984", + "timestamp": "2022-06-03T13:38:03.001858145Z", + "signature": "RZ4nin/Cp66K/9CllBxIGir7fkp+eA336zwd8DXo3CyZBy2X2AX7fqvoQRTR3NafTEURqvpzvDkB4D8i6aGeDw==" + }, + { + "block_id_flag": 2, + "validator_address": "CF4B8BCC61E1B2207107F986283ABDD61B0E874F", + "timestamp": "2022-06-03T13:38:02.983308052Z", + "signature": "7IkwCDKoGQYXiMjEZlmATiGa2UeqyGoUjvHJPGH+4sM8qc1/4vj7nmSLB34OvLqt2YHFNkQawHAyBDLNSERCCQ==" + }, + { + "block_id_flag": 2, + "validator_address": "0323A66E6E48A50BDBAB3832B082B3F2614A433E", + "timestamp": "2022-06-03T13:38:03.016498984Z", + "signature": "NwMUi819SAqCZcLUuBsGGhJpg8c6XM9nuVtw4ToW+c5pBd0hyO5SUPLqXa/CS1EfH3z/SeljilB/TBkYCmdnDQ==" + }, + { + "block_id_flag": 2, + "validator_address": "E0D23AE41C8F2A204F652CE826E08668DE9A07B8", + "timestamp": "2022-06-03T13:38:02.958353086Z", + "signature": "NnYCFLWVrnuA2Hr6rE1pAab6Ltfzw8shNY8sRtc7P3MWhlBv7k685RM8amx4QLJoBUxSCdYfvHBmL2hnVxTxDg==" + }, + { + "block_id_flag": 2, + "validator_address": "3439FB7806A3661A7A53D6B28B6771ACD7B00411", + "timestamp": "2022-06-03T13:38:03.027510509Z", + "signature": "VDYARQ1mvlu0safaoXkndW+2utDkEM0wpHem5fAyN+tNUO5YqRQ2Bnw47iiTtcBlnCCRnXuEbHqXKKI72LY7Cg==" + }, + { + "block_id_flag": 2, + "validator_address": "76EA8281CC939495A4A54656C59B9075E9257FC4", + "timestamp": "2022-06-03T13:38:03.067270857Z", + "signature": "MXDluhyGEXYhzSzyZpIU//qX/4osHMzYGcPAdVhmmqE4hf6kZgDwP09mMS/9j01qSfDRj4y//ckV7u7qvfWrAQ==" + }, + { + "block_id_flag": 2, + "validator_address": "684616FF14EAE8BE5613DA40864EA85812469308", + "timestamp": "2022-06-03T13:38:02.990256234Z", + "signature": "PTQpraeXawjRf7zVRuXS+/VMUivvUlptxmIyziOHoDwmLOFski3HxDPV9xu5O1J5ShEERt3AEFbdTMNmoKSeCQ==" + }, + { + "block_id_flag": 2, + "validator_address": "43790BA2E57D02A8944B670B46D62ACBBDDE73FE", + "timestamp": "2022-06-03T13:38:03.110264474Z", + "signature": "fvnp1RhwHFtYpYceSEkk8kH2WX6KWF0wYMbOMXjRbKkJ0iYb2TEsXRSmp1+aGsQ1aLHQ9WOLabc460aF6hzgDw==" + }, + { + "block_id_flag": 2, + "validator_address": "A35A6E459554E336C2A07CE78BA4EC1250AC3338", + "timestamp": "2022-06-03T13:38:03.011358112Z", + "signature": "s3JPMtrVZ6Lh+UNKBDkHbaFD4jlUYOT/Fjv3BnMoTfJF7C5pp4eiKId7kbqTz3lS9xzlOP7f4T0DyCGJ71+6CA==" + }, + { + "block_id_flag": 2, + "validator_address": "5802A80D39D378A6218E52F4EB50ECCF4583264B", + "timestamp": "2022-06-03T13:38:03.058702561Z", + "signature": "bCgDZXY1zWYMHrHvAPFMcStpmJecjAZKRjO/mCVKzZYVAE3gDYRKfSVelBXr1XtdcGBB6B68cTESlVre12H6Ag==" + }, + { + "block_id_flag": 2, + "validator_address": "8047FA49FCE5E85107E88AE0152E079D9CBD320F", + "timestamp": "2022-06-03T13:38:03.167988259Z", + "signature": "aae7X4gP62OlyiIw+oZAb6BvzRe97T+lh/e/0hlJCAioDb+4eGo/p4ZCldS2kVUmAppRhQXOAuVjbIvRsuivBg==" + }, + { + "block_id_flag": 2, + "validator_address": "B4A950629CC31E385E6269F7B62314ED57650EE8", + "timestamp": "2022-06-03T13:38:02.928081393Z", + "signature": "l417hQXGbMPcGuB+RlQRBIrkmFZXFV+dk9ulqjXxRz8PKjqA4dhptxf+IAyOiEG3mdyMuyJUj9YCcQwwqX5ZCw==" + }, + { + "block_id_flag": 2, + "validator_address": "B95ECC721FCDD6893107699AED4A0FAA62E97D11", + "timestamp": "2022-06-03T13:38:03.01923997Z", + "signature": "O5C9Vtn941852vJHafdu92mr+Q4SvVFpf1i4aFm1TeKE0w9I/CKm9qFi3A+SUKEDpR4s1sbLMMh+sNivR2yJAw==" + }, + { + "block_id_flag": 2, + "validator_address": "ED61B1DEE5F79C521F521B78DB93559FEB2E3B82", + "timestamp": "2022-06-03T13:38:03.028598724Z", + "signature": "dY4BImgnMpOWylAQHFj5kFIHZIzsUHVXtJW4D8Zs/sgxTMp1aaTlYishnkbo1I/AYioSrFnkP9/CY863rRl/Dw==" + }, + { + "block_id_flag": 2, + "validator_address": "A92A1DE1BB768A065F87DF5811FC0F32FA7CD57E", + "timestamp": "2022-06-03T13:38:03.065424145Z", + "signature": "67a3V6DLYiEVd+KVQb6eOcV/mkvG7OvVvZ0V3BxvPYDLAU8HmNJtaV2/h7+8EvPMOyI6u7LkyKYoATpIlEbTBQ==" + }, + { + "block_id_flag": 2, + "validator_address": "83F719426E00721A9208DBFE2B30D6DC75FE6645", + "timestamp": "2022-06-03T13:38:03.068686365Z", + "signature": "CgV8TcScse+qobOsTDreFSR0ww+58XcXRi9tdWrn9fp8NdlUo9/fwIf7zbZ92toNI/6pN2t7WVyXlDGXuEMKBA==" + }, + { + "block_id_flag": 2, + "validator_address": "710FEF6FF4693C657CB24AADF1623E861A5AF906", + "timestamp": "2022-06-03T13:38:02.931758724Z", + "signature": "iFOOqO8gSWpSR1RTnInHK1po6ow0ScLERFrB/aNC/UDHErbC//HX5G/oERQfefnZupJtJ4puE25LdvAo3aGEAQ==" + }, + { + "block_id_flag": 2, + "validator_address": "C8BB72DD64C161F5A23874F480DCD12BD2C2647D", + "timestamp": "2022-06-03T13:38:03.020556302Z", + "signature": "+DtTuvHADID1W75mfkh/0cHzVpH/AZ0wtIbMRaOrWvTkB4l/OL2M5+ak+MPZbtQrZojWY7tWeAhcJDxUSCJDAQ==" + }, + { + "block_id_flag": 2, + "validator_address": "17E4639B5116509EC04C4AABFA69506317801783", + "timestamp": "2022-06-03T13:38:02.94263653Z", + "signature": "9WyH8lYvvXearUkrDYRT0bWobfzET02/gLaKk091371xGyQ0U6Hd7/k58GPvqG2j7N/o+FbmJP4VNcUndFzaAw==" + }, + { + "block_id_flag": 2, + "validator_address": "1CDD0EF99F36CC3028237886FA00CE45AABD60E5", + "timestamp": "2022-06-03T13:38:03.095935902Z", + "signature": "W1KTHl9dkehqVUxnVctuju5umGwdkH2KBmdsBM/HRb6adL+AyfeHhLldwQ8h4P5xF4UdFe1hcNr1KyfZiU9KCw==" + }, + { + "block_id_flag": 2, + "validator_address": "80DA42EB9A25BD341A18B2D989BB86DFD4413A05", + "timestamp": "2022-06-03T13:38:02.969882219Z", + "signature": "DZSUL5Ud0VKFD5P3L47ihNAlLHzMjcTLZo4T1f9G9s5qxqk97mveoqM7pf5Qon7IMYgylJxtZkKdkV/n+9RKCg==" + }, + { + "block_id_flag": 2, + "validator_address": "916D131FCDC899B83D0C3B56DDD6614B339C997E", + "timestamp": "2022-06-03T13:38:03.065066305Z", + "signature": "ETmgl1gUyQ+q+FT4EziKgwTR3TILQ/2GsJro43BTCb/Ssesg9c58SSVYpCXQIsjTFOsAB58YWyQO+2fVKMTmDw==" + }, + { + "block_id_flag": 2, + "validator_address": "903EED41E608EFD3E2DBA2C561F7331C1AE0D82D", + "timestamp": "2022-06-03T13:38:03.311749545Z", + "signature": "GdrUXYbWhGIUhAaUF0Ok+eQwbkWMdZQ2XEc6CRbViiV0xv1iz/FmLzbrbsOVSpGGFOtmhx1p5rjR/TI0J7maBQ==" + }, + { + "block_id_flag": 2, + "validator_address": "A262DDACC4F532340A2B389CF3EAA29B6846D142", + "timestamp": "2022-06-03T13:38:03.017832244Z", + "signature": "Um14t+cPdqxzCGbY7xSKkJLhOvsfDkM8iumV7C9Vg+Wr/9SXLZG4tqV5zusRXYwxqmPisPYgJlNt5TH97UWSBg==" + }, + { + "block_id_flag": 2, + "validator_address": "9F579C855F835F1CB71ABF2960A244FC0AF671EA", + "timestamp": "2022-06-03T13:38:03.001519348Z", + "signature": "NCoDQgWOd4rJyQY0PZa96bNuf6pIt6sDADCKGIjVxBD8QWJBkTXTJo4CL0DhKpIgQRMV/zQ3+aLaYvCQppPmCw==" + }, + { + "block_id_flag": 2, + "validator_address": "2026B424B984B681F91C88874820CE927965C492", + "timestamp": "2022-06-03T13:38:02.958156705Z", + "signature": "5+4pjgD9kjtSKVu6aM+rhvuLu9pOBa8s+eZYV9NcprB8S8RS538T41NgZvawN6w07kQzl0876vV33O316vT6AQ==" + }, + { + "block_id_flag": 2, + "validator_address": "92C70850FA51E11384826C5F574F5B13B5706554", + "timestamp": "2022-06-03T13:38:03.137892928Z", + "signature": "ghnpxhWyfuIlaVWZd8PUx7OdkoPlEz+iTs0JB76y/DWFnl+Hv7nDGF7kjtp3K7aSKLZespMWqOX/i3YdMHKCBw==" + }, + { + "block_id_flag": 2, + "validator_address": "1A30424D3A05B7E61B1936477C338E316E5D7D66", + "timestamp": "2022-06-03T13:38:03.125967169Z", + "signature": "ez4e+pfmXxDSseZsPv8Wbj8ZBSCT6py/rR4giYwSG0WAMQNlRly2ojPSRd5s+gjAHyJYqLxOImVNQh4qh5CmDQ==" + }, + { + "block_id_flag": 2, + "validator_address": "CB1814F7CDAFE24C0A836B627082710636562B98", + "timestamp": "2022-06-03T13:38:02.965440388Z", + "signature": "7OEA3wiEfMsIwldABsvzaLGc48AJXn2kc+3/bP3rJqLQ8X94odS2q4h8xZilmMQpYlurf8dB7VdK04gl/9mcCA==" + }, + { + "block_id_flag": 2, + "validator_address": "DC9424AFE6C83F68813337B5FB4EC62C2330C9E6", + "timestamp": "2022-06-03T13:38:03.11437383Z", + "signature": "cyAmuJKVRiYmocrZ3PnkJ/nRJmW9b8k2mBo4kDt5V21h2ae93xLwLgZWj8VkBwf69gBuLpGp3WjKKG5B6CKtCQ==" + }, + { + "block_id_flag": 2, + "validator_address": "91938313E6AC32D56F07B39ACC580B1E7E5A29E8", + "timestamp": "2022-06-03T13:38:03.046352358Z", + "signature": "puNqnB7joZWalKXvQ42kyIeaBtV4pJ7IAH+LYSqVJqh2hmgpQVlobTCVBcJ7VP4CtXyd6mal7gc9D6Ma09dQBA==" + }, + { + "block_id_flag": 2, + "validator_address": "6A24190F2C8C0878BB134D146FE9333094171256", + "timestamp": "2022-06-03T13:38:02.946114607Z", + "signature": "HYuCkDcCvotie6zQ7Npdhj36F8gzu3LscWbREI+rWxtyK5L+SEQ2gr5kx1USAKov3/E8gOo+23Htl9hUenYbBA==" + }, + { + "block_id_flag": 2, + "validator_address": "60A7F8F9EE0BE23DAC5183B36BEB14AEF2D3A879", + "timestamp": "2022-06-03T13:38:03.019878047Z", + "signature": "hUPAPG0mQLERUoLH2MxYWajoanv+/035hFcj3VzrOguLs4la346g76wW/oc3XbpW4EiVSMVxMtc7+YicBeLLBg==" + }, + { + "block_id_flag": 2, + "validator_address": "43FC3AB6FE3D33C41842553EAFC8393A7FD00C23", + "timestamp": "2022-06-03T13:38:02.950006102Z", + "signature": "QR1DIalaiMOe4MRkd//GMkZdjUZhXPl9EyXVe9wlZF2lY3urYsnVIKaKt4/u0F0531KHrLJCo6cIwqBMWIsfBw==" + }, + { + "block_id_flag": 2, + "validator_address": "B684A0D2CB2D1AC7F9AC890B4678006A1D5B09E0", + "timestamp": "2022-06-03T13:38:03.041763338Z", + "signature": "ceK1P6lTZrp9IGpFwJqREOZtV8qCJdig6HhfUcWsBDX2Ie4IJq1MSNi3/YPhpE5BfbEHgbsQmnm83/lcRgQkDg==" + }, + { + "block_id_flag": 2, + "validator_address": "19DD6B3CA0DEB5F6FE0E1A78AD53D408EA0CA8F0", + "timestamp": "2022-06-03T13:38:02.916768934Z", + "signature": "8euE6qAE6kPWYYpHm3sbtm+CJX/1CovV2f4HV36MVpyZGJ0EX85ngJ2doROh5Sulg0Sjom/Nvx+tnsfyXbwhDg==" + }, + { + "block_id_flag": 2, + "validator_address": "987AF576DFCAE3B71C38FC729174739811C6626A", + "timestamp": "2022-06-03T13:38:03.014693056Z", + "signature": "Le07NkZQIqv+QdG0vXdMuN9GsFoSiVRWFJI0a831Dy4A82nUnbFF3LfyOZwXGbXekmCjCXzydH/+Hp7wyofOAg==" + }, + { + "block_id_flag": 2, + "validator_address": "BAFE51BA7636EFAA64E59649321EAFC4E1D0F03B", + "timestamp": "2022-06-03T13:38:03.089060857Z", + "signature": "SuVtCwBkihOtcM3y0lYy3SO1ILmUvcYTUToly+IBFkbzHlMV9SNwY9BoQlYdPD5mfEo6p8a22TFg5PegTwf1Cg==" + }, + { + "block_id_flag": 2, + "validator_address": "AB135B41694E5EC24367110CC9DB1DC7852D6E82", + "timestamp": "2022-06-03T13:38:03.001258023Z", + "signature": "b/LsBL9aZEm23xDcS4gEIJJEM/E+S5BdUZVWPj4oYjMTdwk727DX42P3sWfpVywS83jeRAFKoZnMT+X6O7miCw==" + }, + { + "block_id_flag": 2, + "validator_address": "5C950EA844C3F38BB3BB51C6634FFAE18DBE8811", + "timestamp": "2022-06-03T13:38:02.947289588Z", + "signature": "uyJNosJYNTuawzaL9sY83/ygVHCEKU4o1Xx1Fx4dxeg+BfGDJMEHI0fhpimocNGqOG9Mfa6Eu906GeS1R2zpCQ==" + }, + { + "block_id_flag": 2, + "validator_address": "B4BB763F2BCDF710991355B1FE4FDCE83C0874A2", + "timestamp": "2022-06-03T13:38:02.961062019Z", + "signature": "7nX5+V1o1I8AiUbxbs+EU0U1wN/9Tj0v6k4mJNAV7ZoBc32LxR/VUikLeikSNIhxFVsgHhiIpEvh89BS+Gy+BQ==" + }, + { + "block_id_flag": 2, + "validator_address": "63C90F79BA2F2248628BC76D5C038492674EEB91", + "timestamp": "2022-06-03T13:38:03.123749839Z", + "signature": "99SuKjvAZHOXfo/GfqYy53vbbpmopsIuRy53aNcphXSJ/QosO3JW2IkNV6catLg34SLSTyhy4wzj6QRUS+GvCA==" + }, + { + "block_id_flag": 2, + "validator_address": "94D21453B366ADA7F50F12CA907CDA7A4AB7F214", + "timestamp": "2022-06-03T13:38:03.039958614Z", + "signature": "TvcjZjkMNYTegpazA2b2tP9VySHGUdwg9+iimtofytr8vhXQzhU46KMaNIC6EKAhJVX2tk6U6fkpGErNKXXBBw==" + }, + { + "block_id_flag": 2, + "validator_address": "B699C4799E8F6C7D038682C0441AD28E6E43E677", + "timestamp": "2022-06-03T13:38:02.962794666Z", + "signature": "2cyd/YoaQVCk2xQCtOfW/OWFGe/dumgiTaJKjYnChi4D3i/FFJZa8T762wcqyEfvNxDwpQSuzPDsfgFNnBx8AQ==" + }, + { + "block_id_flag": 2, + "validator_address": "246C9C9846C2899D0DA109BCFADAA6260685B4C3", + "timestamp": "2022-06-03T13:38:03.156099089Z", + "signature": "dzGrI1Feicyo6wBLhvM8e7fXVFo7Ei088n5l7ush0tvG5sG3fXgd5wl+k5WD5MwgR7M2G49KE84NI5nemG1WCQ==" + }, + { + "block_id_flag": 2, + "validator_address": "E3DF8B64C6EE018BE7EC6BB9BC3ABFB67D99A630", + "timestamp": "2022-06-03T13:38:03.010914961Z", + "signature": "G1KYKGUwMUPfPO1QWXi11kX1oQ28bdC3pvhOlXZPyXXw1mshnPL7mcYRrg10Fz9ouWa5ArMVefEoI/PuYPiQCQ==" + }, + { + "block_id_flag": 2, + "validator_address": "CF941683BB7851E824695E7ABA86D57C6E32F5D3", + "timestamp": "2022-06-03T13:38:03.043383504Z", + "signature": "gz9vNaQ5ytFjAGizGFH4FJGCLWQAcr+G1mO/lCa0DpZ9Oa7IvybMibnQEH81R/+4Vgaky/EFnlO1ZPFGRdrNBw==" + }, + { + "block_id_flag": 2, + "validator_address": "7219BF2BF60498F19DC51B33588DEB9F9D30B392", + "timestamp": "2022-06-03T13:38:03.091449853Z", + "signature": "HiCFt7e5hcsBL/88PwKCxkRmn76GZyB3t1QVYHKmF4aDuMg/KYiV1W5OrrhSS2GlU7Fu6BCSIByuX+hWM9N9Dg==" + }, + { + "block_id_flag": 2, + "validator_address": "75B513290765236B2F1C3FCAACF35A7FBAFBFB6F", + "timestamp": "2022-06-03T13:38:03.066850435Z", + "signature": "lY5vlf0yluUmBybhMWXmrbwUtDN3C8/k/kXdJO+wW4XeN2vyf93McsdxFAG3h3fGztcru6xN/IHpVYQaUfBdAA==" + }, + { + "block_id_flag": 2, + "validator_address": "3C672A568D8B4D3261132A92CC572F21D4F85C1C", + "timestamp": "2022-06-03T13:38:03.074922401Z", + "signature": "bjqmWbiaZHbOic92OJvm6LZQzARTlKIcYMSpAG0gdtWRfyTN/mFC1F5YULgKpUu7mCqC9yjzfgxQxG5yMUVcCQ==" + }, + { + "block_id_flag": 2, + "validator_address": "208FF031498FA42FFED6829C8A4884CDC72BE06A", + "timestamp": "2022-06-03T13:38:02.961749644Z", + "signature": "toCmbVAyEngaxzZNUqEfjuSMSpcbrjbqhSaXugWOT3+V8toAzCXw3t/p7sJLN1AMrP+vblFbPuZuk7WZa7SZDA==" + }, + { + "block_id_flag": 2, + "validator_address": "CA572745CF6C1437547BB3961D3D04EE8C88DA30", + "timestamp": "2022-06-03T13:38:03.006634075Z", + "signature": "8T42mFxlD/mc7iZbhUq0LGCeguAs4HTafj5VdbZvdL1KOb5Yu5pIivqNCJ+1GF9Ww1ID2Omu1WKY68IhyvNHBA==" + }, + { + "block_id_flag": 2, + "validator_address": "164A8F8019C8B800A8BEB03CA04428B881812E04", + "timestamp": "2022-06-03T13:38:03.090838593Z", + "signature": "wl+Ey0J2Vxsv7r6M+rmfpspsTzAE4zqr64nS/RVe6gLYpMVHqvUB3TOEG0gXqk19oavfJyIqwYKByfHk0gQQBw==" + }, + { + "block_id_flag": 2, + "validator_address": "206DC4AC92A0CF215D8C8AF98B7A84966CE43E45", + "timestamp": "2022-06-03T13:38:03.052438862Z", + "signature": "AoeA/Me32F9BKFqBPWNLGcnfJDBwRQz5biM+bPPzHqqmvTFIUE0xRcSDI890PDyN6lNW3sIa4tZQqzZ21z3cAQ==" + }, + { + "block_id_flag": 2, + "validator_address": "3655C2522526E342E1BAE250B7E01C728E97BF61", + "timestamp": "2022-06-03T13:38:03.065935511Z", + "signature": "KYENAyXIZpNjv+zDSCUeXco0I3ddWKlQx3y6eXv3xuBVPsueMEffcmZlBLG/FxJUtaPFrwZQHr8ccw90Z81wCQ==" + }, + { + "block_id_flag": 2, + "validator_address": "50A7130BA74D071391EF45678BE2444955FA4AD4", + "timestamp": "2022-06-03T13:38:02.968245257Z", + "signature": "0gbDd9KXtF/YWGMXU/5u5PAXiHTIiyBh4GezCy+ytN/1gReChkz7HIxV/DyOi5oPaS2CzsYZyAZwF+Lv9Dj2AQ==" + }, + { + "block_id_flag": 2, + "validator_address": "556EA605A9374CE54C157DD42395B4047E327914", + "timestamp": "2022-06-03T13:38:03.040029273Z", + "signature": "+RRBkhnowjS9NBAJOoxqoQYOJbP7s6wnX9ClXVO0v5oDUJYV0DZJQOruWrHpiE3pXoS/UjEoz+hgcwdhkGJUBA==" + }, + { + "block_id_flag": 2, + "validator_address": "64BBCDCC1BA3D6CB934A5BBC9F45121A40EF81B2", + "timestamp": "2022-06-03T13:38:04.101758284Z", + "signature": "HnNbIdHPPISXTA6eutTsp/zqmRb51QEdPk9q9in9is3RqY8Vyth+18nZTvY6FsyHGGDIdPIp5c6aoUY/2KNUBA==" + }, + { + "block_id_flag": 2, + "validator_address": "6B00AA4C9E824A9E042AA49A5CF40591FDFF2021", + "timestamp": "2022-06-03T13:38:02.958687495Z", + "signature": "1Y/bTP+rdDfCqWB5/C/MXgXQgmbnhLWuZHdE76TE5iiCLqOJDxJ9nBoZ5eHw2F7dNKUxAWn7wOlVQV1oJj+mCQ==" + }, + { + "block_id_flag": 2, + "validator_address": "A2E2A0CC28C652A9EA47D666B2CDE5122DE5A8E1", + "timestamp": "2022-06-03T13:38:03.058769132Z", + "signature": "s7LY6ySo+PWaz75tnO1sYcXA/TRIEbLpecH0r4JRsZL1R2EbcNUNw3NxSYaTkCEeRv1iBnuLjlxXqFoMnkNaBw==" + }, + { + "block_id_flag": 2, + "validator_address": "E314D1F70E07277B21E80FBF4BCA6AFBDB07C367", + "timestamp": "2022-06-03T13:38:03.057248993Z", + "signature": "HuQotD9HC7GDcUyHqvaVshVcqX9k4Zt9Qw4i/xHxtAXTu8FO/dk3ce9U2U9xf0ehDmQyqnE9NUfyxuyc/zmqAA==" + } + ] + } + }, + "canonical": true +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/multi-validator/commit.3.json b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/multi-validator/commit.3.json new file mode 100644 index 000000000..1c3ef99ed --- /dev/null +++ b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/multi-validator/commit.3.json @@ -0,0 +1,480 @@ +{ + "signed_header": { + "header": { + "version": { + "block": "11" + }, + "chain_id": "torii-1", + "height": "700083", + "time": "2022-06-03T13:43:47.910205576Z", + "last_block_id": { + "hash": "742C55C56DA4FBFFE77E935130AAC1744691F76B06130390E077B50551E04726", + "parts": { + "total": 1, + "hash": "D724BEF014D630D6B78AEDDEF7DBE83494A1273BE0F0491D3E383B32D393E65F" + } + }, + "last_commit_hash": "B0B6B67B6605829FAAE820886DE6BF9B22CAD781237C3986E418776DBEE555AF", + "data_hash": "E0D3E61B78566411E9BF9675CD81B3F932832626FFB656500694690F153B3E3D", + "validators_hash": "3015ED820597B37B47EA7D360FF912679A64FAD61AEBBAE674F7F2453AC1D670", + "next_validators_hash": "9F4EB337A5882472EE2F380061725D6971A6FDAFEFA823B3942A9F888152F74A", + "consensus_hash": "F67860470DBFE423526B3C6771B18C1235E1FA658076F5E256552FB1F3501A14", + "app_hash": "22BC65F268BBEFE681D0EC020A42982F806E85A681584931371E8616641F9937", + "last_results_hash": "B20AD298C96B5BEA5B5AB00572B183612D1C837D50356DE644A6E21524F18C29", + "evidence_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "proposer_address": "43790BA2E57D02A8944B670B46D62ACBBDDE73FE" + }, + "commit": { + "height": "700083", + "round": 0, + "block_id": { + "hash": "F62D4C193A0A701D8B57444B1BEB8A141D1B4CD3290CC72AC1254517FCE0D3B3", + "parts": { + "total": 1, + "hash": "FB326EF9FBF58F590F895EE70AA274BBA84235E4F5E0E9E572AED14E1B00F0B7" + } + }, + "signatures": [ + { + "block_id_flag": 2, + "validator_address": "C97C186A87209EA864B432E03EF0441E18D709BB", + "timestamp": "2022-06-03T13:43:54.013257597Z", + "signature": "+ExG8BGqVmcxbJC3gsZ0lyaqwEdwgcHIOtpchyryFmPbwMe/ytjoHAPWOK0FQLgzCKbL24VOMlhFBu5s0OCCDw==" + }, + { + "block_id_flag": 2, + "validator_address": "DA694585BB239BD51FF6FBF61C10B1E85B2DB707", + "timestamp": "2022-06-03T13:43:54.005853513Z", + "signature": "pz0b1bz1J934RtDoJv7AwAcnUrb7K5TF574yhtXmMP8RalQB9BD1dYV88ie2kBEDLRSEoOrnh7+ZvKhipBpnAA==" + }, + { + "block_id_flag": 2, + "validator_address": "9FBFE65AD18294A346B540F7396D92DF32880966", + "timestamp": "2022-06-03T13:43:54.007388993Z", + "signature": "lnN0U2PvG/XXcGg6rc9BJQUMW1DBNu1edi7vWYLVEDOV2oAZJnaPcn4J91oswOrIxfHqxQDn1GEPkV4xS7zWCA==" + }, + { + "block_id_flag": 2, + "validator_address": "BC9D4BD4F1F544FC1E136A92A368CBFC28D0BBEF", + "timestamp": "2022-06-03T13:43:54.014781453Z", + "signature": "zP4qgvrEUxgCNoyK/9BhSaakGHxQQ872o9ejCB0leGL027RXPwTM185OFUHvQYxYqXrQCwi5c9kc4xsOBnhpBQ==" + }, + { + "block_id_flag": 2, + "validator_address": "9FB1318DC46AB8E9D25263DF34C568FE4177FAED", + "timestamp": "2022-06-03T13:43:54.097314751Z", + "signature": "2WR7sF/M7qhhRrZR3cJ/rlOIILI8tuVJBHEz2aABJE6+AYdCQ0Sy58+eeeRBiLx8LRk6eREnx1kf73LQKJVRDw==" + }, + { + "block_id_flag": 2, + "validator_address": "1E4E9FBC795E5C3F1BE3507F6008F40257A8E09D", + "timestamp": "2022-06-03T13:43:54.031837194Z", + "signature": "HYXt97EZ0khRzyrG3FcLxY73G1Q9Z1wmWYXcpTiLZm8e1+r4NyzNo0H6Jsj78NBrESv7ePM7/tk0SyF/KJAgAw==" + }, + { + "block_id_flag": 2, + "validator_address": "1ECCEB94F3459F9921B0C1D398A3E46283A35285", + "timestamp": "2022-06-03T13:43:54.050466111Z", + "signature": "oWzA+sfvwzaEGgmQxOaMjFxodTwSrXzDlWHX9b5KDOXqE14ujprTj7l89DUzySHw79JNdSym7ljIlc6g4xnHBQ==" + }, + { + "block_id_flag": 2, + "validator_address": "8971B56A1262D888E76DDF6C78339135122B9FD5", + "timestamp": "2022-06-03T13:43:54.042738107Z", + "signature": "EJ64jGpXvdKUADLsyJ2wotklOJ/mD8gg58BnOG60GYyNQKrrCq6H43TLhHZIP+l76pzyk6v6vjeNCnkcEudeDA==" + }, + { + "block_id_flag": 2, + "validator_address": "44A774BBD9B1621C7A752F4BF4FC97ECD19C9339", + "timestamp": "2022-06-03T13:43:53.90467898Z", + "signature": "3EwjbFvm9kXaHe2JKZ6pwtxTtKEofQK0A2Bsu8U6xIFhjuHAiXKUlIETHEg8oR0aCRrzP63eRo/1ZBvnxeKzAA==" + }, + { + "block_id_flag": 2, + "validator_address": "1FB705E4792863FDC9FB000C11D0725656A9D641", + "timestamp": "2022-06-03T13:43:54.077553129Z", + "signature": "hDMlAKOraANRqf9FwTI9r3GMX+0VJVcNnf58ZI52nN+yZHZx1EG3CJHh8mEWNR/OiW+x2eAoftkadZwcecRHAw==" + }, + { + "block_id_flag": 2, + "validator_address": "7C7DA4D5C5C9846F9D02BCA0FCC8BF30FC0039A0", + "timestamp": "2022-06-03T13:43:54.045081451Z", + "signature": "jvDElefXVXFHgMU6yfbFzw8S2C/WOUdMZlqzxxkqyd/ekXDnLrj1J2ZETjGwcRBXr3NZjEW2F07IhxrPxJK8Bw==" + }, + { + "block_id_flag": 2, + "validator_address": "B310BA4A7B39A9D38A67E93E798CE9549F8407F7", + "timestamp": "2022-06-03T13:43:53.937947079Z", + "signature": "nSu72jZyyI4pO6M+1k973VMh1XLOkLIZTkEJ+oteCXMGSAktwkapSavZU/35mDFKvqxTboWdC0T7GJB+FKbaAQ==" + }, + { + "block_id_flag": 2, + "validator_address": "305EEF06E09EB104BF1564DAF31F4277C31AD984", + "timestamp": "2022-06-03T13:43:54.124778322Z", + "signature": "KgxGESlNwIzymmt7E38gbNBoOj4QHWMAkKALIuDU5s8JTSLVtY6Cu38msLo3ACNC8T2zQ6kTCR62z2x1f6WbBg==" + }, + { + "block_id_flag": 2, + "validator_address": "CF4B8BCC61E1B2207107F986283ABDD61B0E874F", + "timestamp": "2022-06-03T13:43:54.000786312Z", + "signature": "PZbP9NY0bnGnuMLlX5pVDdblGkJpmtXPAo3JNewHyY/3CgO6jn33mDPvQKe2XYqI0aax6qzXV9YV3WzlAouuAA==" + }, + { + "block_id_flag": 2, + "validator_address": "0323A66E6E48A50BDBAB3832B082B3F2614A433E", + "timestamp": "2022-06-03T13:43:54.042837906Z", + "signature": "A3KxAFXzo3tW9pJlwhSXU25OAIgJTULZoDrqnERGe67J+VvChif0AxSj3X/5HUp7AjqX8qtzrJbiHqE6Z+D+Cw==" + }, + { + "block_id_flag": 2, + "validator_address": "E0D23AE41C8F2A204F652CE826E08668DE9A07B8", + "timestamp": "2022-06-03T13:43:53.998450826Z", + "signature": "5LxAxSc3AIVj5607BP5BarJ7e2FRoULwUMgl+ZzmaY/VgU8DD9atj32hAiNZ7rdoCyr4RdgnfgK2LuPepsD1Aw==" + }, + { + "block_id_flag": 2, + "validator_address": "3439FB7806A3661A7A53D6B28B6771ACD7B00411", + "timestamp": "2022-06-03T13:43:54.062567714Z", + "signature": "jNc6U3z/n2b5sOyoq4CzhEPMyJgQeVWNSBiZlTFhtqKT4qIuWhLb6ZB8ZSoSzaSwnRUniOkjr65JEEwsRAphDw==" + }, + { + "block_id_flag": 2, + "validator_address": "76EA8281CC939495A4A54656C59B9075E9257FC4", + "timestamp": "2022-06-03T13:43:54.073230099Z", + "signature": "N5Iz7iKsLEMKzo3DdCsbiNIRGNojy6hOmdM/3r/lbL6FsVpgWwO9fJyp3WOwhGWdd6xPPKWgTy+RzVVmbb2rBg==" + }, + { + "block_id_flag": 2, + "validator_address": "684616FF14EAE8BE5613DA40864EA85812469308", + "timestamp": "2022-06-03T13:43:54.033996913Z", + "signature": "eEehPKy3Hqzp6b91rzbQWiA/QuMVRV3MJAKBtllCbTWqsdBC9J3zbEIi30EPYwtvwi0xNXR0dcIqSGQurRBSDw==" + }, + { + "block_id_flag": 2, + "validator_address": "43790BA2E57D02A8944B670B46D62ACBBDDE73FE", + "timestamp": "2022-06-03T13:43:54.142915662Z", + "signature": "ZRxkHr/1nFeAnIVNNUmD82NLXOzC+Yy5t9lT+WyD8fYDnYwfepCGi1SZnbaT25imz8O8lUk9PkX8G5H8NdDjDA==" + }, + { + "block_id_flag": 2, + "validator_address": "A35A6E459554E336C2A07CE78BA4EC1250AC3338", + "timestamp": "2022-06-03T13:43:54.007486987Z", + "signature": "hn3PH3KqKW9f3d+Y4j4SfsAq4HFeqcrcCZu6Cb2RzId7awlrcW9lkUYg1szPRqVb77Mmnk+JOiLljtu2/wWRAw==" + }, + { + "block_id_flag": 2, + "validator_address": "5802A80D39D378A6218E52F4EB50ECCF4583264B", + "timestamp": "2022-06-03T13:43:54.039849228Z", + "signature": "F6mfv6HrbR0OR0Yey0cPAzco457UK29D63wl9naB9r0QznpjSeu/oMMz69gEF9DwU8lToJlKNPnGer8AJwuMAw==" + }, + { + "block_id_flag": 2, + "validator_address": "8047FA49FCE5E85107E88AE0152E079D9CBD320F", + "timestamp": "2022-06-03T13:43:54.077365761Z", + "signature": "3eadIsoxtnA6mCWzDpRXTVdYTGzCpo15MAkmud4nGi5ZD6HPat0UEdL2lbm1T/k36Vwwxf/9CWlvMK5sgt+JCg==" + }, + { + "block_id_flag": 2, + "validator_address": "B4A950629CC31E385E6269F7B62314ED57650EE8", + "timestamp": "2022-06-03T13:43:53.944710298Z", + "signature": "Z858bd20eFJmVDMF6ryYxKZ+F6TPFkvsTfmtOMqCVxEJ7FpuIvfBgLAgnMLBA4l9V/7Uscd7tRwMGbCjrO44DQ==" + }, + { + "block_id_flag": 2, + "validator_address": "B95ECC721FCDD6893107699AED4A0FAA62E97D11", + "timestamp": "2022-06-03T13:43:54.028636559Z", + "signature": "WBgQp9J+3YLCP4FF7Uc/H1af3tufUWX6hey3hhuivsxamroz1jD12YSIQPpoZRTwOerO1pvMalEBEbthA2dADQ==" + }, + { + "block_id_flag": 2, + "validator_address": "ED61B1DEE5F79C521F521B78DB93559FEB2E3B82", + "timestamp": "2022-06-03T13:43:54.023510675Z", + "signature": "OOvQOy3yMJ3PM3iUTF7LT7TFC/neYMp/Fj2AkNPaKuBKFb2GruPHGDXbhyV7i1kpwsPIFQhCIa1o+E12evV1Cg==" + }, + { + "block_id_flag": 2, + "validator_address": "A92A1DE1BB768A065F87DF5811FC0F32FA7CD57E", + "timestamp": "2022-06-03T13:43:54.01793139Z", + "signature": "H5W51KUe4rOUpBtHVUc0cFmp7COSfj0MxZL/XZlBUq80/e+WIYlY+kV6tUdW81tsmjj3fyZsDjaKAW4QDo0oBw==" + }, + { + "block_id_flag": 2, + "validator_address": "83F719426E00721A9208DBFE2B30D6DC75FE6645", + "timestamp": "2022-06-03T13:43:54.039848895Z", + "signature": "ocEayNJZQ3l/jRlfv973Yh0v11I/+FbOOm9SJ4rMTuZ7Yl9sKy7pTFCwrBAypLpH7AqGUQIs8ezSCnW+st8eAg==" + }, + { + "block_id_flag": 2, + "validator_address": "710FEF6FF4693C657CB24AADF1623E861A5AF906", + "timestamp": "2022-06-03T13:43:53.919869664Z", + "signature": "iu9SVQdvlUXFoHuj94Om5z4VwPMZftxI/pMhNWtuAk7Cs6NGe9TF2YlPCSr4I8dFnRLzjo6fSXRrVsDHkaTpAg==" + }, + { + "block_id_flag": 2, + "validator_address": "C8BB72DD64C161F5A23874F480DCD12BD2C2647D", + "timestamp": "2022-06-03T13:43:54.089263046Z", + "signature": "ILXrAwE/iQZtsvDklBamvtVw179Qp/MZw+j36brg9NT4VlXzzdmvQuAaJD4imYAgGSKvC27K4nMAd13r2Xg0Dg==" + }, + { + "block_id_flag": 2, + "validator_address": "17E4639B5116509EC04C4AABFA69506317801783", + "timestamp": "2022-06-03T13:43:53.999165312Z", + "signature": "QxPgJ8BZ0yAJe2jyd/pUqBL8B907mIx89NAi3Qsw11ZDfdDamm2nVF4pW78U2G6+JePQFSoVdqHTqmHpuex9Cw==" + }, + { + "block_id_flag": 2, + "validator_address": "1CDD0EF99F36CC3028237886FA00CE45AABD60E5", + "timestamp": "2022-06-03T13:43:54.094099035Z", + "signature": "o3WtRU1swRvPlHITZKfCV0kflT1h1xUz3la4CtQFSp6V75UWRTKCMlKGtR7JBHyfl7DrFwskQEut5OuDi04VDQ==" + }, + { + "block_id_flag": 2, + "validator_address": "80DA42EB9A25BD341A18B2D989BB86DFD4413A05", + "timestamp": "2022-06-03T13:43:53.993600066Z", + "signature": "XIPW0r0i8ibtBFzF9R7IWJYLdLerZUJrv7MHqAfx2YJpO6XQiwUPSrDcxcE95tNbbLDZl7CzafYf12nRnTGuBw==" + }, + { + "block_id_flag": 2, + "validator_address": "916D131FCDC899B83D0C3B56DDD6614B339C997E", + "timestamp": "2022-06-03T13:43:54.021858547Z", + "signature": "dO1ty5T6lMDv+f+WLIILyYaHCyEj0kT05zNQKY08735KatmfBTZQqqBSUPXEC1mTy7RbaWDtGIAeeYUZPgAbBg==" + }, + { + "block_id_flag": 2, + "validator_address": "903EED41E608EFD3E2DBA2C561F7331C1AE0D82D", + "timestamp": "2022-06-03T13:43:54.191548529Z", + "signature": "4LrTyFLFKnjV9sJBgNvJFwVPOTP9KPqXFCeb/M8khwjKNiNWEaBxloFaTtrbiZ4eToT+glQ1kY9pk2qmrohpBA==" + }, + { + "block_id_flag": 2, + "validator_address": "A262DDACC4F532340A2B389CF3EAA29B6846D142", + "timestamp": "2022-06-03T13:43:54.062674317Z", + "signature": "MzJ95iYXgZS8L6018CARu/YF0mOmz4ivO1f62TdLlltwFDO1bp0GWKjAkALjzfpGUY4P8MNKzvy+CeMvulZ4Bg==" + }, + { + "block_id_flag": 2, + "validator_address": "9F579C855F835F1CB71ABF2960A244FC0AF671EA", + "timestamp": "2022-06-03T13:43:54.017425847Z", + "signature": "nyrrzvOY7nMudwrsg1JnPcTTJKpBOLaO5K2L8qjxwVJNkCybMjcxAe9C0qAYmztCe4nQBUAPuX5f723JDZi+CA==" + }, + { + "block_id_flag": 2, + "validator_address": "2026B424B984B681F91C88874820CE927965C492", + "timestamp": "2022-06-03T13:43:53.92948719Z", + "signature": "o2oj/K6r3Fpy3lM/MeWypl8zvJqRiiK519DEGd+tO4OtqCqbxYMrFXljpfqE1MNgfdPKpa026LUbXhSi9+1SAw==" + }, + { + "block_id_flag": 2, + "validator_address": "92C70850FA51E11384826C5F574F5B13B5706554", + "timestamp": "2022-06-03T13:43:54.049835043Z", + "signature": "HI/UvmdbxmxpxDdDMmMqMr+Wv+PvNXsetQ968JpKCJwyvSf1ciNgdMjY+0ZW9E1YizKF3nEXzYnFttokm8AjCA==" + }, + { + "block_id_flag": 2, + "validator_address": "1A30424D3A05B7E61B1936477C338E316E5D7D66", + "timestamp": "2022-06-03T13:43:54.084885464Z", + "signature": "14ctFXvDbsN2bH6YtMTs/n3nRxnTrVoPgIyPBlKYayEmtbS0dIyE/qndcnHB1e6zabEEXJ3yAgopXXTDkoKjBg==" + }, + { + "block_id_flag": 2, + "validator_address": "CB1814F7CDAFE24C0A836B627082710636562B98", + "timestamp": "2022-06-03T13:43:53.97793137Z", + "signature": "N3mttoY9r+wzPbZwVbfGxKkHaO1XyRZ0DUuVal2OsZWFUSqYk2DjGgSN1mGnP/pIEwOJIeVHmpHFc/qoKqq0Cw==" + }, + { + "block_id_flag": 2, + "validator_address": "DC9424AFE6C83F68813337B5FB4EC62C2330C9E6", + "timestamp": "2022-06-03T13:43:54.083856267Z", + "signature": "Sj3Wheqv/IWX5SC3hd5Z4lZ6mgT7SL+ObDcTUi+PNa9y2tinqxOkZxR6SNrzAv9yocBmMflUMu/D64zPT4YZAQ==" + }, + { + "block_id_flag": 2, + "validator_address": "91938313E6AC32D56F07B39ACC580B1E7E5A29E8", + "timestamp": "2022-06-03T13:43:54.00629042Z", + "signature": "JWbLnE2aTEoKajR6AubCoAF06htJZzdXyborES1BsSajHeOzmFhdgsUIjj3W8Eu50lfVWxqW6nPu6jhvaXHCBg==" + }, + { + "block_id_flag": 2, + "validator_address": "6A24190F2C8C0878BB134D146FE9333094171256", + "timestamp": "2022-06-03T13:43:54.001464622Z", + "signature": "9x4xfGFUOo/R+RiO4XC5m4JkNQ4QolPGT60S2BbG7k5riLZmELX5oCPZPE57Emb/Ic44D7V7KX4ffCqUnFOvAw==" + }, + { + "block_id_flag": 2, + "validator_address": "60A7F8F9EE0BE23DAC5183B36BEB14AEF2D3A879", + "timestamp": "2022-06-03T13:43:54.134335294Z", + "signature": "UpSOYTXXzIwOX7b04ShQX3CY4riblIZfSB1CWgyYbEAN0Dy7L7VIHrLy9V6NW6oh2boWOOKglA7EbtZrNODeCg==" + }, + { + "block_id_flag": 2, + "validator_address": "43FC3AB6FE3D33C41842553EAFC8393A7FD00C23", + "timestamp": "2022-06-03T13:43:54.014731263Z", + "signature": "tJHiSf/VKKRZXRpq/HpKSRXIBZugwbEPyL/cdY6iRiL+U571ZExgFAAAQp83e/2EXNTwC5yq+8guQJyna1DXAQ==" + }, + { + "block_id_flag": 2, + "validator_address": "B684A0D2CB2D1AC7F9AC890B4678006A1D5B09E0", + "timestamp": "2022-06-03T13:43:54.01869283Z", + "signature": "V2gSpwKiYfjj+cuZiLHlz5wqhb+Sk47VMthnHOWIz1rrgUXwtybstlCRsTbIhQQSx8oKG5E83k/FCc8Lhdd9CQ==" + }, + { + "block_id_flag": 2, + "validator_address": "19DD6B3CA0DEB5F6FE0E1A78AD53D408EA0CA8F0", + "timestamp": "2022-06-03T13:43:53.91225904Z", + "signature": "TI1e1dLu9VjTiUm4Brf01EYnKHtMXq++E8HKgmJSIN6fVEYA34TevN7Ks7J6jfEGOKM+0udB8Lrzt8l5K2DFAg==" + }, + { + "block_id_flag": 2, + "validator_address": "987AF576DFCAE3B71C38FC729174739811C6626A", + "timestamp": "2022-06-03T13:43:54.024068244Z", + "signature": "BzUuhHJpcpk0kWRmAf2lK8BzZbIxWg0LFrI/bKFQ8/kRuXPfgktDi5F+uQHRK/BZPtwsrCopBeP6g0f0MUBnBQ==" + }, + { + "block_id_flag": 2, + "validator_address": "BAFE51BA7636EFAA64E59649321EAFC4E1D0F03B", + "timestamp": "2022-06-03T13:43:54.138849218Z", + "signature": "B0q1sXzekCXUAmPaCDZJDI5pOVZjh0pUZgfM2RQpzyKC0X22DDXu1vsVpUut6FKtZy+vqMbdL9/DK79AazBGDA==" + }, + { + "block_id_flag": 2, + "validator_address": "AB135B41694E5EC24367110CC9DB1DC7852D6E82", + "timestamp": "2022-06-03T13:43:54.077068715Z", + "signature": "8GdXLG1POCHs/ETuagBjcK3FYsOtbXliALsgNgWm3Mksn3/Fk843LiLmWoIw2gU784dCPsC50AZSZpS+nQP4Dg==" + }, + { + "block_id_flag": 2, + "validator_address": "5C950EA844C3F38BB3BB51C6634FFAE18DBE8811", + "timestamp": "2022-06-03T13:43:54.027466467Z", + "signature": "q0gQ62HPl9UTorJczU3oobfwVtFBp9dTeuYJkWhC9QdnpCnFExQmmPLBI1wYzexzzhuy+kJhxPBDC1ubx5tVDw==" + }, + { + "block_id_flag": 2, + "validator_address": "B4BB763F2BCDF710991355B1FE4FDCE83C0874A2", + "timestamp": "2022-06-03T13:43:54.032115683Z", + "signature": "OJkHZ3IwLaygYy7rmvF5h/QRRQCvvpkuz1XcYkkVDCiOyLNksx9jn4DQVhtSkizcWrbAecyWp91JdKyrriNCAg==" + }, + { + "block_id_flag": 2, + "validator_address": "63C90F79BA2F2248628BC76D5C038492674EEB91", + "timestamp": "2022-06-03T13:43:54.042168996Z", + "signature": "2iUaNslyv5G5AC4s+t01uufMPqBoNn0Xcq0LlaGZnQpWkMxgKbXOfmIewDQqW2sokMi/TVYwEBxssxYu7buKBA==" + }, + { + "block_id_flag": 2, + "validator_address": "94D21453B366ADA7F50F12CA907CDA7A4AB7F214", + "timestamp": "2022-06-03T13:43:54.016274664Z", + "signature": "QNR2Nzm6tpuYcvP2JkqxuNuSWlBhAdLr1ythBADEhK5fPIpL4DHNgpAk4YrVYcrftRXDQv8SqaWlQe+53V+0AA==" + }, + { + "block_id_flag": 2, + "validator_address": "B699C4799E8F6C7D038682C0441AD28E6E43E677", + "timestamp": "2022-06-03T13:43:54.01188666Z", + "signature": "xu6RrdMwquZXLFcRWOTdnIgeadlAvc2jSTeOO2gLuiT0UvWyp3P5qi0mHnq6PSW24p+IWS3t2d5EApJ6hEqUDg==" + }, + { + "block_id_flag": 2, + "validator_address": "246C9C9846C2899D0DA109BCFADAA6260685B4C3", + "timestamp": "2022-06-03T13:43:54.1380479Z", + "signature": "d7NfblLj40Qu8vjpbVZb4Gu3pjRVGZy/D7jEn01dMml9KE4FgWrBaNRYOIqewKDaEoicEbcLaxAQwnhpJXLMCA==" + }, + { + "block_id_flag": 2, + "validator_address": "E3DF8B64C6EE018BE7EC6BB9BC3ABFB67D99A630", + "timestamp": "2022-06-03T13:43:54.034244232Z", + "signature": "46jl8p+2FxWJmi0Z7jRHXsiWqDKaGczwEEWlZFXFqsqIffxAS5QXSqgbEO0QG3b+XJHbfyY0V+FnDznfF3gGAQ==" + }, + { + "block_id_flag": 2, + "validator_address": "CF941683BB7851E824695E7ABA86D57C6E32F5D3", + "timestamp": "2022-06-03T13:43:54.059640978Z", + "signature": "xIT+QBtjsEjC4SgQDzrevavcyUL4+PmHU8aDbW/IvDRejQoXImazczcXUrLHOr4y4eJogz4yVQCW/7JiIH8UDA==" + }, + { + "block_id_flag": 2, + "validator_address": "7219BF2BF60498F19DC51B33588DEB9F9D30B392", + "timestamp": "2022-06-03T13:43:54.054858041Z", + "signature": "lnXf8TMfmp1FGHjS8UBw2HPgLf7x8Zgzyox+MlHNrMfauWf4dpnEhNekWenfwaoagNYkAAQYso2AEJvXxa3PAg==" + }, + { + "block_id_flag": 2, + "validator_address": "75B513290765236B2F1C3FCAACF35A7FBAFBFB6F", + "timestamp": "2022-06-03T13:43:53.998183482Z", + "signature": "i9cYFQqQYxIXdLXocBb+qCjYq6++FHNLJ+Ne1U8+sJjj29cnzoQThn1Vy80/sruvDfdDkKeXu7Fd6UcPlTFtCA==" + }, + { + "block_id_flag": 2, + "validator_address": "3C672A568D8B4D3261132A92CC572F21D4F85C1C", + "timestamp": "2022-06-03T13:43:54.129675854Z", + "signature": "feQ94W/EOado2qjtJ6yIaG6UzaWPa+9ZdaCzVuWDvftMoS23i45cIdNyxGnksBX8Xh6D9Z7qRQcl5MtzTmGWDw==" + }, + { + "block_id_flag": 2, + "validator_address": "208FF031498FA42FFED6829C8A4884CDC72BE06A", + "timestamp": "2022-06-03T13:43:54.019528989Z", + "signature": "skVAluHzMCk7kW8iqQ9C2/FlqBoM8dqp8R4w+m7WndSN/+yCdWHMgBLFt/3H7KjmUXUrJG97BNI9lVNm/yUYDA==" + }, + { + "block_id_flag": 2, + "validator_address": "CA572745CF6C1437547BB3961D3D04EE8C88DA30", + "timestamp": "2022-06-03T13:43:54.035487377Z", + "signature": "zG755GFUDhN+o4Otkubc1FFuJQhLkzblkgPtCzC7bIH9dTZQDvwtJg3kp7Hxnvyhn+irf+fa0wKWPwAqMlk6DA==" + }, + { + "block_id_flag": 2, + "validator_address": "164A8F8019C8B800A8BEB03CA04428B881812E04", + "timestamp": "2022-06-03T13:43:54.100719203Z", + "signature": "wivmzAd9kToHFE6hBMflFqOdg6VV1Couhd3Ic2VLtgb64+FIQtEjas/MCerBHVewwcayvU/T+wus9W505nypDA==" + }, + { + "block_id_flag": 2, + "validator_address": "206DC4AC92A0CF215D8C8AF98B7A84966CE43E45", + "timestamp": "2022-06-03T13:43:54.081832881Z", + "signature": "87+LVtFHPlgZacS6HoZwA3czTuuZZwdmdYI6gE4cSDBqVz8U9Dezk75L3DcTvZOYxfEw3hqcaYanE+gxvuUOAw==" + }, + { + "block_id_flag": 2, + "validator_address": "3655C2522526E342E1BAE250B7E01C728E97BF61", + "timestamp": "2022-06-03T13:43:54.038044867Z", + "signature": "iaU9wTju6XEi/CHQzrtlMWq5gwazNcg4Hgnw1BRZ+P4nR+GGouvsbB4bZ6lIpadQjr+uWy1+WXcyDefMkaxpCA==" + }, + { + "block_id_flag": 2, + "validator_address": "50A7130BA74D071391EF45678BE2444955FA4AD4", + "timestamp": "2022-06-03T13:43:54.044789051Z", + "signature": "Cb74E/zZjPIA8UDX69PebdZBWStwAUrKVxvBKwi1L5QT3iBeGzy0qIsWz/A3A4pN2FYJpdvTQn0s+2epflLuDA==" + }, + { + "block_id_flag": 2, + "validator_address": "556EA605A9374CE54C157DD42395B4047E327914", + "timestamp": "2022-06-03T13:43:53.942523851Z", + "signature": "LVLNgF7RcIi5BtN5jXCXOp4r/9w1caus0ouETSsSfentVT4avRbplQE2FAOgfj+51kxm2Bc2mGCZwKdIjlYtCw==" + }, + { + "block_id_flag": 2, + "validator_address": "64BBCDCC1BA3D6CB934A5BBC9F45121A40EF81B2", + "timestamp": "2022-06-03T13:43:54.015091358Z", + "signature": "+u2HX/9bG/pxi3SUNU15xEj5aeUkqPs5/ZzQNefqadMyoT2SidM13jLXO1cQINsBtKj/p5UgtMJNbGVZ/l7JCQ==" + }, + { + "block_id_flag": 2, + "validator_address": "6B00AA4C9E824A9E042AA49A5CF40591FDFF2021", + "timestamp": "2022-06-03T13:43:54.015486703Z", + "signature": "rkOt5ClHfjmgqwyA6cn6McTj+bmJLto8Iv3FECRp8ONjljxmeSh6eGClk/MhdDEKloE5nBKpajNoOcR7TuIzBA==" + }, + { + "block_id_flag": 2, + "validator_address": "A2E2A0CC28C652A9EA47D666B2CDE5122DE5A8E1", + "timestamp": "2022-06-03T13:43:54.042376185Z", + "signature": "AmFdiMyx0v74QnV9TdnJU3Aq4p0tjFCV9L/TLO33ygliPpRe6SX2iJGSdX1QKr2w4/Q0tmtSSfE3qXJTLVMEDg==" + }, + { + "block_id_flag": 2, + "validator_address": "E314D1F70E07277B21E80FBF4BCA6AFBDB07C367", + "timestamp": "2022-06-03T13:43:54.026908204Z", + "signature": "PXLk8mTXnB6ZoATIYf3oMnBkrzV8wL4ndVtQ9d2heoJmA94a9lNcTscC+QZK992YPDlLF8KSxeHT6uBdZ8S0Ag==" + } + ] + } + }, + "canonical": true +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/multi-validator/validators.1.json b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/multi-validator/validators.1.json new file mode 100644 index 000000000..e832b9678 --- /dev/null +++ b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/multi-validator/validators.1.json @@ -0,0 +1,664 @@ +{ + "block_height": "700000", + "validators": [ + { + "address": "C97C186A87209EA864B432E03EF0441E18D709BB", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "lza6STYGfbGrRwY0ZDzORG4SQndP5N6po8HpWqpTy6o=" + }, + "voting_power": "4328337", + "proposer_priority": "-3384799" + }, + { + "address": "DA694585BB239BD51FF6FBF61C10B1E85B2DB707", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "HzbDQiRY7ipSe2hnwAzLlhOk62GfZrPbm4ynmUt+UGo=" + }, + "voting_power": "1486788", + "proposer_priority": "5710546" + }, + { + "address": "9FBFE65AD18294A346B540F7396D92DF32880966", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "pegoDiza/5FHqom5PVN/Py7zse3AAsfkrvR5VLxY9/U=" + }, + "voting_power": "849651", + "proposer_priority": "12373" + }, + { + "address": "BC9D4BD4F1F544FC1E136A92A368CBFC28D0BBEF", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "Zt55IFQv3/zym4XKEeEPJof5+GNbXBvRK9zkTQDZwbw=" + }, + "voting_power": "622173", + "proposer_priority": "-188385" + }, + { + "address": "9FB1318DC46AB8E9D25263DF34C568FE4177FAED", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "Df1HPuRmaik3+1vACZc2BIq+L/gemwYiQFLSt06nxtk=" + }, + "voting_power": "616461", + "proposer_priority": "2927975" + }, + { + "address": "1E4E9FBC795E5C3F1BE3507F6008F40257A8E09D", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "UxwWa4MRF+C8c4QqL25f2CrrMoMndhYpGNPr9xLRl5I=" + }, + "voting_power": "223130", + "proposer_priority": "1171500" + }, + { + "address": "1ECCEB94F3459F9921B0C1D398A3E46283A35285", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "QEzqbvrFJea3J0E8yLWaFm2OzYN6PCLsm/2DSR8opQo=" + }, + "voting_power": "199954", + "proposer_priority": "-1182420" + }, + { + "address": "8971B56A1262D888E76DDF6C78339135122B9FD5", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "iL5CyXR7zFZTKXFdmA3PyP2so9xiv7+gk2FhaXFoQf0=" + }, + "voting_power": "154591", + "proposer_priority": "4044461" + }, + { + "address": "44A774BBD9B1621C7A752F4BF4FC97ECD19C9339", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "Cb+cOsx/PlVOkTVuZHG3TpBJa6/Jx/ga8OC6NF0zFbw=" + }, + "voting_power": "137054", + "proposer_priority": "2197754" + }, + { + "address": "1FB705E4792863FDC9FB000C11D0725656A9D641", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "nx5bgE1JpLsvc8q4qasyZVfKIW0Y7S0Jxvl0CmGq1/0=" + }, + "voting_power": "94887", + "proposer_priority": "4873269" + }, + { + "address": "7C7DA4D5C5C9846F9D02BCA0FCC8BF30FC0039A0", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "whbBV62VgpIL+8oKL8n9x0B431q1+G5HRjKghhFrtKM=" + }, + "voting_power": "86384", + "proposer_priority": "-2463306" + }, + { + "address": "B310BA4A7B39A9D38A67E93E798CE9549F8407F7", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "g45a/itQexKr3sQkobDVQYmYmQOvqxDiG3+ZLJZfh7E=" + }, + "voting_power": "64061", + "proposer_priority": "2763144" + }, + { + "address": "305EEF06E09EB104BF1564DAF31F4277C31AD984", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "bI8u/sIAMqfRCRwnFJ6I2Vu5/b8ruSX8NDyzFXuH2GA=" + }, + "voting_power": "61523", + "proposer_priority": "-3091710" + }, + { + "address": "CF4B8BCC61E1B2207107F986283ABDD61B0E874F", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "DhMjl7CRfWwvj+2iMwlEAYLsu0zs/Zua0VTC+bjE1jc=" + }, + "voting_power": "61478", + "proposer_priority": "-977234" + }, + { + "address": "0323A66E6E48A50BDBAB3832B082B3F2614A433E", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "cqPrCh1D4F5a7z+Aj4TV8mmJlf8UhBQnfURauXTWIKE=" + }, + "voting_power": "59103", + "proposer_priority": "1747144" + }, + { + "address": "E0D23AE41C8F2A204F652CE826E08668DE9A07B8", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "nAAVvH/GwCkdSNlRt2/WtdUvl0AsUtnclxRn8aAFAO4=" + }, + "voting_power": "54286", + "proposer_priority": "3597281" + }, + { + "address": "3439FB7806A3661A7A53D6B28B6771ACD7B00411", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "BgVheyq/M9uPX8vbtgdrauoCH1k0wBqFSmL31/bN+RM=" + }, + "voting_power": "47689", + "proposer_priority": "3520713" + }, + { + "address": "76EA8281CC939495A4A54656C59B9075E9257FC4", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "Lrk3ZO4JlCvfwge8yEO3GK7/SJS7ImXhRZdZE/8rseo=" + }, + "voting_power": "46724", + "proposer_priority": "-4188706" + }, + { + "address": "684616FF14EAE8BE5613DA40864EA85812469308", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "T+dMEZ+Ds5YT2lVx58IMjsmQciIHKif7UYscvdFGyVE=" + }, + "voting_power": "43315", + "proposer_priority": "3140041" + }, + { + "address": "43790BA2E57D02A8944B670B46D62ACBBDDE73FE", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "2Clqam9MlYsZsl7rpXWFRoEC4STewM85Z+8cdob6gJI=" + }, + "voting_power": "41030", + "proposer_priority": "2082123" + }, + { + "address": "A35A6E459554E336C2A07CE78BA4EC1250AC3338", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "FCDoXNkWW6h5yB5h9F46R7gVVdgvqB2adObXkjhLCv4=" + }, + "voting_power": "40323", + "proposer_priority": "-254844" + }, + { + "address": "5802A80D39D378A6218E52F4EB50ECCF4583264B", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "VOdf1YQsfdhng0PZIXqLk+OCNoIGUTbBbYmkN9v+QEQ=" + }, + "voting_power": "33633", + "proposer_priority": "3875013" + }, + { + "address": "8047FA49FCE5E85107E88AE0152E079D9CBD320F", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "9B4gQOiZX+DVSx+A/p9ROkfK6y6o6X7F7H1/x76BrZY=" + }, + "voting_power": "30871", + "proposer_priority": "-2088692" + }, + { + "address": "B4A950629CC31E385E6269F7B62314ED57650EE8", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "vQrkpE1LBhE8kTSmxymCuI8cBA2eOov9sU8gOG8phLw=" + }, + "voting_power": "30550", + "proposer_priority": "-1739427" + }, + { + "address": "B95ECC721FCDD6893107699AED4A0FAA62E97D11", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "L7hWjbX+9e8vVMNeAu6dC0CBg6YBaF/zQjSNyWku/bA=" + }, + "voting_power": "29867", + "proposer_priority": "-4240953" + }, + { + "address": "ED61B1DEE5F79C521F521B78DB93559FEB2E3B82", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "IG6iu/PKcapnSl58DsH6y1JlIv99KjSrZM14+eUILas=" + }, + "voting_power": "28549", + "proposer_priority": "755324" + }, + { + "address": "A92A1DE1BB768A065F87DF5811FC0F32FA7CD57E", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "mk/qPAbVkTjNjHYnAsWlCxmWVzKKt/ojzq8l56rGo0w=" + }, + "voting_power": "26769", + "proposer_priority": "-4055486" + }, + { + "address": "83F719426E00721A9208DBFE2B30D6DC75FE6645", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "zbv8shGha/SDouyB2sOK1AovTo9XhejHU27j+2D+CZE=" + }, + "voting_power": "26480", + "proposer_priority": "5275149" + }, + { + "address": "710FEF6FF4693C657CB24AADF1623E861A5AF906", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "8IY9X+l01DxmGMoR6K6uprK/Sy/kwvlkx85X8b0uP24=" + }, + "voting_power": "25357", + "proposer_priority": "919829" + }, + { + "address": "C8BB72DD64C161F5A23874F480DCD12BD2C2647D", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "BMtmwph1ZwZzhktwUKNe4+SlfmGfvI4JyRRxLodd6VU=" + }, + "voting_power": "23128", + "proposer_priority": "-4317416" + }, + { + "address": "17E4639B5116509EC04C4AABFA69506317801783", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "y+utsHn6QYiX6CCBdYAAam2KRNoRvAGDBUam/oQ6xUw=" + }, + "voting_power": "22210", + "proposer_priority": "3744804" + }, + { + "address": "1CDD0EF99F36CC3028237886FA00CE45AABD60E5", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "MaLV6YmPBWD9VB07GWq1+CQEkK36XtFOKteoMbYFcDo=" + }, + "voting_power": "21248", + "proposer_priority": "93062" + }, + { + "address": "80DA42EB9A25BD341A18B2D989BB86DFD4413A05", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "Q0Ip8MkXMP65UcG3XQ08h0CZ8D3pSmQwPXCZsuHgBBY=" + }, + "voting_power": "18327", + "proposer_priority": "1154385" + }, + { + "address": "916D131FCDC899B83D0C3B56DDD6614B339C997E", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "/qEmmvQH3sm6lccuFbWi3WQ7Zix8lYanRpJIbaUzyig=" + }, + "voting_power": "16040", + "proposer_priority": "3450504" + }, + { + "address": "903EED41E608EFD3E2DBA2C561F7331C1AE0D82D", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "S2T1ECtywD912SDZ04fknyPtgp0QnrkSoFcbawOqnyQ=" + }, + "voting_power": "15878", + "proposer_priority": "784850" + }, + { + "address": "A262DDACC4F532340A2B389CF3EAA29B6846D142", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "2vkzUgR+NY6/2b870xJ8tTZaXGmdKU7z7RZsVvqs6qI=" + }, + "voting_power": "15809", + "proposer_priority": "-3635208" + }, + { + "address": "9F579C855F835F1CB71ABF2960A244FC0AF671EA", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "StBLaUcTsB0WP52rMHlR4vVG1+h/GdHVv/PsRosE0KA=" + }, + "voting_power": "9907", + "proposer_priority": "1143521" + }, + { + "address": "2026B424B984B681F91C88874820CE927965C492", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "gc/zmjETfR/5k8y99qdYnrCi3r2xpG2fvA0xqw0ypgQ=" + }, + "voting_power": "9211", + "proposer_priority": "4211686" + }, + { + "address": "92C70850FA51E11384826C5F574F5B13B5706554", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "fc/uPJqGQVezA4dP9QQGIW+9pKI3ZbNRLnjfAxST6Wk=" + }, + "voting_power": "9071", + "proposer_priority": "-3964336" + }, + { + "address": "1A30424D3A05B7E61B1936477C338E316E5D7D66", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "kv7kHkUuMK26OsQaCFijOxUgyUUSjZGzJx4uo0AQ8nI=" + }, + "voting_power": "8476", + "proposer_priority": "-3707057" + }, + { + "address": "CB1814F7CDAFE24C0A836B627082710636562B98", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "mrO3rLYqtzjKqQ8jG5yad5d4/0y3nuGC7vdwHYrq+ok=" + }, + "voting_power": "6169", + "proposer_priority": "-4784520" + }, + { + "address": "DC9424AFE6C83F68813337B5FB4EC62C2330C9E6", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "q/L9gc2ZIdsdsHo553UwGIamlLfwhBRQy6dhchS8WTc=" + }, + "voting_power": "5887", + "proposer_priority": "524877" + }, + { + "address": "91938313E6AC32D56F07B39ACC580B1E7E5A29E8", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "P5+60QYJ00LqnNqfzMzIA0Z7u1mIAxIFCkujt+3imgM=" + }, + "voting_power": "5740", + "proposer_priority": "-4297155" + }, + { + "address": "6A24190F2C8C0878BB134D146FE9333094171256", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "K89oBGiO66xsdgY3BMwMF6nYQlB0BNnw/dBLeFK52Oc=" + }, + "voting_power": "1846", + "proposer_priority": "-2639529" + }, + { + "address": "60A7F8F9EE0BE23DAC5183B36BEB14AEF2D3A879", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "aGn1HF9e4nIZ1CjwhHZSWekijRO7bq/ZKV384/zmHzY=" + }, + "voting_power": "1000", + "proposer_priority": "1872869" + }, + { + "address": "43FC3AB6FE3D33C41842553EAFC8393A7FD00C23", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "701IrRX2fUrkoMUtdmTr5JiIZqdgHpcga1WKoV7PSMU=" + }, + "voting_power": "730", + "proposer_priority": "-677425" + }, + { + "address": "B684A0D2CB2D1AC7F9AC890B4678006A1D5B09E0", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "ZX0ywGqfB+Mi5B5QzKx0dLzDo6ua2eqcufdzDPUB5p4=" + }, + "voting_power": "384", + "proposer_priority": "-5687902" + }, + { + "address": "19DD6B3CA0DEB5F6FE0E1A78AD53D408EA0CA8F0", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "ifW74P0qYAclokjCrd4+RKHMnQAI/7HqGJZ9bg77dc4=" + }, + "voting_power": "261", + "proposer_priority": "1814208" + }, + { + "address": "987AF576DFCAE3B71C38FC729174739811C6626A", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "ZN84hF2H+G8s5/Uw3pFwcYGdmmGobdsxVPistm+vzZQ=" + }, + "voting_power": "225", + "proposer_priority": "1634098" + }, + { + "address": "BAFE51BA7636EFAA64E59649321EAFC4E1D0F03B", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "9fHwtNKyrmNMxsCIssQXqobIr917hNJuDo333IIyyGM=" + }, + "voting_power": "150", + "proposer_priority": "-5105653" + }, + { + "address": "AB135B41694E5EC24367110CC9DB1DC7852D6E82", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "ZTUVskeDW2DxxHSViecAFSHRamNHGoGoEQEPRt58tuY=" + }, + "voting_power": "89", + "proposer_priority": "-4562402" + }, + { + "address": "5C950EA844C3F38BB3BB51C6634FFAE18DBE8811", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "w/n2tngzQcP5viXuhxa5bCEDlll+qVpLZkuN0MfmWZU=" + }, + "voting_power": "81", + "proposer_priority": "-5960112" + }, + { + "address": "B4BB763F2BCDF710991355B1FE4FDCE83C0874A2", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "iBTM2Vpl0CML5bD3vQ+dnglrSypX/Hpr9p4pwlVeHxY=" + }, + "voting_power": "69", + "proposer_priority": "2640719" + }, + { + "address": "63C90F79BA2F2248628BC76D5C038492674EEB91", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "/Cp3v8ADUev/rWKMC+gLrdi3m+526vy4JJT/ebJE3U0=" + }, + "voting_power": "57", + "proposer_priority": "-2518174" + }, + { + "address": "94D21453B366ADA7F50F12CA907CDA7A4AB7F214", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "LGUlm/88HsFcGoonV9h4LePeWrzHdOgRl0qZE0WICec=" + }, + "voting_power": "52", + "proposer_priority": "2283021" + }, + { + "address": "B699C4799E8F6C7D038682C0441AD28E6E43E677", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "GOg/7baoMkm6MO9kmIkv/xtMarRZ5uc/mz9i3BO3hZw=" + }, + "voting_power": "42", + "proposer_priority": "1405122" + }, + { + "address": "246C9C9846C2899D0DA109BCFADAA6260685B4C3", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "6AhtT5V0/eu3BIve9qKpTPcULe6wYrcPuhcpeRnMSyw=" + }, + "voting_power": "14", + "proposer_priority": "1775896" + }, + { + "address": "E3DF8B64C6EE018BE7EC6BB9BC3ABFB67D99A630", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "wbNefAPhut94zca74ZCGHmboBqrA464/EyHlEekMcow=" + }, + "voting_power": "10", + "proposer_priority": "-4262001" + }, + { + "address": "CF941683BB7851E824695E7ABA86D57C6E32F5D3", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "f+wg6V3z8g55vgzneEjhH6gJmgi1P/P7SDbbGh3scVQ=" + }, + "voting_power": "7", + "proposer_priority": "1152698" + }, + { + "address": "7219BF2BF60498F19DC51B33588DEB9F9D30B392", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "ZCc3n6I7Q5ruFFHwv//XECvdo+COsQ3Dqv6TYlcz0IQ=" + }, + "voting_power": "6", + "proposer_priority": "880714" + }, + { + "address": "75B513290765236B2F1C3FCAACF35A7FBAFBFB6F", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "A4w47f3apgLgG7raSzYedv3zc1Kan2UD+QQdPWPmYbI=" + }, + "voting_power": "6", + "proposer_priority": "1161653" + }, + { + "address": "3C672A568D8B4D3261132A92CC572F21D4F85C1C", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "rfWvXM+dxHvTgRSwkghWozA2+OTMUsD3RmYT66sZ8qs=" + }, + "voting_power": "5", + "proposer_priority": "1087076" + }, + { + "address": "208FF031498FA42FFED6829C8A4884CDC72BE06A", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "XT5lav9vOFVUo6FCh1sHr0S1TirnUKpHkj8UOevzmBM=" + }, + "voting_power": "2", + "proposer_priority": "768659" + }, + { + "address": "CA572745CF6C1437547BB3961D3D04EE8C88DA30", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "pe5spRJgTVbEStc6eRp1Blx6ZKA/nTmP/UveU5hLS70=" + }, + "voting_power": "2", + "proposer_priority": "607316" + }, + { + "address": "164A8F8019C8B800A8BEB03CA04428B881812E04", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "168Mb6oUPPq8g+8e0PsuiBx8bBzbgr1fVeiqn8E2uEg=" + }, + "voting_power": "1", + "proposer_priority": "34001" + }, + { + "address": "206DC4AC92A0CF215D8C8AF98B7A84966CE43E45", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "Mm9lw9+Fb4iTg/HkSnR4/ob7VLVwsVM8Ncumtn8z180=" + }, + "voting_power": "1", + "proposer_priority": "478964" + }, + { + "address": "3655C2522526E342E1BAE250B7E01C728E97BF61", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "8C8ObB/ueQs9fK4voPVLmW5MoMWXigTezprUdsOVLuQ=" + }, + "voting_power": "1", + "proposer_priority": "462092" + }, + { + "address": "50A7130BA74D071391EF45678BE2444955FA4AD4", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "mE2ULx0G812VEr8mqvKXMHKEF4tL0k5NKjgFHbMlKtw=" + }, + "voting_power": "1", + "proposer_priority": "102099" + }, + { + "address": "556EA605A9374CE54C157DD42395B4047E327914", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "hxjD2336gspNuI5EZw+HPrN0wyLj22HNFj5NnBRHCyY=" + }, + "voting_power": "1", + "proposer_priority": "469071" + }, + { + "address": "64BBCDCC1BA3D6CB934A5BBC9F45121A40EF81B2", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "HkAl1eQI+xYKK7CfEz2CfBhN+1t62p2uEtRN04GrpSk=" + }, + "voting_power": "1", + "proposer_priority": "51591" + }, + { + "address": "6B00AA4C9E824A9E042AA49A5CF40591FDFF2021", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "VusjapHUOkaqArduuT7dxw50KHYGs+rlTgh8yYNqBrw=" + }, + "voting_power": "1", + "proposer_priority": "42652" + }, + { + "address": "A2E2A0CC28C652A9EA47D666B2CDE5122DE5A8E1", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "vm9wtXNrD25uUp+0jd/+tFKHwLavQ9aKMx3G6ORpzoY=" + }, + "voting_power": "1", + "proposer_priority": "-588686" + }, + { + "address": "E314D1F70E07277B21E80FBF4BCA6AFBDB07C367", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "+B7kI0VIsl1OEnGKsRFLdNRtUsG54fGBvT9ic5H+46Y=" + }, + "voting_power": "1", + "proposer_priority": "117747" + } + ], + "count": "73", + "total": "73" +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/multi-validator/validators.2.json b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/multi-validator/validators.2.json new file mode 100644 index 000000000..407b6727e --- /dev/null +++ b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/multi-validator/validators.2.json @@ -0,0 +1,664 @@ +{ + "block_height": "700022", + "validators": [ + { + "address": "C97C186A87209EA864B432E03EF0441E18D709BB", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "lza6STYGfbGrRwY0ZDzORG4SQndP5N6po8HpWqpTy6o=" + }, + "voting_power": "4328337", + "proposer_priority": "4149463" + }, + { + "address": "DA694585BB239BD51FF6FBF61C10B1E85B2DB707", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "HzbDQiRY7ipSe2hnwAzLlhOk62GfZrPbm4ynmUt+UGo=" + }, + "voting_power": "1486788", + "proposer_priority": "-553043" + }, + { + "address": "9FBFE65AD18294A346B540F7396D92DF32880966", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "pegoDiza/5FHqom5PVN/Py7zse3AAsfkrvR5VLxY9/U=" + }, + "voting_power": "849651", + "proposer_priority": "-781793" + }, + { + "address": "BC9D4BD4F1F544FC1E136A92A368CBFC28D0BBEF", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "Zt55IFQv3/zym4XKEeEPJof5+GNbXBvRK9zkTQDZwbw=" + }, + "voting_power": "622208", + "proposer_priority": "3756737" + }, + { + "address": "9FB1318DC46AB8E9D25263DF34C568FE4177FAED", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "Df1HPuRmaik3+1vACZc2BIq+L/gemwYiQFLSt06nxtk=" + }, + "voting_power": "616477", + "proposer_priority": "-2996166" + }, + { + "address": "1E4E9FBC795E5C3F1BE3507F6008F40257A8E09D", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "UxwWa4MRF+C8c4QqL25f2CrrMoMndhYpGNPr9xLRl5I=" + }, + "voting_power": "223130", + "proposer_priority": "-3662913" + }, + { + "address": "1ECCEB94F3459F9921B0C1D398A3E46283A35285", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "QEzqbvrFJea3J0E8yLWaFm2OzYN6PCLsm/2DSR8opQo=" + }, + "voting_power": "199954", + "proposer_priority": "3216568" + }, + { + "address": "8971B56A1262D888E76DDF6C78339135122B9FD5", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "iL5CyXR7zFZTKXFdmA3PyP2so9xiv7+gk2FhaXFoQf0=" + }, + "voting_power": "154591", + "proposer_priority": "-2297808" + }, + { + "address": "44A774BBD9B1621C7A752F4BF4FC97ECD19C9339", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "Cb+cOsx/PlVOkTVuZHG3TpBJa6/Jx/ga8OC6NF0zFbw=" + }, + "voting_power": "137054", + "proposer_priority": "5212942" + }, + { + "address": "1FB705E4792863FDC9FB000C11D0725656A9D641", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "nx5bgE1JpLsvc8q4qasyZVfKIW0Y7S0Jxvl0CmGq1/0=" + }, + "voting_power": "94887", + "proposer_priority": "-2782419" + }, + { + "address": "7C7DA4D5C5C9846F9D02BCA0FCC8BF30FC0039A0", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "whbBV62VgpIL+8oKL8n9x0B431q1+G5HRjKghhFrtKM=" + }, + "voting_power": "86384", + "proposer_priority": "-562858" + }, + { + "address": "B310BA4A7B39A9D38A67E93E798CE9549F8407F7", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "g45a/itQexKr3sQkobDVQYmYmQOvqxDiG3+ZLJZfh7E=" + }, + "voting_power": "64068", + "proposer_priority": "4172585" + }, + { + "address": "305EEF06E09EB104BF1564DAF31F4277C31AD984", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "bI8u/sIAMqfRCRwnFJ6I2Vu5/b8ruSX8NDyzFXuH2GA=" + }, + "voting_power": "61523", + "proposer_priority": "-1738204" + }, + { + "address": "CF4B8BCC61E1B2207107F986283ABDD61B0E874F", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "DhMjl7CRfWwvj+2iMwlEAYLsu0zs/Zua0VTC+bjE1jc=" + }, + "voting_power": "61478", + "proposer_priority": "375282" + }, + { + "address": "0323A66E6E48A50BDBAB3832B082B3F2614A433E", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "cqPrCh1D4F5a7z+Aj4TV8mmJlf8UhBQnfURauXTWIKE=" + }, + "voting_power": "59103", + "proposer_priority": "3047410" + }, + { + "address": "E0D23AE41C8F2A204F652CE826E08668DE9A07B8", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "nAAVvH/GwCkdSNlRt2/WtdUvl0AsUtnclxRn8aAFAO4=" + }, + "voting_power": "54286", + "proposer_priority": "4791573" + }, + { + "address": "3439FB7806A3661A7A53D6B28B6771ACD7B00411", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "BgVheyq/M9uPX8vbtgdrauoCH1k0wBqFSmL31/bN+RM=" + }, + "voting_power": "47694", + "proposer_priority": "4569953" + }, + { + "address": "76EA8281CC939495A4A54656C59B9075E9257FC4", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "Lrk3ZO4JlCvfwge8yEO3GK7/SJS7ImXhRZdZE/8rseo=" + }, + "voting_power": "46727", + "proposer_priority": "-3160747" + }, + { + "address": "684616FF14EAE8BE5613DA40864EA85812469308", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "T+dMEZ+Ds5YT2lVx58IMjsmQciIHKif7UYscvdFGyVE=" + }, + "voting_power": "43363", + "proposer_priority": "4093499" + }, + { + "address": "43790BA2E57D02A8944B670B46D62ACBBDDE73FE", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "2Clqam9MlYsZsl7rpXWFRoEC4STewM85Z+8cdob6gJI=" + }, + "voting_power": "41030", + "proposer_priority": "2984783" + }, + { + "address": "A35A6E459554E336C2A07CE78BA4EC1250AC3338", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "FCDoXNkWW6h5yB5h9F46R7gVVdgvqB2adObXkjhLCv4=" + }, + "voting_power": "40324", + "proposer_priority": "632282" + }, + { + "address": "5802A80D39D378A6218E52F4EB50ECCF4583264B", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "VOdf1YQsfdhng0PZIXqLk+OCNoIGUTbBbYmkN9v+QEQ=" + }, + "voting_power": "33633", + "proposer_priority": "4614939" + }, + { + "address": "8047FA49FCE5E85107E88AE0152E079D9CBD320F", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "9B4gQOiZX+DVSx+A/p9ROkfK6y6o6X7F7H1/x76BrZY=" + }, + "voting_power": "30871", + "proposer_priority": "-1409530" + }, + { + "address": "B4A950629CC31E385E6269F7B62314ED57650EE8", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "vQrkpE1LBhE8kTSmxymCuI8cBA2eOov9sU8gOG8phLw=" + }, + "voting_power": "30550", + "proposer_priority": "-1067327" + }, + { + "address": "B95ECC721FCDD6893107699AED4A0FAA62E97D11", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "L7hWjbX+9e8vVMNeAu6dC0CBg6YBaF/zQjSNyWku/bA=" + }, + "voting_power": "29867", + "proposer_priority": "-3583879" + }, + { + "address": "ED61B1DEE5F79C521F521B78DB93559FEB2E3B82", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "IG6iu/PKcapnSl58DsH6y1JlIv99KjSrZM14+eUILas=" + }, + "voting_power": "28549", + "proposer_priority": "1383402" + }, + { + "address": "A92A1DE1BB768A065F87DF5811FC0F32FA7CD57E", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "mk/qPAbVkTjNjHYnAsWlCxmWVzKKt/ojzq8l56rGo0w=" + }, + "voting_power": "26769", + "proposer_priority": "-3466568" + }, + { + "address": "83F719426E00721A9208DBFE2B30D6DC75FE6645", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "zbv8shGha/SDouyB2sOK1AovTo9XhejHU27j+2D+CZE=" + }, + "voting_power": "26485", + "proposer_priority": "-3885437" + }, + { + "address": "710FEF6FF4693C657CB24AADF1623E861A5AF906", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "8IY9X+l01DxmGMoR6K6uprK/Sy/kwvlkx85X8b0uP24=" + }, + "voting_power": "25357", + "proposer_priority": "1477683" + }, + { + "address": "C8BB72DD64C161F5A23874F480DCD12BD2C2647D", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "BMtmwph1ZwZzhktwUKNe4+SlfmGfvI4JyRRxLodd6VU=" + }, + "voting_power": "23128", + "proposer_priority": "-3808600" + }, + { + "address": "17E4639B5116509EC04C4AABFA69506317801783", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "y+utsHn6QYiX6CCBdYAAam2KRNoRvAGDBUam/oQ6xUw=" + }, + "voting_power": "22213", + "proposer_priority": "4233436" + }, + { + "address": "1CDD0EF99F36CC3028237886FA00CE45AABD60E5", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "MaLV6YmPBWD9VB07GWq1+CQEkK36XtFOKteoMbYFcDo=" + }, + "voting_power": "21248", + "proposer_priority": "560518" + }, + { + "address": "80DA42EB9A25BD341A18B2D989BB86DFD4413A05", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "Q0Ip8MkXMP65UcG3XQ08h0CZ8D3pSmQwPXCZsuHgBBY=" + }, + "voting_power": "18327", + "proposer_priority": "1557579" + }, + { + "address": "916D131FCDC899B83D0C3B56DDD6614B339C997E", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "/qEmmvQH3sm6lccuFbWi3WQ7Zix8lYanRpJIbaUzyig=" + }, + "voting_power": "16040", + "proposer_priority": "3803384" + }, + { + "address": "903EED41E608EFD3E2DBA2C561F7331C1AE0D82D", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "S2T1ECtywD912SDZ04fknyPtgp0QnrkSoFcbawOqnyQ=" + }, + "voting_power": "15878", + "proposer_priority": "1134166" + }, + { + "address": "A262DDACC4F532340A2B389CF3EAA29B6846D142", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "2vkzUgR+NY6/2b870xJ8tTZaXGmdKU7z7RZsVvqs6qI=" + }, + "voting_power": "15809", + "proposer_priority": "-3287410" + }, + { + "address": "9F579C855F835F1CB71ABF2960A244FC0AF671EA", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "StBLaUcTsB0WP52rMHlR4vVG1+h/GdHVv/PsRosE0KA=" + }, + "voting_power": "9907", + "proposer_priority": "1361475" + }, + { + "address": "2026B424B984B681F91C88874820CE927965C492", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "gc/zmjETfR/5k8y99qdYnrCi3r2xpG2fvA0xqw0ypgQ=" + }, + "voting_power": "9211", + "proposer_priority": "4414328" + }, + { + "address": "92C70850FA51E11384826C5F574F5B13B5706554", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "fc/uPJqGQVezA4dP9QQGIW+9pKI3ZbNRLnjfAxST6Wk=" + }, + "voting_power": "9071", + "proposer_priority": "-3764774" + }, + { + "address": "1A30424D3A05B7E61B1936477C338E316E5D7D66", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "kv7kHkUuMK26OsQaCFijOxUgyUUSjZGzJx4uo0AQ8nI=" + }, + "voting_power": "8476", + "proposer_priority": "-3520585" + }, + { + "address": "CB1814F7CDAFE24C0A836B627082710636562B98", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "mrO3rLYqtzjKqQ8jG5yad5d4/0y3nuGC7vdwHYrq+ok=" + }, + "voting_power": "6169", + "proposer_priority": "-4648802" + }, + { + "address": "DC9424AFE6C83F68813337B5FB4EC62C2330C9E6", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "q/L9gc2ZIdsdsHo553UwGIamlLfwhBRQy6dhchS8WTc=" + }, + "voting_power": "5887", + "proposer_priority": "654391" + }, + { + "address": "91938313E6AC32D56F07B39ACC580B1E7E5A29E8", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "P5+60QYJ00LqnNqfzMzIA0Z7u1mIAxIFCkujt+3imgM=" + }, + "voting_power": "5740", + "proposer_priority": "-4170875" + }, + { + "address": "6A24190F2C8C0878BB134D146FE9333094171256", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "K89oBGiO66xsdgY3BMwMF6nYQlB0BNnw/dBLeFK52Oc=" + }, + "voting_power": "1846", + "proposer_priority": "-2598917" + }, + { + "address": "60A7F8F9EE0BE23DAC5183B36BEB14AEF2D3A879", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "aGn1HF9e4nIZ1CjwhHZSWekijRO7bq/ZKV384/zmHzY=" + }, + "voting_power": "1000", + "proposer_priority": "1894869" + }, + { + "address": "43FC3AB6FE3D33C41842553EAFC8393A7FD00C23", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "701IrRX2fUrkoMUtdmTr5JiIZqdgHpcga1WKoV7PSMU=" + }, + "voting_power": "730", + "proposer_priority": "-661365" + }, + { + "address": "B684A0D2CB2D1AC7F9AC890B4678006A1D5B09E0", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "ZX0ywGqfB+Mi5B5QzKx0dLzDo6ua2eqcufdzDPUB5p4=" + }, + "voting_power": "384", + "proposer_priority": "-5679454" + }, + { + "address": "19DD6B3CA0DEB5F6FE0E1A78AD53D408EA0CA8F0", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "ifW74P0qYAclokjCrd4+RKHMnQAI/7HqGJZ9bg77dc4=" + }, + "voting_power": "261", + "proposer_priority": "1819950" + }, + { + "address": "987AF576DFCAE3B71C38FC729174739811C6626A", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "ZN84hF2H+G8s5/Uw3pFwcYGdmmGobdsxVPistm+vzZQ=" + }, + "voting_power": "225", + "proposer_priority": "1639048" + }, + { + "address": "BAFE51BA7636EFAA64E59649321EAFC4E1D0F03B", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "9fHwtNKyrmNMxsCIssQXqobIr917hNJuDo333IIyyGM=" + }, + "voting_power": "150", + "proposer_priority": "-5102353" + }, + { + "address": "AB135B41694E5EC24367110CC9DB1DC7852D6E82", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "ZTUVskeDW2DxxHSViecAFSHRamNHGoGoEQEPRt58tuY=" + }, + "voting_power": "89", + "proposer_priority": "-4560444" + }, + { + "address": "5C950EA844C3F38BB3BB51C6634FFAE18DBE8811", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "w/n2tngzQcP5viXuhxa5bCEDlll+qVpLZkuN0MfmWZU=" + }, + "voting_power": "81", + "proposer_priority": "-5958330" + }, + { + "address": "B4BB763F2BCDF710991355B1FE4FDCE83C0874A2", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "iBTM2Vpl0CML5bD3vQ+dnglrSypX/Hpr9p4pwlVeHxY=" + }, + "voting_power": "69", + "proposer_priority": "2642237" + }, + { + "address": "63C90F79BA2F2248628BC76D5C038492674EEB91", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "/Cp3v8ADUev/rWKMC+gLrdi3m+526vy4JJT/ebJE3U0=" + }, + "voting_power": "57", + "proposer_priority": "-2516920" + }, + { + "address": "94D21453B366ADA7F50F12CA907CDA7A4AB7F214", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "LGUlm/88HsFcGoonV9h4LePeWrzHdOgRl0qZE0WICec=" + }, + "voting_power": "52", + "proposer_priority": "2284165" + }, + { + "address": "B699C4799E8F6C7D038682C0441AD28E6E43E677", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "GOg/7baoMkm6MO9kmIkv/xtMarRZ5uc/mz9i3BO3hZw=" + }, + "voting_power": "42", + "proposer_priority": "1406046" + }, + { + "address": "246C9C9846C2899D0DA109BCFADAA6260685B4C3", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "6AhtT5V0/eu3BIve9qKpTPcULe6wYrcPuhcpeRnMSyw=" + }, + "voting_power": "14", + "proposer_priority": "1776204" + }, + { + "address": "E3DF8B64C6EE018BE7EC6BB9BC3ABFB67D99A630", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "wbNefAPhut94zca74ZCGHmboBqrA464/EyHlEekMcow=" + }, + "voting_power": "10", + "proposer_priority": "-4261781" + }, + { + "address": "CF941683BB7851E824695E7ABA86D57C6E32F5D3", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "f+wg6V3z8g55vgzneEjhH6gJmgi1P/P7SDbbGh3scVQ=" + }, + "voting_power": "7", + "proposer_priority": "1152852" + }, + { + "address": "7219BF2BF60498F19DC51B33588DEB9F9D30B392", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "ZCc3n6I7Q5ruFFHwv//XECvdo+COsQ3Dqv6TYlcz0IQ=" + }, + "voting_power": "6", + "proposer_priority": "880846" + }, + { + "address": "75B513290765236B2F1C3FCAACF35A7FBAFBFB6F", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "A4w47f3apgLgG7raSzYedv3zc1Kan2UD+QQdPWPmYbI=" + }, + "voting_power": "6", + "proposer_priority": "1161785" + }, + { + "address": "3C672A568D8B4D3261132A92CC572F21D4F85C1C", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "rfWvXM+dxHvTgRSwkghWozA2+OTMUsD3RmYT66sZ8qs=" + }, + "voting_power": "5", + "proposer_priority": "1087186" + }, + { + "address": "208FF031498FA42FFED6829C8A4884CDC72BE06A", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "XT5lav9vOFVUo6FCh1sHr0S1TirnUKpHkj8UOevzmBM=" + }, + "voting_power": "2", + "proposer_priority": "768703" + }, + { + "address": "CA572745CF6C1437547BB3961D3D04EE8C88DA30", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "pe5spRJgTVbEStc6eRp1Blx6ZKA/nTmP/UveU5hLS70=" + }, + "voting_power": "2", + "proposer_priority": "607360" + }, + { + "address": "164A8F8019C8B800A8BEB03CA04428B881812E04", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "168Mb6oUPPq8g+8e0PsuiBx8bBzbgr1fVeiqn8E2uEg=" + }, + "voting_power": "1", + "proposer_priority": "34023" + }, + { + "address": "206DC4AC92A0CF215D8C8AF98B7A84966CE43E45", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "Mm9lw9+Fb4iTg/HkSnR4/ob7VLVwsVM8Ncumtn8z180=" + }, + "voting_power": "1", + "proposer_priority": "478986" + }, + { + "address": "3655C2522526E342E1BAE250B7E01C728E97BF61", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "8C8ObB/ueQs9fK4voPVLmW5MoMWXigTezprUdsOVLuQ=" + }, + "voting_power": "1", + "proposer_priority": "462114" + }, + { + "address": "50A7130BA74D071391EF45678BE2444955FA4AD4", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "mE2ULx0G812VEr8mqvKXMHKEF4tL0k5NKjgFHbMlKtw=" + }, + "voting_power": "1", + "proposer_priority": "102121" + }, + { + "address": "556EA605A9374CE54C157DD42395B4047E327914", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "hxjD2336gspNuI5EZw+HPrN0wyLj22HNFj5NnBRHCyY=" + }, + "voting_power": "1", + "proposer_priority": "469093" + }, + { + "address": "64BBCDCC1BA3D6CB934A5BBC9F45121A40EF81B2", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "HkAl1eQI+xYKK7CfEz2CfBhN+1t62p2uEtRN04GrpSk=" + }, + "voting_power": "1", + "proposer_priority": "51613" + }, + { + "address": "6B00AA4C9E824A9E042AA49A5CF40591FDFF2021", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "VusjapHUOkaqArduuT7dxw50KHYGs+rlTgh8yYNqBrw=" + }, + "voting_power": "1", + "proposer_priority": "42674" + }, + { + "address": "A2E2A0CC28C652A9EA47D666B2CDE5122DE5A8E1", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "vm9wtXNrD25uUp+0jd/+tFKHwLavQ9aKMx3G6ORpzoY=" + }, + "voting_power": "1", + "proposer_priority": "-588664" + }, + { + "address": "E314D1F70E07277B21E80FBF4BCA6AFBDB07C367", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "+B7kI0VIsl1OEnGKsRFLdNRtUsG54fGBvT9ic5H+46Y=" + }, + "voting_power": "1", + "proposer_priority": "117769" + } + ], + "count": "73", + "total": "73" +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/multi-validator/validators.3.json b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/multi-validator/validators.3.json new file mode 100644 index 000000000..db1793c70 --- /dev/null +++ b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/multi-validator/validators.3.json @@ -0,0 +1,664 @@ +{ + "block_height": "700083", + "validators": [ + { + "address": "C97C186A87209EA864B432E03EF0441E18D709BB", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "lza6STYGfbGrRwY0ZDzORG4SQndP5N6po8HpWqpTy6o=" + }, + "voting_power": "4328337", + "proposer_priority": "5104383" + }, + { + "address": "DA694585BB239BD51FF6FBF61C10B1E85B2DB707", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "HzbDQiRY7ipSe2hnwAzLlhOk62GfZrPbm4ynmUt+UGo=" + }, + "voting_power": "1486788", + "proposer_priority": "2449820" + }, + { + "address": "9FBFE65AD18294A346B540F7396D92DF32880966", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "pegoDiza/5FHqom5PVN/Py7zse3AAsfkrvR5VLxY9/U=" + }, + "voting_power": "849800", + "proposer_priority": "2335478" + }, + { + "address": "BC9D4BD4F1F544FC1E136A92A368CBFC28D0BBEF", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "Zt55IFQv3/zym4XKEeEPJof5+GNbXBvRK9zkTQDZwbw=" + }, + "voting_power": "622274", + "proposer_priority": "2739647" + }, + { + "address": "9FB1318DC46AB8E9D25263DF34C568FE4177FAED", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "Df1HPuRmaik3+1vACZc2BIq+L/gemwYiQFLSt06nxtk=" + }, + "voting_power": "616511", + "proposer_priority": "5379549" + }, + { + "address": "1E4E9FBC795E5C3F1BE3507F6008F40257A8E09D", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "UxwWa4MRF+C8c4QqL25f2CrrMoMndhYpGNPr9xLRl5I=" + }, + "voting_power": "223130", + "proposer_priority": "204513" + }, + { + "address": "1ECCEB94F3459F9921B0C1D398A3E46283A35285", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "QEzqbvrFJea3J0E8yLWaFm2OzYN6PCLsm/2DSR8opQo=" + }, + "voting_power": "199954", + "proposer_priority": "-4073244" + }, + { + "address": "8971B56A1262D888E76DDF6C78339135122B9FD5", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "iL5CyXR7zFZTKXFdmA3PyP2so9xiv7+gk2FhaXFoQf0=" + }, + "voting_power": "154591", + "proposer_priority": "-2611371" + }, + { + "address": "44A774BBD9B1621C7A752F4BF4FC97ECD19C9339", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "Cb+cOsx/PlVOkTVuZHG3TpBJa6/Jx/ga8OC6NF0zFbw=" + }, + "voting_power": "137076", + "proposer_priority": "3830224" + }, + { + "address": "1FB705E4792863FDC9FB000C11D0725656A9D641", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "nx5bgE1JpLsvc8q4qasyZVfKIW0Y7S0Jxvl0CmGq1/0=" + }, + "voting_power": "94906", + "proposer_priority": "3006308" + }, + { + "address": "7C7DA4D5C5C9846F9D02BCA0FCC8BF30FC0039A0", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "whbBV62VgpIL+8oKL8n9x0B431q1+G5HRjKghhFrtKM=" + }, + "voting_power": "86384", + "proposer_priority": "4706566" + }, + { + "address": "B310BA4A7B39A9D38A67E93E798CE9549F8407F7", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "g45a/itQexKr3sQkobDVQYmYmQOvqxDiG3+ZLJZfh7E=" + }, + "voting_power": "64068", + "proposer_priority": "-1662694" + }, + { + "address": "305EEF06E09EB104BF1564DAF31F4277C31AD984", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "bI8u/sIAMqfRCRwnFJ6I2Vu5/b8ruSX8NDyzFXuH2GA=" + }, + "voting_power": "61523", + "proposer_priority": "2014699" + }, + { + "address": "CF4B8BCC61E1B2207107F986283ABDD61B0E874F", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "DhMjl7CRfWwvj+2iMwlEAYLsu0zs/Zua0VTC+bjE1jc=" + }, + "voting_power": "61478", + "proposer_priority": "4125440" + }, + { + "address": "0323A66E6E48A50BDBAB3832B082B3F2614A433E", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "cqPrCh1D4F5a7z+Aj4TV8mmJlf8UhBQnfURauXTWIKE=" + }, + "voting_power": "59103", + "proposer_priority": "-3090811" + }, + { + "address": "E0D23AE41C8F2A204F652CE826E08668DE9A07B8", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "nAAVvH/GwCkdSNlRt2/WtdUvl0AsUtnclxRn8aAFAO4=" + }, + "voting_power": "54297", + "proposer_priority": "-1640085" + }, + { + "address": "3439FB7806A3661A7A53D6B28B6771ACD7B00411", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "BgVheyq/M9uPX8vbtgdrauoCH1k0wBqFSmL31/bN+RM=" + }, + "voting_power": "47696", + "proposer_priority": "-2264022" + }, + { + "address": "76EA8281CC939495A4A54656C59B9075E9257FC4", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "Lrk3ZO4JlCvfwge8yEO3GK7/SJS7ImXhRZdZE/8rseo=" + }, + "voting_power": "46733", + "proposer_priority": "-310182" + }, + { + "address": "684616FF14EAE8BE5613DA40864EA85812469308", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "T+dMEZ+Ds5YT2lVx58IMjsmQciIHKif7UYscvdFGyVE=" + }, + "voting_power": "43363", + "proposer_priority": "-3004842" + }, + { + "address": "43790BA2E57D02A8944B670B46D62ACBBDDE73FE", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "2Clqam9MlYsZsl7rpXWFRoEC4STewM85Z+8cdob6gJI=" + }, + "voting_power": "41030", + "proposer_priority": "-4256004" + }, + { + "address": "A35A6E459554E336C2A07CE78BA4EC1250AC3338", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "FCDoXNkWW6h5yB5h9F46R7gVVdgvqB2adObXkjhLCv4=" + }, + "voting_power": "40330", + "proposer_priority": "3092238" + }, + { + "address": "5802A80D39D378A6218E52F4EB50ECCF4583264B", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "VOdf1YQsfdhng0PZIXqLk+OCNoIGUTbBbYmkN9v+QEQ=" + }, + "voting_power": "33633", + "proposer_priority": "-3076932" + }, + { + "address": "8047FA49FCE5E85107E88AE0152E079D9CBD320F", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "9B4gQOiZX+DVSx+A/p9ROkfK6y6o6X7F7H1/x76BrZY=" + }, + "voting_power": "30871", + "proposer_priority": "473601" + }, + { + "address": "B4A950629CC31E385E6269F7B62314ED57650EE8", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "vQrkpE1LBhE8kTSmxymCuI8cBA2eOov9sU8gOG8phLw=" + }, + "voting_power": "30550", + "proposer_priority": "796223" + }, + { + "address": "B95ECC721FCDD6893107699AED4A0FAA62E97D11", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "L7hWjbX+9e8vVMNeAu6dC0CBg6YBaF/zQjSNyWku/bA=" + }, + "voting_power": "29867", + "proposer_priority": "-1761992" + }, + { + "address": "ED61B1DEE5F79C521F521B78DB93559FEB2E3B82", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "IG6iu/PKcapnSl58DsH6y1JlIv99KjSrZM14+eUILas=" + }, + "voting_power": "28549", + "proposer_priority": "3124891" + }, + { + "address": "A92A1DE1BB768A065F87DF5811FC0F32FA7CD57E", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "mk/qPAbVkTjNjHYnAsWlCxmWVzKKt/ojzq8l56rGo0w=" + }, + "voting_power": "26769", + "proposer_priority": "-1833659" + }, + { + "address": "83F719426E00721A9208DBFE2B30D6DC75FE6645", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "zbv8shGha/SDouyB2sOK1AovTo9XhejHU27j+2D+CZE=" + }, + "voting_power": "26485", + "proposer_priority": "-2269852" + }, + { + "address": "710FEF6FF4693C657CB24AADF1623E861A5AF906", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "8IY9X+l01DxmGMoR6K6uprK/Sy/kwvlkx85X8b0uP24=" + }, + "voting_power": "25357", + "proposer_priority": "3024460" + }, + { + "address": "C8BB72DD64C161F5A23874F480DCD12BD2C2647D", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "BMtmwph1ZwZzhktwUKNe4+SlfmGfvI4JyRRxLodd6VU=" + }, + "voting_power": "23132", + "proposer_priority": "-2397648" + }, + { + "address": "17E4639B5116509EC04C4AABFA69506317801783", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "y+utsHn6QYiX6CCBdYAAam2KRNoRvAGDBUam/oQ6xUw=" + }, + "voting_power": "22215", + "proposer_priority": "-4155051" + }, + { + "address": "1CDD0EF99F36CC3028237886FA00CE45AABD60E5", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "MaLV6YmPBWD9VB07GWq1+CQEkK36XtFOKteoMbYFcDo=" + }, + "voting_power": "21251", + "proposer_priority": "1856754" + }, + { + "address": "80DA42EB9A25BD341A18B2D989BB86DFD4413A05", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "Q0Ip8MkXMP65UcG3XQ08h0CZ8D3pSmQwPXCZsuHgBBY=" + }, + "voting_power": "18327", + "proposer_priority": "2675526" + }, + { + "address": "916D131FCDC899B83D0C3B56DDD6614B339C997E", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "/qEmmvQH3sm6lccuFbWi3WQ7Zix8lYanRpJIbaUzyig=" + }, + "voting_power": "16040", + "proposer_priority": "4781824" + }, + { + "address": "903EED41E608EFD3E2DBA2C561F7331C1AE0D82D", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "S2T1ECtywD912SDZ04fknyPtgp0QnrkSoFcbawOqnyQ=" + }, + "voting_power": "15878", + "proposer_priority": "2102724" + }, + { + "address": "A262DDACC4F532340A2B389CF3EAA29B6846D142", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "2vkzUgR+NY6/2b870xJ8tTZaXGmdKU7z7RZsVvqs6qI=" + }, + "voting_power": "15809", + "proposer_priority": "-2323061" + }, + { + "address": "9F579C855F835F1CB71ABF2960A244FC0AF671EA", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "StBLaUcTsB0WP52rMHlR4vVG1+h/GdHVv/PsRosE0KA=" + }, + "voting_power": "9907", + "proposer_priority": "1965802" + }, + { + "address": "2026B424B984B681F91C88874820CE927965C492", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "gc/zmjETfR/5k8y99qdYnrCi3r2xpG2fvA0xqw0ypgQ=" + }, + "voting_power": "9211", + "proposer_priority": "4976199" + }, + { + "address": "92C70850FA51E11384826C5F574F5B13B5706554", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "fc/uPJqGQVezA4dP9QQGIW+9pKI3ZbNRLnjfAxST6Wk=" + }, + "voting_power": "9071", + "proposer_priority": "-3211443" + }, + { + "address": "1A30424D3A05B7E61B1936477C338E316E5D7D66", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "kv7kHkUuMK26OsQaCFijOxUgyUUSjZGzJx4uo0AQ8nI=" + }, + "voting_power": "8479", + "proposer_priority": "-3003495" + }, + { + "address": "CB1814F7CDAFE24C0A836B627082710636562B98", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "mrO3rLYqtzjKqQ8jG5yad5d4/0y3nuGC7vdwHYrq+ok=" + }, + "voting_power": "6169", + "proposer_priority": "-4272493" + }, + { + "address": "DC9424AFE6C83F68813337B5FB4EC62C2330C9E6", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "q/L9gc2ZIdsdsHo553UwGIamlLfwhBRQy6dhchS8WTc=" + }, + "voting_power": "5887", + "proposer_priority": "1013498" + }, + { + "address": "91938313E6AC32D56F07B39ACC580B1E7E5A29E8", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "P5+60QYJ00LqnNqfzMzIA0Z7u1mIAxIFCkujt+3imgM=" + }, + "voting_power": "5740", + "proposer_priority": "-3820735" + }, + { + "address": "6A24190F2C8C0878BB134D146FE9333094171256", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "K89oBGiO66xsdgY3BMwMF6nYQlB0BNnw/dBLeFK52Oc=" + }, + "voting_power": "1846", + "proposer_priority": "-2486311" + }, + { + "address": "60A7F8F9EE0BE23DAC5183B36BEB14AEF2D3A879", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "aGn1HF9e4nIZ1CjwhHZSWekijRO7bq/ZKV384/zmHzY=" + }, + "voting_power": "1000", + "proposer_priority": "1955869" + }, + { + "address": "43FC3AB6FE3D33C41842553EAFC8393A7FD00C23", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "701IrRX2fUrkoMUtdmTr5JiIZqdgHpcga1WKoV7PSMU=" + }, + "voting_power": "730", + "proposer_priority": "-616835" + }, + { + "address": "B684A0D2CB2D1AC7F9AC890B4678006A1D5B09E0", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "ZX0ywGqfB+Mi5B5QzKx0dLzDo6ua2eqcufdzDPUB5p4=" + }, + "voting_power": "384", + "proposer_priority": "-5656030" + }, + { + "address": "19DD6B3CA0DEB5F6FE0E1A78AD53D408EA0CA8F0", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "ifW74P0qYAclokjCrd4+RKHMnQAI/7HqGJZ9bg77dc4=" + }, + "voting_power": "261", + "proposer_priority": "1835871" + }, + { + "address": "987AF576DFCAE3B71C38FC729174739811C6626A", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "ZN84hF2H+G8s5/Uw3pFwcYGdmmGobdsxVPistm+vzZQ=" + }, + "voting_power": "225", + "proposer_priority": "1652773" + }, + { + "address": "BAFE51BA7636EFAA64E59649321EAFC4E1D0F03B", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "9fHwtNKyrmNMxsCIssQXqobIr917hNJuDo333IIyyGM=" + }, + "voting_power": "150", + "proposer_priority": "-5093203" + }, + { + "address": "AB135B41694E5EC24367110CC9DB1DC7852D6E82", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "ZTUVskeDW2DxxHSViecAFSHRamNHGoGoEQEPRt58tuY=" + }, + "voting_power": "90", + "proposer_priority": "-4554993" + }, + { + "address": "5C950EA844C3F38BB3BB51C6634FFAE18DBE8811", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "w/n2tngzQcP5viXuhxa5bCEDlll+qVpLZkuN0MfmWZU=" + }, + "voting_power": "81", + "proposer_priority": "-5953389" + }, + { + "address": "B4BB763F2BCDF710991355B1FE4FDCE83C0874A2", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "iBTM2Vpl0CML5bD3vQ+dnglrSypX/Hpr9p4pwlVeHxY=" + }, + "voting_power": "69", + "proposer_priority": "2646446" + }, + { + "address": "63C90F79BA2F2248628BC76D5C038492674EEB91", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "/Cp3v8ADUev/rWKMC+gLrdi3m+526vy4JJT/ebJE3U0=" + }, + "voting_power": "57", + "proposer_priority": "-2513443" + }, + { + "address": "94D21453B366ADA7F50F12CA907CDA7A4AB7F214", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "LGUlm/88HsFcGoonV9h4LePeWrzHdOgRl0qZE0WICec=" + }, + "voting_power": "52", + "proposer_priority": "2287337" + }, + { + "address": "B699C4799E8F6C7D038682C0441AD28E6E43E677", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "GOg/7baoMkm6MO9kmIkv/xtMarRZ5uc/mz9i3BO3hZw=" + }, + "voting_power": "42", + "proposer_priority": "1408608" + }, + { + "address": "246C9C9846C2899D0DA109BCFADAA6260685B4C3", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "6AhtT5V0/eu3BIve9qKpTPcULe6wYrcPuhcpeRnMSyw=" + }, + "voting_power": "14", + "proposer_priority": "1777058" + }, + { + "address": "E3DF8B64C6EE018BE7EC6BB9BC3ABFB67D99A630", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "wbNefAPhut94zca74ZCGHmboBqrA464/EyHlEekMcow=" + }, + "voting_power": "10", + "proposer_priority": "-4261171" + }, + { + "address": "CF941683BB7851E824695E7ABA86D57C6E32F5D3", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "f+wg6V3z8g55vgzneEjhH6gJmgi1P/P7SDbbGh3scVQ=" + }, + "voting_power": "7", + "proposer_priority": "1153279" + }, + { + "address": "7219BF2BF60498F19DC51B33588DEB9F9D30B392", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "ZCc3n6I7Q5ruFFHwv//XECvdo+COsQ3Dqv6TYlcz0IQ=" + }, + "voting_power": "6", + "proposer_priority": "881212" + }, + { + "address": "75B513290765236B2F1C3FCAACF35A7FBAFBFB6F", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "A4w47f3apgLgG7raSzYedv3zc1Kan2UD+QQdPWPmYbI=" + }, + "voting_power": "6", + "proposer_priority": "1162151" + }, + { + "address": "3C672A568D8B4D3261132A92CC572F21D4F85C1C", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "rfWvXM+dxHvTgRSwkghWozA2+OTMUsD3RmYT66sZ8qs=" + }, + "voting_power": "5", + "proposer_priority": "1087491" + }, + { + "address": "208FF031498FA42FFED6829C8A4884CDC72BE06A", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "XT5lav9vOFVUo6FCh1sHr0S1TirnUKpHkj8UOevzmBM=" + }, + "voting_power": "2", + "proposer_priority": "768825" + }, + { + "address": "CA572745CF6C1437547BB3961D3D04EE8C88DA30", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "pe5spRJgTVbEStc6eRp1Blx6ZKA/nTmP/UveU5hLS70=" + }, + "voting_power": "2", + "proposer_priority": "607482" + }, + { + "address": "164A8F8019C8B800A8BEB03CA04428B881812E04", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "168Mb6oUPPq8g+8e0PsuiBx8bBzbgr1fVeiqn8E2uEg=" + }, + "voting_power": "1", + "proposer_priority": "34084" + }, + { + "address": "206DC4AC92A0CF215D8C8AF98B7A84966CE43E45", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "Mm9lw9+Fb4iTg/HkSnR4/ob7VLVwsVM8Ncumtn8z180=" + }, + "voting_power": "1", + "proposer_priority": "479047" + }, + { + "address": "3655C2522526E342E1BAE250B7E01C728E97BF61", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "8C8ObB/ueQs9fK4voPVLmW5MoMWXigTezprUdsOVLuQ=" + }, + "voting_power": "1", + "proposer_priority": "462175" + }, + { + "address": "50A7130BA74D071391EF45678BE2444955FA4AD4", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "mE2ULx0G812VEr8mqvKXMHKEF4tL0k5NKjgFHbMlKtw=" + }, + "voting_power": "1", + "proposer_priority": "102182" + }, + { + "address": "556EA605A9374CE54C157DD42395B4047E327914", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "hxjD2336gspNuI5EZw+HPrN0wyLj22HNFj5NnBRHCyY=" + }, + "voting_power": "1", + "proposer_priority": "469154" + }, + { + "address": "64BBCDCC1BA3D6CB934A5BBC9F45121A40EF81B2", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "HkAl1eQI+xYKK7CfEz2CfBhN+1t62p2uEtRN04GrpSk=" + }, + "voting_power": "1", + "proposer_priority": "51674" + }, + { + "address": "6B00AA4C9E824A9E042AA49A5CF40591FDFF2021", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "VusjapHUOkaqArduuT7dxw50KHYGs+rlTgh8yYNqBrw=" + }, + "voting_power": "1", + "proposer_priority": "42735" + }, + { + "address": "A2E2A0CC28C652A9EA47D666B2CDE5122DE5A8E1", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "vm9wtXNrD25uUp+0jd/+tFKHwLavQ9aKMx3G6ORpzoY=" + }, + "voting_power": "1", + "proposer_priority": "-588603" + }, + { + "address": "E314D1F70E07277B21E80FBF4BCA6AFBDB07C367", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "+B7kI0VIsl1OEnGKsRFLdNRtUsG54fGBvT9ic5H+46Y=" + }, + "voting_power": "1", + "proposer_priority": "117830" + } + ], + "count": "73", + "total": "73" +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/simple/commit.1.json b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/simple/commit.1.json new file mode 100644 index 000000000..c81accb69 --- /dev/null +++ b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/simple/commit.1.json @@ -0,0 +1,48 @@ +{ + "signed_header": { + "header": { + "version": { + "block": "11" + }, + "chain_id": "constantine-1", + "height": "600000", + "time": "2023-02-27T10:17:56.252368746Z", + "last_block_id": { + "hash": "A5103ECD1C6655398B63C8DC05171D828174572EDDF2B3C73E5BD4C5D47A31FE", + "parts": { + "total": 1, + "hash": "97EF30567AA0FA6254AA9CA68172DEA9FC68A6D3DA81D5AA47D2FE990C21472E" + } + }, + "last_commit_hash": "DBE402AD7A9530D58B30E4A394713F77567A5CEE9023FE1819FC3EF902BF587C", + "data_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "validators_hash": "E9C656841119D33056056DFE6FCC1F833BD55AF231C27326432579E9AFAE9DA8", + "next_validators_hash": "E9C656841119D33056056DFE6FCC1F833BD55AF231C27326432579E9AFAE9DA8", + "consensus_hash": "3AB4B0648EC46497FE810009B6AB29A5E18983B0A615BE174305F94968486602", + "app_hash": "27BA3C0678BF7F5C1567405E4511FE44B4131468FFF97EE7C4F895ABD4EEB76D", + "last_results_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "evidence_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "proposer_address": "227950C1373382B7B12B2A1A12FFD9FC2C4A60FD" + }, + "commit": { + "height": "600000", + "round": 0, + "block_id": { + "hash": "D85FAAEE1D9F90220B2E968B6DF69DC13B25F1E999554436DB3396F3A26BE626", + "parts": { + "total": 1, + "hash": "C33D4BFA5C6C61098F0AF84BC77D45DC324D776AAD92AB095D0D68DDC1F38BDB" + } + }, + "signatures": [ + { + "block_id_flag": 2, + "validator_address": "227950C1373382B7B12B2A1A12FFD9FC2C4A60FD", + "timestamp": "2023-02-27T10:18:01.280744845Z", + "signature": "pU32m1HxXePffgQp6Vfb92oNIiuSmSTWF08zgFou6ixNQyKA4MgdkKcKRqSaBLZWIyaJL3+y9XpYQF/47T/1DQ==" + } + ] + } + }, + "canonical": true +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/simple/commit.2.json b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/simple/commit.2.json new file mode 100644 index 000000000..d25b0e504 --- /dev/null +++ b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/simple/commit.2.json @@ -0,0 +1,47 @@ +{ + "signed_header": { + "header": { + "version": { + "block": "11" + }, + "chain_id": "constantine-1", + "height": "600050", + "time": "2023-02-27T10:22:07.868871373Z", + "last_block_id": { + "hash": "E3430B303BD920B672C06AD0B85FD0A6E1DD1265195F569141AA1ADC9474A79A", + "parts": { + "total": 1, + "hash": "E6C2B9E50E197EBCEB681BC8694F0C0D777D1F8C0F19CA1297AB153C35CAA66D" + } + }, + "last_commit_hash": "7B5BB01ECB16A9A1D0B88AC162E9053CE719DB159E5AB94844F71AFB43C7305E", + "data_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "validators_hash": "E9C656841119D33056056DFE6FCC1F833BD55AF231C27326432579E9AFAE9DA8", + "next_validators_hash": "E9C656841119D33056056DFE6FCC1F833BD55AF231C27326432579E9AFAE9DA8", + "consensus_hash": "3AB4B0648EC46497FE810009B6AB29A5E18983B0A615BE174305F94968486602", + "app_hash": "26A5F36E17C8F3E755214539FB367063C8D11C9064D6A0EBDBF3892EA6EFCD4C", + "last_results_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "evidence_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "proposer_address": "227950C1373382B7B12B2A1A12FFD9FC2C4A60FD" + }, + "commit": { + "height": "600050", + "round": 0, + "block_id": { + "hash": "FDFD129A34954000DF019F2EC84AE2748F0552A6C1D970A25D2998F3A4DA16D2", + "parts": { + "total": 1, + "hash": "B54FD2705B47AF15CBE31F6124209CC1E5C92C26FEF160A5A113C2FDA88231B2" + } + }, + "signatures": [ + { + "block_id_flag": 2, + "validator_address": "227950C1373382B7B12B2A1A12FFD9FC2C4A60FD", + "timestamp": "2023-02-27T10:22:12.898442942Z", + "signature": "XEBf5ACNZPLDDhbeGINBxOlNcjXN+R3jFD0pqAR4DCWprjd8mCQ7ZwBKWrnH7Yml/z0RUTocWgoDlXbrCkyeCg==" + } + ] + } + } +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/simple/commit.3.json b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/simple/commit.3.json new file mode 100644 index 000000000..cfd7cb1f7 --- /dev/null +++ b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/simple/commit.3.json @@ -0,0 +1,47 @@ +{ + "signed_header": { + "header": { + "version": { + "block": "11" + }, + "chain_id": "constantine-1", + "height": "600150", + "time": "2023-02-27T10:30:30.883073319Z", + "last_block_id": { + "hash": "705ADB526F8C3FE310FED0AB7BB3BD42BB6C7D89F5B76418AD7E1AFAC4341626", + "parts": { + "total": 1, + "hash": "DFBFC3779F20B3262FC0872DDFC5613C49BB163D343E974944C0E8A6F5BC7B18" + } + }, + "last_commit_hash": "C3D3AFE06B44A4B7F3D685CF48ADA835A4ADE47D352A49D95A4CD419067A7243", + "data_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "validators_hash": "E9C656841119D33056056DFE6FCC1F833BD55AF231C27326432579E9AFAE9DA8", + "next_validators_hash": "E9C656841119D33056056DFE6FCC1F833BD55AF231C27326432579E9AFAE9DA8", + "consensus_hash": "3AB4B0648EC46497FE810009B6AB29A5E18983B0A615BE174305F94968486602", + "app_hash": "2B0114371B2B33F0C46AAFCC7E17438F5A8EC75C750E59E17C7E340747947E40", + "last_results_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "evidence_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "proposer_address": "227950C1373382B7B12B2A1A12FFD9FC2C4A60FD" + }, + "commit": { + "height": "600150", + "round": 0, + "block_id": { + "hash": "7AA9D57C1BA0CDDD56B12604EB8B04ED3F69DB4651603EFEE29C1065B7923632", + "parts": { + "total": 1, + "hash": "818818B976E21D30E9A3EF119408383BA39934363B63AE1D4EC6889615DCAFFE" + } + }, + "signatures": [ + { + "block_id_flag": 2, + "validator_address": "227950C1373382B7B12B2A1A12FFD9FC2C4A60FD", + "timestamp": "2023-02-27T10:30:35.914861058Z", + "signature": "y26e+j5jkuzd3RRTKMLfgLLCa42En01xOCkqBfVErzJ5sB3oBh7/OR29uXc4a656HImFN+nkCQsmNOuKB2KfCg==" + } + ] + } + } +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/simple/validators.1.json b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/simple/validators.1.json new file mode 100644 index 000000000..1925dc51d --- /dev/null +++ b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/simple/validators.1.json @@ -0,0 +1,16 @@ +{ + "block_height": "600000", + "validators": [ + { + "address": "227950C1373382B7B12B2A1A12FFD9FC2C4A60FD", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "aaUuEVdox13TAVptDii1sThWwRz7EkEGrXAx0polEpo=" + }, + "voting_power": "100000049", + "proposer_priority": "0" + } + ], + "count": "1", + "total": "1" +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/simple/validators.2.json b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/simple/validators.2.json new file mode 100644 index 000000000..eb02cdd6b --- /dev/null +++ b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/simple/validators.2.json @@ -0,0 +1,16 @@ +{ + "block_height": "600050", + "validators": [ + { + "address": "227950C1373382B7B12B2A1A12FFD9FC2C4A60FD", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "aaUuEVdox13TAVptDii1sThWwRz7EkEGrXAx0polEpo=" + }, + "voting_power": "100000049", + "proposer_priority": "0" + } + ], + "count": "1", + "total": "1" +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/simple/validators.3.json b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/simple/validators.3.json new file mode 100644 index 000000000..d4ef50946 --- /dev/null +++ b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/data/simple/validators.3.json @@ -0,0 +1,16 @@ +{ + "block_height": "600150", + "validators": [ + { + "address": "227950C1373382B7B12B2A1A12FFD9FC2C4A60FD", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "aaUuEVdox13TAVptDii1sThWwRz7EkEGrXAx0polEpo=" + }, + "voting_power": "100000049", + "proposer_priority": "0" + } + ], + "count": "1", + "total": "1" +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/amino/AminoProto.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/amino/AminoProto.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/amino/AminoProto.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/amino/AminoProto.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/BatchEntry.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/BatchEntry.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/BatchEntry.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/BatchEntry.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/BatchEntryOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/BatchEntryOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/BatchEntryOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/BatchEntryOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/BatchProof.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/BatchProof.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/BatchProof.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/BatchProof.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/BatchProofOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/BatchProofOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/BatchProofOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/BatchProofOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/CommitmentProof.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/CommitmentProof.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/CommitmentProof.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/CommitmentProof.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/CommitmentProofOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/CommitmentProofOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/CommitmentProofOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/CommitmentProofOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/CompressedBatchEntry.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/CompressedBatchEntry.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/CompressedBatchEntry.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/CompressedBatchEntry.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/CompressedBatchEntryOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/CompressedBatchEntryOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/CompressedBatchEntryOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/CompressedBatchEntryOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/CompressedBatchProof.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/CompressedBatchProof.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/CompressedBatchProof.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/CompressedBatchProof.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/CompressedBatchProofOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/CompressedBatchProofOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/CompressedBatchProofOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/CompressedBatchProofOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/CompressedExistenceProof.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/CompressedExistenceProof.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/CompressedExistenceProof.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/CompressedExistenceProof.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/CompressedExistenceProofOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/CompressedExistenceProofOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/CompressedExistenceProofOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/CompressedExistenceProofOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/CompressedNonExistenceProof.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/CompressedNonExistenceProof.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/CompressedNonExistenceProof.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/CompressedNonExistenceProof.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/CompressedNonExistenceProofOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/CompressedNonExistenceProofOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/CompressedNonExistenceProofOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/CompressedNonExistenceProofOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/ExistenceProof.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/ExistenceProof.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/ExistenceProof.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/ExistenceProof.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/ExistenceProofOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/ExistenceProofOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/ExistenceProofOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/ExistenceProofOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/HashOp.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/HashOp.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/HashOp.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/HashOp.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/InnerOp.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/InnerOp.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/InnerOp.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/InnerOp.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/InnerOpOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/InnerOpOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/InnerOpOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/InnerOpOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/InnerSpec.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/InnerSpec.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/InnerSpec.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/InnerSpec.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/InnerSpecOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/InnerSpecOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/InnerSpecOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/InnerSpecOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/LeafOp.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/LeafOp.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/LeafOp.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/LeafOp.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/LeafOpOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/LeafOpOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/LeafOpOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/LeafOpOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/LengthOp.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/LengthOp.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/LengthOp.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/LengthOp.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/NonExistenceProof.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/NonExistenceProof.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/NonExistenceProof.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/NonExistenceProof.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/NonExistenceProofOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/NonExistenceProofOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/NonExistenceProofOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/NonExistenceProofOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/ProofSpec.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/ProofSpec.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/ProofSpec.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/ProofSpec.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/ProofSpecOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/ProofSpecOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/ProofSpecOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/ProofSpecOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/ProofsProto.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/ProofsProto.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/ics23/v1/ProofsProto.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/ics23/v1/ProofsProto.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/upgrade/v1beta1/CancelSoftwareUpgradeProposal.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/upgrade/v1beta1/CancelSoftwareUpgradeProposal.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/upgrade/v1beta1/CancelSoftwareUpgradeProposal.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/upgrade/v1beta1/CancelSoftwareUpgradeProposal.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/upgrade/v1beta1/CancelSoftwareUpgradeProposalOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/upgrade/v1beta1/CancelSoftwareUpgradeProposalOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/upgrade/v1beta1/CancelSoftwareUpgradeProposalOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/upgrade/v1beta1/CancelSoftwareUpgradeProposalOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/upgrade/v1beta1/ModuleVersion.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/upgrade/v1beta1/ModuleVersion.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/upgrade/v1beta1/ModuleVersion.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/upgrade/v1beta1/ModuleVersion.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/upgrade/v1beta1/ModuleVersionOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/upgrade/v1beta1/ModuleVersionOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/upgrade/v1beta1/ModuleVersionOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/upgrade/v1beta1/ModuleVersionOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/upgrade/v1beta1/Plan.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/upgrade/v1beta1/Plan.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/upgrade/v1beta1/Plan.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/upgrade/v1beta1/Plan.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/upgrade/v1beta1/PlanOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/upgrade/v1beta1/PlanOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/upgrade/v1beta1/PlanOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/upgrade/v1beta1/PlanOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/upgrade/v1beta1/SoftwareUpgradeProposal.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/upgrade/v1beta1/SoftwareUpgradeProposal.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/upgrade/v1beta1/SoftwareUpgradeProposal.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/upgrade/v1beta1/SoftwareUpgradeProposal.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/upgrade/v1beta1/SoftwareUpgradeProposalOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/upgrade/v1beta1/SoftwareUpgradeProposalOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/upgrade/v1beta1/SoftwareUpgradeProposalOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/upgrade/v1beta1/SoftwareUpgradeProposalOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/upgrade/v1beta1/UpgradeProto.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/upgrade/v1beta1/UpgradeProto.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos/upgrade/v1beta1/UpgradeProto.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos/upgrade/v1beta1/UpgradeProto.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos_proto/CosmosProto.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos_proto/CosmosProto.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos_proto/CosmosProto.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos_proto/CosmosProto.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos_proto/InterfaceDescriptor.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos_proto/InterfaceDescriptor.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos_proto/InterfaceDescriptor.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos_proto/InterfaceDescriptor.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos_proto/InterfaceDescriptorOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos_proto/InterfaceDescriptorOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos_proto/InterfaceDescriptorOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos_proto/InterfaceDescriptorOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos_proto/ScalarDescriptor.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos_proto/ScalarDescriptor.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos_proto/ScalarDescriptor.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos_proto/ScalarDescriptor.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos_proto/ScalarDescriptorOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos_proto/ScalarDescriptorOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos_proto/ScalarDescriptorOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos_proto/ScalarDescriptorOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos_proto/ScalarType.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos_proto/ScalarType.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/cosmos_proto/ScalarType.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/cosmos_proto/ScalarType.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/gogoproto/GogoProto.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/gogoproto/GogoProto.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/gogoproto/GogoProto.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/gogoproto/GogoProto.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/client/v1/ClientConsensusStates.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/client/v1/ClientConsensusStates.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/client/v1/ClientConsensusStates.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/client/v1/ClientConsensusStates.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/client/v1/ClientConsensusStatesOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/client/v1/ClientConsensusStatesOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/client/v1/ClientConsensusStatesOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/client/v1/ClientConsensusStatesOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/client/v1/ClientProto.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/client/v1/ClientProto.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/client/v1/ClientProto.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/client/v1/ClientProto.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/client/v1/ClientUpdateProposal.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/client/v1/ClientUpdateProposal.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/client/v1/ClientUpdateProposal.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/client/v1/ClientUpdateProposal.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/client/v1/ClientUpdateProposalOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/client/v1/ClientUpdateProposalOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/client/v1/ClientUpdateProposalOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/client/v1/ClientUpdateProposalOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/client/v1/ConsensusStateWithHeight.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/client/v1/ConsensusStateWithHeight.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/client/v1/ConsensusStateWithHeight.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/client/v1/ConsensusStateWithHeight.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/client/v1/ConsensusStateWithHeightOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/client/v1/ConsensusStateWithHeightOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/client/v1/ConsensusStateWithHeightOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/client/v1/ConsensusStateWithHeightOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/client/v1/Height.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/client/v1/Height.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/client/v1/Height.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/client/v1/Height.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/client/v1/HeightOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/client/v1/HeightOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/client/v1/HeightOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/client/v1/HeightOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/client/v1/IdentifiedClientState.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/client/v1/IdentifiedClientState.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/client/v1/IdentifiedClientState.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/client/v1/IdentifiedClientState.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/client/v1/IdentifiedClientStateOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/client/v1/IdentifiedClientStateOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/client/v1/IdentifiedClientStateOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/client/v1/IdentifiedClientStateOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/client/v1/Params.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/client/v1/Params.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/client/v1/Params.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/client/v1/Params.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/client/v1/ParamsOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/client/v1/ParamsOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/client/v1/ParamsOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/client/v1/ParamsOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/client/v1/UpgradeProposal.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/client/v1/UpgradeProposal.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/client/v1/UpgradeProposal.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/client/v1/UpgradeProposal.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/client/v1/UpgradeProposalOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/client/v1/UpgradeProposalOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/client/v1/UpgradeProposalOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/client/v1/UpgradeProposalOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/commitment/v1/CommitmentProto.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/commitment/v1/CommitmentProto.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/commitment/v1/CommitmentProto.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/commitment/v1/CommitmentProto.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/commitment/v1/MerklePath.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/commitment/v1/MerklePath.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/commitment/v1/MerklePath.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/commitment/v1/MerklePath.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/commitment/v1/MerklePathOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/commitment/v1/MerklePathOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/commitment/v1/MerklePathOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/commitment/v1/MerklePathOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/commitment/v1/MerklePrefix.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/commitment/v1/MerklePrefix.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/commitment/v1/MerklePrefix.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/commitment/v1/MerklePrefix.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/commitment/v1/MerklePrefixOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/commitment/v1/MerklePrefixOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/commitment/v1/MerklePrefixOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/commitment/v1/MerklePrefixOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/commitment/v1/MerkleProof.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/commitment/v1/MerkleProof.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/commitment/v1/MerkleProof.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/commitment/v1/MerkleProof.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/commitment/v1/MerkleProofOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/commitment/v1/MerkleProofOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/commitment/v1/MerkleProofOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/commitment/v1/MerkleProofOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/commitment/v1/MerkleRoot.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/commitment/v1/MerkleRoot.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/commitment/v1/MerkleRoot.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/commitment/v1/MerkleRoot.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/commitment/v1/MerkleRootOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/commitment/v1/MerkleRootOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/core/commitment/v1/MerkleRootOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/core/commitment/v1/MerkleRootOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/lightclients/tendermint/v1/ClientState.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/lightclients/tendermint/v1/ClientState.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/lightclients/tendermint/v1/ClientState.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/lightclients/tendermint/v1/ClientState.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/lightclients/tendermint/v1/ClientStateOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/lightclients/tendermint/v1/ClientStateOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/lightclients/tendermint/v1/ClientStateOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/lightclients/tendermint/v1/ClientStateOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/lightclients/tendermint/v1/ConsensusState.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/lightclients/tendermint/v1/ConsensusState.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/lightclients/tendermint/v1/ConsensusState.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/lightclients/tendermint/v1/ConsensusState.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/lightclients/tendermint/v1/ConsensusStateOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/lightclients/tendermint/v1/ConsensusStateOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/lightclients/tendermint/v1/ConsensusStateOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/lightclients/tendermint/v1/ConsensusStateOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/lightclients/tendermint/v1/Fraction.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/lightclients/tendermint/v1/Fraction.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/lightclients/tendermint/v1/Fraction.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/lightclients/tendermint/v1/Fraction.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/lightclients/tendermint/v1/FractionOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/lightclients/tendermint/v1/FractionOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/lightclients/tendermint/v1/FractionOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/lightclients/tendermint/v1/FractionOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/lightclients/tendermint/v1/Header.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/lightclients/tendermint/v1/Header.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/lightclients/tendermint/v1/Header.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/lightclients/tendermint/v1/Header.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/lightclients/tendermint/v1/HeaderOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/lightclients/tendermint/v1/HeaderOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/lightclients/tendermint/v1/HeaderOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/lightclients/tendermint/v1/HeaderOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/lightclients/tendermint/v1/Misbehaviour.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/lightclients/tendermint/v1/Misbehaviour.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/lightclients/tendermint/v1/Misbehaviour.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/lightclients/tendermint/v1/Misbehaviour.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/lightclients/tendermint/v1/MisbehaviourOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/lightclients/tendermint/v1/MisbehaviourOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/lightclients/tendermint/v1/MisbehaviourOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/lightclients/tendermint/v1/MisbehaviourOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/lightclients/tendermint/v1/TendermintLightProto.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/lightclients/tendermint/v1/TendermintLightProto.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/ibc/lightclients/tendermint/v1/TendermintLightProto.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/ibc/lightclients/tendermint/v1/TendermintLightProto.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/lightclient/v1/BlockUpdate.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/lightclient/v1/BlockUpdate.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/lightclient/v1/BlockUpdate.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/lightclient/v1/BlockUpdate.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/lightclient/v1/BlockUpdateOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/lightclient/v1/BlockUpdateOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/lightclient/v1/BlockUpdateOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/lightclient/v1/BlockUpdateOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/lightclient/v1/ClientState.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/lightclient/v1/ClientState.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/lightclient/v1/ClientState.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/lightclient/v1/ClientState.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/lightclient/v1/ClientStateOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/lightclient/v1/ClientStateOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/lightclient/v1/ClientStateOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/lightclient/v1/ClientStateOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/lightclient/v1/ConsensusState.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/lightclient/v1/ConsensusState.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/lightclient/v1/ConsensusState.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/lightclient/v1/ConsensusState.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/lightclient/v1/ConsensusStateOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/lightclient/v1/ConsensusStateOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/lightclient/v1/ConsensusStateOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/lightclient/v1/ConsensusStateOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/lightclient/v1/LightProto.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/lightclient/v1/LightProto.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/lightclient/v1/LightProto.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/lightclient/v1/LightProto.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/lightclient/v1/Misbehaviour.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/lightclient/v1/Misbehaviour.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/lightclient/v1/Misbehaviour.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/lightclient/v1/Misbehaviour.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/lightclient/v1/MisbehaviourOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/lightclient/v1/MisbehaviourOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/lightclient/v1/MisbehaviourOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/lightclient/v1/MisbehaviourOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/lightclient/v1/TrustLevel.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/lightclient/v1/TrustLevel.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/lightclient/v1/TrustLevel.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/lightclient/v1/TrustLevel.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/lightclient/v1/TrustLevelOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/lightclient/v1/TrustLevelOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/lightclient/v1/TrustLevelOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/lightclient/v1/TrustLevelOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/channel/Channel.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/channel/Channel.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/channel/Channel.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/channel/Channel.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/channel/ChannelOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/channel/ChannelOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/channel/ChannelOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/channel/ChannelOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/channel/ChannelProto.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/channel/ChannelProto.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/channel/ChannelProto.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/channel/ChannelProto.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/channel/Packet.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/channel/Packet.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/channel/Packet.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/channel/Packet.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/channel/PacketOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/channel/PacketOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/channel/PacketOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/channel/PacketOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/channel/PacketState.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/channel/PacketState.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/channel/PacketState.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/channel/PacketState.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/channel/PacketStateOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/channel/PacketStateOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/channel/PacketStateOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/channel/PacketStateOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/client/ClientProto.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/client/ClientProto.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/client/ClientProto.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/client/ClientProto.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/client/Height.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/client/Height.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/client/Height.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/client/Height.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/client/HeightOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/client/HeightOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/client/HeightOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/client/HeightOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/BatchEntry.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/BatchEntry.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/BatchEntry.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/BatchEntry.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/BatchEntryOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/BatchEntryOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/BatchEntryOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/BatchEntryOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/BatchProof.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/BatchProof.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/BatchProof.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/BatchProof.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/BatchProofOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/BatchProofOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/BatchProofOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/BatchProofOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/CommitmentProof.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/CommitmentProof.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/CommitmentProof.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/CommitmentProof.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/CommitmentProofOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/CommitmentProofOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/CommitmentProofOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/CommitmentProofOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/CommitmentProto.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/CommitmentProto.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/CommitmentProto.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/CommitmentProto.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/CompressedBatchEntry.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/CompressedBatchEntry.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/CompressedBatchEntry.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/CompressedBatchEntry.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/CompressedBatchEntryOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/CompressedBatchEntryOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/CompressedBatchEntryOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/CompressedBatchEntryOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/CompressedBatchProof.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/CompressedBatchProof.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/CompressedBatchProof.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/CompressedBatchProof.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/CompressedBatchProofOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/CompressedBatchProofOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/CompressedBatchProofOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/CompressedBatchProofOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/CompressedExistenceProof.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/CompressedExistenceProof.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/CompressedExistenceProof.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/CompressedExistenceProof.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/CompressedExistenceProofOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/CompressedExistenceProofOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/CompressedExistenceProofOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/CompressedExistenceProofOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/CompressedNonExistenceProof.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/CompressedNonExistenceProof.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/CompressedNonExistenceProof.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/CompressedNonExistenceProof.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/CompressedNonExistenceProofOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/CompressedNonExistenceProofOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/CompressedNonExistenceProofOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/CompressedNonExistenceProofOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/ExistenceProof.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/ExistenceProof.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/ExistenceProof.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/ExistenceProof.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/ExistenceProofOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/ExistenceProofOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/ExistenceProofOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/ExistenceProofOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/HashOp.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/HashOp.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/HashOp.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/HashOp.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/InnerOp.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/InnerOp.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/InnerOp.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/InnerOp.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/InnerOpOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/InnerOpOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/InnerOpOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/InnerOpOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/InnerSpec.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/InnerSpec.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/InnerSpec.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/InnerSpec.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/InnerSpecOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/InnerSpecOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/InnerSpecOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/InnerSpecOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/LeafOp.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/LeafOp.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/LeafOp.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/LeafOp.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/LeafOpOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/LeafOpOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/LeafOpOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/LeafOpOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/LengthOp.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/LengthOp.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/LengthOp.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/LengthOp.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/MerklePath.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/MerklePath.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/MerklePath.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/MerklePath.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/MerklePathOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/MerklePathOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/MerklePathOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/MerklePathOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/MerklePrefix.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/MerklePrefix.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/MerklePrefix.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/MerklePrefix.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/MerklePrefixOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/MerklePrefixOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/MerklePrefixOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/MerklePrefixOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/MerkleProof.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/MerkleProof.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/MerkleProof.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/MerkleProof.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/MerkleProofOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/MerkleProofOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/MerkleProofOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/MerkleProofOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/MerkleRoot.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/MerkleRoot.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/MerkleRoot.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/MerkleRoot.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/MerkleRootOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/MerkleRootOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/MerkleRootOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/MerkleRootOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/NonExistenceProof.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/NonExistenceProof.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/NonExistenceProof.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/NonExistenceProof.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/NonExistenceProofOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/NonExistenceProofOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/NonExistenceProofOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/NonExistenceProofOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/ProofSpec.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/ProofSpec.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/ProofSpec.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/ProofSpec.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/ProofSpecOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/ProofSpecOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/ProofSpecOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/ProofSpecOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/ProofsProto.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/ProofsProto.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/commitment/ProofsProto.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/commitment/ProofsProto.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/connection/ConnectionEnd.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/connection/ConnectionEnd.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/connection/ConnectionEnd.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/connection/ConnectionEnd.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/connection/ConnectionEndOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/connection/ConnectionEndOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/connection/ConnectionEndOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/connection/ConnectionEndOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/connection/ConnectionProto.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/connection/ConnectionProto.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/connection/ConnectionProto.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/connection/ConnectionProto.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/connection/Counterparty.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/connection/Counterparty.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/connection/Counterparty.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/connection/Counterparty.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/connection/CounterpartyOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/connection/CounterpartyOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/connection/CounterpartyOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/connection/CounterpartyOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/connection/Version.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/connection/Version.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/connection/Version.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/connection/Version.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/connection/VersionOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/connection/VersionOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/proto/core/connection/VersionOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/proto/core/connection/VersionOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/types/v1/BTPHeader.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/types/v1/BTPHeader.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/types/v1/BTPHeader.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/types/v1/BTPHeader.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/types/v1/BTPHeaderOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/types/v1/BTPHeaderOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/types/v1/BTPHeaderOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/types/v1/BTPHeaderOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/types/v1/BlockIDFlag.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/types/v1/BlockIDFlag.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/types/v1/BlockIDFlag.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/types/v1/BlockIDFlag.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/types/v1/MerkleNode.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/types/v1/MerkleNode.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/types/v1/MerkleNode.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/types/v1/MerkleNode.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/types/v1/MerkleNodeOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/types/v1/MerkleNodeOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/types/v1/MerkleNodeOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/types/v1/MerkleNodeOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/types/v1/MerkleProofs.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/types/v1/MerkleProofs.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/types/v1/MerkleProofs.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/types/v1/MerkleProofs.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/types/v1/MerkleProofsOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/types/v1/MerkleProofsOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/types/v1/MerkleProofsOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/types/v1/MerkleProofsOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/types/v1/SignedHeader.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/types/v1/SignedHeader.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/types/v1/SignedHeader.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/types/v1/SignedHeader.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/types/v1/SignedHeaderOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/types/v1/SignedHeaderOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/types/v1/SignedHeaderOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/types/v1/SignedHeaderOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/types/v1/SignedMsgType.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/types/v1/SignedMsgType.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/types/v1/SignedMsgType.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/types/v1/SignedMsgType.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/types/v1/TypesProto.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/types/v1/TypesProto.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/icon/types/v1/TypesProto.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/icon/types/v1/TypesProto.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/crypto/DominoOp.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/crypto/DominoOp.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/crypto/DominoOp.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/crypto/DominoOp.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/crypto/DominoOpOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/crypto/DominoOpOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/crypto/DominoOpOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/crypto/DominoOpOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/crypto/KeysProto.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/crypto/KeysProto.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/crypto/KeysProto.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/crypto/KeysProto.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/crypto/Proof.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/crypto/Proof.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/crypto/Proof.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/crypto/Proof.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/crypto/ProofOp.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/crypto/ProofOp.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/crypto/ProofOp.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/crypto/ProofOp.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/crypto/ProofOpOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/crypto/ProofOpOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/crypto/ProofOpOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/crypto/ProofOpOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/crypto/ProofOps.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/crypto/ProofOps.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/crypto/ProofOps.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/crypto/ProofOps.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/crypto/ProofOpsOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/crypto/ProofOpsOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/crypto/ProofOpsOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/crypto/ProofOpsOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/crypto/ProofOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/crypto/ProofOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/crypto/ProofOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/crypto/ProofOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/crypto/ProofProto.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/crypto/ProofProto.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/crypto/ProofProto.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/crypto/ProofProto.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/crypto/PublicKey.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/crypto/PublicKey.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/crypto/PublicKey.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/crypto/PublicKey.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/crypto/PublicKeyOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/crypto/PublicKeyOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/crypto/PublicKeyOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/crypto/PublicKeyOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/crypto/ValueOp.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/crypto/ValueOp.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/crypto/ValueOp.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/crypto/ValueOp.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/crypto/ValueOpOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/crypto/ValueOpOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/crypto/ValueOpOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/crypto/ValueOpOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/BlockID.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/BlockID.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/BlockID.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/BlockID.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/BlockIDFlag.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/BlockIDFlag.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/BlockIDFlag.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/BlockIDFlag.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/BlockIDOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/BlockIDOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/BlockIDOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/BlockIDOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/BlockMeta.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/BlockMeta.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/BlockMeta.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/BlockMeta.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/BlockMetaOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/BlockMetaOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/BlockMetaOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/BlockMetaOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/Commit.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/Commit.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/Commit.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/Commit.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/CommitOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/CommitOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/CommitOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/CommitOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/CommitSig.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/CommitSig.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/CommitSig.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/CommitSig.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/CommitSigOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/CommitSigOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/CommitSigOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/CommitSigOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/Data.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/Data.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/Data.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/Data.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/DataOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/DataOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/DataOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/DataOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/Header.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/Header.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/Header.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/Header.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/HeaderOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/HeaderOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/HeaderOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/HeaderOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/LightBlock.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/LightBlock.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/LightBlock.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/LightBlock.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/LightBlockOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/LightBlockOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/LightBlockOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/LightBlockOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/Part.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/Part.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/Part.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/Part.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/PartOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/PartOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/PartOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/PartOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/PartSetHeader.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/PartSetHeader.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/PartSetHeader.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/PartSetHeader.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/PartSetHeaderOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/PartSetHeaderOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/PartSetHeaderOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/PartSetHeaderOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/Proposal.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/Proposal.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/Proposal.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/Proposal.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/ProposalOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/ProposalOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/ProposalOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/ProposalOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/SignedHeader.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/SignedHeader.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/SignedHeader.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/SignedHeader.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/SignedHeaderOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/SignedHeaderOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/SignedHeaderOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/SignedHeaderOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/SignedMsgType.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/SignedMsgType.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/SignedMsgType.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/SignedMsgType.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/SimpleValidator.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/SimpleValidator.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/SimpleValidator.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/SimpleValidator.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/SimpleValidatorOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/SimpleValidatorOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/SimpleValidatorOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/SimpleValidatorOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/TxProof.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/TxProof.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/TxProof.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/TxProof.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/TxProofOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/TxProofOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/TxProofOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/TxProofOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/TypesProto.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/TypesProto.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/TypesProto.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/TypesProto.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/Validator.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/Validator.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/Validator.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/Validator.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/ValidatorOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/ValidatorOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/ValidatorOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/ValidatorOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/ValidatorProto.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/ValidatorProto.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/ValidatorProto.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/ValidatorProto.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/ValidatorSet.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/ValidatorSet.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/ValidatorSet.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/ValidatorSet.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/ValidatorSetOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/ValidatorSetOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/ValidatorSetOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/ValidatorSetOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/Vote.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/Vote.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/Vote.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/Vote.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/VoteOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/VoteOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/types/VoteOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/types/VoteOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/version/App.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/version/App.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/version/App.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/version/App.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/version/AppOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/version/AppOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/version/AppOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/version/AppOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/version/Consensus.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/version/Consensus.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/version/Consensus.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/version/Consensus.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/version/ConsensusOrBuilder.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/version/ConsensusOrBuilder.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/version/ConsensusOrBuilder.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/version/ConsensusOrBuilder.java diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/version/TypesProto.java b/contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/version/TypesProto.java similarity index 100% rename from contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/test/proto/tendermint/version/TypesProto.java rename to contracts/javascore/lightclients/ics-08-tendermint/src/test/java/ibc/ics08/tendermint/test/proto/tendermint/version/TypesProto.java diff --git a/contracts/javascore/lightclients/tendermint/build.gradle b/contracts/javascore/lightclients/tendermint/build.gradle index eedfc9ade..53ee7d3c0 100644 --- a/contracts/javascore/lightclients/tendermint/build.gradle +++ b/contracts/javascore/lightclients/tendermint/build.gradle @@ -6,11 +6,9 @@ dependencies { implementation project(':lib') implementation project(':score-util') implementation project(':ibc') - implementation project(':proto-lib') testImplementation 'com.google.protobuf:protobuf-javalite:3.16.3' - testImplementation 'com.google.protobuf:protobuf-java-util:3.16.3' testImplementation 'foundation.icon:javaee-rt:0.9.3' testImplementation("org.mockito:mockito-core:$mockitoCoreVersion") testImplementation("org.mockito:mockito-inline:$mockitoCoreVersion") @@ -27,7 +25,7 @@ dependencies { test { useJUnitPlatform() - finalizedBy jacocoTestReport + // finalizedBy jacocoTestReport } jacocoTestReport { @@ -37,7 +35,6 @@ jacocoTestReport { dependsOn ':ibc:jacocoTestReport' dependsOn ':ibc:processTestResources' dependsOn ':lib:test' - dependsOn ':proto-lib:test' dependsOn ':mockapp:compileJava' dependsOn ':mockapp:test' dependsOn ':proto-util:compileJava' diff --git a/contracts/javascore/lightclients/tendermint/src/main/java/ibc/tendermint/Tendermint.java b/contracts/javascore/lightclients/tendermint/src/main/java/ibc/tendermint/Tendermint.java index 7f2e99b63..11f3aa8ff 100644 --- a/contracts/javascore/lightclients/tendermint/src/main/java/ibc/tendermint/Tendermint.java +++ b/contracts/javascore/lightclients/tendermint/src/main/java/ibc/tendermint/Tendermint.java @@ -4,9 +4,7 @@ import java.util.Arrays; import ibc.icon.score.util.Proto; -import tendermint.types.*; -import google.protobuf.*; -import ibc.lightclients.tendermint.v1.*; +import icon.proto.clients.tendermint.*; import score.Context; import static ibc.tendermint.TendermintHelper.*; @@ -258,7 +256,7 @@ protected byte[] voteSignBytes( String chainID, int idx) { - return toCanonicalVote(commit, idx, chainID); + return toCanonicalVote(commit, idx, chainID).encode(); } protected byte[] voteSignBytesDelim( diff --git a/contracts/javascore/lightclients/tendermint/src/main/java/ibc/tendermint/TendermintHelper.java b/contracts/javascore/lightclients/tendermint/src/main/java/ibc/tendermint/TendermintHelper.java index d11c56d1c..a0ea42cfc 100644 --- a/contracts/javascore/lightclients/tendermint/src/main/java/ibc/tendermint/TendermintHelper.java +++ b/contracts/javascore/lightclients/tendermint/src/main/java/ibc/tendermint/TendermintHelper.java @@ -5,38 +5,40 @@ import ibc.icon.score.util.MerkleTree; import ibc.icon.score.util.Proto; -import ibc.icon.score.util.ByteUtil; -import tendermint.types.Commit; -import tendermint.types.CommitSig; -import ibc.lightclients.tendermint.v1.ConsensusState; -import tendermint.types.Header; +import icon.proto.clients.tendermint.CanonicalVote; +import icon.proto.clients.tendermint.Commit; +import icon.proto.clients.tendermint.CommitSig; +import icon.proto.clients.tendermint.ConsensusState; +import icon.proto.clients.tendermint.Duration; +import icon.proto.clients.tendermint.LightHeader; +import icon.proto.clients.tendermint.SignedHeader; +import icon.proto.clients.tendermint.SignedMsgType; +import icon.proto.clients.tendermint.SimpleValidator; +import icon.proto.clients.tendermint.Timestamp; +import icon.proto.clients.tendermint.TmHeader; +import icon.proto.clients.tendermint.Validator; +import icon.proto.clients.tendermint.ValidatorSet; import ibc.core.commitment.v1.MerkleRoot; -import tendermint.types.SignedHeader; -import tendermint.types.SignedMsgType; -import tendermint.types.SimpleValidator; -import tendermint.types.Validator; -import tendermint.types.ValidatorSet; -import ibc.core.client.v1.Height; - -import google.protobuf.Timestamp; -import google.protobuf.Duration; +import icon.proto.core.client.Height; import score.Context; public class TendermintHelper { public static final BigInteger MICRO_SECONDS_IN_A_SECOND = BigInteger.valueOf(1_000_000); - public static byte[] toCanonicalVote(Commit commit, int valIdx, String chainId) { + public static CanonicalVote toCanonicalVote(Commit commit, int valIdx, String chainId) { CommitSig commitSig = commit.getSignatures().get(valIdx); - return ByteUtil.join( - Proto.encode(1, SignedMsgType.SIGNED_MSG_TYPE_PRECOMMIT), - Proto.encodeFixed64(2, commit.getHeight()), - Proto.encodeFixed64(3, commit.getRound()), - Proto.encode(4, commit.getBlockId()), - Proto.encode(5, commitSig.getTimestamp()), - Proto.encode(6, chainId)); + CanonicalVote vote = new CanonicalVote(); + + vote.setType(SignedMsgType.SIGNED_MSG_TYPE_PRECOMMIT); + vote.setHeight(commit.getHeight()); + vote.setRound(commit.getRound()); + vote.setBlockId(commit.getBlockId()); + vote.setTimestamp(commitSig.getTimestamp()); + vote.setChainId(chainId); + return vote; } - public static ConsensusState toConsensusState(ibc.lightclients.tendermint.v1.Header header) { + public static ConsensusState toConsensusState(TmHeader header) { ConsensusState state = new ConsensusState(); state.setNextValidatorsHash(header.getSignedHeader().getHeader().getNextValidatorsHash()); state.setTimestamp(header.getSignedHeader().getHeader().getTime()); @@ -57,14 +59,6 @@ public static BigInteger getTotalVotingPower(ValidatorSet validatorSet) { return validatorSet.getTotalVotingPower(); } - public static BigInteger getRevisionNumber(String chainId) { - int id = chainId.indexOf("-"); - if (id >= 0) { - return new BigInteger(chainId.substring(id+1)); - } - return BigInteger.ZERO; - } - public static int getByAddress(ValidatorSet validatorSet, byte[] addr) { int size = validatorSet.getValidators().size(); for (int idx = 0; idx < size; idx++) { @@ -76,10 +70,10 @@ public static int getByAddress(ValidatorSet validatorSet, byte[] addr) { return -1; } - public static Height newHeight(BigInteger blockHeight, BigInteger revision) { + public static Height newHeight(BigInteger blockHeight) { Height height = new Height(); height.setRevisionHeight(blockHeight); - height.setRevisionNumber(revision); + height.setRevisionNumber(BigInteger.ZERO); return height; } @@ -135,7 +129,7 @@ public static byte[] hash(ValidatorSet validatorSet) { return MerkleTree.merkleRootHash(data, 0, size); } - public static byte[] hash(Header header) { + public static byte[] hash(LightHeader header) { byte[] hbz = Proto.encode(1, header.getVersion().getBlock()); byte[] pbt = header.getTime().encode(); byte[] bzbi = header.getLastBlockId().encode(); diff --git a/contracts/javascore/lightclients/tendermint/src/main/java/ibc/tendermint/TendermintLightClient.java b/contracts/javascore/lightclients/tendermint/src/main/java/ibc/tendermint/TendermintLightClient.java index fbe9cc0c0..aff686b6f 100644 --- a/contracts/javascore/lightclients/tendermint/src/main/java/ibc/tendermint/TendermintLightClient.java +++ b/contracts/javascore/lightclients/tendermint/src/main/java/ibc/tendermint/TendermintLightClient.java @@ -1,23 +1,19 @@ package ibc.tendermint; -import icon.ibc.interfaces.ILightClient; +import icon.ibc.interfaces.ILightClient;; import ibc.icon.score.util.ByteUtil; import ibc.icon.score.util.NullChecker; import ibc.icon.score.util.StringUtil; import ibc.ics23.commitment.types.Merkle; import ibc.ics24.host.IBCCommitment; -import cosmos.ics23.v1.*; -import google.protobuf.*; -import tendermint.types.*; -import ibc.core.commitment.v1.*; -import ibc.lightclients.tendermint.v1.*; -import ibc.core.client.v1.Height; +import icon.proto.clients.tendermint.*; +import icon.proto.core.client.Height; +import ibc.core.commitment.v1.MerkleProof; import score.Address; import score.BranchDB; import score.Context; import score.DictDB; import score.annotation.External; -import score.annotation.Optional; import java.math.BigInteger; import java.util.Arrays; @@ -76,7 +72,7 @@ public byte[] getLatestHeight(String clientId) { byte[] encodedClientState = clientStates.get(clientId); NullChecker.requireNotNull(encodedClientState, "Client does not exist"); ClientState clientState = ClientState.decode(encodedClientState); - return clientState.getLatestHeight().encode(); + return newHeight(clientState.getLatestHeight()).encode(); } @External(readonly = true) @@ -105,12 +101,12 @@ public Map createClient(String clientId, byte[] clientStateBytes "trustLevel has zero Denominator"); clientStates.set(clientId, clientStateBytes); - consensusStates.at(clientId).set(clientState.getLatestHeight().getRevisionHeight(), consensusStateBytes); + consensusStates.at(clientId).set(clientState.getLatestHeight(), consensusStateBytes); return Map.of( "clientStateCommitment", IBCCommitment.keccak256(clientStateBytes), "consensusStateCommitment", IBCCommitment.keccak256(consensusStateBytes), - "height", clientState.getLatestHeight().encode()); + "height", newHeight(clientState.getLatestHeight()).encode()); } /** @@ -119,8 +115,9 @@ public Map createClient(String clientId, byte[] clientStateBytes @External public Map updateClient(String clientId, byte[] clientMessageBytes) { onlyHandler(); - ibc.lightclients.tendermint.v1.Header tmHeader = ibc.lightclients.tendermint.v1.Header.decode(clientMessageBytes); + TmHeader tmHeader = TmHeader.decode(clientMessageBytes); boolean conflictingHeader = false; + // Check if the Client store already has a consensus state for the header's // height // If the consensus state exists, and it matches the header then we return early @@ -143,7 +140,7 @@ public Map updateClient(String clientId, byte[] clientMessageByt byte[] encodedClientState = clientStates.get(clientId); require(encodedClientState != null, "LC: client state is invalid"); ClientState clientState = ClientState.decode(encodedClientState); - byte[] encodedTrustedonsensusState = consensusStates.at(clientId).get(tmHeader.getTrustedHeight().getRevisionHeight()); + byte[] encodedTrustedonsensusState = consensusStates.at(clientId).get(tmHeader.getTrustedHeight()); require(encodedTrustedonsensusState != null, "LC: consensusState not found at trusted height"); ConsensusState trustedConsensusState = ConsensusState.decode(encodedTrustedonsensusState); @@ -153,13 +150,12 @@ public Map updateClient(String clientId, byte[] clientMessageByt // Header is different from existing consensus state and also valid, so freeze // the client and return if (conflictingHeader) { - BigInteger revision = getRevisionNumber(tmHeader.getSignedHeader().getHeader().getChainId()); - clientState.setFrozenHeight(newHeight(tmHeader.getSignedHeader().getHeader().getHeight(), revision)); + clientState.setFrozenHeight(tmHeader.getSignedHeader().getHeader().getHeight()); encodedClientState = clientState.encode(); clientStates.set(clientId, encodedClientState); byte[] encodedConsensusState = toConsensusState(tmHeader).encode(); - consensusStates.at(clientId).set(clientState.getLatestHeight().getRevisionHeight(), encodedConsensusState); + consensusStates.at(clientId).set(clientState.getLatestHeight(), encodedConsensusState); processedHeights.at(clientId).set(tmHeader.getSignedHeader().getHeader().getHeight(), BigInteger.valueOf(Context.getBlockHeight())); processedTimes.at(clientId).set(tmHeader.getSignedHeader().getHeader().getHeight(), @@ -169,13 +165,12 @@ public Map updateClient(String clientId, byte[] clientMessageByt "clientStateCommitment", IBCCommitment.keccak256(encodedClientState), "consensusStateCommitment", IBCCommitment.keccak256(encodedConsensusState), "height", - newHeight(tmHeader.getSignedHeader().getHeader().getHeight(), revision).encode()); + newHeight(tmHeader.getSignedHeader().getHeader().getHeight()).encode()); } // update the consensus state from a new header and set processed time metadata - if (tmHeader.getSignedHeader().getHeader().getHeight().compareTo(clientState.getLatestHeight().getRevisionHeight()) > 0) { - BigInteger revision = getRevisionNumber(tmHeader.getSignedHeader().getHeader().getChainId()); - clientState.setLatestHeight(newHeight(tmHeader.getSignedHeader().getHeader().getHeight(), revision)); + if (tmHeader.getSignedHeader().getHeader().getHeight().compareTo(clientState.getLatestHeight()) > 0) { + clientState.setLatestHeight(tmHeader.getSignedHeader().getHeader().getHeight()); encodedClientState = clientState.encode(); clientStates.set(clientId, encodedClientState); } @@ -191,7 +186,7 @@ public Map updateClient(String clientId, byte[] clientMessageByt return Map.of( "clientStateCommitment", IBCCommitment.keccak256(encodedClientState), "consensusStateCommitment", IBCCommitment.keccak256(encodedConsensusState), - "height", clientState.getLatestHeight().encode()); + "height", newHeight(clientState.getLatestHeight()).encode()); } @External(readonly = true) @@ -218,7 +213,7 @@ public void verifyMembership( var root = consensusState.getRoot(); var merkleProof = MerkleProof.decode(proof); - var merklePath = applyPrefix(new String(path)); + var merklePath = applyPrefix(StringUtil.bytesToHex("wasm".getBytes()), new String(path)); Merkle.verifyMembership(merkleProof, Merkle.SDK_SPEC, root, merklePath, value); } @@ -245,7 +240,7 @@ public void verifyNonMembership( var root = consensusState.getRoot(); var merkleProof = MerkleProof.decode(proof); - var merklePath = applyPrefix(new String(path)); + var merklePath = applyPrefix(StringUtil.bytesToHex("wasm".getBytes()), new String(path)); Merkle.verifyNonMembership(merkleProof, Merkle.SDK_SPEC, root, merklePath); } @@ -254,17 +249,17 @@ public void verifyNonMembership( public void checkValidity( ClientState clientState, ConsensusState trustedConsensusState, - ibc.lightclients.tendermint.v1.Header tmHeader, + TmHeader tmHeader, Timestamp currentTime) { // assert header height is newer than consensus state require( tmHeader.getSignedHeader().getHeader().getHeight() - .compareTo(tmHeader.getTrustedHeight().getRevisionHeight()) > 0, + .compareTo(tmHeader.getTrustedHeight()) > 0, "LC: Trusted height is higher than untrusted header height"); - tendermint.types.Header lc = new tendermint.types.Header(); + LightHeader lc = new LightHeader(); lc.setChainId(clientState.getChainId()); - lc.setHeight(tmHeader.getTrustedHeight().getRevisionHeight()); + lc.setHeight(tmHeader.getTrustedHeight()); lc.setTime(trustedConsensusState.getTimestamp()); lc.setNextValidatorsHash(trustedConsensusState.getNextValidatorsHash()); @@ -292,10 +287,10 @@ public void checkValidity( } private void validateArgs(ClientState cs, BigInteger height, byte[] prefix, byte[] proof) { - Context.require(cs.getLatestHeight().getRevisionHeight().compareTo(height) >= 0, + Context.require(cs.getLatestHeight().compareTo(height) >= 0, "Latest height must be greater or equal to proof height"); - Context.require(cs.getFrozenHeight().getRevisionHeight().equals(BigInteger.ZERO) || - cs.getFrozenHeight().getRevisionHeight().compareTo(height) >= 0, + Context.require(cs.getFrozenHeight().equals(BigInteger.ZERO) || + cs.getFrozenHeight().compareTo(height) >= 0, "Client is Frozen"); Context.require(prefix.length > 0, "Prefix cant be empty"); Context.require(proof.length > 0, "Proof cant be empty"); diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/LightClientTest.java b/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/LightClientTest.java index d6e80de32..b7260667c 100644 --- a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/LightClientTest.java +++ b/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/LightClientTest.java @@ -9,20 +9,19 @@ import java.math.BigInteger; - -import com.google.protobuf.Timestamp; -import com.google.protobuf.Duration; - import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import com.ibc.core.client.v1.Height; - +import ibc.tendermint.light.TendermintLight.ClientState; +import ibc.tendermint.light.TendermintLight.ConsensusState; +import ibc.tendermint.light.TendermintLight.Duration; +import ibc.tendermint.light.TendermintLight.Fraction; +import ibc.tendermint.light.TendermintLight.SignedHeader; +import icon.proto.clients.tendermint.Timestamp; +import icon.proto.clients.tendermint.TmHeader; +import icon.proto.core.client.Height; import score.Address; -import com.ibc.lightclients.tendermint.v1.*; -import com.tendermint.types.*; - public class LightClientTest extends LightClientTestBase { @BeforeEach @@ -40,11 +39,11 @@ void createClient() throws Exception { // Assert ClientState clientState = getClientState(); - assertEquals(clientState.getLatestHeight().getRevisionHeight(), initialHeader.getHeader().getHeight()); + assertEquals(clientState.getLatestHeight(), initialHeader.getHeader().getHeight()); assertEquals(clientState.getAllowUpdateAfterExpiry(), allowUpdateAfterExpiry); assertEquals(clientState.getAllowUpdateAfterMisbehaviour(), allowUpdateAfterMisbehaviour); assertEquals(clientState.getChainId(), initialHeader.getHeader().getChainId()); - assertEquals(clientState.getFrozenHeight(), Height.newBuilder().build()); + assertEquals(clientState.getFrozenHeight(), 0); assertEquals(clientState.getMaxClockDrift(), maxClockDrift); assertEquals(clientState.getTrustLevel(), trustLevel); assertEquals(clientState.getTrustingPeriod(), trustingPeriod); @@ -75,7 +74,7 @@ void update_NonAdjacentInOrder() throws Exception { // Assert ClientState clientState = getClientState(); - assertEquals(clientState.getLatestHeight().getRevisionHeight(), lastHeader.getHeader().getHeight()); + assertEquals(clientState.getLatestHeight(), lastHeader.getHeader().getHeight()); assertConsensusState(parseSignedHeader(1)); assertConsensusState(parseSignedHeader(2)); assertConsensusState(lastHeader); @@ -93,7 +92,7 @@ void update_NonAdjacentOutOfOrder() throws Exception { // Assert ClientState clientState = getClientState(); - assertEquals(clientState.getLatestHeight().getRevisionHeight(), lastHeader.getHeader().getHeight()); + assertEquals(clientState.getLatestHeight(), lastHeader.getHeader().getHeight()); assertConsensusState(parseSignedHeader(1)); assertConsensusState(parseSignedHeader(2)); assertConsensusState(lastHeader); @@ -112,7 +111,26 @@ void updateMultiValidator() throws Exception { // Assert ClientState clientState = getClientState(); - assertEquals(clientState.getLatestHeight().getRevisionHeight(), lastHeader.getHeader().getHeight()); + assertEquals(clientState.getLatestHeight(), lastHeader.getHeader().getHeight()); + assertConsensusState(parseSignedHeader(1)); + assertConsensusState(parseSignedHeader(2)); + assertConsensusState(lastHeader); + } + + @Test + void updateValidatorWithLargePower() throws Exception { + // Arrange + blockSetPath = BLOCK_SET_LONG_POWER; + SignedHeader lastHeader = parseSignedHeader(3); + + // Act + initializeClient(1); + updateClient(2, 1); + updateClient(3, 2); + + // Assert + ClientState clientState = getClientState(); + assertEquals(clientState.getLatestHeight(), lastHeader.getHeader().getHeight()); assertConsensusState(parseSignedHeader(1)); assertConsensusState(parseSignedHeader(2)); assertConsensusState(lastHeader); @@ -131,7 +149,7 @@ void updateAdjacentBlocks() throws Exception { // Assert ClientState clientState = getClientState(); - assertEquals(clientState.getLatestHeight().getRevisionHeight(), lastHeader.getHeader().getHeight()); + assertEquals(clientState.getLatestHeight(), lastHeader.getHeader().getHeight()); assertConsensusState(parseSignedHeader(1)); assertConsensusState(parseSignedHeader(2)); assertConsensusState(lastHeader); @@ -145,17 +163,17 @@ void updateConflictingHeader() throws Exception { initializeClient(1); updateClient(2, 1); doNothing().when(clientSpy).checkValidity( - any(ibc.lightclients.tendermint.v1.ClientState.class), - any(ibc.lightclients.tendermint.v1.ConsensusState.class), - any(ibc.lightclients.tendermint.v1.Header.class), - any()); + any(icon.proto.clients.tendermint.ClientState.class), + any(icon.proto.clients.tendermint.ConsensusState.class), + any(TmHeader.class), + any(Timestamp.class)); // Act updateClient(3, 1); // Assert ClientState clientState = getClientState(); - assertEquals(clientState.getFrozenHeight().getRevisionHeight(), duplicatedHeader.getHeader().getHeight()); + assertEquals(clientState.getFrozenHeight(), duplicatedHeader.getHeader().getHeight()); } @Test @@ -247,14 +265,16 @@ void getTimestampAtHeight() throws Exception { SignedHeader header1 = parseSignedHeader(1); SignedHeader header2 = parseSignedHeader(2); - Height height1 = Height.newBuilder().setRevisionHeight(header1.getHeader().getHeight()).build(); - Height height2 = Height.newBuilder().setRevisionHeight(header2.getHeader().getHeight()).build(); + Height height1 = new Height(); + height1.setRevisionHeight(BigInteger.valueOf(header1.getHeader().getHeight())); + Height height2 = new Height(); + height2.setRevisionHeight(BigInteger.valueOf(header2.getHeader().getHeight())); long expectedTime1 = header1.getHeader().getTime().getSeconds(); long expectedTime2 = header2.getHeader().getTime().getSeconds(); // Act - BigInteger t1 = (BigInteger) client.call("getTimestampAtHeight", clientId, height1.toByteArray()); - BigInteger t2 = (BigInteger) client.call("getTimestampAtHeight", clientId, height2.toByteArray()); + BigInteger t1 = (BigInteger) client.call("getTimestampAtHeight", clientId, height1.encode()); + BigInteger t2 = (BigInteger) client.call("getTimestampAtHeight", clientId, height2.encode()); // Assert assertEquals(expectedTime1, t1.longValue()); @@ -264,13 +284,14 @@ void getTimestampAtHeight() throws Exception { @Test void getTimestampAtHeight_noConsensusState() throws Exception { // Arrange - Height height = Height.newBuilder().setRevisionHeight(1).build(); + Height height = new Height(); + height.setRevisionHeight(BigInteger.ONE); String expectedErrorMessage = "height: " + height.getRevisionHeight() + " does not have a consensus state"; // Act & Assert AssertionError e = assertThrows(AssertionError.class, - () -> client.call("getTimestampAtHeight", clientId, height.toByteArray())); + () -> client.call("getTimestampAtHeight", clientId, height.encode())); assertTrue(e.getMessage().contains(expectedErrorMessage)); } @@ -280,21 +301,22 @@ void getLatestHeight() throws Exception { SignedHeader header1 = parseSignedHeader(1); SignedHeader header2 = parseSignedHeader(2); - BigInteger revision = TendermintHelper.getRevisionNumber(header1.getHeader().getChainId()); - Height height1 = Height.newBuilder().setRevisionHeight(header1.getHeader().getHeight()).setRevisionNumber(revision.intValue()).build(); - Height height2 = Height.newBuilder().setRevisionHeight(header2.getHeader().getHeight()).setRevisionNumber(revision.intValue()).build(); + Height height1 = new Height(); + height1.setRevisionHeight(BigInteger.valueOf(header1.getHeader().getHeight())); + Height height2 = new Height(); + height2.setRevisionHeight(BigInteger.valueOf(header2.getHeader().getHeight())); // Act initializeClient(1); // Assert - assertArrayEquals(height1.toByteArray(), (byte[]) client.call("getLatestHeight", clientId)); + assertArrayEquals(height1.encode(), (byte[]) client.call("getLatestHeight", clientId)); // Act updateClient(2, 1); // Assert - assertArrayEquals(height2.toByteArray(), (byte[]) client.call("getLatestHeight", clientId)); + assertArrayEquals(height2.encode(), (byte[]) client.call("getLatestHeight", clientId)); } @Test diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/LightClientTestBase.java b/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/LightClientTestBase.java index 547782b87..ede85857f 100644 --- a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/LightClientTestBase.java +++ b/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/LightClientTestBase.java @@ -8,7 +8,7 @@ import com.iconloop.score.test.ServiceManager; import com.iconloop.score.test.TestBase; import foundation.icon.ee.util.Crypto; -import ibc.lightclients.tendermint.v1.*; +import ibc.tendermint.light.TendermintLight.*; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -40,22 +40,11 @@ import com.iconloop.score.test.ServiceManager; import com.iconloop.score.test.TestBase; -import com.google.protobuf.Timestamp; -import com.google.protobuf.Duration; +import ibc.tendermint.light.TendermintLight.*; +import icon.proto.core.client.Height; import score.Context; import foundation.icon.ee.util.Crypto; -import com.ibc.lightclients.tendermint.v1.*; -import com.ibc.lightclients.tendermint.v1.ConsensusState; -import com.ibc.lightclients.tendermint.v1.ClientState; -import com.ibc.lightclients.tendermint.v1.Header; -import com.tendermint.types.*; -import com.tendermint.crypto.*; -import com.ibc.lightclients.tendermint.v1.Fraction; -import com.ibc.core.client.v1.Height; -import com.ibc.core.commitment.v1.MerkleRoot; -import com.tendermint.version.Consensus; - import static org.mockito.Mockito.spy; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.any; @@ -82,6 +71,7 @@ public class LightClientTestBase extends TestBase { protected static final String BLOCK_SET_MUTILPLE_VALIDATORS = BLOCK_SET_BASE_PATH + "multi-validator/"; protected static final String BLOCK_SET_ADJACENT = BLOCK_SET_BASE_PATH + "adjacent/"; protected static final String BLOCK_SET_MALICIOUS = BLOCK_SET_BASE_PATH + "malicious/"; + protected static final String BLOCK_SET_LONG_POWER = BLOCK_SET_BASE_PATH + "validator-with-long-voting-power/"; protected String blockSetPath = BLOCK_SET_SIMPLE; static { @@ -141,40 +131,38 @@ protected void teardown() { } protected void initializeClient(int blockOrder) throws Exception { - Header header = Header.newBuilder() + TmHeader tmHeader = TmHeader.newBuilder() .setSignedHeader(parseSignedHeader(blockOrder)) .setValidatorSet(parseValidatorSet(blockOrder)).build(); - BigInteger revisionNumber = TendermintHelper.getRevisionNumber(header.getSignedHeader().getHeader().getChainId()); + ClientState clientState = ClientState.newBuilder() - .setChainId(header.getSignedHeader().getHeader().getChainId()) + .setChainId(tmHeader.getSignedHeader().getHeader().getChainId()) .setTrustLevel(trustLevel) .setTrustingPeriod(trustingPeriod) .setMaxClockDrift(maxClockDrift) - .setLatestHeight(Height.newBuilder() - .setRevisionHeight(header.getSignedHeader().getHeader().getHeight()) - .setRevisionNumber(revisionNumber.intValue())) + .setLatestHeight(tmHeader.getSignedHeader().getHeader().getHeight()) .setAllowUpdateAfterExpiry(allowUpdateAfterExpiry) .setAllowUpdateAfterMisbehaviour(allowUpdateAfterMisbehaviour).build(); MerkleRoot root = MerkleRoot.newBuilder() - .setHash(header.getSignedHeader().getHeader().getAppHash()).build(); + .setHash(tmHeader.getSignedHeader().getHeader().getAppHash()).build(); ConsensusState consensusState = ConsensusState.newBuilder() - .setTimestamp(header.getSignedHeader().getHeader().getTime()) + .setTimestamp(tmHeader.getSignedHeader().getHeader().getTime()) .setRoot(root) - .setNextValidatorsHash(header.getSignedHeader().getHeader().getNextValidatorsHash()).build(); + .setNextValidatorsHash(tmHeader.getSignedHeader().getHeader().getNextValidatorsHash()).build(); client.invoke(ibcHandler, "createClient", clientId, clientState.toByteArray(), consensusState.toByteArray(), new byte[0]); } protected void updateClient(int blockOrder, int referenceBlock) throws Exception { - Header header = createHeader(blockOrder, referenceBlock); - client.invoke(ibcHandler, "updateClient", clientId, header.toByteArray()); + TmHeader tmHeader = createHeader(blockOrder, referenceBlock); + client.invoke(ibcHandler, "updateClient", clientId, tmHeader.toByteArray()); } protected ConsensusState getConsensusState(Height height) throws Exception { - return ConsensusState.parseFrom((byte[]) client.call("getConsensusState", clientId, height.toByteArray())); + return ConsensusState.parseFrom((byte[]) client.call("getConsensusState", clientId, height.encode())); } protected ClientState getClientState() throws Exception { @@ -182,20 +170,21 @@ protected ClientState getClientState() throws Exception { } protected void assertConsensusState(SignedHeader header) throws Exception { - Height height = Height.newBuilder().setRevisionHeight(header.getHeader().getHeight()).build(); + Height height = new Height(); + height.setRevisionHeight(BigInteger.valueOf(header.getHeader().getHeight())); ConsensusState consensusState = getConsensusState(height); assertEquals(header.getHeader().getNextValidatorsHash(), consensusState.getNextValidatorsHash()); assertEquals(header.getHeader().getAppHash(), consensusState.getRoot().getHash()); assertEquals(header.getHeader().getTime(), consensusState.getTimestamp()); } - protected Header createHeader(int blockOrder, int referenceBlock) throws Exception { - Header header = Header.newBuilder() + protected TmHeader createHeader(int blockOrder, int referenceBlock) throws Exception { + TmHeader tmHeader = TmHeader.newBuilder() .setSignedHeader(parseSignedHeader(blockOrder)) .setValidatorSet(parseValidatorSet(blockOrder)) - .setTrustedHeight(Height.newBuilder().setRevisionHeight(parseSignedHeader(referenceBlock).getHeader().getHeight())) + .setTrustedHeight(parseSignedHeader(referenceBlock).getHeader().getHeight()) .setTrustedValidators(parseValidatorSet(referenceBlock)).build(); - return header; + return tmHeader; } protected SignedHeader parseSignedHeader(int blockOrder) throws Exception { @@ -210,7 +199,7 @@ protected SignedHeader parseSignedHeader(int blockOrder) throws Exception { Consensus version = Consensus.newBuilder() .setBlock(jsonHeader.get("version").get("block").asInt()).build(); - com.tendermint.types.Header lightHeader = com.tendermint.types.Header.newBuilder() + LightHeader lightHeader = LightHeader.newBuilder() .setVersion(version) .setChainId(jsonHeader.get("chain_id").asText()) .setHeight(jsonHeader.get("height").asInt()) diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/data/validator-with-long-voting-power/commit.1.json b/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/data/validator-with-long-voting-power/commit.1.json new file mode 100644 index 000000000..cd80b3202 --- /dev/null +++ b/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/data/validator-with-long-voting-power/commit.1.json @@ -0,0 +1,72 @@ +{ + "signed_header": { + "header": { + "version": { + "block": "11" + }, + "chain_id": "injective-888", + "height": "17920038", + "time": "2023-11-02T13:33:21.027116706Z", + "last_block_id": { + "hash": "C08020E636E8C907A70003E6D65E066AD80F5EB460D9872CF6E27BF4737859BF", + "parts": { + "total": 1, + "hash": "CD289D26FD3291FFCB3D26A2AA70409CE6A49F0A5A9B9655B9C3105211FD2C6E" + } + }, + "last_commit_hash": "5F2FF8F52ACA9C21601B689D27EDD5FDB8FD31926B674A512ABE3406921D5E83", + "data_hash": "ADF4E59E6EDDF65C7A37AB51A5B90228816E6F3A46A9AB6C4291ABE5AF5C0DD8", + "validators_hash": "E947FC8185006455AE3606D4F1CA18097AD3E352C76D2F405D6DF3509BC84A45", + "next_validators_hash": "E947FC8185006455AE3606D4F1CA18097AD3E352C76D2F405D6DF3509BC84A45", + "consensus_hash": "E5BBA9239C0D3F967F8EF879506FF6EBDFB940F8904D7291351A461F00AAAD4D", + "app_hash": "9C4104E2CD45CA1B26EE54E43E2CAFAF73C3D3BC4A1D1759A7B5E5E234150C14", + "last_results_hash": "279D27AC52700DCF9F02609C1912CD90D76A217D8AB00843598177E99B73F5A8", + "evidence_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "proposer_address": "3391E35B61004E03BEB88FA1DAB4444B913BD7BE" + }, + "commit": { + "height": "17920038", + "round": 0, + "block_id": { + "hash": "67C262CBA5552BAB48AEF8B09D5E80907B2014D0D45EB6665D11A7E3848E3381", + "parts": { + "total": 1, + "hash": "302AF52F2B1AE2F23DF50351F56EEB9797E0F14474D14DBB403EBB92425F12AF" + } + }, + "signatures": [ + { + "block_id_flag": 2, + "validator_address": "3391E35B61004E03BEB88FA1DAB4444B913BD7BE", + "timestamp": "2023-11-02T13:33:23.442609428Z", + "signature": "7cUkUt2IRrQ88cT7BTJ20wpQQOAx1vOOGXAHCHZEO5hH8cl8yJd6lQ7fkQ95mSgvTSKkTiefVcGAhXY3DhwcAA==" + }, + { + "block_id_flag": 2, + "validator_address": "36FF1CB8B136E4BE26827071F2C842986EBCC5F7", + "timestamp": "2023-11-02T13:33:23.441884438Z", + "signature": "vzkh7jwM7asuWXvsWS7qGSwD8iQoyo2uZwJH0GKDvoUHSk/hr4yHU8qrQh0+QtlA/TKVgWrPkOFAqxWIDmczAQ==" + }, + { + "block_id_flag": 2, + "validator_address": "39B51761D4BC8DF4D234FA2750114F2647EDEDE0", + "timestamp": "2023-11-02T13:33:23.342446104Z", + "signature": "sVPZebPvRFW8Ffn08S3p8FtLI/cDezRWA4ZIabCKzsn/bjw3lGJTgsCamPEfVoAW258KwVHOqa0+99weF/asBQ==" + }, + { + "block_id_flag": 2, + "validator_address": "CBC72D2784292744BB653558ED14C4E33D614B67", + "timestamp": "2023-11-02T13:33:23.347423377Z", + "signature": "8WgFInmQutXqp96VAQ8CrMoptrUOUUJADtntuNl2ybUbVlGdDXD7090NlHFpiGcOMrHb/QdrpyMF5363YSjeCQ==" + }, + { + "block_id_flag": 2, + "validator_address": "2CBA0C86B9BE7034D7BD2F02C1A5FEDFE1FAD2D8", + "timestamp": "2023-11-02T13:33:23.605327672Z", + "signature": "ZvcrZitOEbPbb9GEaZB36bBoN+ohXBCTkZBKm2ZBWevOVdSXdU9WzuIDhK15CPmYuQgVNUWavUZXEZ1Wsmz8Aw==" + } + ] + } + }, + "canonical": true +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/data/validator-with-long-voting-power/commit.2.json b/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/data/validator-with-long-voting-power/commit.2.json new file mode 100644 index 000000000..d2a0855ff --- /dev/null +++ b/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/data/validator-with-long-voting-power/commit.2.json @@ -0,0 +1,72 @@ +{ + "signed_header": { + "header": { + "version": { + "block": "11" + }, + "chain_id": "injective-888", + "height": "17920039", + "time": "2023-11-02T13:33:23.441884438Z", + "last_block_id": { + "hash": "67C262CBA5552BAB48AEF8B09D5E80907B2014D0D45EB6665D11A7E3848E3381", + "parts": { + "total": 1, + "hash": "302AF52F2B1AE2F23DF50351F56EEB9797E0F14474D14DBB403EBB92425F12AF" + } + }, + "last_commit_hash": "62ABAAA7AFE658FDF3298F1EBD134B172A6C3D3DBDE00B7A8D99A5ADED077843", + "data_hash": "143A710FE20ACCFE5CE1D12E9420F854EFB2C92E00EB80EE813F162C7E6200D5", + "validators_hash": "E947FC8185006455AE3606D4F1CA18097AD3E352C76D2F405D6DF3509BC84A45", + "next_validators_hash": "E947FC8185006455AE3606D4F1CA18097AD3E352C76D2F405D6DF3509BC84A45", + "consensus_hash": "E5BBA9239C0D3F967F8EF879506FF6EBDFB940F8904D7291351A461F00AAAD4D", + "app_hash": "AFE74B9B502591D084C6E899B756A248EADF7E273BCBF3C6D82D482BFD2EFB8A", + "last_results_hash": "CC759FD069BB67EF291E281E710B4B846CF1DCFD459FFBF7706BD6D1B9A828EB", + "evidence_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "proposer_address": "36FF1CB8B136E4BE26827071F2C842986EBCC5F7" + }, + "commit": { + "height": "17920039", + "round": 0, + "block_id": { + "hash": "AA76FDD15D36BE82CB3C4232E7ADBAC5A46363725DCB3239B7470E5801405BDA", + "parts": { + "total": 1, + "hash": "1CE121BB7F8B9C91A6AA4D2AF1F221E72B11ED88F174BB224CC17583CC7CB8DA" + } + }, + "signatures": [ + { + "block_id_flag": 2, + "validator_address": "3391E35B61004E03BEB88FA1DAB4444B913BD7BE", + "timestamp": "2023-11-02T13:33:25.645542243Z", + "signature": "HtctXHea3ma7xqHuBldAq2bQX7YpQb9rxuxavwHg/B4x6+TtKZLe/E7gloLizC2mxrOEJ6iXBMJfZ9GYiLesDA==" + }, + { + "block_id_flag": 2, + "validator_address": "36FF1CB8B136E4BE26827071F2C842986EBCC5F7", + "timestamp": "2023-11-02T13:33:25.656553715Z", + "signature": "QepzfO1DNtIQW62LN683OUW7n2o/KRkEFjBFK7OqAarMSLZNqhJxZ/k2W1KaZJHz8Jybw1Y2MAT300g70CYjDw==" + }, + { + "block_id_flag": 2, + "validator_address": "39B51761D4BC8DF4D234FA2750114F2647EDEDE0", + "timestamp": "2023-11-02T13:33:25.658405119Z", + "signature": "Wg+ipzg9zYtRvIEZ9CeTyiT6bXFPbsaYttTBFpU0sHCzVuDcP+6ktLiWoY1aIIHtfiPVOAqQQpn6EIWkvqZ+DQ==" + }, + { + "block_id_flag": 2, + "validator_address": "CBC72D2784292744BB653558ED14C4E33D614B67", + "timestamp": "2023-11-02T13:33:25.645294352Z", + "signature": "VEboNAJyPm42pVUc6YsqyeRWFyKCM66SpWYrV6Q9Uk0aiEJ1WDBrbTnLsjkOmJJKCz2yF+OHv43RKq/DLOlYBQ==" + }, + { + "block_id_flag": 2, + "validator_address": "2CBA0C86B9BE7034D7BD2F02C1A5FEDFE1FAD2D8", + "timestamp": "2023-11-02T13:33:25.820218014Z", + "signature": "uc+YW3uiqDA6n4xjRgawH8oY27yiYa3aw1gKEiQqslkLACm6rvild+mwqITVX0dJCzM+EZGpPMZqOlGOk9S2BQ==" + } + ] + } + }, + "canonical": true +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/data/validator-with-long-voting-power/commit.3.json b/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/data/validator-with-long-voting-power/commit.3.json new file mode 100644 index 000000000..9c7314bad --- /dev/null +++ b/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/data/validator-with-long-voting-power/commit.3.json @@ -0,0 +1,72 @@ +{ + "signed_header": { + "header": { + "version": { + "block": "11" + }, + "chain_id": "injective-888", + "height": "17920086", + "time": "2023-11-02T13:35:02.047390058Z", + "last_block_id": { + "hash": "347BE8943E602C19DAC7185E926EDC4DBA096BA20A417D8CF3381BDCA948A649", + "parts": { + "total": 1, + "hash": "BEE955F8690D6EA3A945F213B9CBDCCF288391C08928986751EF81E6CAFEF42B" + } + }, + "last_commit_hash": "D582AC642827C533166497DE555730DC3A30F82EDE41E94AB9520BDF56A1DC87", + "data_hash": "8403500554D652B74C08E70DBE91A13BD4EFF700B7670AFD9DEE68BD169BB1D9", + "validators_hash": "E947FC8185006455AE3606D4F1CA18097AD3E352C76D2F405D6DF3509BC84A45", + "next_validators_hash": "E947FC8185006455AE3606D4F1CA18097AD3E352C76D2F405D6DF3509BC84A45", + "consensus_hash": "E5BBA9239C0D3F967F8EF879506FF6EBDFB940F8904D7291351A461F00AAAD4D", + "app_hash": "C45F52638BECEDAA7C8DDE1380C3EBECD9DE86B55260576A2531B0301D39C936", + "last_results_hash": "D750BEF56A672385C2ECD2DBB2161FFF0AB8A1814CE6B18A229377A95F45E329", + "evidence_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "proposer_address": "3391E35B61004E03BEB88FA1DAB4444B913BD7BE" + }, + "commit": { + "height": "17920086", + "round": 0, + "block_id": { + "hash": "C5FC14C1B1395314AA208B610A516B4679486A38D5074887D53C990FC35C212B", + "parts": { + "total": 1, + "hash": "731E65E02962832F2F1FCCA0F856D82840F9785CD83FA4DDC0729C2100C5FE55" + } + }, + "signatures": [ + { + "block_id_flag": 2, + "validator_address": "3391E35B61004E03BEB88FA1DAB4444B913BD7BE", + "timestamp": "2023-11-02T13:35:04.368632789Z", + "signature": "rMzn9p/2xwscq4BW29QKUxq5G2IzzxwarlUOWkE4S/JV1r2WlSfiwZqjfORqK+fSOI5bbkaIR99dh22ZwcRwDw==" + }, + { + "block_id_flag": 2, + "validator_address": "36FF1CB8B136E4BE26827071F2C842986EBCC5F7", + "timestamp": "2023-11-02T13:35:04.367578967Z", + "signature": "WmPCYXNO32DcCaYpqTC2dEKthLyVpCYwmkVLKPmHGsblAQk1swHtHRITHnDlaShSjqQ5Tch/YlMxyINOsdOJCA==" + }, + { + "block_id_flag": 2, + "validator_address": "39B51761D4BC8DF4D234FA2750114F2647EDEDE0", + "timestamp": "2023-11-02T13:35:04.367406356Z", + "signature": "itVX4sSqUnuQcqnKud1a2Dv+LJQiU0jCdXl/+BEZfMUqAhtSnwQOSPK96LPzOiLBcdvrluM4SLK3Lz2KtqWPBQ==" + }, + { + "block_id_flag": 2, + "validator_address": "CBC72D2784292744BB653558ED14C4E33D614B67", + "timestamp": "2023-11-02T13:35:04.371872862Z", + "signature": "7QlwrUBp31unqQwcm051usk+jrhDFEgBCjGTc7kWffLsotiW8pKTxqv0lzao8uF//X/Rc0bM3tC2zNkQQRJqBA==" + }, + { + "block_id_flag": 2, + "validator_address": "2CBA0C86B9BE7034D7BD2F02C1A5FEDFE1FAD2D8", + "timestamp": "2023-11-02T13:35:04.621696944Z", + "signature": "HbIOEh15/7Q0vn+WHb7NgTuO6HkAnV6+ycfGz+WeLO/W081/6llsnQyHQMFjcegbCphM+KWKRys/KwC7frOkBQ==" + } + ] + } + }, + "canonical": true +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/data/validator-with-long-voting-power/validators.1.json b/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/data/validator-with-long-voting-power/validators.1.json new file mode 100644 index 000000000..8d0b09497 --- /dev/null +++ b/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/data/validator-with-long-voting-power/validators.1.json @@ -0,0 +1,52 @@ +{ + "block_height": "17920038", + "validators": [ + { + "address": "3391E35B61004E03BEB88FA1DAB4444B913BD7BE", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "Puku/I45dAZ4wKeN+rbYKnmuUUA7Yh7/TrKX3ZoTmk4=" + }, + "voting_power": "200058118992377", + "proposer_priority": "-132697491409996" + }, + { + "address": "36FF1CB8B136E4BE26827071F2C842986EBCC5F7", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "Bi/7vbVB1uj/zz40/aozZOvVBFkV6hLqqxBIQr5kSc4=" + }, + "voting_power": "200001135854983", + "proposer_priority": "461765604364692" + }, + { + "address": "39B51761D4BC8DF4D234FA2750114F2647EDEDE0", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "WlL4lTR+iTbd0rn3xP6oH0juOnGRZ+Hh73Oj6/Lt/Wg=" + }, + "voting_power": "200000136407721", + "proposer_priority": "-42343657761476" + }, + { + "address": "CBC72D2784292744BB653558ED14C4E33D614B67", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "1mF7OEpB9A60O0e+64pICbqS/nN8VnsVfoySMEW2w1Q=" + }, + "voting_power": "199825725805690", + "proposer_priority": "433172150149401" + }, + { + "address": "2CBA0C86B9BE7034D7BD2F02C1A5FEDFE1FAD2D8", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "eUvXue8zslf+dC4TxNBXVIzMZzf6CtwagwObU6rQxb4=" + }, + "voting_power": "7", + "proposer_priority": "-719896605342617" + } + ], + "count": "5", + "total": "5" +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/data/validator-with-long-voting-power/validators.2.json b/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/data/validator-with-long-voting-power/validators.2.json new file mode 100644 index 000000000..3e6dd2b0a --- /dev/null +++ b/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/data/validator-with-long-voting-power/validators.2.json @@ -0,0 +1,52 @@ +{ + "block_height": "17920039", + "validators": [ + { + "address": "3391E35B61004E03BEB88FA1DAB4444B913BD7BE", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "Puku/I45dAZ4wKeN+rbYKnmuUUA7Yh7/TrKX3ZoTmk4=" + }, + "voting_power": "200058118992377", + "proposer_priority": "67360627582381" + }, + { + "address": "36FF1CB8B136E4BE26827071F2C842986EBCC5F7", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "Bi/7vbVB1uj/zz40/aozZOvVBFkV6hLqqxBIQr5kSc4=" + }, + "voting_power": "200001135854983", + "proposer_priority": "-138118376841103" + }, + { + "address": "39B51761D4BC8DF4D234FA2750114F2647EDEDE0", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "WlL4lTR+iTbd0rn3xP6oH0juOnGRZ+Hh73Oj6/Lt/Wg=" + }, + "voting_power": "200000136407721", + "proposer_priority": "157656478646245" + }, + { + "address": "CBC72D2784292744BB653558ED14C4E33D614B67", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "1mF7OEpB9A60O0e+64pICbqS/nN8VnsVfoySMEW2w1Q=" + }, + "voting_power": "199825725805690", + "proposer_priority": "632997875955091" + }, + { + "address": "2CBA0C86B9BE7034D7BD2F02C1A5FEDFE1FAD2D8", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "eUvXue8zslf+dC4TxNBXVIzMZzf6CtwagwObU6rQxb4=" + }, + "voting_power": "7", + "proposer_priority": "-719896605342610" + } + ], + "count": "5", + "total": "5" +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/data/validator-with-long-voting-power/validators.3.json b/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/data/validator-with-long-voting-power/validators.3.json new file mode 100644 index 000000000..52ee2b633 --- /dev/null +++ b/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/data/validator-with-long-voting-power/validators.3.json @@ -0,0 +1,52 @@ +{ + "block_height": "17920086", + "validators": [ + { + "address": "3391E35B61004E03BEB88FA1DAB4444B913BD7BE", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "Puku/I45dAZ4wKeN+rbYKnmuUUA7Yh7/TrKX3ZoTmk4=" + }, + "voting_power": "200058118992377", + "proposer_priority": "-128529184505236" + }, + { + "address": "36FF1CB8B136E4BE26827071F2C842986EBCC5F7", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "Bi/7vbVB1uj/zz40/aozZOvVBFkV6hLqqxBIQr5kSc4=" + }, + "voting_power": "200001135854983", + "proposer_priority": "463198720674540" + }, + { + "address": "39B51761D4BC8DF4D234FA2750114F2647EDEDE0", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "WlL4lTR+iTbd0rn3xP6oH0juOnGRZ+Hh73Oj6/Lt/Wg=" + }, + "voting_power": "200000136407721", + "proposer_priority": "-40958514920204" + }, + { + "address": "CBC72D2784292744BB653558ED14C4E33D614B67", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "1mF7OEpB9A60O0e+64pICbqS/nN8VnsVfoySMEW2w1Q=" + }, + "voting_power": "199825725805690", + "proposer_priority": "426185584093185" + }, + { + "address": "2CBA0C86B9BE7034D7BD2F02C1A5FEDFE1FAD2D8", + "pub_key": { + "type": "tendermint/PubKeyEd25519", + "value": "eUvXue8zslf+dC4TxNBXVIzMZzf6CtwagwObU6rQxb4=" + }, + "voting_power": "7", + "proposer_priority": "-719896605342281" + } + ], + "count": "5", + "total": "5" +} \ No newline at end of file diff --git a/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/light/TendermintLight.java b/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/light/TendermintLight.java new file mode 100644 index 000000000..2ecc57971 --- /dev/null +++ b/contracts/javascore/lightclients/tendermint/src/test/java/ibc/tendermint/light/TendermintLight.java @@ -0,0 +1,11972 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: proto/clients/tendermint/TendermintLight.proto + +package ibc.tendermint.light; + +public final class TendermintLight { + private TendermintLight() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + /** + * Protobuf enum {@code ibc.tendermint.light.BlockIDFlag} + */ + public enum BlockIDFlag + implements com.google.protobuf.Internal.EnumLite { + /** + * BLOCK_ID_FLAG_UNKNOWN = 0; + */ + BLOCK_ID_FLAG_UNKNOWN(0), + /** + * BLOCK_ID_FLAG_ABSENT = 1; + */ + BLOCK_ID_FLAG_ABSENT(1), + /** + * BLOCK_ID_FLAG_COMMIT = 2; + */ + BLOCK_ID_FLAG_COMMIT(2), + /** + * BLOCK_ID_FLAG_NIL = 3; + */ + BLOCK_ID_FLAG_NIL(3), + UNRECOGNIZED(-1), + ; + + /** + * BLOCK_ID_FLAG_UNKNOWN = 0; + */ + public static final int BLOCK_ID_FLAG_UNKNOWN_VALUE = 0; + /** + * BLOCK_ID_FLAG_ABSENT = 1; + */ + public static final int BLOCK_ID_FLAG_ABSENT_VALUE = 1; + /** + * BLOCK_ID_FLAG_COMMIT = 2; + */ + public static final int BLOCK_ID_FLAG_COMMIT_VALUE = 2; + /** + * BLOCK_ID_FLAG_NIL = 3; + */ + public static final int BLOCK_ID_FLAG_NIL_VALUE = 3; + + + @java.lang.Override + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The number of the enum to look for. + * @return The enum associated with the given number. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static BlockIDFlag valueOf(int value) { + return forNumber(value); + } + + public static BlockIDFlag forNumber(int value) { + switch (value) { + case 0: return BLOCK_ID_FLAG_UNKNOWN; + case 1: return BLOCK_ID_FLAG_ABSENT; + case 2: return BLOCK_ID_FLAG_COMMIT; + case 3: return BLOCK_ID_FLAG_NIL; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + BlockIDFlag> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + @java.lang.Override + public BlockIDFlag findValueByNumber(int number) { + return BlockIDFlag.forNumber(number); + } + }; + + public static com.google.protobuf.Internal.EnumVerifier + internalGetVerifier() { + return BlockIDFlagVerifier.INSTANCE; + } + + private static final class BlockIDFlagVerifier implements + com.google.protobuf.Internal.EnumVerifier { + static final com.google.protobuf.Internal.EnumVerifier INSTANCE = new BlockIDFlagVerifier(); + @java.lang.Override + public boolean isInRange(int number) { + return BlockIDFlag.forNumber(number) != null; + } + }; + + private final int value; + + private BlockIDFlag(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:ibc.tendermint.light.BlockIDFlag) + } + + /** + * Protobuf enum {@code ibc.tendermint.light.SignedMsgType} + */ + public enum SignedMsgType + implements com.google.protobuf.Internal.EnumLite { + /** + * SIGNED_MSG_TYPE_UNKNOWN = 0; + */ + SIGNED_MSG_TYPE_UNKNOWN(0), + /** + *
+     * Votes
+     * 
+ * + * SIGNED_MSG_TYPE_PREVOTE = 1; + */ + SIGNED_MSG_TYPE_PREVOTE(1), + /** + * SIGNED_MSG_TYPE_PRECOMMIT = 2; + */ + SIGNED_MSG_TYPE_PRECOMMIT(2), + /** + *
+     * Proposals
+     * 
+ * + * SIGNED_MSG_TYPE_PROPOSAL = 32; + */ + SIGNED_MSG_TYPE_PROPOSAL(32), + UNRECOGNIZED(-1), + ; + + /** + * SIGNED_MSG_TYPE_UNKNOWN = 0; + */ + public static final int SIGNED_MSG_TYPE_UNKNOWN_VALUE = 0; + /** + *
+     * Votes
+     * 
+ * + * SIGNED_MSG_TYPE_PREVOTE = 1; + */ + public static final int SIGNED_MSG_TYPE_PREVOTE_VALUE = 1; + /** + * SIGNED_MSG_TYPE_PRECOMMIT = 2; + */ + public static final int SIGNED_MSG_TYPE_PRECOMMIT_VALUE = 2; + /** + *
+     * Proposals
+     * 
+ * + * SIGNED_MSG_TYPE_PROPOSAL = 32; + */ + public static final int SIGNED_MSG_TYPE_PROPOSAL_VALUE = 32; + + + @java.lang.Override + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The number of the enum to look for. + * @return The enum associated with the given number. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static SignedMsgType valueOf(int value) { + return forNumber(value); + } + + public static SignedMsgType forNumber(int value) { + switch (value) { + case 0: return SIGNED_MSG_TYPE_UNKNOWN; + case 1: return SIGNED_MSG_TYPE_PREVOTE; + case 2: return SIGNED_MSG_TYPE_PRECOMMIT; + case 32: return SIGNED_MSG_TYPE_PROPOSAL; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + SignedMsgType> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + @java.lang.Override + public SignedMsgType findValueByNumber(int number) { + return SignedMsgType.forNumber(number); + } + }; + + public static com.google.protobuf.Internal.EnumVerifier + internalGetVerifier() { + return SignedMsgTypeVerifier.INSTANCE; + } + + private static final class SignedMsgTypeVerifier implements + com.google.protobuf.Internal.EnumVerifier { + static final com.google.protobuf.Internal.EnumVerifier INSTANCE = new SignedMsgTypeVerifier(); + @java.lang.Override + public boolean isInRange(int number) { + return SignedMsgType.forNumber(number) != null; + } + }; + + private final int value; + + private SignedMsgType(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:ibc.tendermint.light.SignedMsgType) + } + + public interface FractionOrBuilder extends + // @@protoc_insertion_point(interface_extends:ibc.tendermint.light.Fraction) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * uint64 numerator = 1; + * @return The numerator. + */ + long getNumerator(); + + /** + * uint64 denominator = 2; + * @return The denominator. + */ + long getDenominator(); + } + /** + * Protobuf type {@code ibc.tendermint.light.Fraction} + */ + public static final class Fraction extends + com.google.protobuf.GeneratedMessageLite< + Fraction, Fraction.Builder> implements + // @@protoc_insertion_point(message_implements:ibc.tendermint.light.Fraction) + FractionOrBuilder { + private Fraction() { + } + public static final int NUMERATOR_FIELD_NUMBER = 1; + private long numerator_; + /** + * uint64 numerator = 1; + * @return The numerator. + */ + @java.lang.Override + public long getNumerator() { + return numerator_; + } + /** + * uint64 numerator = 1; + * @param value The numerator to set. + */ + private void setNumerator(long value) { + + numerator_ = value; + } + /** + * uint64 numerator = 1; + */ + private void clearNumerator() { + + numerator_ = 0L; + } + + public static final int DENOMINATOR_FIELD_NUMBER = 2; + private long denominator_; + /** + * uint64 denominator = 2; + * @return The denominator. + */ + @java.lang.Override + public long getDenominator() { + return denominator_; + } + /** + * uint64 denominator = 2; + * @param value The denominator to set. + */ + private void setDenominator(long value) { + + denominator_ = value; + } + /** + * uint64 denominator = 2; + */ + private void clearDenominator() { + + denominator_ = 0L; + } + + public static ibc.tendermint.light.TendermintLight.Fraction parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.Fraction parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Fraction parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.Fraction parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Fraction parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.Fraction parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Fraction parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.Fraction parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Fraction parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.Fraction parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Fraction parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.Fraction parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(ibc.tendermint.light.TendermintLight.Fraction prototype) { + return (Builder) DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code ibc.tendermint.light.Fraction} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + ibc.tendermint.light.TendermintLight.Fraction, Builder> implements + // @@protoc_insertion_point(builder_implements:ibc.tendermint.light.Fraction) + ibc.tendermint.light.TendermintLight.FractionOrBuilder { + // Construct using ibc.tendermint.light.TendermintLight.Fraction.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * uint64 numerator = 1; + * @return The numerator. + */ + @java.lang.Override + public long getNumerator() { + return instance.getNumerator(); + } + /** + * uint64 numerator = 1; + * @param value The numerator to set. + * @return This builder for chaining. + */ + public Builder setNumerator(long value) { + copyOnWrite(); + instance.setNumerator(value); + return this; + } + /** + * uint64 numerator = 1; + * @return This builder for chaining. + */ + public Builder clearNumerator() { + copyOnWrite(); + instance.clearNumerator(); + return this; + } + + /** + * uint64 denominator = 2; + * @return The denominator. + */ + @java.lang.Override + public long getDenominator() { + return instance.getDenominator(); + } + /** + * uint64 denominator = 2; + * @param value The denominator to set. + * @return This builder for chaining. + */ + public Builder setDenominator(long value) { + copyOnWrite(); + instance.setDenominator(value); + return this; + } + /** + * uint64 denominator = 2; + * @return This builder for chaining. + */ + public Builder clearDenominator() { + copyOnWrite(); + instance.clearDenominator(); + return this; + } + + // @@protoc_insertion_point(builder_scope:ibc.tendermint.light.Fraction) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new ibc.tendermint.light.TendermintLight.Fraction(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "numerator_", + "denominator_", + }; + java.lang.String info = + "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\u0003\u0002\u0003" + + ""; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (ibc.tendermint.light.TendermintLight.Fraction.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:ibc.tendermint.light.Fraction) + private static final ibc.tendermint.light.TendermintLight.Fraction DEFAULT_INSTANCE; + static { + Fraction defaultInstance = new Fraction(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + Fraction.class, defaultInstance); + } + + public static ibc.tendermint.light.TendermintLight.Fraction getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface DurationOrBuilder extends + // @@protoc_insertion_point(interface_extends:ibc.tendermint.light.Duration) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * int64 seconds = 1; + * @return The seconds. + */ + long getSeconds(); + + /** + * int32 nanos = 2; + * @return The nanos. + */ + int getNanos(); + } + /** + *
+   * https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#google.protobuf.Timestamp
+   * 
+ * + * Protobuf type {@code ibc.tendermint.light.Duration} + */ + public static final class Duration extends + com.google.protobuf.GeneratedMessageLite< + Duration, Duration.Builder> implements + // @@protoc_insertion_point(message_implements:ibc.tendermint.light.Duration) + DurationOrBuilder { + private Duration() { + } + public static final int SECONDS_FIELD_NUMBER = 1; + private long seconds_; + /** + * int64 seconds = 1; + * @return The seconds. + */ + @java.lang.Override + public long getSeconds() { + return seconds_; + } + /** + * int64 seconds = 1; + * @param value The seconds to set. + */ + private void setSeconds(long value) { + + seconds_ = value; + } + /** + * int64 seconds = 1; + */ + private void clearSeconds() { + + seconds_ = 0L; + } + + public static final int NANOS_FIELD_NUMBER = 2; + private int nanos_; + /** + * int32 nanos = 2; + * @return The nanos. + */ + @java.lang.Override + public int getNanos() { + return nanos_; + } + /** + * int32 nanos = 2; + * @param value The nanos to set. + */ + private void setNanos(int value) { + + nanos_ = value; + } + /** + * int32 nanos = 2; + */ + private void clearNanos() { + + nanos_ = 0; + } + + public static ibc.tendermint.light.TendermintLight.Duration parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.Duration parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Duration parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.Duration parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Duration parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.Duration parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Duration parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.Duration parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Duration parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.Duration parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Duration parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.Duration parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(ibc.tendermint.light.TendermintLight.Duration prototype) { + return (Builder) DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + *
+     * https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#google.protobuf.Timestamp
+     * 
+ * + * Protobuf type {@code ibc.tendermint.light.Duration} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + ibc.tendermint.light.TendermintLight.Duration, Builder> implements + // @@protoc_insertion_point(builder_implements:ibc.tendermint.light.Duration) + ibc.tendermint.light.TendermintLight.DurationOrBuilder { + // Construct using ibc.tendermint.light.TendermintLight.Duration.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * int64 seconds = 1; + * @return The seconds. + */ + @java.lang.Override + public long getSeconds() { + return instance.getSeconds(); + } + /** + * int64 seconds = 1; + * @param value The seconds to set. + * @return This builder for chaining. + */ + public Builder setSeconds(long value) { + copyOnWrite(); + instance.setSeconds(value); + return this; + } + /** + * int64 seconds = 1; + * @return This builder for chaining. + */ + public Builder clearSeconds() { + copyOnWrite(); + instance.clearSeconds(); + return this; + } + + /** + * int32 nanos = 2; + * @return The nanos. + */ + @java.lang.Override + public int getNanos() { + return instance.getNanos(); + } + /** + * int32 nanos = 2; + * @param value The nanos to set. + * @return This builder for chaining. + */ + public Builder setNanos(int value) { + copyOnWrite(); + instance.setNanos(value); + return this; + } + /** + * int32 nanos = 2; + * @return This builder for chaining. + */ + public Builder clearNanos() { + copyOnWrite(); + instance.clearNanos(); + return this; + } + + // @@protoc_insertion_point(builder_scope:ibc.tendermint.light.Duration) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new ibc.tendermint.light.TendermintLight.Duration(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "seconds_", + "nanos_", + }; + java.lang.String info = + "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\u0002\u0002\u0004" + + ""; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (ibc.tendermint.light.TendermintLight.Duration.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:ibc.tendermint.light.Duration) + private static final ibc.tendermint.light.TendermintLight.Duration DEFAULT_INSTANCE; + static { + Duration defaultInstance = new Duration(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + Duration.class, defaultInstance); + } + + public static ibc.tendermint.light.TendermintLight.Duration getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface ConsensusOrBuilder extends + // @@protoc_insertion_point(interface_extends:ibc.tendermint.light.Consensus) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * uint64 block = 1; + * @return The block. + */ + long getBlock(); + + /** + * uint64 app = 2; + * @return The app. + */ + long getApp(); + } + /** + * Protobuf type {@code ibc.tendermint.light.Consensus} + */ + public static final class Consensus extends + com.google.protobuf.GeneratedMessageLite< + Consensus, Consensus.Builder> implements + // @@protoc_insertion_point(message_implements:ibc.tendermint.light.Consensus) + ConsensusOrBuilder { + private Consensus() { + } + public static final int BLOCK_FIELD_NUMBER = 1; + private long block_; + /** + * uint64 block = 1; + * @return The block. + */ + @java.lang.Override + public long getBlock() { + return block_; + } + /** + * uint64 block = 1; + * @param value The block to set. + */ + private void setBlock(long value) { + + block_ = value; + } + /** + * uint64 block = 1; + */ + private void clearBlock() { + + block_ = 0L; + } + + public static final int APP_FIELD_NUMBER = 2; + private long app_; + /** + * uint64 app = 2; + * @return The app. + */ + @java.lang.Override + public long getApp() { + return app_; + } + /** + * uint64 app = 2; + * @param value The app to set. + */ + private void setApp(long value) { + + app_ = value; + } + /** + * uint64 app = 2; + */ + private void clearApp() { + + app_ = 0L; + } + + public static ibc.tendermint.light.TendermintLight.Consensus parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.Consensus parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Consensus parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.Consensus parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Consensus parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.Consensus parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Consensus parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.Consensus parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Consensus parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.Consensus parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Consensus parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.Consensus parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(ibc.tendermint.light.TendermintLight.Consensus prototype) { + return (Builder) DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code ibc.tendermint.light.Consensus} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + ibc.tendermint.light.TendermintLight.Consensus, Builder> implements + // @@protoc_insertion_point(builder_implements:ibc.tendermint.light.Consensus) + ibc.tendermint.light.TendermintLight.ConsensusOrBuilder { + // Construct using ibc.tendermint.light.TendermintLight.Consensus.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * uint64 block = 1; + * @return The block. + */ + @java.lang.Override + public long getBlock() { + return instance.getBlock(); + } + /** + * uint64 block = 1; + * @param value The block to set. + * @return This builder for chaining. + */ + public Builder setBlock(long value) { + copyOnWrite(); + instance.setBlock(value); + return this; + } + /** + * uint64 block = 1; + * @return This builder for chaining. + */ + public Builder clearBlock() { + copyOnWrite(); + instance.clearBlock(); + return this; + } + + /** + * uint64 app = 2; + * @return The app. + */ + @java.lang.Override + public long getApp() { + return instance.getApp(); + } + /** + * uint64 app = 2; + * @param value The app to set. + * @return This builder for chaining. + */ + public Builder setApp(long value) { + copyOnWrite(); + instance.setApp(value); + return this; + } + /** + * uint64 app = 2; + * @return This builder for chaining. + */ + public Builder clearApp() { + copyOnWrite(); + instance.clearApp(); + return this; + } + + // @@protoc_insertion_point(builder_scope:ibc.tendermint.light.Consensus) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new ibc.tendermint.light.TendermintLight.Consensus(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "block_", + "app_", + }; + java.lang.String info = + "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\u0003\u0002\u0003" + + ""; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (ibc.tendermint.light.TendermintLight.Consensus.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:ibc.tendermint.light.Consensus) + private static final ibc.tendermint.light.TendermintLight.Consensus DEFAULT_INSTANCE; + static { + Consensus defaultInstance = new Consensus(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + Consensus.class, defaultInstance); + } + + public static ibc.tendermint.light.TendermintLight.Consensus getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface ClientStateOrBuilder extends + // @@protoc_insertion_point(interface_extends:ibc.tendermint.light.ClientState) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * string chain_id = 1; + * @return The chainId. + */ + java.lang.String getChainId(); + /** + * string chain_id = 1; + * @return The bytes for chainId. + */ + com.google.protobuf.ByteString + getChainIdBytes(); + + /** + * .ibc.tendermint.light.Fraction trust_level = 2; + * @return Whether the trustLevel field is set. + */ + boolean hasTrustLevel(); + /** + * .ibc.tendermint.light.Fraction trust_level = 2; + * @return The trustLevel. + */ + ibc.tendermint.light.TendermintLight.Fraction getTrustLevel(); + + /** + *
+     * duration of the period since the LastestTimestamp during which the
+     * submitted headers are valid for upgrade
+     * 
+ * + * .ibc.tendermint.light.Duration trusting_period = 3; + * @return Whether the trustingPeriod field is set. + */ + boolean hasTrustingPeriod(); + /** + *
+     * duration of the period since the LastestTimestamp during which the
+     * submitted headers are valid for upgrade
+     * 
+ * + * .ibc.tendermint.light.Duration trusting_period = 3; + * @return The trustingPeriod. + */ + ibc.tendermint.light.TendermintLight.Duration getTrustingPeriod(); + + /** + *
+     * duration of the staking unbonding period
+     * 
+ * + * .ibc.tendermint.light.Duration unbonding_period = 4; + * @return Whether the unbondingPeriod field is set. + */ + boolean hasUnbondingPeriod(); + /** + *
+     * duration of the staking unbonding period
+     * 
+ * + * .ibc.tendermint.light.Duration unbonding_period = 4; + * @return The unbondingPeriod. + */ + ibc.tendermint.light.TendermintLight.Duration getUnbondingPeriod(); + + /** + *
+     * defines how much new (untrusted) header's Time can drift into the future.
+     * 
+ * + * .ibc.tendermint.light.Duration max_clock_drift = 5; + * @return Whether the maxClockDrift field is set. + */ + boolean hasMaxClockDrift(); + /** + *
+     * defines how much new (untrusted) header's Time can drift into the future.
+     * 
+ * + * .ibc.tendermint.light.Duration max_clock_drift = 5; + * @return The maxClockDrift. + */ + ibc.tendermint.light.TendermintLight.Duration getMaxClockDrift(); + + /** + *
+     * Block height when the client was frozen due to a misbehaviour
+     *ibc.core.client.v1.Height frozen_height = 6;
+     * 
+ * + * int64 frozen_height = 6; + * @return The frozenHeight. + */ + long getFrozenHeight(); + + /** + *
+     * Latest height the client was updated to
+     * 
+ * + * int64 latest_height = 7; + * @return The latestHeight. + */ + long getLatestHeight(); + + /** + *
+     * This flag, when set to true, will allow governance to recover a client
+     * which has expired
+     * 
+ * + * bool allow_update_after_expiry = 8; + * @return The allowUpdateAfterExpiry. + */ + boolean getAllowUpdateAfterExpiry(); + + /** + *
+     * 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 = 9; + * @return The allowUpdateAfterMisbehaviour. + */ + boolean getAllowUpdateAfterMisbehaviour(); + } + /** + * Protobuf type {@code ibc.tendermint.light.ClientState} + */ + public static final class ClientState extends + com.google.protobuf.GeneratedMessageLite< + ClientState, ClientState.Builder> implements + // @@protoc_insertion_point(message_implements:ibc.tendermint.light.ClientState) + ClientStateOrBuilder { + private ClientState() { + chainId_ = ""; + } + public static final int CHAIN_ID_FIELD_NUMBER = 1; + private java.lang.String chainId_; + /** + * string chain_id = 1; + * @return The chainId. + */ + @java.lang.Override + public java.lang.String getChainId() { + return chainId_; + } + /** + * string chain_id = 1; + * @return The bytes for chainId. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getChainIdBytes() { + return com.google.protobuf.ByteString.copyFromUtf8(chainId_); + } + /** + * string chain_id = 1; + * @param value The chainId to set. + */ + private void setChainId( + java.lang.String value) { + java.lang.Class valueClass = value.getClass(); + + chainId_ = value; + } + /** + * string chain_id = 1; + */ + private void clearChainId() { + + chainId_ = getDefaultInstance().getChainId(); + } + /** + * string chain_id = 1; + * @param value The bytes for chainId to set. + */ + private void setChainIdBytes( + com.google.protobuf.ByteString value) { + checkByteStringIsUtf8(value); + chainId_ = value.toStringUtf8(); + + } + + public static final int TRUST_LEVEL_FIELD_NUMBER = 2; + private ibc.tendermint.light.TendermintLight.Fraction trustLevel_; + /** + * .ibc.tendermint.light.Fraction trust_level = 2; + */ + @java.lang.Override + public boolean hasTrustLevel() { + return trustLevel_ != null; + } + /** + * .ibc.tendermint.light.Fraction trust_level = 2; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.Fraction getTrustLevel() { + return trustLevel_ == null ? ibc.tendermint.light.TendermintLight.Fraction.getDefaultInstance() : trustLevel_; + } + /** + * .ibc.tendermint.light.Fraction trust_level = 2; + */ + private void setTrustLevel(ibc.tendermint.light.TendermintLight.Fraction value) { + value.getClass(); + trustLevel_ = value; + + } + /** + * .ibc.tendermint.light.Fraction trust_level = 2; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergeTrustLevel(ibc.tendermint.light.TendermintLight.Fraction value) { + value.getClass(); + if (trustLevel_ != null && + trustLevel_ != ibc.tendermint.light.TendermintLight.Fraction.getDefaultInstance()) { + trustLevel_ = + ibc.tendermint.light.TendermintLight.Fraction.newBuilder(trustLevel_).mergeFrom(value).buildPartial(); + } else { + trustLevel_ = value; + } + + } + /** + * .ibc.tendermint.light.Fraction trust_level = 2; + */ + private void clearTrustLevel() { trustLevel_ = null; + + } + + public static final int TRUSTING_PERIOD_FIELD_NUMBER = 3; + private ibc.tendermint.light.TendermintLight.Duration trustingPeriod_; + /** + *
+     * duration of the period since the LastestTimestamp during which the
+     * submitted headers are valid for upgrade
+     * 
+ * + * .ibc.tendermint.light.Duration trusting_period = 3; + */ + @java.lang.Override + public boolean hasTrustingPeriod() { + return trustingPeriod_ != null; + } + /** + *
+     * duration of the period since the LastestTimestamp during which the
+     * submitted headers are valid for upgrade
+     * 
+ * + * .ibc.tendermint.light.Duration trusting_period = 3; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.Duration getTrustingPeriod() { + return trustingPeriod_ == null ? ibc.tendermint.light.TendermintLight.Duration.getDefaultInstance() : trustingPeriod_; + } + /** + *
+     * duration of the period since the LastestTimestamp during which the
+     * submitted headers are valid for upgrade
+     * 
+ * + * .ibc.tendermint.light.Duration trusting_period = 3; + */ + private void setTrustingPeriod(ibc.tendermint.light.TendermintLight.Duration value) { + value.getClass(); + trustingPeriod_ = value; + + } + /** + *
+     * duration of the period since the LastestTimestamp during which the
+     * submitted headers are valid for upgrade
+     * 
+ * + * .ibc.tendermint.light.Duration trusting_period = 3; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergeTrustingPeriod(ibc.tendermint.light.TendermintLight.Duration value) { + value.getClass(); + if (trustingPeriod_ != null && + trustingPeriod_ != ibc.tendermint.light.TendermintLight.Duration.getDefaultInstance()) { + trustingPeriod_ = + ibc.tendermint.light.TendermintLight.Duration.newBuilder(trustingPeriod_).mergeFrom(value).buildPartial(); + } else { + trustingPeriod_ = value; + } + + } + /** + *
+     * duration of the period since the LastestTimestamp during which the
+     * submitted headers are valid for upgrade
+     * 
+ * + * .ibc.tendermint.light.Duration trusting_period = 3; + */ + private void clearTrustingPeriod() { trustingPeriod_ = null; + + } + + public static final int UNBONDING_PERIOD_FIELD_NUMBER = 4; + private ibc.tendermint.light.TendermintLight.Duration unbondingPeriod_; + /** + *
+     * duration of the staking unbonding period
+     * 
+ * + * .ibc.tendermint.light.Duration unbonding_period = 4; + */ + @java.lang.Override + public boolean hasUnbondingPeriod() { + return unbondingPeriod_ != null; + } + /** + *
+     * duration of the staking unbonding period
+     * 
+ * + * .ibc.tendermint.light.Duration unbonding_period = 4; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.Duration getUnbondingPeriod() { + return unbondingPeriod_ == null ? ibc.tendermint.light.TendermintLight.Duration.getDefaultInstance() : unbondingPeriod_; + } + /** + *
+     * duration of the staking unbonding period
+     * 
+ * + * .ibc.tendermint.light.Duration unbonding_period = 4; + */ + private void setUnbondingPeriod(ibc.tendermint.light.TendermintLight.Duration value) { + value.getClass(); + unbondingPeriod_ = value; + + } + /** + *
+     * duration of the staking unbonding period
+     * 
+ * + * .ibc.tendermint.light.Duration unbonding_period = 4; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergeUnbondingPeriod(ibc.tendermint.light.TendermintLight.Duration value) { + value.getClass(); + if (unbondingPeriod_ != null && + unbondingPeriod_ != ibc.tendermint.light.TendermintLight.Duration.getDefaultInstance()) { + unbondingPeriod_ = + ibc.tendermint.light.TendermintLight.Duration.newBuilder(unbondingPeriod_).mergeFrom(value).buildPartial(); + } else { + unbondingPeriod_ = value; + } + + } + /** + *
+     * duration of the staking unbonding period
+     * 
+ * + * .ibc.tendermint.light.Duration unbonding_period = 4; + */ + private void clearUnbondingPeriod() { unbondingPeriod_ = null; + + } + + public static final int MAX_CLOCK_DRIFT_FIELD_NUMBER = 5; + private ibc.tendermint.light.TendermintLight.Duration maxClockDrift_; + /** + *
+     * defines how much new (untrusted) header's Time can drift into the future.
+     * 
+ * + * .ibc.tendermint.light.Duration max_clock_drift = 5; + */ + @java.lang.Override + public boolean hasMaxClockDrift() { + return maxClockDrift_ != null; + } + /** + *
+     * defines how much new (untrusted) header's Time can drift into the future.
+     * 
+ * + * .ibc.tendermint.light.Duration max_clock_drift = 5; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.Duration getMaxClockDrift() { + return maxClockDrift_ == null ? ibc.tendermint.light.TendermintLight.Duration.getDefaultInstance() : maxClockDrift_; + } + /** + *
+     * defines how much new (untrusted) header's Time can drift into the future.
+     * 
+ * + * .ibc.tendermint.light.Duration max_clock_drift = 5; + */ + private void setMaxClockDrift(ibc.tendermint.light.TendermintLight.Duration value) { + value.getClass(); + maxClockDrift_ = value; + + } + /** + *
+     * defines how much new (untrusted) header's Time can drift into the future.
+     * 
+ * + * .ibc.tendermint.light.Duration max_clock_drift = 5; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergeMaxClockDrift(ibc.tendermint.light.TendermintLight.Duration value) { + value.getClass(); + if (maxClockDrift_ != null && + maxClockDrift_ != ibc.tendermint.light.TendermintLight.Duration.getDefaultInstance()) { + maxClockDrift_ = + ibc.tendermint.light.TendermintLight.Duration.newBuilder(maxClockDrift_).mergeFrom(value).buildPartial(); + } else { + maxClockDrift_ = value; + } + + } + /** + *
+     * defines how much new (untrusted) header's Time can drift into the future.
+     * 
+ * + * .ibc.tendermint.light.Duration max_clock_drift = 5; + */ + private void clearMaxClockDrift() { maxClockDrift_ = null; + + } + + public static final int FROZEN_HEIGHT_FIELD_NUMBER = 6; + private long frozenHeight_; + /** + *
+     * Block height when the client was frozen due to a misbehaviour
+     *ibc.core.client.v1.Height frozen_height = 6;
+     * 
+ * + * int64 frozen_height = 6; + * @return The frozenHeight. + */ + @java.lang.Override + public long getFrozenHeight() { + return frozenHeight_; + } + /** + *
+     * Block height when the client was frozen due to a misbehaviour
+     *ibc.core.client.v1.Height frozen_height = 6;
+     * 
+ * + * int64 frozen_height = 6; + * @param value The frozenHeight to set. + */ + private void setFrozenHeight(long value) { + + frozenHeight_ = value; + } + /** + *
+     * Block height when the client was frozen due to a misbehaviour
+     *ibc.core.client.v1.Height frozen_height = 6;
+     * 
+ * + * int64 frozen_height = 6; + */ + private void clearFrozenHeight() { + + frozenHeight_ = 0L; + } + + public static final int LATEST_HEIGHT_FIELD_NUMBER = 7; + private long latestHeight_; + /** + *
+     * Latest height the client was updated to
+     * 
+ * + * int64 latest_height = 7; + * @return The latestHeight. + */ + @java.lang.Override + public long getLatestHeight() { + return latestHeight_; + } + /** + *
+     * Latest height the client was updated to
+     * 
+ * + * int64 latest_height = 7; + * @param value The latestHeight to set. + */ + private void setLatestHeight(long value) { + + latestHeight_ = value; + } + /** + *
+     * Latest height the client was updated to
+     * 
+ * + * int64 latest_height = 7; + */ + private void clearLatestHeight() { + + latestHeight_ = 0L; + } + + public static final int ALLOW_UPDATE_AFTER_EXPIRY_FIELD_NUMBER = 8; + private boolean allowUpdateAfterExpiry_; + /** + *
+     * This flag, when set to true, will allow governance to recover a client
+     * which has expired
+     * 
+ * + * bool allow_update_after_expiry = 8; + * @return The allowUpdateAfterExpiry. + */ + @java.lang.Override + public boolean getAllowUpdateAfterExpiry() { + return allowUpdateAfterExpiry_; + } + /** + *
+     * This flag, when set to true, will allow governance to recover a client
+     * which has expired
+     * 
+ * + * bool allow_update_after_expiry = 8; + * @param value The allowUpdateAfterExpiry to set. + */ + private void setAllowUpdateAfterExpiry(boolean value) { + + allowUpdateAfterExpiry_ = value; + } + /** + *
+     * This flag, when set to true, will allow governance to recover a client
+     * which has expired
+     * 
+ * + * bool allow_update_after_expiry = 8; + */ + private void clearAllowUpdateAfterExpiry() { + + allowUpdateAfterExpiry_ = false; + } + + public static final int ALLOW_UPDATE_AFTER_MISBEHAVIOUR_FIELD_NUMBER = 9; + private boolean allowUpdateAfterMisbehaviour_; + /** + *
+     * 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 = 9; + * @return The allowUpdateAfterMisbehaviour. + */ + @java.lang.Override + public boolean getAllowUpdateAfterMisbehaviour() { + return allowUpdateAfterMisbehaviour_; + } + /** + *
+     * 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 = 9; + * @param value The allowUpdateAfterMisbehaviour to set. + */ + private void setAllowUpdateAfterMisbehaviour(boolean value) { + + allowUpdateAfterMisbehaviour_ = value; + } + /** + *
+     * 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 = 9; + */ + private void clearAllowUpdateAfterMisbehaviour() { + + allowUpdateAfterMisbehaviour_ = false; + } + + public static ibc.tendermint.light.TendermintLight.ClientState parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.ClientState parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.ClientState parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.ClientState parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.ClientState parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.ClientState parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.ClientState parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.ClientState parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.ClientState parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.ClientState parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.ClientState parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.ClientState parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(ibc.tendermint.light.TendermintLight.ClientState prototype) { + return (Builder) DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code ibc.tendermint.light.ClientState} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + ibc.tendermint.light.TendermintLight.ClientState, Builder> implements + // @@protoc_insertion_point(builder_implements:ibc.tendermint.light.ClientState) + ibc.tendermint.light.TendermintLight.ClientStateOrBuilder { + // Construct using ibc.tendermint.light.TendermintLight.ClientState.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * string chain_id = 1; + * @return The chainId. + */ + @java.lang.Override + public java.lang.String getChainId() { + return instance.getChainId(); + } + /** + * string chain_id = 1; + * @return The bytes for chainId. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getChainIdBytes() { + return instance.getChainIdBytes(); + } + /** + * string chain_id = 1; + * @param value The chainId to set. + * @return This builder for chaining. + */ + public Builder setChainId( + java.lang.String value) { + copyOnWrite(); + instance.setChainId(value); + return this; + } + /** + * string chain_id = 1; + * @return This builder for chaining. + */ + public Builder clearChainId() { + copyOnWrite(); + instance.clearChainId(); + return this; + } + /** + * string chain_id = 1; + * @param value The bytes for chainId to set. + * @return This builder for chaining. + */ + public Builder setChainIdBytes( + com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setChainIdBytes(value); + return this; + } + + /** + * .ibc.tendermint.light.Fraction trust_level = 2; + */ + @java.lang.Override + public boolean hasTrustLevel() { + return instance.hasTrustLevel(); + } + /** + * .ibc.tendermint.light.Fraction trust_level = 2; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.Fraction getTrustLevel() { + return instance.getTrustLevel(); + } + /** + * .ibc.tendermint.light.Fraction trust_level = 2; + */ + public Builder setTrustLevel(ibc.tendermint.light.TendermintLight.Fraction value) { + copyOnWrite(); + instance.setTrustLevel(value); + return this; + } + /** + * .ibc.tendermint.light.Fraction trust_level = 2; + */ + public Builder setTrustLevel( + ibc.tendermint.light.TendermintLight.Fraction.Builder builderForValue) { + copyOnWrite(); + instance.setTrustLevel(builderForValue.build()); + return this; + } + /** + * .ibc.tendermint.light.Fraction trust_level = 2; + */ + public Builder mergeTrustLevel(ibc.tendermint.light.TendermintLight.Fraction value) { + copyOnWrite(); + instance.mergeTrustLevel(value); + return this; + } + /** + * .ibc.tendermint.light.Fraction trust_level = 2; + */ + public Builder clearTrustLevel() { copyOnWrite(); + instance.clearTrustLevel(); + return this; + } + + /** + *
+       * duration of the period since the LastestTimestamp during which the
+       * submitted headers are valid for upgrade
+       * 
+ * + * .ibc.tendermint.light.Duration trusting_period = 3; + */ + @java.lang.Override + public boolean hasTrustingPeriod() { + return instance.hasTrustingPeriod(); + } + /** + *
+       * duration of the period since the LastestTimestamp during which the
+       * submitted headers are valid for upgrade
+       * 
+ * + * .ibc.tendermint.light.Duration trusting_period = 3; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.Duration getTrustingPeriod() { + return instance.getTrustingPeriod(); + } + /** + *
+       * duration of the period since the LastestTimestamp during which the
+       * submitted headers are valid for upgrade
+       * 
+ * + * .ibc.tendermint.light.Duration trusting_period = 3; + */ + public Builder setTrustingPeriod(ibc.tendermint.light.TendermintLight.Duration value) { + copyOnWrite(); + instance.setTrustingPeriod(value); + return this; + } + /** + *
+       * duration of the period since the LastestTimestamp during which the
+       * submitted headers are valid for upgrade
+       * 
+ * + * .ibc.tendermint.light.Duration trusting_period = 3; + */ + public Builder setTrustingPeriod( + ibc.tendermint.light.TendermintLight.Duration.Builder builderForValue) { + copyOnWrite(); + instance.setTrustingPeriod(builderForValue.build()); + return this; + } + /** + *
+       * duration of the period since the LastestTimestamp during which the
+       * submitted headers are valid for upgrade
+       * 
+ * + * .ibc.tendermint.light.Duration trusting_period = 3; + */ + public Builder mergeTrustingPeriod(ibc.tendermint.light.TendermintLight.Duration value) { + copyOnWrite(); + instance.mergeTrustingPeriod(value); + return this; + } + /** + *
+       * duration of the period since the LastestTimestamp during which the
+       * submitted headers are valid for upgrade
+       * 
+ * + * .ibc.tendermint.light.Duration trusting_period = 3; + */ + public Builder clearTrustingPeriod() { copyOnWrite(); + instance.clearTrustingPeriod(); + return this; + } + + /** + *
+       * duration of the staking unbonding period
+       * 
+ * + * .ibc.tendermint.light.Duration unbonding_period = 4; + */ + @java.lang.Override + public boolean hasUnbondingPeriod() { + return instance.hasUnbondingPeriod(); + } + /** + *
+       * duration of the staking unbonding period
+       * 
+ * + * .ibc.tendermint.light.Duration unbonding_period = 4; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.Duration getUnbondingPeriod() { + return instance.getUnbondingPeriod(); + } + /** + *
+       * duration of the staking unbonding period
+       * 
+ * + * .ibc.tendermint.light.Duration unbonding_period = 4; + */ + public Builder setUnbondingPeriod(ibc.tendermint.light.TendermintLight.Duration value) { + copyOnWrite(); + instance.setUnbondingPeriod(value); + return this; + } + /** + *
+       * duration of the staking unbonding period
+       * 
+ * + * .ibc.tendermint.light.Duration unbonding_period = 4; + */ + public Builder setUnbondingPeriod( + ibc.tendermint.light.TendermintLight.Duration.Builder builderForValue) { + copyOnWrite(); + instance.setUnbondingPeriod(builderForValue.build()); + return this; + } + /** + *
+       * duration of the staking unbonding period
+       * 
+ * + * .ibc.tendermint.light.Duration unbonding_period = 4; + */ + public Builder mergeUnbondingPeriod(ibc.tendermint.light.TendermintLight.Duration value) { + copyOnWrite(); + instance.mergeUnbondingPeriod(value); + return this; + } + /** + *
+       * duration of the staking unbonding period
+       * 
+ * + * .ibc.tendermint.light.Duration unbonding_period = 4; + */ + public Builder clearUnbondingPeriod() { copyOnWrite(); + instance.clearUnbondingPeriod(); + return this; + } + + /** + *
+       * defines how much new (untrusted) header's Time can drift into the future.
+       * 
+ * + * .ibc.tendermint.light.Duration max_clock_drift = 5; + */ + @java.lang.Override + public boolean hasMaxClockDrift() { + return instance.hasMaxClockDrift(); + } + /** + *
+       * defines how much new (untrusted) header's Time can drift into the future.
+       * 
+ * + * .ibc.tendermint.light.Duration max_clock_drift = 5; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.Duration getMaxClockDrift() { + return instance.getMaxClockDrift(); + } + /** + *
+       * defines how much new (untrusted) header's Time can drift into the future.
+       * 
+ * + * .ibc.tendermint.light.Duration max_clock_drift = 5; + */ + public Builder setMaxClockDrift(ibc.tendermint.light.TendermintLight.Duration value) { + copyOnWrite(); + instance.setMaxClockDrift(value); + return this; + } + /** + *
+       * defines how much new (untrusted) header's Time can drift into the future.
+       * 
+ * + * .ibc.tendermint.light.Duration max_clock_drift = 5; + */ + public Builder setMaxClockDrift( + ibc.tendermint.light.TendermintLight.Duration.Builder builderForValue) { + copyOnWrite(); + instance.setMaxClockDrift(builderForValue.build()); + return this; + } + /** + *
+       * defines how much new (untrusted) header's Time can drift into the future.
+       * 
+ * + * .ibc.tendermint.light.Duration max_clock_drift = 5; + */ + public Builder mergeMaxClockDrift(ibc.tendermint.light.TendermintLight.Duration value) { + copyOnWrite(); + instance.mergeMaxClockDrift(value); + return this; + } + /** + *
+       * defines how much new (untrusted) header's Time can drift into the future.
+       * 
+ * + * .ibc.tendermint.light.Duration max_clock_drift = 5; + */ + public Builder clearMaxClockDrift() { copyOnWrite(); + instance.clearMaxClockDrift(); + return this; + } + + /** + *
+       * Block height when the client was frozen due to a misbehaviour
+       *ibc.core.client.v1.Height frozen_height = 6;
+       * 
+ * + * int64 frozen_height = 6; + * @return The frozenHeight. + */ + @java.lang.Override + public long getFrozenHeight() { + return instance.getFrozenHeight(); + } + /** + *
+       * Block height when the client was frozen due to a misbehaviour
+       *ibc.core.client.v1.Height frozen_height = 6;
+       * 
+ * + * int64 frozen_height = 6; + * @param value The frozenHeight to set. + * @return This builder for chaining. + */ + public Builder setFrozenHeight(long value) { + copyOnWrite(); + instance.setFrozenHeight(value); + return this; + } + /** + *
+       * Block height when the client was frozen due to a misbehaviour
+       *ibc.core.client.v1.Height frozen_height = 6;
+       * 
+ * + * int64 frozen_height = 6; + * @return This builder for chaining. + */ + public Builder clearFrozenHeight() { + copyOnWrite(); + instance.clearFrozenHeight(); + return this; + } + + /** + *
+       * Latest height the client was updated to
+       * 
+ * + * int64 latest_height = 7; + * @return The latestHeight. + */ + @java.lang.Override + public long getLatestHeight() { + return instance.getLatestHeight(); + } + /** + *
+       * Latest height the client was updated to
+       * 
+ * + * int64 latest_height = 7; + * @param value The latestHeight to set. + * @return This builder for chaining. + */ + public Builder setLatestHeight(long value) { + copyOnWrite(); + instance.setLatestHeight(value); + return this; + } + /** + *
+       * Latest height the client was updated to
+       * 
+ * + * int64 latest_height = 7; + * @return This builder for chaining. + */ + public Builder clearLatestHeight() { + copyOnWrite(); + instance.clearLatestHeight(); + return this; + } + + /** + *
+       * This flag, when set to true, will allow governance to recover a client
+       * which has expired
+       * 
+ * + * bool allow_update_after_expiry = 8; + * @return The allowUpdateAfterExpiry. + */ + @java.lang.Override + public boolean getAllowUpdateAfterExpiry() { + return instance.getAllowUpdateAfterExpiry(); + } + /** + *
+       * This flag, when set to true, will allow governance to recover a client
+       * which has expired
+       * 
+ * + * bool allow_update_after_expiry = 8; + * @param value The allowUpdateAfterExpiry to set. + * @return This builder for chaining. + */ + public Builder setAllowUpdateAfterExpiry(boolean value) { + copyOnWrite(); + instance.setAllowUpdateAfterExpiry(value); + return this; + } + /** + *
+       * This flag, when set to true, will allow governance to recover a client
+       * which has expired
+       * 
+ * + * bool allow_update_after_expiry = 8; + * @return This builder for chaining. + */ + public Builder clearAllowUpdateAfterExpiry() { + copyOnWrite(); + instance.clearAllowUpdateAfterExpiry(); + return this; + } + + /** + *
+       * 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 = 9; + * @return The allowUpdateAfterMisbehaviour. + */ + @java.lang.Override + public boolean getAllowUpdateAfterMisbehaviour() { + return instance.getAllowUpdateAfterMisbehaviour(); + } + /** + *
+       * 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 = 9; + * @param value The allowUpdateAfterMisbehaviour to set. + * @return This builder for chaining. + */ + public Builder setAllowUpdateAfterMisbehaviour(boolean value) { + copyOnWrite(); + instance.setAllowUpdateAfterMisbehaviour(value); + return this; + } + /** + *
+       * 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 = 9; + * @return This builder for chaining. + */ + public Builder clearAllowUpdateAfterMisbehaviour() { + copyOnWrite(); + instance.clearAllowUpdateAfterMisbehaviour(); + return this; + } + + // @@protoc_insertion_point(builder_scope:ibc.tendermint.light.ClientState) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new ibc.tendermint.light.TendermintLight.ClientState(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "chainId_", + "trustLevel_", + "trustingPeriod_", + "unbondingPeriod_", + "maxClockDrift_", + "frozenHeight_", + "latestHeight_", + "allowUpdateAfterExpiry_", + "allowUpdateAfterMisbehaviour_", + }; + java.lang.String info = + "\u0000\t\u0000\u0000\u0001\t\t\u0000\u0000\u0000\u0001\u0208\u0002\t\u0003\t\u0004" + + "\t\u0005\t\u0006\u0002\u0007\u0002\b\u0007\t\u0007"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (ibc.tendermint.light.TendermintLight.ClientState.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:ibc.tendermint.light.ClientState) + private static final ibc.tendermint.light.TendermintLight.ClientState DEFAULT_INSTANCE; + static { + ClientState defaultInstance = new ClientState(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + ClientState.class, defaultInstance); + } + + public static ibc.tendermint.light.TendermintLight.ClientState getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface ConsensusStateOrBuilder extends + // @@protoc_insertion_point(interface_extends:ibc.tendermint.light.ConsensusState) + com.google.protobuf.MessageLiteOrBuilder { + + /** + *
+     * timestamp that corresponds to the block height in which the ConsensusState
+     * was stored.
+     * 
+ * + * .ibc.tendermint.light.Timestamp timestamp = 1; + * @return Whether the timestamp field is set. + */ + boolean hasTimestamp(); + /** + *
+     * timestamp that corresponds to the block height in which the ConsensusState
+     * was stored.
+     * 
+ * + * .ibc.tendermint.light.Timestamp timestamp = 1; + * @return The timestamp. + */ + ibc.tendermint.light.TendermintLight.Timestamp getTimestamp(); + + /** + *
+     * commitment root (i.e app hash)
+     * 
+ * + * .ibc.tendermint.light.MerkleRoot root = 2; + * @return Whether the root field is set. + */ + boolean hasRoot(); + /** + *
+     * commitment root (i.e app hash)
+     * 
+ * + * .ibc.tendermint.light.MerkleRoot root = 2; + * @return The root. + */ + ibc.tendermint.light.TendermintLight.MerkleRoot getRoot(); + + /** + * bytes next_validators_hash = 3; + * @return The nextValidatorsHash. + */ + com.google.protobuf.ByteString getNextValidatorsHash(); + } + /** + *
+   * ConsensusState defines the consensus state from Tendermint.
+   * 
+ * + * Protobuf type {@code ibc.tendermint.light.ConsensusState} + */ + public static final class ConsensusState extends + com.google.protobuf.GeneratedMessageLite< + ConsensusState, ConsensusState.Builder> implements + // @@protoc_insertion_point(message_implements:ibc.tendermint.light.ConsensusState) + ConsensusStateOrBuilder { + private ConsensusState() { + nextValidatorsHash_ = com.google.protobuf.ByteString.EMPTY; + } + public static final int TIMESTAMP_FIELD_NUMBER = 1; + private ibc.tendermint.light.TendermintLight.Timestamp timestamp_; + /** + *
+     * timestamp that corresponds to the block height in which the ConsensusState
+     * was stored.
+     * 
+ * + * .ibc.tendermint.light.Timestamp timestamp = 1; + */ + @java.lang.Override + public boolean hasTimestamp() { + return timestamp_ != null; + } + /** + *
+     * timestamp that corresponds to the block height in which the ConsensusState
+     * was stored.
+     * 
+ * + * .ibc.tendermint.light.Timestamp timestamp = 1; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.Timestamp getTimestamp() { + return timestamp_ == null ? ibc.tendermint.light.TendermintLight.Timestamp.getDefaultInstance() : timestamp_; + } + /** + *
+     * timestamp that corresponds to the block height in which the ConsensusState
+     * was stored.
+     * 
+ * + * .ibc.tendermint.light.Timestamp timestamp = 1; + */ + private void setTimestamp(ibc.tendermint.light.TendermintLight.Timestamp value) { + value.getClass(); + timestamp_ = value; + + } + /** + *
+     * timestamp that corresponds to the block height in which the ConsensusState
+     * was stored.
+     * 
+ * + * .ibc.tendermint.light.Timestamp timestamp = 1; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergeTimestamp(ibc.tendermint.light.TendermintLight.Timestamp value) { + value.getClass(); + if (timestamp_ != null && + timestamp_ != ibc.tendermint.light.TendermintLight.Timestamp.getDefaultInstance()) { + timestamp_ = + ibc.tendermint.light.TendermintLight.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial(); + } else { + timestamp_ = value; + } + + } + /** + *
+     * timestamp that corresponds to the block height in which the ConsensusState
+     * was stored.
+     * 
+ * + * .ibc.tendermint.light.Timestamp timestamp = 1; + */ + private void clearTimestamp() { timestamp_ = null; + + } + + public static final int ROOT_FIELD_NUMBER = 2; + private ibc.tendermint.light.TendermintLight.MerkleRoot root_; + /** + *
+     * commitment root (i.e app hash)
+     * 
+ * + * .ibc.tendermint.light.MerkleRoot root = 2; + */ + @java.lang.Override + public boolean hasRoot() { + return root_ != null; + } + /** + *
+     * commitment root (i.e app hash)
+     * 
+ * + * .ibc.tendermint.light.MerkleRoot root = 2; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.MerkleRoot getRoot() { + return root_ == null ? ibc.tendermint.light.TendermintLight.MerkleRoot.getDefaultInstance() : root_; + } + /** + *
+     * commitment root (i.e app hash)
+     * 
+ * + * .ibc.tendermint.light.MerkleRoot root = 2; + */ + private void setRoot(ibc.tendermint.light.TendermintLight.MerkleRoot value) { + value.getClass(); + root_ = value; + + } + /** + *
+     * commitment root (i.e app hash)
+     * 
+ * + * .ibc.tendermint.light.MerkleRoot root = 2; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergeRoot(ibc.tendermint.light.TendermintLight.MerkleRoot value) { + value.getClass(); + if (root_ != null && + root_ != ibc.tendermint.light.TendermintLight.MerkleRoot.getDefaultInstance()) { + root_ = + ibc.tendermint.light.TendermintLight.MerkleRoot.newBuilder(root_).mergeFrom(value).buildPartial(); + } else { + root_ = value; + } + + } + /** + *
+     * commitment root (i.e app hash)
+     * 
+ * + * .ibc.tendermint.light.MerkleRoot root = 2; + */ + private void clearRoot() { root_ = null; + + } + + public static final int NEXT_VALIDATORS_HASH_FIELD_NUMBER = 3; + private com.google.protobuf.ByteString nextValidatorsHash_; + /** + * bytes next_validators_hash = 3; + * @return The nextValidatorsHash. + */ + @java.lang.Override + public com.google.protobuf.ByteString getNextValidatorsHash() { + return nextValidatorsHash_; + } + /** + * bytes next_validators_hash = 3; + * @param value The nextValidatorsHash to set. + */ + private void setNextValidatorsHash(com.google.protobuf.ByteString value) { + java.lang.Class valueClass = value.getClass(); + + nextValidatorsHash_ = value; + } + /** + * bytes next_validators_hash = 3; + */ + private void clearNextValidatorsHash() { + + nextValidatorsHash_ = getDefaultInstance().getNextValidatorsHash(); + } + + public static ibc.tendermint.light.TendermintLight.ConsensusState parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.ConsensusState parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.ConsensusState parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.ConsensusState parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.ConsensusState parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.ConsensusState parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.ConsensusState parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.ConsensusState parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.ConsensusState parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.ConsensusState parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.ConsensusState parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.ConsensusState parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(ibc.tendermint.light.TendermintLight.ConsensusState prototype) { + return (Builder) DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + *
+     * ConsensusState defines the consensus state from Tendermint.
+     * 
+ * + * Protobuf type {@code ibc.tendermint.light.ConsensusState} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + ibc.tendermint.light.TendermintLight.ConsensusState, Builder> implements + // @@protoc_insertion_point(builder_implements:ibc.tendermint.light.ConsensusState) + ibc.tendermint.light.TendermintLight.ConsensusStateOrBuilder { + // Construct using ibc.tendermint.light.TendermintLight.ConsensusState.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + *
+       * timestamp that corresponds to the block height in which the ConsensusState
+       * was stored.
+       * 
+ * + * .ibc.tendermint.light.Timestamp timestamp = 1; + */ + @java.lang.Override + public boolean hasTimestamp() { + return instance.hasTimestamp(); + } + /** + *
+       * timestamp that corresponds to the block height in which the ConsensusState
+       * was stored.
+       * 
+ * + * .ibc.tendermint.light.Timestamp timestamp = 1; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.Timestamp getTimestamp() { + return instance.getTimestamp(); + } + /** + *
+       * timestamp that corresponds to the block height in which the ConsensusState
+       * was stored.
+       * 
+ * + * .ibc.tendermint.light.Timestamp timestamp = 1; + */ + public Builder setTimestamp(ibc.tendermint.light.TendermintLight.Timestamp value) { + copyOnWrite(); + instance.setTimestamp(value); + return this; + } + /** + *
+       * timestamp that corresponds to the block height in which the ConsensusState
+       * was stored.
+       * 
+ * + * .ibc.tendermint.light.Timestamp timestamp = 1; + */ + public Builder setTimestamp( + ibc.tendermint.light.TendermintLight.Timestamp.Builder builderForValue) { + copyOnWrite(); + instance.setTimestamp(builderForValue.build()); + return this; + } + /** + *
+       * timestamp that corresponds to the block height in which the ConsensusState
+       * was stored.
+       * 
+ * + * .ibc.tendermint.light.Timestamp timestamp = 1; + */ + public Builder mergeTimestamp(ibc.tendermint.light.TendermintLight.Timestamp value) { + copyOnWrite(); + instance.mergeTimestamp(value); + return this; + } + /** + *
+       * timestamp that corresponds to the block height in which the ConsensusState
+       * was stored.
+       * 
+ * + * .ibc.tendermint.light.Timestamp timestamp = 1; + */ + public Builder clearTimestamp() { copyOnWrite(); + instance.clearTimestamp(); + return this; + } + + /** + *
+       * commitment root (i.e app hash)
+       * 
+ * + * .ibc.tendermint.light.MerkleRoot root = 2; + */ + @java.lang.Override + public boolean hasRoot() { + return instance.hasRoot(); + } + /** + *
+       * commitment root (i.e app hash)
+       * 
+ * + * .ibc.tendermint.light.MerkleRoot root = 2; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.MerkleRoot getRoot() { + return instance.getRoot(); + } + /** + *
+       * commitment root (i.e app hash)
+       * 
+ * + * .ibc.tendermint.light.MerkleRoot root = 2; + */ + public Builder setRoot(ibc.tendermint.light.TendermintLight.MerkleRoot value) { + copyOnWrite(); + instance.setRoot(value); + return this; + } + /** + *
+       * commitment root (i.e app hash)
+       * 
+ * + * .ibc.tendermint.light.MerkleRoot root = 2; + */ + public Builder setRoot( + ibc.tendermint.light.TendermintLight.MerkleRoot.Builder builderForValue) { + copyOnWrite(); + instance.setRoot(builderForValue.build()); + return this; + } + /** + *
+       * commitment root (i.e app hash)
+       * 
+ * + * .ibc.tendermint.light.MerkleRoot root = 2; + */ + public Builder mergeRoot(ibc.tendermint.light.TendermintLight.MerkleRoot value) { + copyOnWrite(); + instance.mergeRoot(value); + return this; + } + /** + *
+       * commitment root (i.e app hash)
+       * 
+ * + * .ibc.tendermint.light.MerkleRoot root = 2; + */ + public Builder clearRoot() { copyOnWrite(); + instance.clearRoot(); + return this; + } + + /** + * bytes next_validators_hash = 3; + * @return The nextValidatorsHash. + */ + @java.lang.Override + public com.google.protobuf.ByteString getNextValidatorsHash() { + return instance.getNextValidatorsHash(); + } + /** + * bytes next_validators_hash = 3; + * @param value The nextValidatorsHash to set. + * @return This builder for chaining. + */ + public Builder setNextValidatorsHash(com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setNextValidatorsHash(value); + return this; + } + /** + * bytes next_validators_hash = 3; + * @return This builder for chaining. + */ + public Builder clearNextValidatorsHash() { + copyOnWrite(); + instance.clearNextValidatorsHash(); + return this; + } + + // @@protoc_insertion_point(builder_scope:ibc.tendermint.light.ConsensusState) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new ibc.tendermint.light.TendermintLight.ConsensusState(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "timestamp_", + "root_", + "nextValidatorsHash_", + }; + java.lang.String info = + "\u0000\u0003\u0000\u0000\u0001\u0003\u0003\u0000\u0000\u0000\u0001\t\u0002\t\u0003" + + "\n"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (ibc.tendermint.light.TendermintLight.ConsensusState.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:ibc.tendermint.light.ConsensusState) + private static final ibc.tendermint.light.TendermintLight.ConsensusState DEFAULT_INSTANCE; + static { + ConsensusState defaultInstance = new ConsensusState(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + ConsensusState.class, defaultInstance); + } + + public static ibc.tendermint.light.TendermintLight.ConsensusState getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface MerkleRootOrBuilder extends + // @@protoc_insertion_point(interface_extends:ibc.tendermint.light.MerkleRoot) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * bytes hash = 1; + * @return The hash. + */ + com.google.protobuf.ByteString getHash(); + } + /** + *
+   * MerkleRoot defines a merkle root hash.
+   * In the Cosmos SDK, the AppHash of a block header becomes the root.
+   * 
+ * + * Protobuf type {@code ibc.tendermint.light.MerkleRoot} + */ + public static final class MerkleRoot extends + com.google.protobuf.GeneratedMessageLite< + MerkleRoot, MerkleRoot.Builder> implements + // @@protoc_insertion_point(message_implements:ibc.tendermint.light.MerkleRoot) + MerkleRootOrBuilder { + private MerkleRoot() { + hash_ = com.google.protobuf.ByteString.EMPTY; + } + public static final int HASH_FIELD_NUMBER = 1; + private com.google.protobuf.ByteString hash_; + /** + * bytes hash = 1; + * @return The hash. + */ + @java.lang.Override + public com.google.protobuf.ByteString getHash() { + return hash_; + } + /** + * bytes hash = 1; + * @param value The hash to set. + */ + private void setHash(com.google.protobuf.ByteString value) { + java.lang.Class valueClass = value.getClass(); + + hash_ = value; + } + /** + * bytes hash = 1; + */ + private void clearHash() { + + hash_ = getDefaultInstance().getHash(); + } + + public static ibc.tendermint.light.TendermintLight.MerkleRoot parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.MerkleRoot parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.MerkleRoot parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.MerkleRoot parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.MerkleRoot parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.MerkleRoot parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.MerkleRoot parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.MerkleRoot parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.MerkleRoot parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.MerkleRoot parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.MerkleRoot parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.MerkleRoot parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(ibc.tendermint.light.TendermintLight.MerkleRoot prototype) { + return (Builder) DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + *
+     * MerkleRoot defines a merkle root hash.
+     * In the Cosmos SDK, the AppHash of a block header becomes the root.
+     * 
+ * + * Protobuf type {@code ibc.tendermint.light.MerkleRoot} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + ibc.tendermint.light.TendermintLight.MerkleRoot, Builder> implements + // @@protoc_insertion_point(builder_implements:ibc.tendermint.light.MerkleRoot) + ibc.tendermint.light.TendermintLight.MerkleRootOrBuilder { + // Construct using ibc.tendermint.light.TendermintLight.MerkleRoot.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * bytes hash = 1; + * @return The hash. + */ + @java.lang.Override + public com.google.protobuf.ByteString getHash() { + return instance.getHash(); + } + /** + * bytes hash = 1; + * @param value The hash to set. + * @return This builder for chaining. + */ + public Builder setHash(com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setHash(value); + return this; + } + /** + * bytes hash = 1; + * @return This builder for chaining. + */ + public Builder clearHash() { + copyOnWrite(); + instance.clearHash(); + return this; + } + + // @@protoc_insertion_point(builder_scope:ibc.tendermint.light.MerkleRoot) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new ibc.tendermint.light.TendermintLight.MerkleRoot(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "hash_", + }; + java.lang.String info = + "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\n"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (ibc.tendermint.light.TendermintLight.MerkleRoot.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:ibc.tendermint.light.MerkleRoot) + private static final ibc.tendermint.light.TendermintLight.MerkleRoot DEFAULT_INSTANCE; + static { + MerkleRoot defaultInstance = new MerkleRoot(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + MerkleRoot.class, defaultInstance); + } + + public static ibc.tendermint.light.TendermintLight.MerkleRoot getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface CanonicalPartSetHeaderOrBuilder extends + // @@protoc_insertion_point(interface_extends:ibc.tendermint.light.CanonicalPartSetHeader) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * uint32 total = 1; + * @return The total. + */ + int getTotal(); + + /** + * bytes hash = 2; + * @return The hash. + */ + com.google.protobuf.ByteString getHash(); + } + /** + * Protobuf type {@code ibc.tendermint.light.CanonicalPartSetHeader} + */ + public static final class CanonicalPartSetHeader extends + com.google.protobuf.GeneratedMessageLite< + CanonicalPartSetHeader, CanonicalPartSetHeader.Builder> implements + // @@protoc_insertion_point(message_implements:ibc.tendermint.light.CanonicalPartSetHeader) + CanonicalPartSetHeaderOrBuilder { + private CanonicalPartSetHeader() { + hash_ = com.google.protobuf.ByteString.EMPTY; + } + public static final int TOTAL_FIELD_NUMBER = 1; + private int total_; + /** + * uint32 total = 1; + * @return The total. + */ + @java.lang.Override + public int getTotal() { + return total_; + } + /** + * uint32 total = 1; + * @param value The total to set. + */ + private void setTotal(int value) { + + total_ = value; + } + /** + * uint32 total = 1; + */ + private void clearTotal() { + + total_ = 0; + } + + public static final int HASH_FIELD_NUMBER = 2; + private com.google.protobuf.ByteString hash_; + /** + * bytes hash = 2; + * @return The hash. + */ + @java.lang.Override + public com.google.protobuf.ByteString getHash() { + return hash_; + } + /** + * bytes hash = 2; + * @param value The hash to set. + */ + private void setHash(com.google.protobuf.ByteString value) { + java.lang.Class valueClass = value.getClass(); + + hash_ = value; + } + /** + * bytes hash = 2; + */ + private void clearHash() { + + hash_ = getDefaultInstance().getHash(); + } + + public static ibc.tendermint.light.TendermintLight.CanonicalPartSetHeader parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.CanonicalPartSetHeader parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.CanonicalPartSetHeader parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.CanonicalPartSetHeader parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.CanonicalPartSetHeader parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.CanonicalPartSetHeader parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.CanonicalPartSetHeader parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.CanonicalPartSetHeader parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.CanonicalPartSetHeader parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.CanonicalPartSetHeader parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.CanonicalPartSetHeader parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.CanonicalPartSetHeader parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(ibc.tendermint.light.TendermintLight.CanonicalPartSetHeader prototype) { + return (Builder) DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code ibc.tendermint.light.CanonicalPartSetHeader} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + ibc.tendermint.light.TendermintLight.CanonicalPartSetHeader, Builder> implements + // @@protoc_insertion_point(builder_implements:ibc.tendermint.light.CanonicalPartSetHeader) + ibc.tendermint.light.TendermintLight.CanonicalPartSetHeaderOrBuilder { + // Construct using ibc.tendermint.light.TendermintLight.CanonicalPartSetHeader.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * uint32 total = 1; + * @return The total. + */ + @java.lang.Override + public int getTotal() { + return instance.getTotal(); + } + /** + * uint32 total = 1; + * @param value The total to set. + * @return This builder for chaining. + */ + public Builder setTotal(int value) { + copyOnWrite(); + instance.setTotal(value); + return this; + } + /** + * uint32 total = 1; + * @return This builder for chaining. + */ + public Builder clearTotal() { + copyOnWrite(); + instance.clearTotal(); + return this; + } + + /** + * bytes hash = 2; + * @return The hash. + */ + @java.lang.Override + public com.google.protobuf.ByteString getHash() { + return instance.getHash(); + } + /** + * bytes hash = 2; + * @param value The hash to set. + * @return This builder for chaining. + */ + public Builder setHash(com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setHash(value); + return this; + } + /** + * bytes hash = 2; + * @return This builder for chaining. + */ + public Builder clearHash() { + copyOnWrite(); + instance.clearHash(); + return this; + } + + // @@protoc_insertion_point(builder_scope:ibc.tendermint.light.CanonicalPartSetHeader) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new ibc.tendermint.light.TendermintLight.CanonicalPartSetHeader(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "total_", + "hash_", + }; + java.lang.String info = + "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\u000b\u0002\n" + + ""; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (ibc.tendermint.light.TendermintLight.CanonicalPartSetHeader.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:ibc.tendermint.light.CanonicalPartSetHeader) + private static final ibc.tendermint.light.TendermintLight.CanonicalPartSetHeader DEFAULT_INSTANCE; + static { + CanonicalPartSetHeader defaultInstance = new CanonicalPartSetHeader(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + CanonicalPartSetHeader.class, defaultInstance); + } + + public static ibc.tendermint.light.TendermintLight.CanonicalPartSetHeader getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface CanonicalBlockIDOrBuilder extends + // @@protoc_insertion_point(interface_extends:ibc.tendermint.light.CanonicalBlockID) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * bytes hash = 1; + * @return The hash. + */ + com.google.protobuf.ByteString getHash(); + + /** + * .ibc.tendermint.light.CanonicalPartSetHeader part_set_header = 2; + * @return Whether the partSetHeader field is set. + */ + boolean hasPartSetHeader(); + /** + * .ibc.tendermint.light.CanonicalPartSetHeader part_set_header = 2; + * @return The partSetHeader. + */ + ibc.tendermint.light.TendermintLight.CanonicalPartSetHeader getPartSetHeader(); + } + /** + * Protobuf type {@code ibc.tendermint.light.CanonicalBlockID} + */ + public static final class CanonicalBlockID extends + com.google.protobuf.GeneratedMessageLite< + CanonicalBlockID, CanonicalBlockID.Builder> implements + // @@protoc_insertion_point(message_implements:ibc.tendermint.light.CanonicalBlockID) + CanonicalBlockIDOrBuilder { + private CanonicalBlockID() { + hash_ = com.google.protobuf.ByteString.EMPTY; + } + public static final int HASH_FIELD_NUMBER = 1; + private com.google.protobuf.ByteString hash_; + /** + * bytes hash = 1; + * @return The hash. + */ + @java.lang.Override + public com.google.protobuf.ByteString getHash() { + return hash_; + } + /** + * bytes hash = 1; + * @param value The hash to set. + */ + private void setHash(com.google.protobuf.ByteString value) { + java.lang.Class valueClass = value.getClass(); + + hash_ = value; + } + /** + * bytes hash = 1; + */ + private void clearHash() { + + hash_ = getDefaultInstance().getHash(); + } + + public static final int PART_SET_HEADER_FIELD_NUMBER = 2; + private ibc.tendermint.light.TendermintLight.CanonicalPartSetHeader partSetHeader_; + /** + * .ibc.tendermint.light.CanonicalPartSetHeader part_set_header = 2; + */ + @java.lang.Override + public boolean hasPartSetHeader() { + return partSetHeader_ != null; + } + /** + * .ibc.tendermint.light.CanonicalPartSetHeader part_set_header = 2; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.CanonicalPartSetHeader getPartSetHeader() { + return partSetHeader_ == null ? ibc.tendermint.light.TendermintLight.CanonicalPartSetHeader.getDefaultInstance() : partSetHeader_; + } + /** + * .ibc.tendermint.light.CanonicalPartSetHeader part_set_header = 2; + */ + private void setPartSetHeader(ibc.tendermint.light.TendermintLight.CanonicalPartSetHeader value) { + value.getClass(); + partSetHeader_ = value; + + } + /** + * .ibc.tendermint.light.CanonicalPartSetHeader part_set_header = 2; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergePartSetHeader(ibc.tendermint.light.TendermintLight.CanonicalPartSetHeader value) { + value.getClass(); + if (partSetHeader_ != null && + partSetHeader_ != ibc.tendermint.light.TendermintLight.CanonicalPartSetHeader.getDefaultInstance()) { + partSetHeader_ = + ibc.tendermint.light.TendermintLight.CanonicalPartSetHeader.newBuilder(partSetHeader_).mergeFrom(value).buildPartial(); + } else { + partSetHeader_ = value; + } + + } + /** + * .ibc.tendermint.light.CanonicalPartSetHeader part_set_header = 2; + */ + private void clearPartSetHeader() { partSetHeader_ = null; + + } + + public static ibc.tendermint.light.TendermintLight.CanonicalBlockID parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.CanonicalBlockID parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.CanonicalBlockID parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.CanonicalBlockID parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.CanonicalBlockID parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.CanonicalBlockID parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.CanonicalBlockID parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.CanonicalBlockID parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.CanonicalBlockID parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.CanonicalBlockID parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.CanonicalBlockID parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.CanonicalBlockID parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(ibc.tendermint.light.TendermintLight.CanonicalBlockID prototype) { + return (Builder) DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code ibc.tendermint.light.CanonicalBlockID} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + ibc.tendermint.light.TendermintLight.CanonicalBlockID, Builder> implements + // @@protoc_insertion_point(builder_implements:ibc.tendermint.light.CanonicalBlockID) + ibc.tendermint.light.TendermintLight.CanonicalBlockIDOrBuilder { + // Construct using ibc.tendermint.light.TendermintLight.CanonicalBlockID.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * bytes hash = 1; + * @return The hash. + */ + @java.lang.Override + public com.google.protobuf.ByteString getHash() { + return instance.getHash(); + } + /** + * bytes hash = 1; + * @param value The hash to set. + * @return This builder for chaining. + */ + public Builder setHash(com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setHash(value); + return this; + } + /** + * bytes hash = 1; + * @return This builder for chaining. + */ + public Builder clearHash() { + copyOnWrite(); + instance.clearHash(); + return this; + } + + /** + * .ibc.tendermint.light.CanonicalPartSetHeader part_set_header = 2; + */ + @java.lang.Override + public boolean hasPartSetHeader() { + return instance.hasPartSetHeader(); + } + /** + * .ibc.tendermint.light.CanonicalPartSetHeader part_set_header = 2; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.CanonicalPartSetHeader getPartSetHeader() { + return instance.getPartSetHeader(); + } + /** + * .ibc.tendermint.light.CanonicalPartSetHeader part_set_header = 2; + */ + public Builder setPartSetHeader(ibc.tendermint.light.TendermintLight.CanonicalPartSetHeader value) { + copyOnWrite(); + instance.setPartSetHeader(value); + return this; + } + /** + * .ibc.tendermint.light.CanonicalPartSetHeader part_set_header = 2; + */ + public Builder setPartSetHeader( + ibc.tendermint.light.TendermintLight.CanonicalPartSetHeader.Builder builderForValue) { + copyOnWrite(); + instance.setPartSetHeader(builderForValue.build()); + return this; + } + /** + * .ibc.tendermint.light.CanonicalPartSetHeader part_set_header = 2; + */ + public Builder mergePartSetHeader(ibc.tendermint.light.TendermintLight.CanonicalPartSetHeader value) { + copyOnWrite(); + instance.mergePartSetHeader(value); + return this; + } + /** + * .ibc.tendermint.light.CanonicalPartSetHeader part_set_header = 2; + */ + public Builder clearPartSetHeader() { copyOnWrite(); + instance.clearPartSetHeader(); + return this; + } + + // @@protoc_insertion_point(builder_scope:ibc.tendermint.light.CanonicalBlockID) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new ibc.tendermint.light.TendermintLight.CanonicalBlockID(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "hash_", + "partSetHeader_", + }; + java.lang.String info = + "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\n\u0002\t"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (ibc.tendermint.light.TendermintLight.CanonicalBlockID.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:ibc.tendermint.light.CanonicalBlockID) + private static final ibc.tendermint.light.TendermintLight.CanonicalBlockID DEFAULT_INSTANCE; + static { + CanonicalBlockID defaultInstance = new CanonicalBlockID(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + CanonicalBlockID.class, defaultInstance); + } + + public static ibc.tendermint.light.TendermintLight.CanonicalBlockID getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface CanonicalVoteOrBuilder extends + // @@protoc_insertion_point(interface_extends:ibc.tendermint.light.CanonicalVote) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * .ibc.tendermint.light.SignedMsgType type = 1; + * @return The enum numeric value on the wire for type. + */ + int getTypeValue(); + /** + * .ibc.tendermint.light.SignedMsgType type = 1; + * @return The type. + */ + ibc.tendermint.light.TendermintLight.SignedMsgType getType(); + + /** + * sfixed64 height = 2; + * @return The height. + */ + long getHeight(); + + /** + * sfixed64 round = 3; + * @return The round. + */ + long getRound(); + + /** + * .ibc.tendermint.light.BlockID block_id = 4; + * @return Whether the blockId field is set. + */ + boolean hasBlockId(); + /** + * .ibc.tendermint.light.BlockID block_id = 4; + * @return The blockId. + */ + ibc.tendermint.light.TendermintLight.BlockID getBlockId(); + + /** + * .ibc.tendermint.light.Timestamp timestamp = 5; + * @return Whether the timestamp field is set. + */ + boolean hasTimestamp(); + /** + * .ibc.tendermint.light.Timestamp timestamp = 5; + * @return The timestamp. + */ + ibc.tendermint.light.TendermintLight.Timestamp getTimestamp(); + + /** + * string chain_id = 6; + * @return The chainId. + */ + java.lang.String getChainId(); + /** + * string chain_id = 6; + * @return The bytes for chainId. + */ + com.google.protobuf.ByteString + getChainIdBytes(); + } + /** + * Protobuf type {@code ibc.tendermint.light.CanonicalVote} + */ + public static final class CanonicalVote extends + com.google.protobuf.GeneratedMessageLite< + CanonicalVote, CanonicalVote.Builder> implements + // @@protoc_insertion_point(message_implements:ibc.tendermint.light.CanonicalVote) + CanonicalVoteOrBuilder { + private CanonicalVote() { + chainId_ = ""; + } + public static final int TYPE_FIELD_NUMBER = 1; + private int type_; + /** + * .ibc.tendermint.light.SignedMsgType type = 1; + * @return The enum numeric value on the wire for type. + */ + @java.lang.Override + public int getTypeValue() { + return type_; + } + /** + * .ibc.tendermint.light.SignedMsgType type = 1; + * @return The type. + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.SignedMsgType getType() { + ibc.tendermint.light.TendermintLight.SignedMsgType result = ibc.tendermint.light.TendermintLight.SignedMsgType.forNumber(type_); + return result == null ? ibc.tendermint.light.TendermintLight.SignedMsgType.UNRECOGNIZED : result; + } + /** + * .ibc.tendermint.light.SignedMsgType type = 1; + * @param value The enum numeric value on the wire for type to set. + */ + private void setTypeValue(int value) { + type_ = value; + } + /** + * .ibc.tendermint.light.SignedMsgType type = 1; + * @param value The type to set. + */ + private void setType(ibc.tendermint.light.TendermintLight.SignedMsgType value) { + type_ = value.getNumber(); + + } + /** + * .ibc.tendermint.light.SignedMsgType type = 1; + */ + private void clearType() { + + type_ = 0; + } + + public static final int HEIGHT_FIELD_NUMBER = 2; + private long height_; + /** + * sfixed64 height = 2; + * @return The height. + */ + @java.lang.Override + public long getHeight() { + return height_; + } + /** + * sfixed64 height = 2; + * @param value The height to set. + */ + private void setHeight(long value) { + + height_ = value; + } + /** + * sfixed64 height = 2; + */ + private void clearHeight() { + + height_ = 0L; + } + + public static final int ROUND_FIELD_NUMBER = 3; + private long round_; + /** + * sfixed64 round = 3; + * @return The round. + */ + @java.lang.Override + public long getRound() { + return round_; + } + /** + * sfixed64 round = 3; + * @param value The round to set. + */ + private void setRound(long value) { + + round_ = value; + } + /** + * sfixed64 round = 3; + */ + private void clearRound() { + + round_ = 0L; + } + + public static final int BLOCK_ID_FIELD_NUMBER = 4; + private ibc.tendermint.light.TendermintLight.BlockID blockId_; + /** + * .ibc.tendermint.light.BlockID block_id = 4; + */ + @java.lang.Override + public boolean hasBlockId() { + return blockId_ != null; + } + /** + * .ibc.tendermint.light.BlockID block_id = 4; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.BlockID getBlockId() { + return blockId_ == null ? ibc.tendermint.light.TendermintLight.BlockID.getDefaultInstance() : blockId_; + } + /** + * .ibc.tendermint.light.BlockID block_id = 4; + */ + private void setBlockId(ibc.tendermint.light.TendermintLight.BlockID value) { + value.getClass(); + blockId_ = value; + + } + /** + * .ibc.tendermint.light.BlockID block_id = 4; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergeBlockId(ibc.tendermint.light.TendermintLight.BlockID value) { + value.getClass(); + if (blockId_ != null && + blockId_ != ibc.tendermint.light.TendermintLight.BlockID.getDefaultInstance()) { + blockId_ = + ibc.tendermint.light.TendermintLight.BlockID.newBuilder(blockId_).mergeFrom(value).buildPartial(); + } else { + blockId_ = value; + } + + } + /** + * .ibc.tendermint.light.BlockID block_id = 4; + */ + private void clearBlockId() { blockId_ = null; + + } + + public static final int TIMESTAMP_FIELD_NUMBER = 5; + private ibc.tendermint.light.TendermintLight.Timestamp timestamp_; + /** + * .ibc.tendermint.light.Timestamp timestamp = 5; + */ + @java.lang.Override + public boolean hasTimestamp() { + return timestamp_ != null; + } + /** + * .ibc.tendermint.light.Timestamp timestamp = 5; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.Timestamp getTimestamp() { + return timestamp_ == null ? ibc.tendermint.light.TendermintLight.Timestamp.getDefaultInstance() : timestamp_; + } + /** + * .ibc.tendermint.light.Timestamp timestamp = 5; + */ + private void setTimestamp(ibc.tendermint.light.TendermintLight.Timestamp value) { + value.getClass(); + timestamp_ = value; + + } + /** + * .ibc.tendermint.light.Timestamp timestamp = 5; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergeTimestamp(ibc.tendermint.light.TendermintLight.Timestamp value) { + value.getClass(); + if (timestamp_ != null && + timestamp_ != ibc.tendermint.light.TendermintLight.Timestamp.getDefaultInstance()) { + timestamp_ = + ibc.tendermint.light.TendermintLight.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial(); + } else { + timestamp_ = value; + } + + } + /** + * .ibc.tendermint.light.Timestamp timestamp = 5; + */ + private void clearTimestamp() { timestamp_ = null; + + } + + public static final int CHAIN_ID_FIELD_NUMBER = 6; + private java.lang.String chainId_; + /** + * string chain_id = 6; + * @return The chainId. + */ + @java.lang.Override + public java.lang.String getChainId() { + return chainId_; + } + /** + * string chain_id = 6; + * @return The bytes for chainId. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getChainIdBytes() { + return com.google.protobuf.ByteString.copyFromUtf8(chainId_); + } + /** + * string chain_id = 6; + * @param value The chainId to set. + */ + private void setChainId( + java.lang.String value) { + java.lang.Class valueClass = value.getClass(); + + chainId_ = value; + } + /** + * string chain_id = 6; + */ + private void clearChainId() { + + chainId_ = getDefaultInstance().getChainId(); + } + /** + * string chain_id = 6; + * @param value The bytes for chainId to set. + */ + private void setChainIdBytes( + com.google.protobuf.ByteString value) { + checkByteStringIsUtf8(value); + chainId_ = value.toStringUtf8(); + + } + + public static ibc.tendermint.light.TendermintLight.CanonicalVote parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.CanonicalVote parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.CanonicalVote parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.CanonicalVote parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.CanonicalVote parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.CanonicalVote parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.CanonicalVote parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.CanonicalVote parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.CanonicalVote parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.CanonicalVote parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.CanonicalVote parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.CanonicalVote parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(ibc.tendermint.light.TendermintLight.CanonicalVote prototype) { + return (Builder) DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code ibc.tendermint.light.CanonicalVote} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + ibc.tendermint.light.TendermintLight.CanonicalVote, Builder> implements + // @@protoc_insertion_point(builder_implements:ibc.tendermint.light.CanonicalVote) + ibc.tendermint.light.TendermintLight.CanonicalVoteOrBuilder { + // Construct using ibc.tendermint.light.TendermintLight.CanonicalVote.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * .ibc.tendermint.light.SignedMsgType type = 1; + * @return The enum numeric value on the wire for type. + */ + @java.lang.Override + public int getTypeValue() { + return instance.getTypeValue(); + } + /** + * .ibc.tendermint.light.SignedMsgType type = 1; + * @param value The type to set. + * @return This builder for chaining. + */ + public Builder setTypeValue(int value) { + copyOnWrite(); + instance.setTypeValue(value); + return this; + } + /** + * .ibc.tendermint.light.SignedMsgType type = 1; + * @return The type. + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.SignedMsgType getType() { + return instance.getType(); + } + /** + * .ibc.tendermint.light.SignedMsgType type = 1; + * @param value The enum numeric value on the wire for type to set. + * @return This builder for chaining. + */ + public Builder setType(ibc.tendermint.light.TendermintLight.SignedMsgType value) { + copyOnWrite(); + instance.setType(value); + return this; + } + /** + * .ibc.tendermint.light.SignedMsgType type = 1; + * @return This builder for chaining. + */ + public Builder clearType() { + copyOnWrite(); + instance.clearType(); + return this; + } + + /** + * sfixed64 height = 2; + * @return The height. + */ + @java.lang.Override + public long getHeight() { + return instance.getHeight(); + } + /** + * sfixed64 height = 2; + * @param value The height to set. + * @return This builder for chaining. + */ + public Builder setHeight(long value) { + copyOnWrite(); + instance.setHeight(value); + return this; + } + /** + * sfixed64 height = 2; + * @return This builder for chaining. + */ + public Builder clearHeight() { + copyOnWrite(); + instance.clearHeight(); + return this; + } + + /** + * sfixed64 round = 3; + * @return The round. + */ + @java.lang.Override + public long getRound() { + return instance.getRound(); + } + /** + * sfixed64 round = 3; + * @param value The round to set. + * @return This builder for chaining. + */ + public Builder setRound(long value) { + copyOnWrite(); + instance.setRound(value); + return this; + } + /** + * sfixed64 round = 3; + * @return This builder for chaining. + */ + public Builder clearRound() { + copyOnWrite(); + instance.clearRound(); + return this; + } + + /** + * .ibc.tendermint.light.BlockID block_id = 4; + */ + @java.lang.Override + public boolean hasBlockId() { + return instance.hasBlockId(); + } + /** + * .ibc.tendermint.light.BlockID block_id = 4; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.BlockID getBlockId() { + return instance.getBlockId(); + } + /** + * .ibc.tendermint.light.BlockID block_id = 4; + */ + public Builder setBlockId(ibc.tendermint.light.TendermintLight.BlockID value) { + copyOnWrite(); + instance.setBlockId(value); + return this; + } + /** + * .ibc.tendermint.light.BlockID block_id = 4; + */ + public Builder setBlockId( + ibc.tendermint.light.TendermintLight.BlockID.Builder builderForValue) { + copyOnWrite(); + instance.setBlockId(builderForValue.build()); + return this; + } + /** + * .ibc.tendermint.light.BlockID block_id = 4; + */ + public Builder mergeBlockId(ibc.tendermint.light.TendermintLight.BlockID value) { + copyOnWrite(); + instance.mergeBlockId(value); + return this; + } + /** + * .ibc.tendermint.light.BlockID block_id = 4; + */ + public Builder clearBlockId() { copyOnWrite(); + instance.clearBlockId(); + return this; + } + + /** + * .ibc.tendermint.light.Timestamp timestamp = 5; + */ + @java.lang.Override + public boolean hasTimestamp() { + return instance.hasTimestamp(); + } + /** + * .ibc.tendermint.light.Timestamp timestamp = 5; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.Timestamp getTimestamp() { + return instance.getTimestamp(); + } + /** + * .ibc.tendermint.light.Timestamp timestamp = 5; + */ + public Builder setTimestamp(ibc.tendermint.light.TendermintLight.Timestamp value) { + copyOnWrite(); + instance.setTimestamp(value); + return this; + } + /** + * .ibc.tendermint.light.Timestamp timestamp = 5; + */ + public Builder setTimestamp( + ibc.tendermint.light.TendermintLight.Timestamp.Builder builderForValue) { + copyOnWrite(); + instance.setTimestamp(builderForValue.build()); + return this; + } + /** + * .ibc.tendermint.light.Timestamp timestamp = 5; + */ + public Builder mergeTimestamp(ibc.tendermint.light.TendermintLight.Timestamp value) { + copyOnWrite(); + instance.mergeTimestamp(value); + return this; + } + /** + * .ibc.tendermint.light.Timestamp timestamp = 5; + */ + public Builder clearTimestamp() { copyOnWrite(); + instance.clearTimestamp(); + return this; + } + + /** + * string chain_id = 6; + * @return The chainId. + */ + @java.lang.Override + public java.lang.String getChainId() { + return instance.getChainId(); + } + /** + * string chain_id = 6; + * @return The bytes for chainId. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getChainIdBytes() { + return instance.getChainIdBytes(); + } + /** + * string chain_id = 6; + * @param value The chainId to set. + * @return This builder for chaining. + */ + public Builder setChainId( + java.lang.String value) { + copyOnWrite(); + instance.setChainId(value); + return this; + } + /** + * string chain_id = 6; + * @return This builder for chaining. + */ + public Builder clearChainId() { + copyOnWrite(); + instance.clearChainId(); + return this; + } + /** + * string chain_id = 6; + * @param value The bytes for chainId to set. + * @return This builder for chaining. + */ + public Builder setChainIdBytes( + com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setChainIdBytes(value); + return this; + } + + // @@protoc_insertion_point(builder_scope:ibc.tendermint.light.CanonicalVote) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new ibc.tendermint.light.TendermintLight.CanonicalVote(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "type_", + "height_", + "round_", + "blockId_", + "timestamp_", + "chainId_", + }; + java.lang.String info = + "\u0000\u0006\u0000\u0000\u0001\u0006\u0006\u0000\u0000\u0000\u0001\f\u0002\u000e" + + "\u0003\u000e\u0004\t\u0005\t\u0006\u0208"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (ibc.tendermint.light.TendermintLight.CanonicalVote.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:ibc.tendermint.light.CanonicalVote) + private static final ibc.tendermint.light.TendermintLight.CanonicalVote DEFAULT_INSTANCE; + static { + CanonicalVote defaultInstance = new CanonicalVote(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + CanonicalVote.class, defaultInstance); + } + + public static ibc.tendermint.light.TendermintLight.CanonicalVote getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface VoteOrBuilder extends + // @@protoc_insertion_point(interface_extends:ibc.tendermint.light.Vote) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * .ibc.tendermint.light.SignedMsgType type = 1; + * @return The enum numeric value on the wire for type. + */ + int getTypeValue(); + /** + * .ibc.tendermint.light.SignedMsgType type = 1; + * @return The type. + */ + ibc.tendermint.light.TendermintLight.SignedMsgType getType(); + + /** + * int64 height = 2; + * @return The height. + */ + long getHeight(); + + /** + * int32 round = 3; + * @return The round. + */ + int getRound(); + + /** + * .ibc.tendermint.light.BlockID block_id = 4; + * @return Whether the blockId field is set. + */ + boolean hasBlockId(); + /** + * .ibc.tendermint.light.BlockID block_id = 4; + * @return The blockId. + */ + ibc.tendermint.light.TendermintLight.BlockID getBlockId(); + + /** + * .ibc.tendermint.light.Timestamp timestamp = 5; + * @return Whether the timestamp field is set. + */ + boolean hasTimestamp(); + /** + * .ibc.tendermint.light.Timestamp timestamp = 5; + * @return The timestamp. + */ + ibc.tendermint.light.TendermintLight.Timestamp getTimestamp(); + + /** + * bytes validator_address = 6; + * @return The validatorAddress. + */ + com.google.protobuf.ByteString getValidatorAddress(); + + /** + * int32 validator_index = 7; + * @return The validatorIndex. + */ + int getValidatorIndex(); + + /** + * bytes signature = 8; + * @return The signature. + */ + com.google.protobuf.ByteString getSignature(); + } + /** + * Protobuf type {@code ibc.tendermint.light.Vote} + */ + public static final class Vote extends + com.google.protobuf.GeneratedMessageLite< + Vote, Vote.Builder> implements + // @@protoc_insertion_point(message_implements:ibc.tendermint.light.Vote) + VoteOrBuilder { + private Vote() { + validatorAddress_ = com.google.protobuf.ByteString.EMPTY; + signature_ = com.google.protobuf.ByteString.EMPTY; + } + public static final int TYPE_FIELD_NUMBER = 1; + private int type_; + /** + * .ibc.tendermint.light.SignedMsgType type = 1; + * @return The enum numeric value on the wire for type. + */ + @java.lang.Override + public int getTypeValue() { + return type_; + } + /** + * .ibc.tendermint.light.SignedMsgType type = 1; + * @return The type. + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.SignedMsgType getType() { + ibc.tendermint.light.TendermintLight.SignedMsgType result = ibc.tendermint.light.TendermintLight.SignedMsgType.forNumber(type_); + return result == null ? ibc.tendermint.light.TendermintLight.SignedMsgType.UNRECOGNIZED : result; + } + /** + * .ibc.tendermint.light.SignedMsgType type = 1; + * @param value The enum numeric value on the wire for type to set. + */ + private void setTypeValue(int value) { + type_ = value; + } + /** + * .ibc.tendermint.light.SignedMsgType type = 1; + * @param value The type to set. + */ + private void setType(ibc.tendermint.light.TendermintLight.SignedMsgType value) { + type_ = value.getNumber(); + + } + /** + * .ibc.tendermint.light.SignedMsgType type = 1; + */ + private void clearType() { + + type_ = 0; + } + + public static final int HEIGHT_FIELD_NUMBER = 2; + private long height_; + /** + * int64 height = 2; + * @return The height. + */ + @java.lang.Override + public long getHeight() { + return height_; + } + /** + * int64 height = 2; + * @param value The height to set. + */ + private void setHeight(long value) { + + height_ = value; + } + /** + * int64 height = 2; + */ + private void clearHeight() { + + height_ = 0L; + } + + public static final int ROUND_FIELD_NUMBER = 3; + private int round_; + /** + * int32 round = 3; + * @return The round. + */ + @java.lang.Override + public int getRound() { + return round_; + } + /** + * int32 round = 3; + * @param value The round to set. + */ + private void setRound(int value) { + + round_ = value; + } + /** + * int32 round = 3; + */ + private void clearRound() { + + round_ = 0; + } + + public static final int BLOCK_ID_FIELD_NUMBER = 4; + private ibc.tendermint.light.TendermintLight.BlockID blockId_; + /** + * .ibc.tendermint.light.BlockID block_id = 4; + */ + @java.lang.Override + public boolean hasBlockId() { + return blockId_ != null; + } + /** + * .ibc.tendermint.light.BlockID block_id = 4; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.BlockID getBlockId() { + return blockId_ == null ? ibc.tendermint.light.TendermintLight.BlockID.getDefaultInstance() : blockId_; + } + /** + * .ibc.tendermint.light.BlockID block_id = 4; + */ + private void setBlockId(ibc.tendermint.light.TendermintLight.BlockID value) { + value.getClass(); + blockId_ = value; + + } + /** + * .ibc.tendermint.light.BlockID block_id = 4; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergeBlockId(ibc.tendermint.light.TendermintLight.BlockID value) { + value.getClass(); + if (blockId_ != null && + blockId_ != ibc.tendermint.light.TendermintLight.BlockID.getDefaultInstance()) { + blockId_ = + ibc.tendermint.light.TendermintLight.BlockID.newBuilder(blockId_).mergeFrom(value).buildPartial(); + } else { + blockId_ = value; + } + + } + /** + * .ibc.tendermint.light.BlockID block_id = 4; + */ + private void clearBlockId() { blockId_ = null; + + } + + public static final int TIMESTAMP_FIELD_NUMBER = 5; + private ibc.tendermint.light.TendermintLight.Timestamp timestamp_; + /** + * .ibc.tendermint.light.Timestamp timestamp = 5; + */ + @java.lang.Override + public boolean hasTimestamp() { + return timestamp_ != null; + } + /** + * .ibc.tendermint.light.Timestamp timestamp = 5; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.Timestamp getTimestamp() { + return timestamp_ == null ? ibc.tendermint.light.TendermintLight.Timestamp.getDefaultInstance() : timestamp_; + } + /** + * .ibc.tendermint.light.Timestamp timestamp = 5; + */ + private void setTimestamp(ibc.tendermint.light.TendermintLight.Timestamp value) { + value.getClass(); + timestamp_ = value; + + } + /** + * .ibc.tendermint.light.Timestamp timestamp = 5; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergeTimestamp(ibc.tendermint.light.TendermintLight.Timestamp value) { + value.getClass(); + if (timestamp_ != null && + timestamp_ != ibc.tendermint.light.TendermintLight.Timestamp.getDefaultInstance()) { + timestamp_ = + ibc.tendermint.light.TendermintLight.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial(); + } else { + timestamp_ = value; + } + + } + /** + * .ibc.tendermint.light.Timestamp timestamp = 5; + */ + private void clearTimestamp() { timestamp_ = null; + + } + + public static final int VALIDATOR_ADDRESS_FIELD_NUMBER = 6; + private com.google.protobuf.ByteString validatorAddress_; + /** + * bytes validator_address = 6; + * @return The validatorAddress. + */ + @java.lang.Override + public com.google.protobuf.ByteString getValidatorAddress() { + return validatorAddress_; + } + /** + * bytes validator_address = 6; + * @param value The validatorAddress to set. + */ + private void setValidatorAddress(com.google.protobuf.ByteString value) { + java.lang.Class valueClass = value.getClass(); + + validatorAddress_ = value; + } + /** + * bytes validator_address = 6; + */ + private void clearValidatorAddress() { + + validatorAddress_ = getDefaultInstance().getValidatorAddress(); + } + + public static final int VALIDATOR_INDEX_FIELD_NUMBER = 7; + private int validatorIndex_; + /** + * int32 validator_index = 7; + * @return The validatorIndex. + */ + @java.lang.Override + public int getValidatorIndex() { + return validatorIndex_; + } + /** + * int32 validator_index = 7; + * @param value The validatorIndex to set. + */ + private void setValidatorIndex(int value) { + + validatorIndex_ = value; + } + /** + * int32 validator_index = 7; + */ + private void clearValidatorIndex() { + + validatorIndex_ = 0; + } + + public static final int SIGNATURE_FIELD_NUMBER = 8; + private com.google.protobuf.ByteString signature_; + /** + * bytes signature = 8; + * @return The signature. + */ + @java.lang.Override + public com.google.protobuf.ByteString getSignature() { + return signature_; + } + /** + * bytes signature = 8; + * @param value The signature to set. + */ + private void setSignature(com.google.protobuf.ByteString value) { + java.lang.Class valueClass = value.getClass(); + + signature_ = value; + } + /** + * bytes signature = 8; + */ + private void clearSignature() { + + signature_ = getDefaultInstance().getSignature(); + } + + public static ibc.tendermint.light.TendermintLight.Vote parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.Vote parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Vote parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.Vote parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Vote parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.Vote parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Vote parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.Vote parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Vote parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.Vote parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Vote parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.Vote parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(ibc.tendermint.light.TendermintLight.Vote prototype) { + return (Builder) DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code ibc.tendermint.light.Vote} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + ibc.tendermint.light.TendermintLight.Vote, Builder> implements + // @@protoc_insertion_point(builder_implements:ibc.tendermint.light.Vote) + ibc.tendermint.light.TendermintLight.VoteOrBuilder { + // Construct using ibc.tendermint.light.TendermintLight.Vote.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * .ibc.tendermint.light.SignedMsgType type = 1; + * @return The enum numeric value on the wire for type. + */ + @java.lang.Override + public int getTypeValue() { + return instance.getTypeValue(); + } + /** + * .ibc.tendermint.light.SignedMsgType type = 1; + * @param value The type to set. + * @return This builder for chaining. + */ + public Builder setTypeValue(int value) { + copyOnWrite(); + instance.setTypeValue(value); + return this; + } + /** + * .ibc.tendermint.light.SignedMsgType type = 1; + * @return The type. + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.SignedMsgType getType() { + return instance.getType(); + } + /** + * .ibc.tendermint.light.SignedMsgType type = 1; + * @param value The enum numeric value on the wire for type to set. + * @return This builder for chaining. + */ + public Builder setType(ibc.tendermint.light.TendermintLight.SignedMsgType value) { + copyOnWrite(); + instance.setType(value); + return this; + } + /** + * .ibc.tendermint.light.SignedMsgType type = 1; + * @return This builder for chaining. + */ + public Builder clearType() { + copyOnWrite(); + instance.clearType(); + return this; + } + + /** + * int64 height = 2; + * @return The height. + */ + @java.lang.Override + public long getHeight() { + return instance.getHeight(); + } + /** + * int64 height = 2; + * @param value The height to set. + * @return This builder for chaining. + */ + public Builder setHeight(long value) { + copyOnWrite(); + instance.setHeight(value); + return this; + } + /** + * int64 height = 2; + * @return This builder for chaining. + */ + public Builder clearHeight() { + copyOnWrite(); + instance.clearHeight(); + return this; + } + + /** + * int32 round = 3; + * @return The round. + */ + @java.lang.Override + public int getRound() { + return instance.getRound(); + } + /** + * int32 round = 3; + * @param value The round to set. + * @return This builder for chaining. + */ + public Builder setRound(int value) { + copyOnWrite(); + instance.setRound(value); + return this; + } + /** + * int32 round = 3; + * @return This builder for chaining. + */ + public Builder clearRound() { + copyOnWrite(); + instance.clearRound(); + return this; + } + + /** + * .ibc.tendermint.light.BlockID block_id = 4; + */ + @java.lang.Override + public boolean hasBlockId() { + return instance.hasBlockId(); + } + /** + * .ibc.tendermint.light.BlockID block_id = 4; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.BlockID getBlockId() { + return instance.getBlockId(); + } + /** + * .ibc.tendermint.light.BlockID block_id = 4; + */ + public Builder setBlockId(ibc.tendermint.light.TendermintLight.BlockID value) { + copyOnWrite(); + instance.setBlockId(value); + return this; + } + /** + * .ibc.tendermint.light.BlockID block_id = 4; + */ + public Builder setBlockId( + ibc.tendermint.light.TendermintLight.BlockID.Builder builderForValue) { + copyOnWrite(); + instance.setBlockId(builderForValue.build()); + return this; + } + /** + * .ibc.tendermint.light.BlockID block_id = 4; + */ + public Builder mergeBlockId(ibc.tendermint.light.TendermintLight.BlockID value) { + copyOnWrite(); + instance.mergeBlockId(value); + return this; + } + /** + * .ibc.tendermint.light.BlockID block_id = 4; + */ + public Builder clearBlockId() { copyOnWrite(); + instance.clearBlockId(); + return this; + } + + /** + * .ibc.tendermint.light.Timestamp timestamp = 5; + */ + @java.lang.Override + public boolean hasTimestamp() { + return instance.hasTimestamp(); + } + /** + * .ibc.tendermint.light.Timestamp timestamp = 5; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.Timestamp getTimestamp() { + return instance.getTimestamp(); + } + /** + * .ibc.tendermint.light.Timestamp timestamp = 5; + */ + public Builder setTimestamp(ibc.tendermint.light.TendermintLight.Timestamp value) { + copyOnWrite(); + instance.setTimestamp(value); + return this; + } + /** + * .ibc.tendermint.light.Timestamp timestamp = 5; + */ + public Builder setTimestamp( + ibc.tendermint.light.TendermintLight.Timestamp.Builder builderForValue) { + copyOnWrite(); + instance.setTimestamp(builderForValue.build()); + return this; + } + /** + * .ibc.tendermint.light.Timestamp timestamp = 5; + */ + public Builder mergeTimestamp(ibc.tendermint.light.TendermintLight.Timestamp value) { + copyOnWrite(); + instance.mergeTimestamp(value); + return this; + } + /** + * .ibc.tendermint.light.Timestamp timestamp = 5; + */ + public Builder clearTimestamp() { copyOnWrite(); + instance.clearTimestamp(); + return this; + } + + /** + * bytes validator_address = 6; + * @return The validatorAddress. + */ + @java.lang.Override + public com.google.protobuf.ByteString getValidatorAddress() { + return instance.getValidatorAddress(); + } + /** + * bytes validator_address = 6; + * @param value The validatorAddress to set. + * @return This builder for chaining. + */ + public Builder setValidatorAddress(com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setValidatorAddress(value); + return this; + } + /** + * bytes validator_address = 6; + * @return This builder for chaining. + */ + public Builder clearValidatorAddress() { + copyOnWrite(); + instance.clearValidatorAddress(); + return this; + } + + /** + * int32 validator_index = 7; + * @return The validatorIndex. + */ + @java.lang.Override + public int getValidatorIndex() { + return instance.getValidatorIndex(); + } + /** + * int32 validator_index = 7; + * @param value The validatorIndex to set. + * @return This builder for chaining. + */ + public Builder setValidatorIndex(int value) { + copyOnWrite(); + instance.setValidatorIndex(value); + return this; + } + /** + * int32 validator_index = 7; + * @return This builder for chaining. + */ + public Builder clearValidatorIndex() { + copyOnWrite(); + instance.clearValidatorIndex(); + return this; + } + + /** + * bytes signature = 8; + * @return The signature. + */ + @java.lang.Override + public com.google.protobuf.ByteString getSignature() { + return instance.getSignature(); + } + /** + * bytes signature = 8; + * @param value The signature to set. + * @return This builder for chaining. + */ + public Builder setSignature(com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setSignature(value); + return this; + } + /** + * bytes signature = 8; + * @return This builder for chaining. + */ + public Builder clearSignature() { + copyOnWrite(); + instance.clearSignature(); + return this; + } + + // @@protoc_insertion_point(builder_scope:ibc.tendermint.light.Vote) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new ibc.tendermint.light.TendermintLight.Vote(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "type_", + "height_", + "round_", + "blockId_", + "timestamp_", + "validatorAddress_", + "validatorIndex_", + "signature_", + }; + java.lang.String info = + "\u0000\b\u0000\u0000\u0001\b\b\u0000\u0000\u0000\u0001\f\u0002\u0002\u0003\u0004" + + "\u0004\t\u0005\t\u0006\n\u0007\u0004\b\n"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (ibc.tendermint.light.TendermintLight.Vote.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:ibc.tendermint.light.Vote) + private static final ibc.tendermint.light.TendermintLight.Vote DEFAULT_INSTANCE; + static { + Vote defaultInstance = new Vote(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + Vote.class, defaultInstance); + } + + public static ibc.tendermint.light.TendermintLight.Vote getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface ValidatorSetOrBuilder extends + // @@protoc_insertion_point(interface_extends:ibc.tendermint.light.ValidatorSet) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * repeated .ibc.tendermint.light.Validator validators = 1; + */ + java.util.List + getValidatorsList(); + /** + * repeated .ibc.tendermint.light.Validator validators = 1; + */ + ibc.tendermint.light.TendermintLight.Validator getValidators(int index); + /** + * repeated .ibc.tendermint.light.Validator validators = 1; + */ + int getValidatorsCount(); + + /** + * .ibc.tendermint.light.Validator proposer = 2; + * @return Whether the proposer field is set. + */ + boolean hasProposer(); + /** + * .ibc.tendermint.light.Validator proposer = 2; + * @return The proposer. + */ + ibc.tendermint.light.TendermintLight.Validator getProposer(); + + /** + * int64 total_voting_power = 3; + * @return The totalVotingPower. + */ + long getTotalVotingPower(); + } + /** + * Protobuf type {@code ibc.tendermint.light.ValidatorSet} + */ + public static final class ValidatorSet extends + com.google.protobuf.GeneratedMessageLite< + ValidatorSet, ValidatorSet.Builder> implements + // @@protoc_insertion_point(message_implements:ibc.tendermint.light.ValidatorSet) + ValidatorSetOrBuilder { + private ValidatorSet() { + validators_ = emptyProtobufList(); + } + public static final int VALIDATORS_FIELD_NUMBER = 1; + private com.google.protobuf.Internal.ProtobufList validators_; + /** + * repeated .ibc.tendermint.light.Validator validators = 1; + */ + @java.lang.Override + public java.util.List getValidatorsList() { + return validators_; + } + /** + * repeated .ibc.tendermint.light.Validator validators = 1; + */ + public java.util.List + getValidatorsOrBuilderList() { + return validators_; + } + /** + * repeated .ibc.tendermint.light.Validator validators = 1; + */ + @java.lang.Override + public int getValidatorsCount() { + return validators_.size(); + } + /** + * repeated .ibc.tendermint.light.Validator validators = 1; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.Validator getValidators(int index) { + return validators_.get(index); + } + /** + * repeated .ibc.tendermint.light.Validator validators = 1; + */ + public ibc.tendermint.light.TendermintLight.ValidatorOrBuilder getValidatorsOrBuilder( + int index) { + return validators_.get(index); + } + private void ensureValidatorsIsMutable() { + com.google.protobuf.Internal.ProtobufList tmp = validators_; + if (!tmp.isModifiable()) { + validators_ = + com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp); + } + } + + /** + * repeated .ibc.tendermint.light.Validator validators = 1; + */ + private void setValidators( + int index, ibc.tendermint.light.TendermintLight.Validator value) { + value.getClass(); + ensureValidatorsIsMutable(); + validators_.set(index, value); + } + /** + * repeated .ibc.tendermint.light.Validator validators = 1; + */ + private void addValidators(ibc.tendermint.light.TendermintLight.Validator value) { + value.getClass(); + ensureValidatorsIsMutable(); + validators_.add(value); + } + /** + * repeated .ibc.tendermint.light.Validator validators = 1; + */ + private void addValidators( + int index, ibc.tendermint.light.TendermintLight.Validator value) { + value.getClass(); + ensureValidatorsIsMutable(); + validators_.add(index, value); + } + /** + * repeated .ibc.tendermint.light.Validator validators = 1; + */ + private void addAllValidators( + java.lang.Iterable values) { + ensureValidatorsIsMutable(); + com.google.protobuf.AbstractMessageLite.addAll( + values, validators_); + } + /** + * repeated .ibc.tendermint.light.Validator validators = 1; + */ + private void clearValidators() { + validators_ = emptyProtobufList(); + } + /** + * repeated .ibc.tendermint.light.Validator validators = 1; + */ + private void removeValidators(int index) { + ensureValidatorsIsMutable(); + validators_.remove(index); + } + + public static final int PROPOSER_FIELD_NUMBER = 2; + private ibc.tendermint.light.TendermintLight.Validator proposer_; + /** + * .ibc.tendermint.light.Validator proposer = 2; + */ + @java.lang.Override + public boolean hasProposer() { + return proposer_ != null; + } + /** + * .ibc.tendermint.light.Validator proposer = 2; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.Validator getProposer() { + return proposer_ == null ? ibc.tendermint.light.TendermintLight.Validator.getDefaultInstance() : proposer_; + } + /** + * .ibc.tendermint.light.Validator proposer = 2; + */ + private void setProposer(ibc.tendermint.light.TendermintLight.Validator value) { + value.getClass(); + proposer_ = value; + + } + /** + * .ibc.tendermint.light.Validator proposer = 2; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergeProposer(ibc.tendermint.light.TendermintLight.Validator value) { + value.getClass(); + if (proposer_ != null && + proposer_ != ibc.tendermint.light.TendermintLight.Validator.getDefaultInstance()) { + proposer_ = + ibc.tendermint.light.TendermintLight.Validator.newBuilder(proposer_).mergeFrom(value).buildPartial(); + } else { + proposer_ = value; + } + + } + /** + * .ibc.tendermint.light.Validator proposer = 2; + */ + private void clearProposer() { proposer_ = null; + + } + + public static final int TOTAL_VOTING_POWER_FIELD_NUMBER = 3; + private long totalVotingPower_; + /** + * int64 total_voting_power = 3; + * @return The totalVotingPower. + */ + @java.lang.Override + public long getTotalVotingPower() { + return totalVotingPower_; + } + /** + * int64 total_voting_power = 3; + * @param value The totalVotingPower to set. + */ + private void setTotalVotingPower(long value) { + + totalVotingPower_ = value; + } + /** + * int64 total_voting_power = 3; + */ + private void clearTotalVotingPower() { + + totalVotingPower_ = 0L; + } + + public static ibc.tendermint.light.TendermintLight.ValidatorSet parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.ValidatorSet parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.ValidatorSet parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.ValidatorSet parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.ValidatorSet parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.ValidatorSet parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.ValidatorSet parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.ValidatorSet parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.ValidatorSet parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.ValidatorSet parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.ValidatorSet parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.ValidatorSet parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(ibc.tendermint.light.TendermintLight.ValidatorSet prototype) { + return (Builder) DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code ibc.tendermint.light.ValidatorSet} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + ibc.tendermint.light.TendermintLight.ValidatorSet, Builder> implements + // @@protoc_insertion_point(builder_implements:ibc.tendermint.light.ValidatorSet) + ibc.tendermint.light.TendermintLight.ValidatorSetOrBuilder { + // Construct using ibc.tendermint.light.TendermintLight.ValidatorSet.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * repeated .ibc.tendermint.light.Validator validators = 1; + */ + @java.lang.Override + public java.util.List getValidatorsList() { + return java.util.Collections.unmodifiableList( + instance.getValidatorsList()); + } + /** + * repeated .ibc.tendermint.light.Validator validators = 1; + */ + @java.lang.Override + public int getValidatorsCount() { + return instance.getValidatorsCount(); + }/** + * repeated .ibc.tendermint.light.Validator validators = 1; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.Validator getValidators(int index) { + return instance.getValidators(index); + } + /** + * repeated .ibc.tendermint.light.Validator validators = 1; + */ + public Builder setValidators( + int index, ibc.tendermint.light.TendermintLight.Validator value) { + copyOnWrite(); + instance.setValidators(index, value); + return this; + } + /** + * repeated .ibc.tendermint.light.Validator validators = 1; + */ + public Builder setValidators( + int index, ibc.tendermint.light.TendermintLight.Validator.Builder builderForValue) { + copyOnWrite(); + instance.setValidators(index, + builderForValue.build()); + return this; + } + /** + * repeated .ibc.tendermint.light.Validator validators = 1; + */ + public Builder addValidators(ibc.tendermint.light.TendermintLight.Validator value) { + copyOnWrite(); + instance.addValidators(value); + return this; + } + /** + * repeated .ibc.tendermint.light.Validator validators = 1; + */ + public Builder addValidators( + int index, ibc.tendermint.light.TendermintLight.Validator value) { + copyOnWrite(); + instance.addValidators(index, value); + return this; + } + /** + * repeated .ibc.tendermint.light.Validator validators = 1; + */ + public Builder addValidators( + ibc.tendermint.light.TendermintLight.Validator.Builder builderForValue) { + copyOnWrite(); + instance.addValidators(builderForValue.build()); + return this; + } + /** + * repeated .ibc.tendermint.light.Validator validators = 1; + */ + public Builder addValidators( + int index, ibc.tendermint.light.TendermintLight.Validator.Builder builderForValue) { + copyOnWrite(); + instance.addValidators(index, + builderForValue.build()); + return this; + } + /** + * repeated .ibc.tendermint.light.Validator validators = 1; + */ + public Builder addAllValidators( + java.lang.Iterable values) { + copyOnWrite(); + instance.addAllValidators(values); + return this; + } + /** + * repeated .ibc.tendermint.light.Validator validators = 1; + */ + public Builder clearValidators() { + copyOnWrite(); + instance.clearValidators(); + return this; + } + /** + * repeated .ibc.tendermint.light.Validator validators = 1; + */ + public Builder removeValidators(int index) { + copyOnWrite(); + instance.removeValidators(index); + return this; + } + + /** + * .ibc.tendermint.light.Validator proposer = 2; + */ + @java.lang.Override + public boolean hasProposer() { + return instance.hasProposer(); + } + /** + * .ibc.tendermint.light.Validator proposer = 2; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.Validator getProposer() { + return instance.getProposer(); + } + /** + * .ibc.tendermint.light.Validator proposer = 2; + */ + public Builder setProposer(ibc.tendermint.light.TendermintLight.Validator value) { + copyOnWrite(); + instance.setProposer(value); + return this; + } + /** + * .ibc.tendermint.light.Validator proposer = 2; + */ + public Builder setProposer( + ibc.tendermint.light.TendermintLight.Validator.Builder builderForValue) { + copyOnWrite(); + instance.setProposer(builderForValue.build()); + return this; + } + /** + * .ibc.tendermint.light.Validator proposer = 2; + */ + public Builder mergeProposer(ibc.tendermint.light.TendermintLight.Validator value) { + copyOnWrite(); + instance.mergeProposer(value); + return this; + } + /** + * .ibc.tendermint.light.Validator proposer = 2; + */ + public Builder clearProposer() { copyOnWrite(); + instance.clearProposer(); + return this; + } + + /** + * int64 total_voting_power = 3; + * @return The totalVotingPower. + */ + @java.lang.Override + public long getTotalVotingPower() { + return instance.getTotalVotingPower(); + } + /** + * int64 total_voting_power = 3; + * @param value The totalVotingPower to set. + * @return This builder for chaining. + */ + public Builder setTotalVotingPower(long value) { + copyOnWrite(); + instance.setTotalVotingPower(value); + return this; + } + /** + * int64 total_voting_power = 3; + * @return This builder for chaining. + */ + public Builder clearTotalVotingPower() { + copyOnWrite(); + instance.clearTotalVotingPower(); + return this; + } + + // @@protoc_insertion_point(builder_scope:ibc.tendermint.light.ValidatorSet) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new ibc.tendermint.light.TendermintLight.ValidatorSet(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "validators_", + ibc.tendermint.light.TendermintLight.Validator.class, + "proposer_", + "totalVotingPower_", + }; + java.lang.String info = + "\u0000\u0003\u0000\u0000\u0001\u0003\u0003\u0000\u0001\u0000\u0001\u001b\u0002\t" + + "\u0003\u0002"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (ibc.tendermint.light.TendermintLight.ValidatorSet.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:ibc.tendermint.light.ValidatorSet) + private static final ibc.tendermint.light.TendermintLight.ValidatorSet DEFAULT_INSTANCE; + static { + ValidatorSet defaultInstance = new ValidatorSet(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + ValidatorSet.class, defaultInstance); + } + + public static ibc.tendermint.light.TendermintLight.ValidatorSet getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface ValidatorOrBuilder extends + // @@protoc_insertion_point(interface_extends:ibc.tendermint.light.Validator) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * bytes address = 1; + * @return The address. + */ + com.google.protobuf.ByteString getAddress(); + + /** + * .ibc.tendermint.light.PublicKey pub_key = 2; + * @return Whether the pubKey field is set. + */ + boolean hasPubKey(); + /** + * .ibc.tendermint.light.PublicKey pub_key = 2; + * @return The pubKey. + */ + ibc.tendermint.light.TendermintLight.PublicKey getPubKey(); + + /** + * int64 voting_power = 3; + * @return The votingPower. + */ + long getVotingPower(); + + /** + * int64 proposer_priority = 4; + * @return The proposerPriority. + */ + long getProposerPriority(); + } + /** + * Protobuf type {@code ibc.tendermint.light.Validator} + */ + public static final class Validator extends + com.google.protobuf.GeneratedMessageLite< + Validator, Validator.Builder> implements + // @@protoc_insertion_point(message_implements:ibc.tendermint.light.Validator) + ValidatorOrBuilder { + private Validator() { + address_ = com.google.protobuf.ByteString.EMPTY; + } + public static final int ADDRESS_FIELD_NUMBER = 1; + private com.google.protobuf.ByteString address_; + /** + * bytes address = 1; + * @return The address. + */ + @java.lang.Override + public com.google.protobuf.ByteString getAddress() { + return address_; + } + /** + * bytes address = 1; + * @param value The address to set. + */ + private void setAddress(com.google.protobuf.ByteString value) { + java.lang.Class valueClass = value.getClass(); + + address_ = value; + } + /** + * bytes address = 1; + */ + private void clearAddress() { + + address_ = getDefaultInstance().getAddress(); + } + + public static final int PUB_KEY_FIELD_NUMBER = 2; + private ibc.tendermint.light.TendermintLight.PublicKey pubKey_; + /** + * .ibc.tendermint.light.PublicKey pub_key = 2; + */ + @java.lang.Override + public boolean hasPubKey() { + return pubKey_ != null; + } + /** + * .ibc.tendermint.light.PublicKey pub_key = 2; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.PublicKey getPubKey() { + return pubKey_ == null ? ibc.tendermint.light.TendermintLight.PublicKey.getDefaultInstance() : pubKey_; + } + /** + * .ibc.tendermint.light.PublicKey pub_key = 2; + */ + private void setPubKey(ibc.tendermint.light.TendermintLight.PublicKey value) { + value.getClass(); + pubKey_ = value; + + } + /** + * .ibc.tendermint.light.PublicKey pub_key = 2; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergePubKey(ibc.tendermint.light.TendermintLight.PublicKey value) { + value.getClass(); + if (pubKey_ != null && + pubKey_ != ibc.tendermint.light.TendermintLight.PublicKey.getDefaultInstance()) { + pubKey_ = + ibc.tendermint.light.TendermintLight.PublicKey.newBuilder(pubKey_).mergeFrom(value).buildPartial(); + } else { + pubKey_ = value; + } + + } + /** + * .ibc.tendermint.light.PublicKey pub_key = 2; + */ + private void clearPubKey() { pubKey_ = null; + + } + + public static final int VOTING_POWER_FIELD_NUMBER = 3; + private long votingPower_; + /** + * int64 voting_power = 3; + * @return The votingPower. + */ + @java.lang.Override + public long getVotingPower() { + return votingPower_; + } + /** + * int64 voting_power = 3; + * @param value The votingPower to set. + */ + private void setVotingPower(long value) { + + votingPower_ = value; + } + /** + * int64 voting_power = 3; + */ + private void clearVotingPower() { + + votingPower_ = 0L; + } + + public static final int PROPOSER_PRIORITY_FIELD_NUMBER = 4; + private long proposerPriority_; + /** + * int64 proposer_priority = 4; + * @return The proposerPriority. + */ + @java.lang.Override + public long getProposerPriority() { + return proposerPriority_; + } + /** + * int64 proposer_priority = 4; + * @param value The proposerPriority to set. + */ + private void setProposerPriority(long value) { + + proposerPriority_ = value; + } + /** + * int64 proposer_priority = 4; + */ + private void clearProposerPriority() { + + proposerPriority_ = 0L; + } + + public static ibc.tendermint.light.TendermintLight.Validator parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.Validator parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Validator parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.Validator parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Validator parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.Validator parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Validator parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.Validator parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Validator parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.Validator parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Validator parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.Validator parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(ibc.tendermint.light.TendermintLight.Validator prototype) { + return (Builder) DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code ibc.tendermint.light.Validator} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + ibc.tendermint.light.TendermintLight.Validator, Builder> implements + // @@protoc_insertion_point(builder_implements:ibc.tendermint.light.Validator) + ibc.tendermint.light.TendermintLight.ValidatorOrBuilder { + // Construct using ibc.tendermint.light.TendermintLight.Validator.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * bytes address = 1; + * @return The address. + */ + @java.lang.Override + public com.google.protobuf.ByteString getAddress() { + return instance.getAddress(); + } + /** + * bytes address = 1; + * @param value The address to set. + * @return This builder for chaining. + */ + public Builder setAddress(com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setAddress(value); + return this; + } + /** + * bytes address = 1; + * @return This builder for chaining. + */ + public Builder clearAddress() { + copyOnWrite(); + instance.clearAddress(); + return this; + } + + /** + * .ibc.tendermint.light.PublicKey pub_key = 2; + */ + @java.lang.Override + public boolean hasPubKey() { + return instance.hasPubKey(); + } + /** + * .ibc.tendermint.light.PublicKey pub_key = 2; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.PublicKey getPubKey() { + return instance.getPubKey(); + } + /** + * .ibc.tendermint.light.PublicKey pub_key = 2; + */ + public Builder setPubKey(ibc.tendermint.light.TendermintLight.PublicKey value) { + copyOnWrite(); + instance.setPubKey(value); + return this; + } + /** + * .ibc.tendermint.light.PublicKey pub_key = 2; + */ + public Builder setPubKey( + ibc.tendermint.light.TendermintLight.PublicKey.Builder builderForValue) { + copyOnWrite(); + instance.setPubKey(builderForValue.build()); + return this; + } + /** + * .ibc.tendermint.light.PublicKey pub_key = 2; + */ + public Builder mergePubKey(ibc.tendermint.light.TendermintLight.PublicKey value) { + copyOnWrite(); + instance.mergePubKey(value); + return this; + } + /** + * .ibc.tendermint.light.PublicKey pub_key = 2; + */ + public Builder clearPubKey() { copyOnWrite(); + instance.clearPubKey(); + return this; + } + + /** + * int64 voting_power = 3; + * @return The votingPower. + */ + @java.lang.Override + public long getVotingPower() { + return instance.getVotingPower(); + } + /** + * int64 voting_power = 3; + * @param value The votingPower to set. + * @return This builder for chaining. + */ + public Builder setVotingPower(long value) { + copyOnWrite(); + instance.setVotingPower(value); + return this; + } + /** + * int64 voting_power = 3; + * @return This builder for chaining. + */ + public Builder clearVotingPower() { + copyOnWrite(); + instance.clearVotingPower(); + return this; + } + + /** + * int64 proposer_priority = 4; + * @return The proposerPriority. + */ + @java.lang.Override + public long getProposerPriority() { + return instance.getProposerPriority(); + } + /** + * int64 proposer_priority = 4; + * @param value The proposerPriority to set. + * @return This builder for chaining. + */ + public Builder setProposerPriority(long value) { + copyOnWrite(); + instance.setProposerPriority(value); + return this; + } + /** + * int64 proposer_priority = 4; + * @return This builder for chaining. + */ + public Builder clearProposerPriority() { + copyOnWrite(); + instance.clearProposerPriority(); + return this; + } + + // @@protoc_insertion_point(builder_scope:ibc.tendermint.light.Validator) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new ibc.tendermint.light.TendermintLight.Validator(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "address_", + "pubKey_", + "votingPower_", + "proposerPriority_", + }; + java.lang.String info = + "\u0000\u0004\u0000\u0000\u0001\u0004\u0004\u0000\u0000\u0000\u0001\n\u0002\t\u0003" + + "\u0002\u0004\u0002"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (ibc.tendermint.light.TendermintLight.Validator.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:ibc.tendermint.light.Validator) + private static final ibc.tendermint.light.TendermintLight.Validator DEFAULT_INSTANCE; + static { + Validator defaultInstance = new Validator(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + Validator.class, defaultInstance); + } + + public static ibc.tendermint.light.TendermintLight.Validator getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface SimpleValidatorOrBuilder extends + // @@protoc_insertion_point(interface_extends:ibc.tendermint.light.SimpleValidator) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * .ibc.tendermint.light.PublicKey pub_key = 1; + * @return Whether the pubKey field is set. + */ + boolean hasPubKey(); + /** + * .ibc.tendermint.light.PublicKey pub_key = 1; + * @return The pubKey. + */ + ibc.tendermint.light.TendermintLight.PublicKey getPubKey(); + + /** + * int64 voting_power = 2; + * @return The votingPower. + */ + long getVotingPower(); + } + /** + * Protobuf type {@code ibc.tendermint.light.SimpleValidator} + */ + public static final class SimpleValidator extends + com.google.protobuf.GeneratedMessageLite< + SimpleValidator, SimpleValidator.Builder> implements + // @@protoc_insertion_point(message_implements:ibc.tendermint.light.SimpleValidator) + SimpleValidatorOrBuilder { + private SimpleValidator() { + } + public static final int PUB_KEY_FIELD_NUMBER = 1; + private ibc.tendermint.light.TendermintLight.PublicKey pubKey_; + /** + * .ibc.tendermint.light.PublicKey pub_key = 1; + */ + @java.lang.Override + public boolean hasPubKey() { + return pubKey_ != null; + } + /** + * .ibc.tendermint.light.PublicKey pub_key = 1; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.PublicKey getPubKey() { + return pubKey_ == null ? ibc.tendermint.light.TendermintLight.PublicKey.getDefaultInstance() : pubKey_; + } + /** + * .ibc.tendermint.light.PublicKey pub_key = 1; + */ + private void setPubKey(ibc.tendermint.light.TendermintLight.PublicKey value) { + value.getClass(); + pubKey_ = value; + + } + /** + * .ibc.tendermint.light.PublicKey pub_key = 1; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergePubKey(ibc.tendermint.light.TendermintLight.PublicKey value) { + value.getClass(); + if (pubKey_ != null && + pubKey_ != ibc.tendermint.light.TendermintLight.PublicKey.getDefaultInstance()) { + pubKey_ = + ibc.tendermint.light.TendermintLight.PublicKey.newBuilder(pubKey_).mergeFrom(value).buildPartial(); + } else { + pubKey_ = value; + } + + } + /** + * .ibc.tendermint.light.PublicKey pub_key = 1; + */ + private void clearPubKey() { pubKey_ = null; + + } + + public static final int VOTING_POWER_FIELD_NUMBER = 2; + private long votingPower_; + /** + * int64 voting_power = 2; + * @return The votingPower. + */ + @java.lang.Override + public long getVotingPower() { + return votingPower_; + } + /** + * int64 voting_power = 2; + * @param value The votingPower to set. + */ + private void setVotingPower(long value) { + + votingPower_ = value; + } + /** + * int64 voting_power = 2; + */ + private void clearVotingPower() { + + votingPower_ = 0L; + } + + public static ibc.tendermint.light.TendermintLight.SimpleValidator parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.SimpleValidator parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.SimpleValidator parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.SimpleValidator parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.SimpleValidator parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.SimpleValidator parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.SimpleValidator parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.SimpleValidator parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.SimpleValidator parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.SimpleValidator parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.SimpleValidator parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.SimpleValidator parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(ibc.tendermint.light.TendermintLight.SimpleValidator prototype) { + return (Builder) DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code ibc.tendermint.light.SimpleValidator} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + ibc.tendermint.light.TendermintLight.SimpleValidator, Builder> implements + // @@protoc_insertion_point(builder_implements:ibc.tendermint.light.SimpleValidator) + ibc.tendermint.light.TendermintLight.SimpleValidatorOrBuilder { + // Construct using ibc.tendermint.light.TendermintLight.SimpleValidator.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * .ibc.tendermint.light.PublicKey pub_key = 1; + */ + @java.lang.Override + public boolean hasPubKey() { + return instance.hasPubKey(); + } + /** + * .ibc.tendermint.light.PublicKey pub_key = 1; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.PublicKey getPubKey() { + return instance.getPubKey(); + } + /** + * .ibc.tendermint.light.PublicKey pub_key = 1; + */ + public Builder setPubKey(ibc.tendermint.light.TendermintLight.PublicKey value) { + copyOnWrite(); + instance.setPubKey(value); + return this; + } + /** + * .ibc.tendermint.light.PublicKey pub_key = 1; + */ + public Builder setPubKey( + ibc.tendermint.light.TendermintLight.PublicKey.Builder builderForValue) { + copyOnWrite(); + instance.setPubKey(builderForValue.build()); + return this; + } + /** + * .ibc.tendermint.light.PublicKey pub_key = 1; + */ + public Builder mergePubKey(ibc.tendermint.light.TendermintLight.PublicKey value) { + copyOnWrite(); + instance.mergePubKey(value); + return this; + } + /** + * .ibc.tendermint.light.PublicKey pub_key = 1; + */ + public Builder clearPubKey() { copyOnWrite(); + instance.clearPubKey(); + return this; + } + + /** + * int64 voting_power = 2; + * @return The votingPower. + */ + @java.lang.Override + public long getVotingPower() { + return instance.getVotingPower(); + } + /** + * int64 voting_power = 2; + * @param value The votingPower to set. + * @return This builder for chaining. + */ + public Builder setVotingPower(long value) { + copyOnWrite(); + instance.setVotingPower(value); + return this; + } + /** + * int64 voting_power = 2; + * @return This builder for chaining. + */ + public Builder clearVotingPower() { + copyOnWrite(); + instance.clearVotingPower(); + return this; + } + + // @@protoc_insertion_point(builder_scope:ibc.tendermint.light.SimpleValidator) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new ibc.tendermint.light.TendermintLight.SimpleValidator(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "pubKey_", + "votingPower_", + }; + java.lang.String info = + "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\t\u0002\u0002" + + ""; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (ibc.tendermint.light.TendermintLight.SimpleValidator.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:ibc.tendermint.light.SimpleValidator) + private static final ibc.tendermint.light.TendermintLight.SimpleValidator DEFAULT_INSTANCE; + static { + SimpleValidator defaultInstance = new SimpleValidator(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + SimpleValidator.class, defaultInstance); + } + + public static ibc.tendermint.light.TendermintLight.SimpleValidator getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface PublicKeyOrBuilder extends + // @@protoc_insertion_point(interface_extends:ibc.tendermint.light.PublicKey) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * bytes ed25519 = 1; + * @return Whether the ed25519 field is set. + */ + boolean hasEd25519(); + /** + * bytes ed25519 = 1; + * @return The ed25519. + */ + com.google.protobuf.ByteString getEd25519(); + + /** + * bytes secp256k1 = 2; + * @return Whether the secp256k1 field is set. + */ + boolean hasSecp256K1(); + /** + * bytes secp256k1 = 2; + * @return The secp256k1. + */ + com.google.protobuf.ByteString getSecp256K1(); + + /** + * bytes sr25519 = 3; + * @return Whether the sr25519 field is set. + */ + boolean hasSr25519(); + /** + * bytes sr25519 = 3; + * @return The sr25519. + */ + com.google.protobuf.ByteString getSr25519(); + + public ibc.tendermint.light.TendermintLight.PublicKey.SumCase getSumCase(); + } + /** + * Protobuf type {@code ibc.tendermint.light.PublicKey} + */ + public static final class PublicKey extends + com.google.protobuf.GeneratedMessageLite< + PublicKey, PublicKey.Builder> implements + // @@protoc_insertion_point(message_implements:ibc.tendermint.light.PublicKey) + PublicKeyOrBuilder { + private PublicKey() { + } + private int sumCase_ = 0; + private java.lang.Object sum_; + public enum SumCase { + ED25519(1), + SECP256K1(2), + SR25519(3), + SUM_NOT_SET(0); + private final int value; + private SumCase(int value) { + this.value = value; + } + /** + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static SumCase valueOf(int value) { + return forNumber(value); + } + + public static SumCase forNumber(int value) { + switch (value) { + case 1: return ED25519; + case 2: return SECP256K1; + case 3: return SR25519; + case 0: return SUM_NOT_SET; + default: return null; + } + } + public int getNumber() { + return this.value; + } + }; + + @java.lang.Override + public SumCase + getSumCase() { + return SumCase.forNumber( + sumCase_); + } + + private void clearSum() { + sumCase_ = 0; + sum_ = null; + } + + public static final int ED25519_FIELD_NUMBER = 1; + /** + * bytes ed25519 = 1; + * @return Whether the ed25519 field is set. + */ + @java.lang.Override + public boolean hasEd25519() { + return sumCase_ == 1; + } + /** + * bytes ed25519 = 1; + * @return The ed25519. + */ + @java.lang.Override + public com.google.protobuf.ByteString getEd25519() { + if (sumCase_ == 1) { + return (com.google.protobuf.ByteString) sum_; + } + return com.google.protobuf.ByteString.EMPTY; + } + /** + * bytes ed25519 = 1; + * @param value The ed25519 to set. + */ + private void setEd25519(com.google.protobuf.ByteString value) { + java.lang.Class valueClass = value.getClass(); + sumCase_ = 1; + sum_ = value; + } + /** + * bytes ed25519 = 1; + */ + private void clearEd25519() { + if (sumCase_ == 1) { + sumCase_ = 0; + sum_ = null; + } + } + + public static final int SECP256K1_FIELD_NUMBER = 2; + /** + * bytes secp256k1 = 2; + * @return Whether the secp256k1 field is set. + */ + @java.lang.Override + public boolean hasSecp256K1() { + return sumCase_ == 2; + } + /** + * bytes secp256k1 = 2; + * @return The secp256k1. + */ + @java.lang.Override + public com.google.protobuf.ByteString getSecp256K1() { + if (sumCase_ == 2) { + return (com.google.protobuf.ByteString) sum_; + } + return com.google.protobuf.ByteString.EMPTY; + } + /** + * bytes secp256k1 = 2; + * @param value The secp256k1 to set. + */ + private void setSecp256K1(com.google.protobuf.ByteString value) { + java.lang.Class valueClass = value.getClass(); + sumCase_ = 2; + sum_ = value; + } + /** + * bytes secp256k1 = 2; + */ + private void clearSecp256K1() { + if (sumCase_ == 2) { + sumCase_ = 0; + sum_ = null; + } + } + + public static final int SR25519_FIELD_NUMBER = 3; + /** + * bytes sr25519 = 3; + * @return Whether the sr25519 field is set. + */ + @java.lang.Override + public boolean hasSr25519() { + return sumCase_ == 3; + } + /** + * bytes sr25519 = 3; + * @return The sr25519. + */ + @java.lang.Override + public com.google.protobuf.ByteString getSr25519() { + if (sumCase_ == 3) { + return (com.google.protobuf.ByteString) sum_; + } + return com.google.protobuf.ByteString.EMPTY; + } + /** + * bytes sr25519 = 3; + * @param value The sr25519 to set. + */ + private void setSr25519(com.google.protobuf.ByteString value) { + java.lang.Class valueClass = value.getClass(); + sumCase_ = 3; + sum_ = value; + } + /** + * bytes sr25519 = 3; + */ + private void clearSr25519() { + if (sumCase_ == 3) { + sumCase_ = 0; + sum_ = null; + } + } + + public static ibc.tendermint.light.TendermintLight.PublicKey parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.PublicKey parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.PublicKey parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.PublicKey parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.PublicKey parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.PublicKey parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.PublicKey parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.PublicKey parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.PublicKey parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.PublicKey parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.PublicKey parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.PublicKey parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(ibc.tendermint.light.TendermintLight.PublicKey prototype) { + return (Builder) DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code ibc.tendermint.light.PublicKey} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + ibc.tendermint.light.TendermintLight.PublicKey, Builder> implements + // @@protoc_insertion_point(builder_implements:ibc.tendermint.light.PublicKey) + ibc.tendermint.light.TendermintLight.PublicKeyOrBuilder { + // Construct using ibc.tendermint.light.TendermintLight.PublicKey.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + @java.lang.Override + public SumCase + getSumCase() { + return instance.getSumCase(); + } + + public Builder clearSum() { + copyOnWrite(); + instance.clearSum(); + return this; + } + + + /** + * bytes ed25519 = 1; + * @return Whether the ed25519 field is set. + */ + @java.lang.Override + public boolean hasEd25519() { + return instance.hasEd25519(); + } + /** + * bytes ed25519 = 1; + * @return The ed25519. + */ + @java.lang.Override + public com.google.protobuf.ByteString getEd25519() { + return instance.getEd25519(); + } + /** + * bytes ed25519 = 1; + * @param value The ed25519 to set. + * @return This builder for chaining. + */ + public Builder setEd25519(com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setEd25519(value); + return this; + } + /** + * bytes ed25519 = 1; + * @return This builder for chaining. + */ + public Builder clearEd25519() { + copyOnWrite(); + instance.clearEd25519(); + return this; + } + + /** + * bytes secp256k1 = 2; + * @return Whether the secp256k1 field is set. + */ + @java.lang.Override + public boolean hasSecp256K1() { + return instance.hasSecp256K1(); + } + /** + * bytes secp256k1 = 2; + * @return The secp256k1. + */ + @java.lang.Override + public com.google.protobuf.ByteString getSecp256K1() { + return instance.getSecp256K1(); + } + /** + * bytes secp256k1 = 2; + * @param value The secp256k1 to set. + * @return This builder for chaining. + */ + public Builder setSecp256K1(com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setSecp256K1(value); + return this; + } + /** + * bytes secp256k1 = 2; + * @return This builder for chaining. + */ + public Builder clearSecp256K1() { + copyOnWrite(); + instance.clearSecp256K1(); + return this; + } + + /** + * bytes sr25519 = 3; + * @return Whether the sr25519 field is set. + */ + @java.lang.Override + public boolean hasSr25519() { + return instance.hasSr25519(); + } + /** + * bytes sr25519 = 3; + * @return The sr25519. + */ + @java.lang.Override + public com.google.protobuf.ByteString getSr25519() { + return instance.getSr25519(); + } + /** + * bytes sr25519 = 3; + * @param value The sr25519 to set. + * @return This builder for chaining. + */ + public Builder setSr25519(com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setSr25519(value); + return this; + } + /** + * bytes sr25519 = 3; + * @return This builder for chaining. + */ + public Builder clearSr25519() { + copyOnWrite(); + instance.clearSr25519(); + return this; + } + + // @@protoc_insertion_point(builder_scope:ibc.tendermint.light.PublicKey) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new ibc.tendermint.light.TendermintLight.PublicKey(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "sum_", + "sumCase_", + }; + java.lang.String info = + "\u0000\u0003\u0001\u0000\u0001\u0003\u0003\u0000\u0000\u0000\u0001=\u0000\u0002=" + + "\u0000\u0003=\u0000"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (ibc.tendermint.light.TendermintLight.PublicKey.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:ibc.tendermint.light.PublicKey) + private static final ibc.tendermint.light.TendermintLight.PublicKey DEFAULT_INSTANCE; + static { + PublicKey defaultInstance = new PublicKey(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + PublicKey.class, defaultInstance); + } + + public static ibc.tendermint.light.TendermintLight.PublicKey getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface PartSetHeaderOrBuilder extends + // @@protoc_insertion_point(interface_extends:ibc.tendermint.light.PartSetHeader) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * uint32 total = 1; + * @return The total. + */ + int getTotal(); + + /** + * bytes hash = 2; + * @return The hash. + */ + com.google.protobuf.ByteString getHash(); + } + /** + * Protobuf type {@code ibc.tendermint.light.PartSetHeader} + */ + public static final class PartSetHeader extends + com.google.protobuf.GeneratedMessageLite< + PartSetHeader, PartSetHeader.Builder> implements + // @@protoc_insertion_point(message_implements:ibc.tendermint.light.PartSetHeader) + PartSetHeaderOrBuilder { + private PartSetHeader() { + hash_ = com.google.protobuf.ByteString.EMPTY; + } + public static final int TOTAL_FIELD_NUMBER = 1; + private int total_; + /** + * uint32 total = 1; + * @return The total. + */ + @java.lang.Override + public int getTotal() { + return total_; + } + /** + * uint32 total = 1; + * @param value The total to set. + */ + private void setTotal(int value) { + + total_ = value; + } + /** + * uint32 total = 1; + */ + private void clearTotal() { + + total_ = 0; + } + + public static final int HASH_FIELD_NUMBER = 2; + private com.google.protobuf.ByteString hash_; + /** + * bytes hash = 2; + * @return The hash. + */ + @java.lang.Override + public com.google.protobuf.ByteString getHash() { + return hash_; + } + /** + * bytes hash = 2; + * @param value The hash to set. + */ + private void setHash(com.google.protobuf.ByteString value) { + java.lang.Class valueClass = value.getClass(); + + hash_ = value; + } + /** + * bytes hash = 2; + */ + private void clearHash() { + + hash_ = getDefaultInstance().getHash(); + } + + public static ibc.tendermint.light.TendermintLight.PartSetHeader parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.PartSetHeader parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.PartSetHeader parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.PartSetHeader parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.PartSetHeader parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.PartSetHeader parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.PartSetHeader parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.PartSetHeader parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.PartSetHeader parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.PartSetHeader parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.PartSetHeader parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.PartSetHeader parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(ibc.tendermint.light.TendermintLight.PartSetHeader prototype) { + return (Builder) DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code ibc.tendermint.light.PartSetHeader} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + ibc.tendermint.light.TendermintLight.PartSetHeader, Builder> implements + // @@protoc_insertion_point(builder_implements:ibc.tendermint.light.PartSetHeader) + ibc.tendermint.light.TendermintLight.PartSetHeaderOrBuilder { + // Construct using ibc.tendermint.light.TendermintLight.PartSetHeader.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * uint32 total = 1; + * @return The total. + */ + @java.lang.Override + public int getTotal() { + return instance.getTotal(); + } + /** + * uint32 total = 1; + * @param value The total to set. + * @return This builder for chaining. + */ + public Builder setTotal(int value) { + copyOnWrite(); + instance.setTotal(value); + return this; + } + /** + * uint32 total = 1; + * @return This builder for chaining. + */ + public Builder clearTotal() { + copyOnWrite(); + instance.clearTotal(); + return this; + } + + /** + * bytes hash = 2; + * @return The hash. + */ + @java.lang.Override + public com.google.protobuf.ByteString getHash() { + return instance.getHash(); + } + /** + * bytes hash = 2; + * @param value The hash to set. + * @return This builder for chaining. + */ + public Builder setHash(com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setHash(value); + return this; + } + /** + * bytes hash = 2; + * @return This builder for chaining. + */ + public Builder clearHash() { + copyOnWrite(); + instance.clearHash(); + return this; + } + + // @@protoc_insertion_point(builder_scope:ibc.tendermint.light.PartSetHeader) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new ibc.tendermint.light.TendermintLight.PartSetHeader(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "total_", + "hash_", + }; + java.lang.String info = + "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\u000b\u0002\n" + + ""; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (ibc.tendermint.light.TendermintLight.PartSetHeader.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:ibc.tendermint.light.PartSetHeader) + private static final ibc.tendermint.light.TendermintLight.PartSetHeader DEFAULT_INSTANCE; + static { + PartSetHeader defaultInstance = new PartSetHeader(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + PartSetHeader.class, defaultInstance); + } + + public static ibc.tendermint.light.TendermintLight.PartSetHeader getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface BlockIDOrBuilder extends + // @@protoc_insertion_point(interface_extends:ibc.tendermint.light.BlockID) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * bytes hash = 1; + * @return The hash. + */ + com.google.protobuf.ByteString getHash(); + + /** + * .ibc.tendermint.light.PartSetHeader part_set_header = 2; + * @return Whether the partSetHeader field is set. + */ + boolean hasPartSetHeader(); + /** + * .ibc.tendermint.light.PartSetHeader part_set_header = 2; + * @return The partSetHeader. + */ + ibc.tendermint.light.TendermintLight.PartSetHeader getPartSetHeader(); + } + /** + * Protobuf type {@code ibc.tendermint.light.BlockID} + */ + public static final class BlockID extends + com.google.protobuf.GeneratedMessageLite< + BlockID, BlockID.Builder> implements + // @@protoc_insertion_point(message_implements:ibc.tendermint.light.BlockID) + BlockIDOrBuilder { + private BlockID() { + hash_ = com.google.protobuf.ByteString.EMPTY; + } + public static final int HASH_FIELD_NUMBER = 1; + private com.google.protobuf.ByteString hash_; + /** + * bytes hash = 1; + * @return The hash. + */ + @java.lang.Override + public com.google.protobuf.ByteString getHash() { + return hash_; + } + /** + * bytes hash = 1; + * @param value The hash to set. + */ + private void setHash(com.google.protobuf.ByteString value) { + java.lang.Class valueClass = value.getClass(); + + hash_ = value; + } + /** + * bytes hash = 1; + */ + private void clearHash() { + + hash_ = getDefaultInstance().getHash(); + } + + public static final int PART_SET_HEADER_FIELD_NUMBER = 2; + private ibc.tendermint.light.TendermintLight.PartSetHeader partSetHeader_; + /** + * .ibc.tendermint.light.PartSetHeader part_set_header = 2; + */ + @java.lang.Override + public boolean hasPartSetHeader() { + return partSetHeader_ != null; + } + /** + * .ibc.tendermint.light.PartSetHeader part_set_header = 2; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.PartSetHeader getPartSetHeader() { + return partSetHeader_ == null ? ibc.tendermint.light.TendermintLight.PartSetHeader.getDefaultInstance() : partSetHeader_; + } + /** + * .ibc.tendermint.light.PartSetHeader part_set_header = 2; + */ + private void setPartSetHeader(ibc.tendermint.light.TendermintLight.PartSetHeader value) { + value.getClass(); + partSetHeader_ = value; + + } + /** + * .ibc.tendermint.light.PartSetHeader part_set_header = 2; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergePartSetHeader(ibc.tendermint.light.TendermintLight.PartSetHeader value) { + value.getClass(); + if (partSetHeader_ != null && + partSetHeader_ != ibc.tendermint.light.TendermintLight.PartSetHeader.getDefaultInstance()) { + partSetHeader_ = + ibc.tendermint.light.TendermintLight.PartSetHeader.newBuilder(partSetHeader_).mergeFrom(value).buildPartial(); + } else { + partSetHeader_ = value; + } + + } + /** + * .ibc.tendermint.light.PartSetHeader part_set_header = 2; + */ + private void clearPartSetHeader() { partSetHeader_ = null; + + } + + public static ibc.tendermint.light.TendermintLight.BlockID parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.BlockID parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.BlockID parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.BlockID parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.BlockID parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.BlockID parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.BlockID parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.BlockID parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.BlockID parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.BlockID parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.BlockID parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.BlockID parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(ibc.tendermint.light.TendermintLight.BlockID prototype) { + return (Builder) DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code ibc.tendermint.light.BlockID} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + ibc.tendermint.light.TendermintLight.BlockID, Builder> implements + // @@protoc_insertion_point(builder_implements:ibc.tendermint.light.BlockID) + ibc.tendermint.light.TendermintLight.BlockIDOrBuilder { + // Construct using ibc.tendermint.light.TendermintLight.BlockID.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * bytes hash = 1; + * @return The hash. + */ + @java.lang.Override + public com.google.protobuf.ByteString getHash() { + return instance.getHash(); + } + /** + * bytes hash = 1; + * @param value The hash to set. + * @return This builder for chaining. + */ + public Builder setHash(com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setHash(value); + return this; + } + /** + * bytes hash = 1; + * @return This builder for chaining. + */ + public Builder clearHash() { + copyOnWrite(); + instance.clearHash(); + return this; + } + + /** + * .ibc.tendermint.light.PartSetHeader part_set_header = 2; + */ + @java.lang.Override + public boolean hasPartSetHeader() { + return instance.hasPartSetHeader(); + } + /** + * .ibc.tendermint.light.PartSetHeader part_set_header = 2; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.PartSetHeader getPartSetHeader() { + return instance.getPartSetHeader(); + } + /** + * .ibc.tendermint.light.PartSetHeader part_set_header = 2; + */ + public Builder setPartSetHeader(ibc.tendermint.light.TendermintLight.PartSetHeader value) { + copyOnWrite(); + instance.setPartSetHeader(value); + return this; + } + /** + * .ibc.tendermint.light.PartSetHeader part_set_header = 2; + */ + public Builder setPartSetHeader( + ibc.tendermint.light.TendermintLight.PartSetHeader.Builder builderForValue) { + copyOnWrite(); + instance.setPartSetHeader(builderForValue.build()); + return this; + } + /** + * .ibc.tendermint.light.PartSetHeader part_set_header = 2; + */ + public Builder mergePartSetHeader(ibc.tendermint.light.TendermintLight.PartSetHeader value) { + copyOnWrite(); + instance.mergePartSetHeader(value); + return this; + } + /** + * .ibc.tendermint.light.PartSetHeader part_set_header = 2; + */ + public Builder clearPartSetHeader() { copyOnWrite(); + instance.clearPartSetHeader(); + return this; + } + + // @@protoc_insertion_point(builder_scope:ibc.tendermint.light.BlockID) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new ibc.tendermint.light.TendermintLight.BlockID(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "hash_", + "partSetHeader_", + }; + java.lang.String info = + "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\n\u0002\t"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (ibc.tendermint.light.TendermintLight.BlockID.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:ibc.tendermint.light.BlockID) + private static final ibc.tendermint.light.TendermintLight.BlockID DEFAULT_INSTANCE; + static { + BlockID defaultInstance = new BlockID(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + BlockID.class, defaultInstance); + } + + public static ibc.tendermint.light.TendermintLight.BlockID getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface CommitOrBuilder extends + // @@protoc_insertion_point(interface_extends:ibc.tendermint.light.Commit) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * int64 height = 1; + * @return The height. + */ + long getHeight(); + + /** + * int32 round = 2; + * @return The round. + */ + int getRound(); + + /** + * .ibc.tendermint.light.BlockID block_id = 3; + * @return Whether the blockId field is set. + */ + boolean hasBlockId(); + /** + * .ibc.tendermint.light.BlockID block_id = 3; + * @return The blockId. + */ + ibc.tendermint.light.TendermintLight.BlockID getBlockId(); + + /** + * repeated .ibc.tendermint.light.CommitSig signatures = 4; + */ + java.util.List + getSignaturesList(); + /** + * repeated .ibc.tendermint.light.CommitSig signatures = 4; + */ + ibc.tendermint.light.TendermintLight.CommitSig getSignatures(int index); + /** + * repeated .ibc.tendermint.light.CommitSig signatures = 4; + */ + int getSignaturesCount(); + } + /** + * Protobuf type {@code ibc.tendermint.light.Commit} + */ + public static final class Commit extends + com.google.protobuf.GeneratedMessageLite< + Commit, Commit.Builder> implements + // @@protoc_insertion_point(message_implements:ibc.tendermint.light.Commit) + CommitOrBuilder { + private Commit() { + signatures_ = emptyProtobufList(); + } + public static final int HEIGHT_FIELD_NUMBER = 1; + private long height_; + /** + * int64 height = 1; + * @return The height. + */ + @java.lang.Override + public long getHeight() { + return height_; + } + /** + * int64 height = 1; + * @param value The height to set. + */ + private void setHeight(long value) { + + height_ = value; + } + /** + * int64 height = 1; + */ + private void clearHeight() { + + height_ = 0L; + } + + public static final int ROUND_FIELD_NUMBER = 2; + private int round_; + /** + * int32 round = 2; + * @return The round. + */ + @java.lang.Override + public int getRound() { + return round_; + } + /** + * int32 round = 2; + * @param value The round to set. + */ + private void setRound(int value) { + + round_ = value; + } + /** + * int32 round = 2; + */ + private void clearRound() { + + round_ = 0; + } + + public static final int BLOCK_ID_FIELD_NUMBER = 3; + private ibc.tendermint.light.TendermintLight.BlockID blockId_; + /** + * .ibc.tendermint.light.BlockID block_id = 3; + */ + @java.lang.Override + public boolean hasBlockId() { + return blockId_ != null; + } + /** + * .ibc.tendermint.light.BlockID block_id = 3; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.BlockID getBlockId() { + return blockId_ == null ? ibc.tendermint.light.TendermintLight.BlockID.getDefaultInstance() : blockId_; + } + /** + * .ibc.tendermint.light.BlockID block_id = 3; + */ + private void setBlockId(ibc.tendermint.light.TendermintLight.BlockID value) { + value.getClass(); + blockId_ = value; + + } + /** + * .ibc.tendermint.light.BlockID block_id = 3; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergeBlockId(ibc.tendermint.light.TendermintLight.BlockID value) { + value.getClass(); + if (blockId_ != null && + blockId_ != ibc.tendermint.light.TendermintLight.BlockID.getDefaultInstance()) { + blockId_ = + ibc.tendermint.light.TendermintLight.BlockID.newBuilder(blockId_).mergeFrom(value).buildPartial(); + } else { + blockId_ = value; + } + + } + /** + * .ibc.tendermint.light.BlockID block_id = 3; + */ + private void clearBlockId() { blockId_ = null; + + } + + public static final int SIGNATURES_FIELD_NUMBER = 4; + private com.google.protobuf.Internal.ProtobufList signatures_; + /** + * repeated .ibc.tendermint.light.CommitSig signatures = 4; + */ + @java.lang.Override + public java.util.List getSignaturesList() { + return signatures_; + } + /** + * repeated .ibc.tendermint.light.CommitSig signatures = 4; + */ + public java.util.List + getSignaturesOrBuilderList() { + return signatures_; + } + /** + * repeated .ibc.tendermint.light.CommitSig signatures = 4; + */ + @java.lang.Override + public int getSignaturesCount() { + return signatures_.size(); + } + /** + * repeated .ibc.tendermint.light.CommitSig signatures = 4; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.CommitSig getSignatures(int index) { + return signatures_.get(index); + } + /** + * repeated .ibc.tendermint.light.CommitSig signatures = 4; + */ + public ibc.tendermint.light.TendermintLight.CommitSigOrBuilder getSignaturesOrBuilder( + int index) { + return signatures_.get(index); + } + private void ensureSignaturesIsMutable() { + com.google.protobuf.Internal.ProtobufList tmp = signatures_; + if (!tmp.isModifiable()) { + signatures_ = + com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp); + } + } + + /** + * repeated .ibc.tendermint.light.CommitSig signatures = 4; + */ + private void setSignatures( + int index, ibc.tendermint.light.TendermintLight.CommitSig value) { + value.getClass(); + ensureSignaturesIsMutable(); + signatures_.set(index, value); + } + /** + * repeated .ibc.tendermint.light.CommitSig signatures = 4; + */ + private void addSignatures(ibc.tendermint.light.TendermintLight.CommitSig value) { + value.getClass(); + ensureSignaturesIsMutable(); + signatures_.add(value); + } + /** + * repeated .ibc.tendermint.light.CommitSig signatures = 4; + */ + private void addSignatures( + int index, ibc.tendermint.light.TendermintLight.CommitSig value) { + value.getClass(); + ensureSignaturesIsMutable(); + signatures_.add(index, value); + } + /** + * repeated .ibc.tendermint.light.CommitSig signatures = 4; + */ + private void addAllSignatures( + java.lang.Iterable values) { + ensureSignaturesIsMutable(); + com.google.protobuf.AbstractMessageLite.addAll( + values, signatures_); + } + /** + * repeated .ibc.tendermint.light.CommitSig signatures = 4; + */ + private void clearSignatures() { + signatures_ = emptyProtobufList(); + } + /** + * repeated .ibc.tendermint.light.CommitSig signatures = 4; + */ + private void removeSignatures(int index) { + ensureSignaturesIsMutable(); + signatures_.remove(index); + } + + public static ibc.tendermint.light.TendermintLight.Commit parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.Commit parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Commit parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.Commit parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Commit parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.Commit parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Commit parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.Commit parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Commit parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.Commit parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Commit parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.Commit parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(ibc.tendermint.light.TendermintLight.Commit prototype) { + return (Builder) DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code ibc.tendermint.light.Commit} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + ibc.tendermint.light.TendermintLight.Commit, Builder> implements + // @@protoc_insertion_point(builder_implements:ibc.tendermint.light.Commit) + ibc.tendermint.light.TendermintLight.CommitOrBuilder { + // Construct using ibc.tendermint.light.TendermintLight.Commit.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * int64 height = 1; + * @return The height. + */ + @java.lang.Override + public long getHeight() { + return instance.getHeight(); + } + /** + * int64 height = 1; + * @param value The height to set. + * @return This builder for chaining. + */ + public Builder setHeight(long value) { + copyOnWrite(); + instance.setHeight(value); + return this; + } + /** + * int64 height = 1; + * @return This builder for chaining. + */ + public Builder clearHeight() { + copyOnWrite(); + instance.clearHeight(); + return this; + } + + /** + * int32 round = 2; + * @return The round. + */ + @java.lang.Override + public int getRound() { + return instance.getRound(); + } + /** + * int32 round = 2; + * @param value The round to set. + * @return This builder for chaining. + */ + public Builder setRound(int value) { + copyOnWrite(); + instance.setRound(value); + return this; + } + /** + * int32 round = 2; + * @return This builder for chaining. + */ + public Builder clearRound() { + copyOnWrite(); + instance.clearRound(); + return this; + } + + /** + * .ibc.tendermint.light.BlockID block_id = 3; + */ + @java.lang.Override + public boolean hasBlockId() { + return instance.hasBlockId(); + } + /** + * .ibc.tendermint.light.BlockID block_id = 3; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.BlockID getBlockId() { + return instance.getBlockId(); + } + /** + * .ibc.tendermint.light.BlockID block_id = 3; + */ + public Builder setBlockId(ibc.tendermint.light.TendermintLight.BlockID value) { + copyOnWrite(); + instance.setBlockId(value); + return this; + } + /** + * .ibc.tendermint.light.BlockID block_id = 3; + */ + public Builder setBlockId( + ibc.tendermint.light.TendermintLight.BlockID.Builder builderForValue) { + copyOnWrite(); + instance.setBlockId(builderForValue.build()); + return this; + } + /** + * .ibc.tendermint.light.BlockID block_id = 3; + */ + public Builder mergeBlockId(ibc.tendermint.light.TendermintLight.BlockID value) { + copyOnWrite(); + instance.mergeBlockId(value); + return this; + } + /** + * .ibc.tendermint.light.BlockID block_id = 3; + */ + public Builder clearBlockId() { copyOnWrite(); + instance.clearBlockId(); + return this; + } + + /** + * repeated .ibc.tendermint.light.CommitSig signatures = 4; + */ + @java.lang.Override + public java.util.List getSignaturesList() { + return java.util.Collections.unmodifiableList( + instance.getSignaturesList()); + } + /** + * repeated .ibc.tendermint.light.CommitSig signatures = 4; + */ + @java.lang.Override + public int getSignaturesCount() { + return instance.getSignaturesCount(); + }/** + * repeated .ibc.tendermint.light.CommitSig signatures = 4; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.CommitSig getSignatures(int index) { + return instance.getSignatures(index); + } + /** + * repeated .ibc.tendermint.light.CommitSig signatures = 4; + */ + public Builder setSignatures( + int index, ibc.tendermint.light.TendermintLight.CommitSig value) { + copyOnWrite(); + instance.setSignatures(index, value); + return this; + } + /** + * repeated .ibc.tendermint.light.CommitSig signatures = 4; + */ + public Builder setSignatures( + int index, ibc.tendermint.light.TendermintLight.CommitSig.Builder builderForValue) { + copyOnWrite(); + instance.setSignatures(index, + builderForValue.build()); + return this; + } + /** + * repeated .ibc.tendermint.light.CommitSig signatures = 4; + */ + public Builder addSignatures(ibc.tendermint.light.TendermintLight.CommitSig value) { + copyOnWrite(); + instance.addSignatures(value); + return this; + } + /** + * repeated .ibc.tendermint.light.CommitSig signatures = 4; + */ + public Builder addSignatures( + int index, ibc.tendermint.light.TendermintLight.CommitSig value) { + copyOnWrite(); + instance.addSignatures(index, value); + return this; + } + /** + * repeated .ibc.tendermint.light.CommitSig signatures = 4; + */ + public Builder addSignatures( + ibc.tendermint.light.TendermintLight.CommitSig.Builder builderForValue) { + copyOnWrite(); + instance.addSignatures(builderForValue.build()); + return this; + } + /** + * repeated .ibc.tendermint.light.CommitSig signatures = 4; + */ + public Builder addSignatures( + int index, ibc.tendermint.light.TendermintLight.CommitSig.Builder builderForValue) { + copyOnWrite(); + instance.addSignatures(index, + builderForValue.build()); + return this; + } + /** + * repeated .ibc.tendermint.light.CommitSig signatures = 4; + */ + public Builder addAllSignatures( + java.lang.Iterable values) { + copyOnWrite(); + instance.addAllSignatures(values); + return this; + } + /** + * repeated .ibc.tendermint.light.CommitSig signatures = 4; + */ + public Builder clearSignatures() { + copyOnWrite(); + instance.clearSignatures(); + return this; + } + /** + * repeated .ibc.tendermint.light.CommitSig signatures = 4; + */ + public Builder removeSignatures(int index) { + copyOnWrite(); + instance.removeSignatures(index); + return this; + } + + // @@protoc_insertion_point(builder_scope:ibc.tendermint.light.Commit) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new ibc.tendermint.light.TendermintLight.Commit(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "height_", + "round_", + "blockId_", + "signatures_", + ibc.tendermint.light.TendermintLight.CommitSig.class, + }; + java.lang.String info = + "\u0000\u0004\u0000\u0000\u0001\u0004\u0004\u0000\u0001\u0000\u0001\u0002\u0002\u0004" + + "\u0003\t\u0004\u001b"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (ibc.tendermint.light.TendermintLight.Commit.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:ibc.tendermint.light.Commit) + private static final ibc.tendermint.light.TendermintLight.Commit DEFAULT_INSTANCE; + static { + Commit defaultInstance = new Commit(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + Commit.class, defaultInstance); + } + + public static ibc.tendermint.light.TendermintLight.Commit getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface CommitSigOrBuilder extends + // @@protoc_insertion_point(interface_extends:ibc.tendermint.light.CommitSig) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * .ibc.tendermint.light.BlockIDFlag block_id_flag = 1; + * @return The enum numeric value on the wire for blockIdFlag. + */ + int getBlockIdFlagValue(); + /** + * .ibc.tendermint.light.BlockIDFlag block_id_flag = 1; + * @return The blockIdFlag. + */ + ibc.tendermint.light.TendermintLight.BlockIDFlag getBlockIdFlag(); + + /** + * bytes validator_address = 2; + * @return The validatorAddress. + */ + com.google.protobuf.ByteString getValidatorAddress(); + + /** + * .ibc.tendermint.light.Timestamp timestamp = 3; + * @return Whether the timestamp field is set. + */ + boolean hasTimestamp(); + /** + * .ibc.tendermint.light.Timestamp timestamp = 3; + * @return The timestamp. + */ + ibc.tendermint.light.TendermintLight.Timestamp getTimestamp(); + + /** + * bytes signature = 4; + * @return The signature. + */ + com.google.protobuf.ByteString getSignature(); + } + /** + *
+   * CommitSig is a part of the Vote included in a Commit.
+   * 
+ * + * Protobuf type {@code ibc.tendermint.light.CommitSig} + */ + public static final class CommitSig extends + com.google.protobuf.GeneratedMessageLite< + CommitSig, CommitSig.Builder> implements + // @@protoc_insertion_point(message_implements:ibc.tendermint.light.CommitSig) + CommitSigOrBuilder { + private CommitSig() { + validatorAddress_ = com.google.protobuf.ByteString.EMPTY; + signature_ = com.google.protobuf.ByteString.EMPTY; + } + public static final int BLOCK_ID_FLAG_FIELD_NUMBER = 1; + private int blockIdFlag_; + /** + * .ibc.tendermint.light.BlockIDFlag block_id_flag = 1; + * @return The enum numeric value on the wire for blockIdFlag. + */ + @java.lang.Override + public int getBlockIdFlagValue() { + return blockIdFlag_; + } + /** + * .ibc.tendermint.light.BlockIDFlag block_id_flag = 1; + * @return The blockIdFlag. + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.BlockIDFlag getBlockIdFlag() { + ibc.tendermint.light.TendermintLight.BlockIDFlag result = ibc.tendermint.light.TendermintLight.BlockIDFlag.forNumber(blockIdFlag_); + return result == null ? ibc.tendermint.light.TendermintLight.BlockIDFlag.UNRECOGNIZED : result; + } + /** + * .ibc.tendermint.light.BlockIDFlag block_id_flag = 1; + * @param value The enum numeric value on the wire for blockIdFlag to set. + */ + private void setBlockIdFlagValue(int value) { + blockIdFlag_ = value; + } + /** + * .ibc.tendermint.light.BlockIDFlag block_id_flag = 1; + * @param value The blockIdFlag to set. + */ + private void setBlockIdFlag(ibc.tendermint.light.TendermintLight.BlockIDFlag value) { + blockIdFlag_ = value.getNumber(); + + } + /** + * .ibc.tendermint.light.BlockIDFlag block_id_flag = 1; + */ + private void clearBlockIdFlag() { + + blockIdFlag_ = 0; + } + + public static final int VALIDATOR_ADDRESS_FIELD_NUMBER = 2; + private com.google.protobuf.ByteString validatorAddress_; + /** + * bytes validator_address = 2; + * @return The validatorAddress. + */ + @java.lang.Override + public com.google.protobuf.ByteString getValidatorAddress() { + return validatorAddress_; + } + /** + * bytes validator_address = 2; + * @param value The validatorAddress to set. + */ + private void setValidatorAddress(com.google.protobuf.ByteString value) { + java.lang.Class valueClass = value.getClass(); + + validatorAddress_ = value; + } + /** + * bytes validator_address = 2; + */ + private void clearValidatorAddress() { + + validatorAddress_ = getDefaultInstance().getValidatorAddress(); + } + + public static final int TIMESTAMP_FIELD_NUMBER = 3; + private ibc.tendermint.light.TendermintLight.Timestamp timestamp_; + /** + * .ibc.tendermint.light.Timestamp timestamp = 3; + */ + @java.lang.Override + public boolean hasTimestamp() { + return timestamp_ != null; + } + /** + * .ibc.tendermint.light.Timestamp timestamp = 3; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.Timestamp getTimestamp() { + return timestamp_ == null ? ibc.tendermint.light.TendermintLight.Timestamp.getDefaultInstance() : timestamp_; + } + /** + * .ibc.tendermint.light.Timestamp timestamp = 3; + */ + private void setTimestamp(ibc.tendermint.light.TendermintLight.Timestamp value) { + value.getClass(); + timestamp_ = value; + + } + /** + * .ibc.tendermint.light.Timestamp timestamp = 3; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergeTimestamp(ibc.tendermint.light.TendermintLight.Timestamp value) { + value.getClass(); + if (timestamp_ != null && + timestamp_ != ibc.tendermint.light.TendermintLight.Timestamp.getDefaultInstance()) { + timestamp_ = + ibc.tendermint.light.TendermintLight.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial(); + } else { + timestamp_ = value; + } + + } + /** + * .ibc.tendermint.light.Timestamp timestamp = 3; + */ + private void clearTimestamp() { timestamp_ = null; + + } + + public static final int SIGNATURE_FIELD_NUMBER = 4; + private com.google.protobuf.ByteString signature_; + /** + * bytes signature = 4; + * @return The signature. + */ + @java.lang.Override + public com.google.protobuf.ByteString getSignature() { + return signature_; + } + /** + * bytes signature = 4; + * @param value The signature to set. + */ + private void setSignature(com.google.protobuf.ByteString value) { + java.lang.Class valueClass = value.getClass(); + + signature_ = value; + } + /** + * bytes signature = 4; + */ + private void clearSignature() { + + signature_ = getDefaultInstance().getSignature(); + } + + public static ibc.tendermint.light.TendermintLight.CommitSig parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.CommitSig parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.CommitSig parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.CommitSig parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.CommitSig parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.CommitSig parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.CommitSig parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.CommitSig parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.CommitSig parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.CommitSig parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.CommitSig parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.CommitSig parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(ibc.tendermint.light.TendermintLight.CommitSig prototype) { + return (Builder) DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + *
+     * CommitSig is a part of the Vote included in a Commit.
+     * 
+ * + * Protobuf type {@code ibc.tendermint.light.CommitSig} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + ibc.tendermint.light.TendermintLight.CommitSig, Builder> implements + // @@protoc_insertion_point(builder_implements:ibc.tendermint.light.CommitSig) + ibc.tendermint.light.TendermintLight.CommitSigOrBuilder { + // Construct using ibc.tendermint.light.TendermintLight.CommitSig.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * .ibc.tendermint.light.BlockIDFlag block_id_flag = 1; + * @return The enum numeric value on the wire for blockIdFlag. + */ + @java.lang.Override + public int getBlockIdFlagValue() { + return instance.getBlockIdFlagValue(); + } + /** + * .ibc.tendermint.light.BlockIDFlag block_id_flag = 1; + * @param value The blockIdFlag to set. + * @return This builder for chaining. + */ + public Builder setBlockIdFlagValue(int value) { + copyOnWrite(); + instance.setBlockIdFlagValue(value); + return this; + } + /** + * .ibc.tendermint.light.BlockIDFlag block_id_flag = 1; + * @return The blockIdFlag. + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.BlockIDFlag getBlockIdFlag() { + return instance.getBlockIdFlag(); + } + /** + * .ibc.tendermint.light.BlockIDFlag block_id_flag = 1; + * @param value The enum numeric value on the wire for blockIdFlag to set. + * @return This builder for chaining. + */ + public Builder setBlockIdFlag(ibc.tendermint.light.TendermintLight.BlockIDFlag value) { + copyOnWrite(); + instance.setBlockIdFlag(value); + return this; + } + /** + * .ibc.tendermint.light.BlockIDFlag block_id_flag = 1; + * @return This builder for chaining. + */ + public Builder clearBlockIdFlag() { + copyOnWrite(); + instance.clearBlockIdFlag(); + return this; + } + + /** + * bytes validator_address = 2; + * @return The validatorAddress. + */ + @java.lang.Override + public com.google.protobuf.ByteString getValidatorAddress() { + return instance.getValidatorAddress(); + } + /** + * bytes validator_address = 2; + * @param value The validatorAddress to set. + * @return This builder for chaining. + */ + public Builder setValidatorAddress(com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setValidatorAddress(value); + return this; + } + /** + * bytes validator_address = 2; + * @return This builder for chaining. + */ + public Builder clearValidatorAddress() { + copyOnWrite(); + instance.clearValidatorAddress(); + return this; + } + + /** + * .ibc.tendermint.light.Timestamp timestamp = 3; + */ + @java.lang.Override + public boolean hasTimestamp() { + return instance.hasTimestamp(); + } + /** + * .ibc.tendermint.light.Timestamp timestamp = 3; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.Timestamp getTimestamp() { + return instance.getTimestamp(); + } + /** + * .ibc.tendermint.light.Timestamp timestamp = 3; + */ + public Builder setTimestamp(ibc.tendermint.light.TendermintLight.Timestamp value) { + copyOnWrite(); + instance.setTimestamp(value); + return this; + } + /** + * .ibc.tendermint.light.Timestamp timestamp = 3; + */ + public Builder setTimestamp( + ibc.tendermint.light.TendermintLight.Timestamp.Builder builderForValue) { + copyOnWrite(); + instance.setTimestamp(builderForValue.build()); + return this; + } + /** + * .ibc.tendermint.light.Timestamp timestamp = 3; + */ + public Builder mergeTimestamp(ibc.tendermint.light.TendermintLight.Timestamp value) { + copyOnWrite(); + instance.mergeTimestamp(value); + return this; + } + /** + * .ibc.tendermint.light.Timestamp timestamp = 3; + */ + public Builder clearTimestamp() { copyOnWrite(); + instance.clearTimestamp(); + return this; + } + + /** + * bytes signature = 4; + * @return The signature. + */ + @java.lang.Override + public com.google.protobuf.ByteString getSignature() { + return instance.getSignature(); + } + /** + * bytes signature = 4; + * @param value The signature to set. + * @return This builder for chaining. + */ + public Builder setSignature(com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setSignature(value); + return this; + } + /** + * bytes signature = 4; + * @return This builder for chaining. + */ + public Builder clearSignature() { + copyOnWrite(); + instance.clearSignature(); + return this; + } + + // @@protoc_insertion_point(builder_scope:ibc.tendermint.light.CommitSig) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new ibc.tendermint.light.TendermintLight.CommitSig(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "blockIdFlag_", + "validatorAddress_", + "timestamp_", + "signature_", + }; + java.lang.String info = + "\u0000\u0004\u0000\u0000\u0001\u0004\u0004\u0000\u0000\u0000\u0001\f\u0002\n\u0003" + + "\t\u0004\n"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (ibc.tendermint.light.TendermintLight.CommitSig.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:ibc.tendermint.light.CommitSig) + private static final ibc.tendermint.light.TendermintLight.CommitSig DEFAULT_INSTANCE; + static { + CommitSig defaultInstance = new CommitSig(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + CommitSig.class, defaultInstance); + } + + public static ibc.tendermint.light.TendermintLight.CommitSig getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface TimestampOrBuilder extends + // @@protoc_insertion_point(interface_extends:ibc.tendermint.light.Timestamp) + com.google.protobuf.MessageLiteOrBuilder { + + /** + *
+     * Represents seconds of UTC time since Unix epoch
+     * 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
+     * 9999-12-31T23:59:59Z inclusive.
+     * 
+ * + * int64 seconds = 1; + * @return The seconds. + */ + long getSeconds(); + + /** + *
+     * Non-negative fractions of a second at nanosecond resolution. Negative
+     * second values with fractions must still have non-negative nanos values
+     * that count forward in time. Must be from 0 to 999,999,999
+     * inclusive.
+     * 
+ * + * int32 nanos = 2; + * @return The nanos. + */ + int getNanos(); + } + /** + * Protobuf type {@code ibc.tendermint.light.Timestamp} + */ + public static final class Timestamp extends + com.google.protobuf.GeneratedMessageLite< + Timestamp, Timestamp.Builder> implements + // @@protoc_insertion_point(message_implements:ibc.tendermint.light.Timestamp) + TimestampOrBuilder { + private Timestamp() { + } + public static final int SECONDS_FIELD_NUMBER = 1; + private long seconds_; + /** + *
+     * Represents seconds of UTC time since Unix epoch
+     * 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
+     * 9999-12-31T23:59:59Z inclusive.
+     * 
+ * + * int64 seconds = 1; + * @return The seconds. + */ + @java.lang.Override + public long getSeconds() { + return seconds_; + } + /** + *
+     * Represents seconds of UTC time since Unix epoch
+     * 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
+     * 9999-12-31T23:59:59Z inclusive.
+     * 
+ * + * int64 seconds = 1; + * @param value The seconds to set. + */ + private void setSeconds(long value) { + + seconds_ = value; + } + /** + *
+     * Represents seconds of UTC time since Unix epoch
+     * 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
+     * 9999-12-31T23:59:59Z inclusive.
+     * 
+ * + * int64 seconds = 1; + */ + private void clearSeconds() { + + seconds_ = 0L; + } + + public static final int NANOS_FIELD_NUMBER = 2; + private int nanos_; + /** + *
+     * Non-negative fractions of a second at nanosecond resolution. Negative
+     * second values with fractions must still have non-negative nanos values
+     * that count forward in time. Must be from 0 to 999,999,999
+     * inclusive.
+     * 
+ * + * int32 nanos = 2; + * @return The nanos. + */ + @java.lang.Override + public int getNanos() { + return nanos_; + } + /** + *
+     * Non-negative fractions of a second at nanosecond resolution. Negative
+     * second values with fractions must still have non-negative nanos values
+     * that count forward in time. Must be from 0 to 999,999,999
+     * inclusive.
+     * 
+ * + * int32 nanos = 2; + * @param value The nanos to set. + */ + private void setNanos(int value) { + + nanos_ = value; + } + /** + *
+     * Non-negative fractions of a second at nanosecond resolution. Negative
+     * second values with fractions must still have non-negative nanos values
+     * that count forward in time. Must be from 0 to 999,999,999
+     * inclusive.
+     * 
+ * + * int32 nanos = 2; + */ + private void clearNanos() { + + nanos_ = 0; + } + + public static ibc.tendermint.light.TendermintLight.Timestamp parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.Timestamp parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Timestamp parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.Timestamp parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Timestamp parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.Timestamp parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Timestamp parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.Timestamp parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Timestamp parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.Timestamp parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.Timestamp parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.Timestamp parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(ibc.tendermint.light.TendermintLight.Timestamp prototype) { + return (Builder) DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code ibc.tendermint.light.Timestamp} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + ibc.tendermint.light.TendermintLight.Timestamp, Builder> implements + // @@protoc_insertion_point(builder_implements:ibc.tendermint.light.Timestamp) + ibc.tendermint.light.TendermintLight.TimestampOrBuilder { + // Construct using ibc.tendermint.light.TendermintLight.Timestamp.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + *
+       * Represents seconds of UTC time since Unix epoch
+       * 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
+       * 9999-12-31T23:59:59Z inclusive.
+       * 
+ * + * int64 seconds = 1; + * @return The seconds. + */ + @java.lang.Override + public long getSeconds() { + return instance.getSeconds(); + } + /** + *
+       * Represents seconds of UTC time since Unix epoch
+       * 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
+       * 9999-12-31T23:59:59Z inclusive.
+       * 
+ * + * int64 seconds = 1; + * @param value The seconds to set. + * @return This builder for chaining. + */ + public Builder setSeconds(long value) { + copyOnWrite(); + instance.setSeconds(value); + return this; + } + /** + *
+       * Represents seconds of UTC time since Unix epoch
+       * 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
+       * 9999-12-31T23:59:59Z inclusive.
+       * 
+ * + * int64 seconds = 1; + * @return This builder for chaining. + */ + public Builder clearSeconds() { + copyOnWrite(); + instance.clearSeconds(); + return this; + } + + /** + *
+       * Non-negative fractions of a second at nanosecond resolution. Negative
+       * second values with fractions must still have non-negative nanos values
+       * that count forward in time. Must be from 0 to 999,999,999
+       * inclusive.
+       * 
+ * + * int32 nanos = 2; + * @return The nanos. + */ + @java.lang.Override + public int getNanos() { + return instance.getNanos(); + } + /** + *
+       * Non-negative fractions of a second at nanosecond resolution. Negative
+       * second values with fractions must still have non-negative nanos values
+       * that count forward in time. Must be from 0 to 999,999,999
+       * inclusive.
+       * 
+ * + * int32 nanos = 2; + * @param value The nanos to set. + * @return This builder for chaining. + */ + public Builder setNanos(int value) { + copyOnWrite(); + instance.setNanos(value); + return this; + } + /** + *
+       * Non-negative fractions of a second at nanosecond resolution. Negative
+       * second values with fractions must still have non-negative nanos values
+       * that count forward in time. Must be from 0 to 999,999,999
+       * inclusive.
+       * 
+ * + * int32 nanos = 2; + * @return This builder for chaining. + */ + public Builder clearNanos() { + copyOnWrite(); + instance.clearNanos(); + return this; + } + + // @@protoc_insertion_point(builder_scope:ibc.tendermint.light.Timestamp) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new ibc.tendermint.light.TendermintLight.Timestamp(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "seconds_", + "nanos_", + }; + java.lang.String info = + "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\u0002\u0002\u0004" + + ""; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (ibc.tendermint.light.TendermintLight.Timestamp.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:ibc.tendermint.light.Timestamp) + private static final ibc.tendermint.light.TendermintLight.Timestamp DEFAULT_INSTANCE; + static { + Timestamp defaultInstance = new Timestamp(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + Timestamp.class, defaultInstance); + } + + public static ibc.tendermint.light.TendermintLight.Timestamp getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface LightHeaderOrBuilder extends + // @@protoc_insertion_point(interface_extends:ibc.tendermint.light.LightHeader) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * .ibc.tendermint.light.Consensus version = 1; + * @return Whether the version field is set. + */ + boolean hasVersion(); + /** + * .ibc.tendermint.light.Consensus version = 1; + * @return The version. + */ + ibc.tendermint.light.TendermintLight.Consensus getVersion(); + + /** + * string chain_id = 2; + * @return The chainId. + */ + java.lang.String getChainId(); + /** + * string chain_id = 2; + * @return The bytes for chainId. + */ + com.google.protobuf.ByteString + getChainIdBytes(); + + /** + * int64 height = 3; + * @return The height. + */ + long getHeight(); + + /** + * .ibc.tendermint.light.Timestamp time = 4; + * @return Whether the time field is set. + */ + boolean hasTime(); + /** + * .ibc.tendermint.light.Timestamp time = 4; + * @return The time. + */ + ibc.tendermint.light.TendermintLight.Timestamp getTime(); + + /** + * .ibc.tendermint.light.BlockID last_block_id = 5; + * @return Whether the lastBlockId field is set. + */ + boolean hasLastBlockId(); + /** + * .ibc.tendermint.light.BlockID last_block_id = 5; + * @return The lastBlockId. + */ + ibc.tendermint.light.TendermintLight.BlockID getLastBlockId(); + + /** + *
+     * commit from validators from the last block
+     * 
+ * + * bytes last_commit_hash = 6; + * @return The lastCommitHash. + */ + com.google.protobuf.ByteString getLastCommitHash(); + + /** + *
+     * transactions
+     * 
+ * + * bytes data_hash = 7; + * @return The dataHash. + */ + com.google.protobuf.ByteString getDataHash(); + + /** + *
+     * validators for the current block
+     * 
+ * + * bytes validators_hash = 8; + * @return The validatorsHash. + */ + com.google.protobuf.ByteString getValidatorsHash(); + + /** + *
+     * validators for the next block
+     * 
+ * + * bytes next_validators_hash = 9; + * @return The nextValidatorsHash. + */ + com.google.protobuf.ByteString getNextValidatorsHash(); + + /** + *
+     * consensus params for current block
+     * 
+ * + * bytes consensus_hash = 10; + * @return The consensusHash. + */ + com.google.protobuf.ByteString getConsensusHash(); + + /** + *
+     * state after txs from the previous block
+     * 
+ * + * bytes app_hash = 11; + * @return The appHash. + */ + com.google.protobuf.ByteString getAppHash(); + + /** + *
+     * root hash of all results from the txs from the previous block
+     * 
+ * + * bytes last_results_hash = 12; + * @return The lastResultsHash. + */ + com.google.protobuf.ByteString getLastResultsHash(); + + /** + *
+     * evidence included in the block
+     * 
+ * + * bytes evidence_hash = 13; + * @return The evidenceHash. + */ + com.google.protobuf.ByteString getEvidenceHash(); + + /** + *
+     * original proposer of the block
+     * 
+ * + * bytes proposer_address = 14; + * @return The proposerAddress. + */ + com.google.protobuf.ByteString getProposerAddress(); + } + /** + * Protobuf type {@code ibc.tendermint.light.LightHeader} + */ + public static final class LightHeader extends + com.google.protobuf.GeneratedMessageLite< + LightHeader, LightHeader.Builder> implements + // @@protoc_insertion_point(message_implements:ibc.tendermint.light.LightHeader) + LightHeaderOrBuilder { + private LightHeader() { + chainId_ = ""; + lastCommitHash_ = com.google.protobuf.ByteString.EMPTY; + dataHash_ = com.google.protobuf.ByteString.EMPTY; + validatorsHash_ = com.google.protobuf.ByteString.EMPTY; + nextValidatorsHash_ = com.google.protobuf.ByteString.EMPTY; + consensusHash_ = com.google.protobuf.ByteString.EMPTY; + appHash_ = com.google.protobuf.ByteString.EMPTY; + lastResultsHash_ = com.google.protobuf.ByteString.EMPTY; + evidenceHash_ = com.google.protobuf.ByteString.EMPTY; + proposerAddress_ = com.google.protobuf.ByteString.EMPTY; + } + public static final int VERSION_FIELD_NUMBER = 1; + private ibc.tendermint.light.TendermintLight.Consensus version_; + /** + * .ibc.tendermint.light.Consensus version = 1; + */ + @java.lang.Override + public boolean hasVersion() { + return version_ != null; + } + /** + * .ibc.tendermint.light.Consensus version = 1; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.Consensus getVersion() { + return version_ == null ? ibc.tendermint.light.TendermintLight.Consensus.getDefaultInstance() : version_; + } + /** + * .ibc.tendermint.light.Consensus version = 1; + */ + private void setVersion(ibc.tendermint.light.TendermintLight.Consensus value) { + value.getClass(); + version_ = value; + + } + /** + * .ibc.tendermint.light.Consensus version = 1; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergeVersion(ibc.tendermint.light.TendermintLight.Consensus value) { + value.getClass(); + if (version_ != null && + version_ != ibc.tendermint.light.TendermintLight.Consensus.getDefaultInstance()) { + version_ = + ibc.tendermint.light.TendermintLight.Consensus.newBuilder(version_).mergeFrom(value).buildPartial(); + } else { + version_ = value; + } + + } + /** + * .ibc.tendermint.light.Consensus version = 1; + */ + private void clearVersion() { version_ = null; + + } + + public static final int CHAIN_ID_FIELD_NUMBER = 2; + private java.lang.String chainId_; + /** + * string chain_id = 2; + * @return The chainId. + */ + @java.lang.Override + public java.lang.String getChainId() { + return chainId_; + } + /** + * string chain_id = 2; + * @return The bytes for chainId. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getChainIdBytes() { + return com.google.protobuf.ByteString.copyFromUtf8(chainId_); + } + /** + * string chain_id = 2; + * @param value The chainId to set. + */ + private void setChainId( + java.lang.String value) { + java.lang.Class valueClass = value.getClass(); + + chainId_ = value; + } + /** + * string chain_id = 2; + */ + private void clearChainId() { + + chainId_ = getDefaultInstance().getChainId(); + } + /** + * string chain_id = 2; + * @param value The bytes for chainId to set. + */ + private void setChainIdBytes( + com.google.protobuf.ByteString value) { + checkByteStringIsUtf8(value); + chainId_ = value.toStringUtf8(); + + } + + public static final int HEIGHT_FIELD_NUMBER = 3; + private long height_; + /** + * int64 height = 3; + * @return The height. + */ + @java.lang.Override + public long getHeight() { + return height_; + } + /** + * int64 height = 3; + * @param value The height to set. + */ + private void setHeight(long value) { + + height_ = value; + } + /** + * int64 height = 3; + */ + private void clearHeight() { + + height_ = 0L; + } + + public static final int TIME_FIELD_NUMBER = 4; + private ibc.tendermint.light.TendermintLight.Timestamp time_; + /** + * .ibc.tendermint.light.Timestamp time = 4; + */ + @java.lang.Override + public boolean hasTime() { + return time_ != null; + } + /** + * .ibc.tendermint.light.Timestamp time = 4; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.Timestamp getTime() { + return time_ == null ? ibc.tendermint.light.TendermintLight.Timestamp.getDefaultInstance() : time_; + } + /** + * .ibc.tendermint.light.Timestamp time = 4; + */ + private void setTime(ibc.tendermint.light.TendermintLight.Timestamp value) { + value.getClass(); + time_ = value; + + } + /** + * .ibc.tendermint.light.Timestamp time = 4; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergeTime(ibc.tendermint.light.TendermintLight.Timestamp value) { + value.getClass(); + if (time_ != null && + time_ != ibc.tendermint.light.TendermintLight.Timestamp.getDefaultInstance()) { + time_ = + ibc.tendermint.light.TendermintLight.Timestamp.newBuilder(time_).mergeFrom(value).buildPartial(); + } else { + time_ = value; + } + + } + /** + * .ibc.tendermint.light.Timestamp time = 4; + */ + private void clearTime() { time_ = null; + + } + + public static final int LAST_BLOCK_ID_FIELD_NUMBER = 5; + private ibc.tendermint.light.TendermintLight.BlockID lastBlockId_; + /** + * .ibc.tendermint.light.BlockID last_block_id = 5; + */ + @java.lang.Override + public boolean hasLastBlockId() { + return lastBlockId_ != null; + } + /** + * .ibc.tendermint.light.BlockID last_block_id = 5; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.BlockID getLastBlockId() { + return lastBlockId_ == null ? ibc.tendermint.light.TendermintLight.BlockID.getDefaultInstance() : lastBlockId_; + } + /** + * .ibc.tendermint.light.BlockID last_block_id = 5; + */ + private void setLastBlockId(ibc.tendermint.light.TendermintLight.BlockID value) { + value.getClass(); + lastBlockId_ = value; + + } + /** + * .ibc.tendermint.light.BlockID last_block_id = 5; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergeLastBlockId(ibc.tendermint.light.TendermintLight.BlockID value) { + value.getClass(); + if (lastBlockId_ != null && + lastBlockId_ != ibc.tendermint.light.TendermintLight.BlockID.getDefaultInstance()) { + lastBlockId_ = + ibc.tendermint.light.TendermintLight.BlockID.newBuilder(lastBlockId_).mergeFrom(value).buildPartial(); + } else { + lastBlockId_ = value; + } + + } + /** + * .ibc.tendermint.light.BlockID last_block_id = 5; + */ + private void clearLastBlockId() { lastBlockId_ = null; + + } + + public static final int LAST_COMMIT_HASH_FIELD_NUMBER = 6; + private com.google.protobuf.ByteString lastCommitHash_; + /** + *
+     * commit from validators from the last block
+     * 
+ * + * bytes last_commit_hash = 6; + * @return The lastCommitHash. + */ + @java.lang.Override + public com.google.protobuf.ByteString getLastCommitHash() { + return lastCommitHash_; + } + /** + *
+     * commit from validators from the last block
+     * 
+ * + * bytes last_commit_hash = 6; + * @param value The lastCommitHash to set. + */ + private void setLastCommitHash(com.google.protobuf.ByteString value) { + java.lang.Class valueClass = value.getClass(); + + lastCommitHash_ = value; + } + /** + *
+     * commit from validators from the last block
+     * 
+ * + * bytes last_commit_hash = 6; + */ + private void clearLastCommitHash() { + + lastCommitHash_ = getDefaultInstance().getLastCommitHash(); + } + + public static final int DATA_HASH_FIELD_NUMBER = 7; + private com.google.protobuf.ByteString dataHash_; + /** + *
+     * transactions
+     * 
+ * + * bytes data_hash = 7; + * @return The dataHash. + */ + @java.lang.Override + public com.google.protobuf.ByteString getDataHash() { + return dataHash_; + } + /** + *
+     * transactions
+     * 
+ * + * bytes data_hash = 7; + * @param value The dataHash to set. + */ + private void setDataHash(com.google.protobuf.ByteString value) { + java.lang.Class valueClass = value.getClass(); + + dataHash_ = value; + } + /** + *
+     * transactions
+     * 
+ * + * bytes data_hash = 7; + */ + private void clearDataHash() { + + dataHash_ = getDefaultInstance().getDataHash(); + } + + public static final int VALIDATORS_HASH_FIELD_NUMBER = 8; + private com.google.protobuf.ByteString validatorsHash_; + /** + *
+     * validators for the current block
+     * 
+ * + * bytes validators_hash = 8; + * @return The validatorsHash. + */ + @java.lang.Override + public com.google.protobuf.ByteString getValidatorsHash() { + return validatorsHash_; + } + /** + *
+     * validators for the current block
+     * 
+ * + * bytes validators_hash = 8; + * @param value The validatorsHash to set. + */ + private void setValidatorsHash(com.google.protobuf.ByteString value) { + java.lang.Class valueClass = value.getClass(); + + validatorsHash_ = value; + } + /** + *
+     * validators for the current block
+     * 
+ * + * bytes validators_hash = 8; + */ + private void clearValidatorsHash() { + + validatorsHash_ = getDefaultInstance().getValidatorsHash(); + } + + public static final int NEXT_VALIDATORS_HASH_FIELD_NUMBER = 9; + private com.google.protobuf.ByteString nextValidatorsHash_; + /** + *
+     * validators for the next block
+     * 
+ * + * bytes next_validators_hash = 9; + * @return The nextValidatorsHash. + */ + @java.lang.Override + public com.google.protobuf.ByteString getNextValidatorsHash() { + return nextValidatorsHash_; + } + /** + *
+     * validators for the next block
+     * 
+ * + * bytes next_validators_hash = 9; + * @param value The nextValidatorsHash to set. + */ + private void setNextValidatorsHash(com.google.protobuf.ByteString value) { + java.lang.Class valueClass = value.getClass(); + + nextValidatorsHash_ = value; + } + /** + *
+     * validators for the next block
+     * 
+ * + * bytes next_validators_hash = 9; + */ + private void clearNextValidatorsHash() { + + nextValidatorsHash_ = getDefaultInstance().getNextValidatorsHash(); + } + + public static final int CONSENSUS_HASH_FIELD_NUMBER = 10; + private com.google.protobuf.ByteString consensusHash_; + /** + *
+     * consensus params for current block
+     * 
+ * + * bytes consensus_hash = 10; + * @return The consensusHash. + */ + @java.lang.Override + public com.google.protobuf.ByteString getConsensusHash() { + return consensusHash_; + } + /** + *
+     * consensus params for current block
+     * 
+ * + * bytes consensus_hash = 10; + * @param value The consensusHash to set. + */ + private void setConsensusHash(com.google.protobuf.ByteString value) { + java.lang.Class valueClass = value.getClass(); + + consensusHash_ = value; + } + /** + *
+     * consensus params for current block
+     * 
+ * + * bytes consensus_hash = 10; + */ + private void clearConsensusHash() { + + consensusHash_ = getDefaultInstance().getConsensusHash(); + } + + public static final int APP_HASH_FIELD_NUMBER = 11; + private com.google.protobuf.ByteString appHash_; + /** + *
+     * state after txs from the previous block
+     * 
+ * + * bytes app_hash = 11; + * @return The appHash. + */ + @java.lang.Override + public com.google.protobuf.ByteString getAppHash() { + return appHash_; + } + /** + *
+     * state after txs from the previous block
+     * 
+ * + * bytes app_hash = 11; + * @param value The appHash to set. + */ + private void setAppHash(com.google.protobuf.ByteString value) { + java.lang.Class valueClass = value.getClass(); + + appHash_ = value; + } + /** + *
+     * state after txs from the previous block
+     * 
+ * + * bytes app_hash = 11; + */ + private void clearAppHash() { + + appHash_ = getDefaultInstance().getAppHash(); + } + + public static final int LAST_RESULTS_HASH_FIELD_NUMBER = 12; + private com.google.protobuf.ByteString lastResultsHash_; + /** + *
+     * root hash of all results from the txs from the previous block
+     * 
+ * + * bytes last_results_hash = 12; + * @return The lastResultsHash. + */ + @java.lang.Override + public com.google.protobuf.ByteString getLastResultsHash() { + return lastResultsHash_; + } + /** + *
+     * root hash of all results from the txs from the previous block
+     * 
+ * + * bytes last_results_hash = 12; + * @param value The lastResultsHash to set. + */ + private void setLastResultsHash(com.google.protobuf.ByteString value) { + java.lang.Class valueClass = value.getClass(); + + lastResultsHash_ = value; + } + /** + *
+     * root hash of all results from the txs from the previous block
+     * 
+ * + * bytes last_results_hash = 12; + */ + private void clearLastResultsHash() { + + lastResultsHash_ = getDefaultInstance().getLastResultsHash(); + } + + public static final int EVIDENCE_HASH_FIELD_NUMBER = 13; + private com.google.protobuf.ByteString evidenceHash_; + /** + *
+     * evidence included in the block
+     * 
+ * + * bytes evidence_hash = 13; + * @return The evidenceHash. + */ + @java.lang.Override + public com.google.protobuf.ByteString getEvidenceHash() { + return evidenceHash_; + } + /** + *
+     * evidence included in the block
+     * 
+ * + * bytes evidence_hash = 13; + * @param value The evidenceHash to set. + */ + private void setEvidenceHash(com.google.protobuf.ByteString value) { + java.lang.Class valueClass = value.getClass(); + + evidenceHash_ = value; + } + /** + *
+     * evidence included in the block
+     * 
+ * + * bytes evidence_hash = 13; + */ + private void clearEvidenceHash() { + + evidenceHash_ = getDefaultInstance().getEvidenceHash(); + } + + public static final int PROPOSER_ADDRESS_FIELD_NUMBER = 14; + private com.google.protobuf.ByteString proposerAddress_; + /** + *
+     * original proposer of the block
+     * 
+ * + * bytes proposer_address = 14; + * @return The proposerAddress. + */ + @java.lang.Override + public com.google.protobuf.ByteString getProposerAddress() { + return proposerAddress_; + } + /** + *
+     * original proposer of the block
+     * 
+ * + * bytes proposer_address = 14; + * @param value The proposerAddress to set. + */ + private void setProposerAddress(com.google.protobuf.ByteString value) { + java.lang.Class valueClass = value.getClass(); + + proposerAddress_ = value; + } + /** + *
+     * original proposer of the block
+     * 
+ * + * bytes proposer_address = 14; + */ + private void clearProposerAddress() { + + proposerAddress_ = getDefaultInstance().getProposerAddress(); + } + + public static ibc.tendermint.light.TendermintLight.LightHeader parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.LightHeader parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.LightHeader parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.LightHeader parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.LightHeader parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.LightHeader parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.LightHeader parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.LightHeader parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.LightHeader parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.LightHeader parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.LightHeader parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.LightHeader parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(ibc.tendermint.light.TendermintLight.LightHeader prototype) { + return (Builder) DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code ibc.tendermint.light.LightHeader} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + ibc.tendermint.light.TendermintLight.LightHeader, Builder> implements + // @@protoc_insertion_point(builder_implements:ibc.tendermint.light.LightHeader) + ibc.tendermint.light.TendermintLight.LightHeaderOrBuilder { + // Construct using ibc.tendermint.light.TendermintLight.LightHeader.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * .ibc.tendermint.light.Consensus version = 1; + */ + @java.lang.Override + public boolean hasVersion() { + return instance.hasVersion(); + } + /** + * .ibc.tendermint.light.Consensus version = 1; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.Consensus getVersion() { + return instance.getVersion(); + } + /** + * .ibc.tendermint.light.Consensus version = 1; + */ + public Builder setVersion(ibc.tendermint.light.TendermintLight.Consensus value) { + copyOnWrite(); + instance.setVersion(value); + return this; + } + /** + * .ibc.tendermint.light.Consensus version = 1; + */ + public Builder setVersion( + ibc.tendermint.light.TendermintLight.Consensus.Builder builderForValue) { + copyOnWrite(); + instance.setVersion(builderForValue.build()); + return this; + } + /** + * .ibc.tendermint.light.Consensus version = 1; + */ + public Builder mergeVersion(ibc.tendermint.light.TendermintLight.Consensus value) { + copyOnWrite(); + instance.mergeVersion(value); + return this; + } + /** + * .ibc.tendermint.light.Consensus version = 1; + */ + public Builder clearVersion() { copyOnWrite(); + instance.clearVersion(); + return this; + } + + /** + * string chain_id = 2; + * @return The chainId. + */ + @java.lang.Override + public java.lang.String getChainId() { + return instance.getChainId(); + } + /** + * string chain_id = 2; + * @return The bytes for chainId. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getChainIdBytes() { + return instance.getChainIdBytes(); + } + /** + * string chain_id = 2; + * @param value The chainId to set. + * @return This builder for chaining. + */ + public Builder setChainId( + java.lang.String value) { + copyOnWrite(); + instance.setChainId(value); + return this; + } + /** + * string chain_id = 2; + * @return This builder for chaining. + */ + public Builder clearChainId() { + copyOnWrite(); + instance.clearChainId(); + return this; + } + /** + * string chain_id = 2; + * @param value The bytes for chainId to set. + * @return This builder for chaining. + */ + public Builder setChainIdBytes( + com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setChainIdBytes(value); + return this; + } + + /** + * int64 height = 3; + * @return The height. + */ + @java.lang.Override + public long getHeight() { + return instance.getHeight(); + } + /** + * int64 height = 3; + * @param value The height to set. + * @return This builder for chaining. + */ + public Builder setHeight(long value) { + copyOnWrite(); + instance.setHeight(value); + return this; + } + /** + * int64 height = 3; + * @return This builder for chaining. + */ + public Builder clearHeight() { + copyOnWrite(); + instance.clearHeight(); + return this; + } + + /** + * .ibc.tendermint.light.Timestamp time = 4; + */ + @java.lang.Override + public boolean hasTime() { + return instance.hasTime(); + } + /** + * .ibc.tendermint.light.Timestamp time = 4; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.Timestamp getTime() { + return instance.getTime(); + } + /** + * .ibc.tendermint.light.Timestamp time = 4; + */ + public Builder setTime(ibc.tendermint.light.TendermintLight.Timestamp value) { + copyOnWrite(); + instance.setTime(value); + return this; + } + /** + * .ibc.tendermint.light.Timestamp time = 4; + */ + public Builder setTime( + ibc.tendermint.light.TendermintLight.Timestamp.Builder builderForValue) { + copyOnWrite(); + instance.setTime(builderForValue.build()); + return this; + } + /** + * .ibc.tendermint.light.Timestamp time = 4; + */ + public Builder mergeTime(ibc.tendermint.light.TendermintLight.Timestamp value) { + copyOnWrite(); + instance.mergeTime(value); + return this; + } + /** + * .ibc.tendermint.light.Timestamp time = 4; + */ + public Builder clearTime() { copyOnWrite(); + instance.clearTime(); + return this; + } + + /** + * .ibc.tendermint.light.BlockID last_block_id = 5; + */ + @java.lang.Override + public boolean hasLastBlockId() { + return instance.hasLastBlockId(); + } + /** + * .ibc.tendermint.light.BlockID last_block_id = 5; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.BlockID getLastBlockId() { + return instance.getLastBlockId(); + } + /** + * .ibc.tendermint.light.BlockID last_block_id = 5; + */ + public Builder setLastBlockId(ibc.tendermint.light.TendermintLight.BlockID value) { + copyOnWrite(); + instance.setLastBlockId(value); + return this; + } + /** + * .ibc.tendermint.light.BlockID last_block_id = 5; + */ + public Builder setLastBlockId( + ibc.tendermint.light.TendermintLight.BlockID.Builder builderForValue) { + copyOnWrite(); + instance.setLastBlockId(builderForValue.build()); + return this; + } + /** + * .ibc.tendermint.light.BlockID last_block_id = 5; + */ + public Builder mergeLastBlockId(ibc.tendermint.light.TendermintLight.BlockID value) { + copyOnWrite(); + instance.mergeLastBlockId(value); + return this; + } + /** + * .ibc.tendermint.light.BlockID last_block_id = 5; + */ + public Builder clearLastBlockId() { copyOnWrite(); + instance.clearLastBlockId(); + return this; + } + + /** + *
+       * commit from validators from the last block
+       * 
+ * + * bytes last_commit_hash = 6; + * @return The lastCommitHash. + */ + @java.lang.Override + public com.google.protobuf.ByteString getLastCommitHash() { + return instance.getLastCommitHash(); + } + /** + *
+       * commit from validators from the last block
+       * 
+ * + * bytes last_commit_hash = 6; + * @param value The lastCommitHash to set. + * @return This builder for chaining. + */ + public Builder setLastCommitHash(com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setLastCommitHash(value); + return this; + } + /** + *
+       * commit from validators from the last block
+       * 
+ * + * bytes last_commit_hash = 6; + * @return This builder for chaining. + */ + public Builder clearLastCommitHash() { + copyOnWrite(); + instance.clearLastCommitHash(); + return this; + } + + /** + *
+       * transactions
+       * 
+ * + * bytes data_hash = 7; + * @return The dataHash. + */ + @java.lang.Override + public com.google.protobuf.ByteString getDataHash() { + return instance.getDataHash(); + } + /** + *
+       * transactions
+       * 
+ * + * bytes data_hash = 7; + * @param value The dataHash to set. + * @return This builder for chaining. + */ + public Builder setDataHash(com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setDataHash(value); + return this; + } + /** + *
+       * transactions
+       * 
+ * + * bytes data_hash = 7; + * @return This builder for chaining. + */ + public Builder clearDataHash() { + copyOnWrite(); + instance.clearDataHash(); + return this; + } + + /** + *
+       * validators for the current block
+       * 
+ * + * bytes validators_hash = 8; + * @return The validatorsHash. + */ + @java.lang.Override + public com.google.protobuf.ByteString getValidatorsHash() { + return instance.getValidatorsHash(); + } + /** + *
+       * validators for the current block
+       * 
+ * + * bytes validators_hash = 8; + * @param value The validatorsHash to set. + * @return This builder for chaining. + */ + public Builder setValidatorsHash(com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setValidatorsHash(value); + return this; + } + /** + *
+       * validators for the current block
+       * 
+ * + * bytes validators_hash = 8; + * @return This builder for chaining. + */ + public Builder clearValidatorsHash() { + copyOnWrite(); + instance.clearValidatorsHash(); + return this; + } + + /** + *
+       * validators for the next block
+       * 
+ * + * bytes next_validators_hash = 9; + * @return The nextValidatorsHash. + */ + @java.lang.Override + public com.google.protobuf.ByteString getNextValidatorsHash() { + return instance.getNextValidatorsHash(); + } + /** + *
+       * validators for the next block
+       * 
+ * + * bytes next_validators_hash = 9; + * @param value The nextValidatorsHash to set. + * @return This builder for chaining. + */ + public Builder setNextValidatorsHash(com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setNextValidatorsHash(value); + return this; + } + /** + *
+       * validators for the next block
+       * 
+ * + * bytes next_validators_hash = 9; + * @return This builder for chaining. + */ + public Builder clearNextValidatorsHash() { + copyOnWrite(); + instance.clearNextValidatorsHash(); + return this; + } + + /** + *
+       * consensus params for current block
+       * 
+ * + * bytes consensus_hash = 10; + * @return The consensusHash. + */ + @java.lang.Override + public com.google.protobuf.ByteString getConsensusHash() { + return instance.getConsensusHash(); + } + /** + *
+       * consensus params for current block
+       * 
+ * + * bytes consensus_hash = 10; + * @param value The consensusHash to set. + * @return This builder for chaining. + */ + public Builder setConsensusHash(com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setConsensusHash(value); + return this; + } + /** + *
+       * consensus params for current block
+       * 
+ * + * bytes consensus_hash = 10; + * @return This builder for chaining. + */ + public Builder clearConsensusHash() { + copyOnWrite(); + instance.clearConsensusHash(); + return this; + } + + /** + *
+       * state after txs from the previous block
+       * 
+ * + * bytes app_hash = 11; + * @return The appHash. + */ + @java.lang.Override + public com.google.protobuf.ByteString getAppHash() { + return instance.getAppHash(); + } + /** + *
+       * state after txs from the previous block
+       * 
+ * + * bytes app_hash = 11; + * @param value The appHash to set. + * @return This builder for chaining. + */ + public Builder setAppHash(com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setAppHash(value); + return this; + } + /** + *
+       * state after txs from the previous block
+       * 
+ * + * bytes app_hash = 11; + * @return This builder for chaining. + */ + public Builder clearAppHash() { + copyOnWrite(); + instance.clearAppHash(); + return this; + } + + /** + *
+       * root hash of all results from the txs from the previous block
+       * 
+ * + * bytes last_results_hash = 12; + * @return The lastResultsHash. + */ + @java.lang.Override + public com.google.protobuf.ByteString getLastResultsHash() { + return instance.getLastResultsHash(); + } + /** + *
+       * root hash of all results from the txs from the previous block
+       * 
+ * + * bytes last_results_hash = 12; + * @param value The lastResultsHash to set. + * @return This builder for chaining. + */ + public Builder setLastResultsHash(com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setLastResultsHash(value); + return this; + } + /** + *
+       * root hash of all results from the txs from the previous block
+       * 
+ * + * bytes last_results_hash = 12; + * @return This builder for chaining. + */ + public Builder clearLastResultsHash() { + copyOnWrite(); + instance.clearLastResultsHash(); + return this; + } + + /** + *
+       * evidence included in the block
+       * 
+ * + * bytes evidence_hash = 13; + * @return The evidenceHash. + */ + @java.lang.Override + public com.google.protobuf.ByteString getEvidenceHash() { + return instance.getEvidenceHash(); + } + /** + *
+       * evidence included in the block
+       * 
+ * + * bytes evidence_hash = 13; + * @param value The evidenceHash to set. + * @return This builder for chaining. + */ + public Builder setEvidenceHash(com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setEvidenceHash(value); + return this; + } + /** + *
+       * evidence included in the block
+       * 
+ * + * bytes evidence_hash = 13; + * @return This builder for chaining. + */ + public Builder clearEvidenceHash() { + copyOnWrite(); + instance.clearEvidenceHash(); + return this; + } + + /** + *
+       * original proposer of the block
+       * 
+ * + * bytes proposer_address = 14; + * @return The proposerAddress. + */ + @java.lang.Override + public com.google.protobuf.ByteString getProposerAddress() { + return instance.getProposerAddress(); + } + /** + *
+       * original proposer of the block
+       * 
+ * + * bytes proposer_address = 14; + * @param value The proposerAddress to set. + * @return This builder for chaining. + */ + public Builder setProposerAddress(com.google.protobuf.ByteString value) { + copyOnWrite(); + instance.setProposerAddress(value); + return this; + } + /** + *
+       * original proposer of the block
+       * 
+ * + * bytes proposer_address = 14; + * @return This builder for chaining. + */ + public Builder clearProposerAddress() { + copyOnWrite(); + instance.clearProposerAddress(); + return this; + } + + // @@protoc_insertion_point(builder_scope:ibc.tendermint.light.LightHeader) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new ibc.tendermint.light.TendermintLight.LightHeader(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "version_", + "chainId_", + "height_", + "time_", + "lastBlockId_", + "lastCommitHash_", + "dataHash_", + "validatorsHash_", + "nextValidatorsHash_", + "consensusHash_", + "appHash_", + "lastResultsHash_", + "evidenceHash_", + "proposerAddress_", + }; + java.lang.String info = + "\u0000\u000e\u0000\u0000\u0001\u000e\u000e\u0000\u0000\u0000\u0001\t\u0002\u0208" + + "\u0003\u0002\u0004\t\u0005\t\u0006\n\u0007\n\b\n\t\n\n\n\u000b\n\f\n\r\n\u000e\n" + + ""; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (ibc.tendermint.light.TendermintLight.LightHeader.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:ibc.tendermint.light.LightHeader) + private static final ibc.tendermint.light.TendermintLight.LightHeader DEFAULT_INSTANCE; + static { + LightHeader defaultInstance = new LightHeader(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + LightHeader.class, defaultInstance); + } + + public static ibc.tendermint.light.TendermintLight.LightHeader getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface SignedHeaderOrBuilder extends + // @@protoc_insertion_point(interface_extends:ibc.tendermint.light.SignedHeader) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * .ibc.tendermint.light.LightHeader header = 1; + * @return Whether the header field is set. + */ + boolean hasHeader(); + /** + * .ibc.tendermint.light.LightHeader header = 1; + * @return The header. + */ + ibc.tendermint.light.TendermintLight.LightHeader getHeader(); + + /** + * .ibc.tendermint.light.Commit commit = 2; + * @return Whether the commit field is set. + */ + boolean hasCommit(); + /** + * .ibc.tendermint.light.Commit commit = 2; + * @return The commit. + */ + ibc.tendermint.light.TendermintLight.Commit getCommit(); + } + /** + * Protobuf type {@code ibc.tendermint.light.SignedHeader} + */ + public static final class SignedHeader extends + com.google.protobuf.GeneratedMessageLite< + SignedHeader, SignedHeader.Builder> implements + // @@protoc_insertion_point(message_implements:ibc.tendermint.light.SignedHeader) + SignedHeaderOrBuilder { + private SignedHeader() { + } + public static final int HEADER_FIELD_NUMBER = 1; + private ibc.tendermint.light.TendermintLight.LightHeader header_; + /** + * .ibc.tendermint.light.LightHeader header = 1; + */ + @java.lang.Override + public boolean hasHeader() { + return header_ != null; + } + /** + * .ibc.tendermint.light.LightHeader header = 1; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.LightHeader getHeader() { + return header_ == null ? ibc.tendermint.light.TendermintLight.LightHeader.getDefaultInstance() : header_; + } + /** + * .ibc.tendermint.light.LightHeader header = 1; + */ + private void setHeader(ibc.tendermint.light.TendermintLight.LightHeader value) { + value.getClass(); + header_ = value; + + } + /** + * .ibc.tendermint.light.LightHeader header = 1; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergeHeader(ibc.tendermint.light.TendermintLight.LightHeader value) { + value.getClass(); + if (header_ != null && + header_ != ibc.tendermint.light.TendermintLight.LightHeader.getDefaultInstance()) { + header_ = + ibc.tendermint.light.TendermintLight.LightHeader.newBuilder(header_).mergeFrom(value).buildPartial(); + } else { + header_ = value; + } + + } + /** + * .ibc.tendermint.light.LightHeader header = 1; + */ + private void clearHeader() { header_ = null; + + } + + public static final int COMMIT_FIELD_NUMBER = 2; + private ibc.tendermint.light.TendermintLight.Commit commit_; + /** + * .ibc.tendermint.light.Commit commit = 2; + */ + @java.lang.Override + public boolean hasCommit() { + return commit_ != null; + } + /** + * .ibc.tendermint.light.Commit commit = 2; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.Commit getCommit() { + return commit_ == null ? ibc.tendermint.light.TendermintLight.Commit.getDefaultInstance() : commit_; + } + /** + * .ibc.tendermint.light.Commit commit = 2; + */ + private void setCommit(ibc.tendermint.light.TendermintLight.Commit value) { + value.getClass(); + commit_ = value; + + } + /** + * .ibc.tendermint.light.Commit commit = 2; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergeCommit(ibc.tendermint.light.TendermintLight.Commit value) { + value.getClass(); + if (commit_ != null && + commit_ != ibc.tendermint.light.TendermintLight.Commit.getDefaultInstance()) { + commit_ = + ibc.tendermint.light.TendermintLight.Commit.newBuilder(commit_).mergeFrom(value).buildPartial(); + } else { + commit_ = value; + } + + } + /** + * .ibc.tendermint.light.Commit commit = 2; + */ + private void clearCommit() { commit_ = null; + + } + + public static ibc.tendermint.light.TendermintLight.SignedHeader parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.SignedHeader parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.SignedHeader parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.SignedHeader parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.SignedHeader parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.SignedHeader parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.SignedHeader parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.SignedHeader parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.SignedHeader parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.SignedHeader parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.SignedHeader parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.SignedHeader parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(ibc.tendermint.light.TendermintLight.SignedHeader prototype) { + return (Builder) DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code ibc.tendermint.light.SignedHeader} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + ibc.tendermint.light.TendermintLight.SignedHeader, Builder> implements + // @@protoc_insertion_point(builder_implements:ibc.tendermint.light.SignedHeader) + ibc.tendermint.light.TendermintLight.SignedHeaderOrBuilder { + // Construct using ibc.tendermint.light.TendermintLight.SignedHeader.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * .ibc.tendermint.light.LightHeader header = 1; + */ + @java.lang.Override + public boolean hasHeader() { + return instance.hasHeader(); + } + /** + * .ibc.tendermint.light.LightHeader header = 1; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.LightHeader getHeader() { + return instance.getHeader(); + } + /** + * .ibc.tendermint.light.LightHeader header = 1; + */ + public Builder setHeader(ibc.tendermint.light.TendermintLight.LightHeader value) { + copyOnWrite(); + instance.setHeader(value); + return this; + } + /** + * .ibc.tendermint.light.LightHeader header = 1; + */ + public Builder setHeader( + ibc.tendermint.light.TendermintLight.LightHeader.Builder builderForValue) { + copyOnWrite(); + instance.setHeader(builderForValue.build()); + return this; + } + /** + * .ibc.tendermint.light.LightHeader header = 1; + */ + public Builder mergeHeader(ibc.tendermint.light.TendermintLight.LightHeader value) { + copyOnWrite(); + instance.mergeHeader(value); + return this; + } + /** + * .ibc.tendermint.light.LightHeader header = 1; + */ + public Builder clearHeader() { copyOnWrite(); + instance.clearHeader(); + return this; + } + + /** + * .ibc.tendermint.light.Commit commit = 2; + */ + @java.lang.Override + public boolean hasCommit() { + return instance.hasCommit(); + } + /** + * .ibc.tendermint.light.Commit commit = 2; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.Commit getCommit() { + return instance.getCommit(); + } + /** + * .ibc.tendermint.light.Commit commit = 2; + */ + public Builder setCommit(ibc.tendermint.light.TendermintLight.Commit value) { + copyOnWrite(); + instance.setCommit(value); + return this; + } + /** + * .ibc.tendermint.light.Commit commit = 2; + */ + public Builder setCommit( + ibc.tendermint.light.TendermintLight.Commit.Builder builderForValue) { + copyOnWrite(); + instance.setCommit(builderForValue.build()); + return this; + } + /** + * .ibc.tendermint.light.Commit commit = 2; + */ + public Builder mergeCommit(ibc.tendermint.light.TendermintLight.Commit value) { + copyOnWrite(); + instance.mergeCommit(value); + return this; + } + /** + * .ibc.tendermint.light.Commit commit = 2; + */ + public Builder clearCommit() { copyOnWrite(); + instance.clearCommit(); + return this; + } + + // @@protoc_insertion_point(builder_scope:ibc.tendermint.light.SignedHeader) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new ibc.tendermint.light.TendermintLight.SignedHeader(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "header_", + "commit_", + }; + java.lang.String info = + "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\t\u0002\t"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (ibc.tendermint.light.TendermintLight.SignedHeader.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:ibc.tendermint.light.SignedHeader) + private static final ibc.tendermint.light.TendermintLight.SignedHeader DEFAULT_INSTANCE; + static { + SignedHeader defaultInstance = new SignedHeader(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + SignedHeader.class, defaultInstance); + } + + public static ibc.tendermint.light.TendermintLight.SignedHeader getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface TmHeaderOrBuilder extends + // @@protoc_insertion_point(interface_extends:ibc.tendermint.light.TmHeader) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * .ibc.tendermint.light.SignedHeader signed_header = 1; + * @return Whether the signedHeader field is set. + */ + boolean hasSignedHeader(); + /** + * .ibc.tendermint.light.SignedHeader signed_header = 1; + * @return The signedHeader. + */ + ibc.tendermint.light.TendermintLight.SignedHeader getSignedHeader(); + + /** + * .ibc.tendermint.light.ValidatorSet validator_set = 2; + * @return Whether the validatorSet field is set. + */ + boolean hasValidatorSet(); + /** + * .ibc.tendermint.light.ValidatorSet validator_set = 2; + * @return The validatorSet. + */ + ibc.tendermint.light.TendermintLight.ValidatorSet getValidatorSet(); + + /** + * int64 trusted_height = 3; + * @return The trustedHeight. + */ + long getTrustedHeight(); + + /** + * .ibc.tendermint.light.ValidatorSet trusted_validators = 4; + * @return Whether the trustedValidators field is set. + */ + boolean hasTrustedValidators(); + /** + * .ibc.tendermint.light.ValidatorSet trusted_validators = 4; + * @return The trustedValidators. + */ + ibc.tendermint.light.TendermintLight.ValidatorSet getTrustedValidators(); + } + /** + * Protobuf type {@code ibc.tendermint.light.TmHeader} + */ + public static final class TmHeader extends + com.google.protobuf.GeneratedMessageLite< + TmHeader, TmHeader.Builder> implements + // @@protoc_insertion_point(message_implements:ibc.tendermint.light.TmHeader) + TmHeaderOrBuilder { + private TmHeader() { + } + public static final int SIGNED_HEADER_FIELD_NUMBER = 1; + private ibc.tendermint.light.TendermintLight.SignedHeader signedHeader_; + /** + * .ibc.tendermint.light.SignedHeader signed_header = 1; + */ + @java.lang.Override + public boolean hasSignedHeader() { + return signedHeader_ != null; + } + /** + * .ibc.tendermint.light.SignedHeader signed_header = 1; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.SignedHeader getSignedHeader() { + return signedHeader_ == null ? ibc.tendermint.light.TendermintLight.SignedHeader.getDefaultInstance() : signedHeader_; + } + /** + * .ibc.tendermint.light.SignedHeader signed_header = 1; + */ + private void setSignedHeader(ibc.tendermint.light.TendermintLight.SignedHeader value) { + value.getClass(); + signedHeader_ = value; + + } + /** + * .ibc.tendermint.light.SignedHeader signed_header = 1; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergeSignedHeader(ibc.tendermint.light.TendermintLight.SignedHeader value) { + value.getClass(); + if (signedHeader_ != null && + signedHeader_ != ibc.tendermint.light.TendermintLight.SignedHeader.getDefaultInstance()) { + signedHeader_ = + ibc.tendermint.light.TendermintLight.SignedHeader.newBuilder(signedHeader_).mergeFrom(value).buildPartial(); + } else { + signedHeader_ = value; + } + + } + /** + * .ibc.tendermint.light.SignedHeader signed_header = 1; + */ + private void clearSignedHeader() { signedHeader_ = null; + + } + + public static final int VALIDATOR_SET_FIELD_NUMBER = 2; + private ibc.tendermint.light.TendermintLight.ValidatorSet validatorSet_; + /** + * .ibc.tendermint.light.ValidatorSet validator_set = 2; + */ + @java.lang.Override + public boolean hasValidatorSet() { + return validatorSet_ != null; + } + /** + * .ibc.tendermint.light.ValidatorSet validator_set = 2; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.ValidatorSet getValidatorSet() { + return validatorSet_ == null ? ibc.tendermint.light.TendermintLight.ValidatorSet.getDefaultInstance() : validatorSet_; + } + /** + * .ibc.tendermint.light.ValidatorSet validator_set = 2; + */ + private void setValidatorSet(ibc.tendermint.light.TendermintLight.ValidatorSet value) { + value.getClass(); + validatorSet_ = value; + + } + /** + * .ibc.tendermint.light.ValidatorSet validator_set = 2; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergeValidatorSet(ibc.tendermint.light.TendermintLight.ValidatorSet value) { + value.getClass(); + if (validatorSet_ != null && + validatorSet_ != ibc.tendermint.light.TendermintLight.ValidatorSet.getDefaultInstance()) { + validatorSet_ = + ibc.tendermint.light.TendermintLight.ValidatorSet.newBuilder(validatorSet_).mergeFrom(value).buildPartial(); + } else { + validatorSet_ = value; + } + + } + /** + * .ibc.tendermint.light.ValidatorSet validator_set = 2; + */ + private void clearValidatorSet() { validatorSet_ = null; + + } + + public static final int TRUSTED_HEIGHT_FIELD_NUMBER = 3; + private long trustedHeight_; + /** + * int64 trusted_height = 3; + * @return The trustedHeight. + */ + @java.lang.Override + public long getTrustedHeight() { + return trustedHeight_; + } + /** + * int64 trusted_height = 3; + * @param value The trustedHeight to set. + */ + private void setTrustedHeight(long value) { + + trustedHeight_ = value; + } + /** + * int64 trusted_height = 3; + */ + private void clearTrustedHeight() { + + trustedHeight_ = 0L; + } + + public static final int TRUSTED_VALIDATORS_FIELD_NUMBER = 4; + private ibc.tendermint.light.TendermintLight.ValidatorSet trustedValidators_; + /** + * .ibc.tendermint.light.ValidatorSet trusted_validators = 4; + */ + @java.lang.Override + public boolean hasTrustedValidators() { + return trustedValidators_ != null; + } + /** + * .ibc.tendermint.light.ValidatorSet trusted_validators = 4; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.ValidatorSet getTrustedValidators() { + return trustedValidators_ == null ? ibc.tendermint.light.TendermintLight.ValidatorSet.getDefaultInstance() : trustedValidators_; + } + /** + * .ibc.tendermint.light.ValidatorSet trusted_validators = 4; + */ + private void setTrustedValidators(ibc.tendermint.light.TendermintLight.ValidatorSet value) { + value.getClass(); + trustedValidators_ = value; + + } + /** + * .ibc.tendermint.light.ValidatorSet trusted_validators = 4; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergeTrustedValidators(ibc.tendermint.light.TendermintLight.ValidatorSet value) { + value.getClass(); + if (trustedValidators_ != null && + trustedValidators_ != ibc.tendermint.light.TendermintLight.ValidatorSet.getDefaultInstance()) { + trustedValidators_ = + ibc.tendermint.light.TendermintLight.ValidatorSet.newBuilder(trustedValidators_).mergeFrom(value).buildPartial(); + } else { + trustedValidators_ = value; + } + + } + /** + * .ibc.tendermint.light.ValidatorSet trusted_validators = 4; + */ + private void clearTrustedValidators() { trustedValidators_ = null; + + } + + public static ibc.tendermint.light.TendermintLight.TmHeader parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.TmHeader parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.TmHeader parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.TmHeader parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.TmHeader parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static ibc.tendermint.light.TendermintLight.TmHeader parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.TmHeader parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.TmHeader parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.TmHeader parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.TmHeader parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static ibc.tendermint.light.TendermintLight.TmHeader parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static ibc.tendermint.light.TendermintLight.TmHeader parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(ibc.tendermint.light.TendermintLight.TmHeader prototype) { + return (Builder) DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code ibc.tendermint.light.TmHeader} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + ibc.tendermint.light.TendermintLight.TmHeader, Builder> implements + // @@protoc_insertion_point(builder_implements:ibc.tendermint.light.TmHeader) + ibc.tendermint.light.TendermintLight.TmHeaderOrBuilder { + // Construct using ibc.tendermint.light.TendermintLight.TmHeader.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * .ibc.tendermint.light.SignedHeader signed_header = 1; + */ + @java.lang.Override + public boolean hasSignedHeader() { + return instance.hasSignedHeader(); + } + /** + * .ibc.tendermint.light.SignedHeader signed_header = 1; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.SignedHeader getSignedHeader() { + return instance.getSignedHeader(); + } + /** + * .ibc.tendermint.light.SignedHeader signed_header = 1; + */ + public Builder setSignedHeader(ibc.tendermint.light.TendermintLight.SignedHeader value) { + copyOnWrite(); + instance.setSignedHeader(value); + return this; + } + /** + * .ibc.tendermint.light.SignedHeader signed_header = 1; + */ + public Builder setSignedHeader( + ibc.tendermint.light.TendermintLight.SignedHeader.Builder builderForValue) { + copyOnWrite(); + instance.setSignedHeader(builderForValue.build()); + return this; + } + /** + * .ibc.tendermint.light.SignedHeader signed_header = 1; + */ + public Builder mergeSignedHeader(ibc.tendermint.light.TendermintLight.SignedHeader value) { + copyOnWrite(); + instance.mergeSignedHeader(value); + return this; + } + /** + * .ibc.tendermint.light.SignedHeader signed_header = 1; + */ + public Builder clearSignedHeader() { copyOnWrite(); + instance.clearSignedHeader(); + return this; + } + + /** + * .ibc.tendermint.light.ValidatorSet validator_set = 2; + */ + @java.lang.Override + public boolean hasValidatorSet() { + return instance.hasValidatorSet(); + } + /** + * .ibc.tendermint.light.ValidatorSet validator_set = 2; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.ValidatorSet getValidatorSet() { + return instance.getValidatorSet(); + } + /** + * .ibc.tendermint.light.ValidatorSet validator_set = 2; + */ + public Builder setValidatorSet(ibc.tendermint.light.TendermintLight.ValidatorSet value) { + copyOnWrite(); + instance.setValidatorSet(value); + return this; + } + /** + * .ibc.tendermint.light.ValidatorSet validator_set = 2; + */ + public Builder setValidatorSet( + ibc.tendermint.light.TendermintLight.ValidatorSet.Builder builderForValue) { + copyOnWrite(); + instance.setValidatorSet(builderForValue.build()); + return this; + } + /** + * .ibc.tendermint.light.ValidatorSet validator_set = 2; + */ + public Builder mergeValidatorSet(ibc.tendermint.light.TendermintLight.ValidatorSet value) { + copyOnWrite(); + instance.mergeValidatorSet(value); + return this; + } + /** + * .ibc.tendermint.light.ValidatorSet validator_set = 2; + */ + public Builder clearValidatorSet() { copyOnWrite(); + instance.clearValidatorSet(); + return this; + } + + /** + * int64 trusted_height = 3; + * @return The trustedHeight. + */ + @java.lang.Override + public long getTrustedHeight() { + return instance.getTrustedHeight(); + } + /** + * int64 trusted_height = 3; + * @param value The trustedHeight to set. + * @return This builder for chaining. + */ + public Builder setTrustedHeight(long value) { + copyOnWrite(); + instance.setTrustedHeight(value); + return this; + } + /** + * int64 trusted_height = 3; + * @return This builder for chaining. + */ + public Builder clearTrustedHeight() { + copyOnWrite(); + instance.clearTrustedHeight(); + return this; + } + + /** + * .ibc.tendermint.light.ValidatorSet trusted_validators = 4; + */ + @java.lang.Override + public boolean hasTrustedValidators() { + return instance.hasTrustedValidators(); + } + /** + * .ibc.tendermint.light.ValidatorSet trusted_validators = 4; + */ + @java.lang.Override + public ibc.tendermint.light.TendermintLight.ValidatorSet getTrustedValidators() { + return instance.getTrustedValidators(); + } + /** + * .ibc.tendermint.light.ValidatorSet trusted_validators = 4; + */ + public Builder setTrustedValidators(ibc.tendermint.light.TendermintLight.ValidatorSet value) { + copyOnWrite(); + instance.setTrustedValidators(value); + return this; + } + /** + * .ibc.tendermint.light.ValidatorSet trusted_validators = 4; + */ + public Builder setTrustedValidators( + ibc.tendermint.light.TendermintLight.ValidatorSet.Builder builderForValue) { + copyOnWrite(); + instance.setTrustedValidators(builderForValue.build()); + return this; + } + /** + * .ibc.tendermint.light.ValidatorSet trusted_validators = 4; + */ + public Builder mergeTrustedValidators(ibc.tendermint.light.TendermintLight.ValidatorSet value) { + copyOnWrite(); + instance.mergeTrustedValidators(value); + return this; + } + /** + * .ibc.tendermint.light.ValidatorSet trusted_validators = 4; + */ + public Builder clearTrustedValidators() { copyOnWrite(); + instance.clearTrustedValidators(); + return this; + } + + // @@protoc_insertion_point(builder_scope:ibc.tendermint.light.TmHeader) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new ibc.tendermint.light.TendermintLight.TmHeader(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "signedHeader_", + "validatorSet_", + "trustedHeight_", + "trustedValidators_", + }; + java.lang.String info = + "\u0000\u0004\u0000\u0000\u0001\u0004\u0004\u0000\u0000\u0000\u0001\t\u0002\t\u0003" + + "\u0002\u0004\t"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (ibc.tendermint.light.TendermintLight.TmHeader.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:ibc.tendermint.light.TmHeader) + private static final ibc.tendermint.light.TendermintLight.TmHeader DEFAULT_INSTANCE; + static { + TmHeader defaultInstance = new TmHeader(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + TmHeader.class, defaultInstance); + } + + public static ibc.tendermint.light.TendermintLight.TmHeader getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + + static { + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/BlockID.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/BlockID.java new file mode 100644 index 000000000..84116722c --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/BlockID.java @@ -0,0 +1,59 @@ +package icon.proto.clients.tendermint; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; + +public class BlockID extends ProtoMessage { + private byte[] hash = new byte[0]; + + private PartSetHeader partSetHeader = new PartSetHeader(); + + public byte[] getHash() { + return this.hash; + } + + public void setHash(byte[] hash) { + this.hash = hash; + } + + public PartSetHeader getPartSetHeader() { + return this.partSetHeader; + } + + public void setPartSetHeader(PartSetHeader partSetHeader) { + this.partSetHeader = partSetHeader; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.hash), + Proto.encode(2, this.partSetHeader)); + } + + public static BlockID decode(byte[] data) { + BlockID obj = new BlockID(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.hash = resp.res; + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.partSetHeader = PartSetHeader.decode(resp.res); + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/BlockIDFlag.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/BlockIDFlag.java new file mode 100644 index 000000000..bca418fb0 --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/BlockIDFlag.java @@ -0,0 +1,11 @@ +package icon.proto.clients.tendermint; + +public class BlockIDFlag { + public static final int BLOCK_ID_FLAG_UNKNOWN = 0; + + public static final int BLOCK_ID_FLAG_ABSENT = 1; + + public static final int BLOCK_ID_FLAG_COMMIT = 2; + + public static final int BLOCK_ID_FLAG_NIL = 3; +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/CanonicalBlockID.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/CanonicalBlockID.java new file mode 100644 index 000000000..9f639a47e --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/CanonicalBlockID.java @@ -0,0 +1,59 @@ +package icon.proto.clients.tendermint; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; + +public class CanonicalBlockID extends ProtoMessage { + private byte[] hash = new byte[0]; + + private CanonicalPartSetHeader partSetHeader = new CanonicalPartSetHeader(); + + public byte[] getHash() { + return this.hash; + } + + public void setHash(byte[] hash) { + this.hash = hash; + } + + public CanonicalPartSetHeader getPartSetHeader() { + return this.partSetHeader; + } + + public void setPartSetHeader(CanonicalPartSetHeader partSetHeader) { + this.partSetHeader = partSetHeader; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.hash), + Proto.encode(2, this.partSetHeader)); + } + + public static CanonicalBlockID decode(byte[] data) { + CanonicalBlockID obj = new CanonicalBlockID(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.hash = resp.res; + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.partSetHeader = CanonicalPartSetHeader.decode(resp.res); + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/CanonicalPartSetHeader.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/CanonicalPartSetHeader.java new file mode 100644 index 000000000..cc287703b --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/CanonicalPartSetHeader.java @@ -0,0 +1,60 @@ +package icon.proto.clients.tendermint; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; +import java.math.BigInteger; + +public class CanonicalPartSetHeader extends ProtoMessage { + private BigInteger total = BigInteger.ZERO; + + private byte[] hash = new byte[0]; + + public BigInteger getTotal() { + return this.total; + } + + public void setTotal(BigInteger total) { + this.total = total; + } + + public byte[] getHash() { + return this.hash; + } + + public void setHash(byte[] hash) { + this.hash = hash; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.total), + Proto.encode(2, this.hash)); + } + + public static CanonicalPartSetHeader decode(byte[] data) { + CanonicalPartSetHeader obj = new CanonicalPartSetHeader(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeVarInt(data, index); + index = resp.index; + obj.total = resp.res; + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.hash = resp.res; + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/CanonicalVote.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/CanonicalVote.java new file mode 100644 index 000000000..559b28383 --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/CanonicalVote.java @@ -0,0 +1,130 @@ +package icon.proto.clients.tendermint; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; +import java.lang.Integer; +import java.lang.String; +import java.math.BigInteger; + +public class CanonicalVote extends ProtoMessage { + private int type = 0; + + private BigInteger height = BigInteger.ZERO; + + private BigInteger round = BigInteger.ZERO; + + private BlockID blockId = new BlockID(); + + private Timestamp timestamp = new Timestamp(); + + private String chainId = ""; + + public int getType() { + return this.type; + } + + public void setType(int type) { + this.type = type; + } + + public BigInteger getHeight() { + return this.height; + } + + public void setHeight(BigInteger height) { + this.height = height; + } + + public BigInteger getRound() { + return this.round; + } + + public void setRound(BigInteger round) { + this.round = round; + } + + public BlockID getBlockId() { + return this.blockId; + } + + public void setBlockId(BlockID blockId) { + this.blockId = blockId; + } + + public Timestamp getTimestamp() { + return this.timestamp; + } + + public void setTimestamp(Timestamp timestamp) { + this.timestamp = timestamp; + } + + public String getChainId() { + return this.chainId; + } + + public void setChainId(String chainId) { + this.chainId = chainId; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.type), + Proto.encodeFixed64(2, this.height), + Proto.encodeFixed64(3, this.round), + Proto.encode(4, this.blockId), + Proto.encode(5, this.timestamp), + Proto.encode(6, this.chainId)); + } + + public static CanonicalVote decode(byte[] data) { + CanonicalVote obj = new CanonicalVote(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeEnum(data, index); + index = resp.index; + obj.type = resp.res; + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeFixed64(data, index); + index = resp.index; + obj.height = resp.res; + break; + } + case 3: { + Proto.DecodeResponse resp = Proto.decodeFixed64(data, index); + index = resp.index; + obj.round = resp.res; + break; + } + case 4: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.blockId = BlockID.decode(resp.res); + break; + } + case 5: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.timestamp = Timestamp.decode(resp.res); + break; + } + case 6: { + Proto.DecodeResponse resp = Proto.decodeString(data, index); + index = resp.index; + obj.chainId = resp.res; + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/ClientState.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/ClientState.java new file mode 100644 index 000000000..b40a46148 --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/ClientState.java @@ -0,0 +1,181 @@ +package icon.proto.clients.tendermint; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; +import java.lang.Boolean; +import java.lang.String; +import java.math.BigInteger; + +public class ClientState extends ProtoMessage { + private String chainId = ""; + + private Fraction trustLevel = new Fraction(); + + private Duration trustingPeriod = new Duration(); + + private Duration unbondingPeriod = new Duration(); + + private Duration maxClockDrift = new Duration(); + + private BigInteger frozenHeight = BigInteger.ZERO; + + private BigInteger latestHeight = BigInteger.ZERO; + + private boolean allowUpdateAfterExpiry = false; + + private boolean allowUpdateAfterMisbehaviour = false; + + public String getChainId() { + return this.chainId; + } + + public void setChainId(String chainId) { + this.chainId = chainId; + } + + public Fraction getTrustLevel() { + return this.trustLevel; + } + + public void setTrustLevel(Fraction trustLevel) { + this.trustLevel = trustLevel; + } + + public Duration getTrustingPeriod() { + return this.trustingPeriod; + } + + public void setTrustingPeriod(Duration trustingPeriod) { + this.trustingPeriod = trustingPeriod; + } + + public Duration getUnbondingPeriod() { + return this.unbondingPeriod; + } + + public void setUnbondingPeriod(Duration unbondingPeriod) { + this.unbondingPeriod = unbondingPeriod; + } + + public Duration getMaxClockDrift() { + return this.maxClockDrift; + } + + public void setMaxClockDrift(Duration maxClockDrift) { + this.maxClockDrift = maxClockDrift; + } + + public BigInteger getFrozenHeight() { + return this.frozenHeight; + } + + public void setFrozenHeight(BigInteger frozenHeight) { + this.frozenHeight = frozenHeight; + } + + public BigInteger getLatestHeight() { + return this.latestHeight; + } + + public void setLatestHeight(BigInteger latestHeight) { + this.latestHeight = latestHeight; + } + + public boolean getAllowUpdateAfterExpiry() { + return this.allowUpdateAfterExpiry; + } + + public void setAllowUpdateAfterExpiry(boolean allowUpdateAfterExpiry) { + this.allowUpdateAfterExpiry = allowUpdateAfterExpiry; + } + + public boolean getAllowUpdateAfterMisbehaviour() { + return this.allowUpdateAfterMisbehaviour; + } + + public void setAllowUpdateAfterMisbehaviour(boolean allowUpdateAfterMisbehaviour) { + this.allowUpdateAfterMisbehaviour = allowUpdateAfterMisbehaviour; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.chainId), + Proto.encode(2, this.trustLevel), + Proto.encode(3, this.trustingPeriod), + Proto.encode(4, this.unbondingPeriod), + Proto.encode(5, this.maxClockDrift), + Proto.encode(6, this.frozenHeight), + Proto.encode(7, this.latestHeight), + Proto.encode(8, this.allowUpdateAfterExpiry), + Proto.encode(9, this.allowUpdateAfterMisbehaviour)); + } + + public static ClientState decode(byte[] data) { + ClientState obj = new ClientState(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeString(data, index); + index = resp.index; + obj.chainId = resp.res; + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.trustLevel = Fraction.decode(resp.res); + break; + } + case 3: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.trustingPeriod = Duration.decode(resp.res); + break; + } + case 4: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.unbondingPeriod = Duration.decode(resp.res); + break; + } + case 5: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.maxClockDrift = Duration.decode(resp.res); + break; + } + case 6: { + Proto.DecodeResponse resp = Proto.decodeVarInt(data, index); + index = resp.index; + obj.frozenHeight = resp.res; + break; + } + case 7: { + Proto.DecodeResponse resp = Proto.decodeVarInt(data, index); + index = resp.index; + obj.latestHeight = resp.res; + break; + } + case 8: { + Proto.DecodeResponse resp = Proto.decodeBoolean(data, index); + index = resp.index; + obj.allowUpdateAfterExpiry = resp.res; + break; + } + case 9: { + Proto.DecodeResponse resp = Proto.decodeBoolean(data, index); + index = resp.index; + obj.allowUpdateAfterMisbehaviour = resp.res; + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/Commit.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/Commit.java new file mode 100644 index 000000000..0a52c1d58 --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/Commit.java @@ -0,0 +1,96 @@ +package icon.proto.clients.tendermint; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; +import java.math.BigInteger; +import java.util.List; +import scorex.util.ArrayList; + +public class Commit extends ProtoMessage { + private BigInteger height = BigInteger.ZERO; + + private BigInteger round = BigInteger.ZERO; + + private BlockID blockId = new BlockID(); + + private List signatures = new ArrayList<>(); + + public BigInteger getHeight() { + return this.height; + } + + public void setHeight(BigInteger height) { + this.height = height; + } + + public BigInteger getRound() { + return this.round; + } + + public void setRound(BigInteger round) { + this.round = round; + } + + public BlockID getBlockId() { + return this.blockId; + } + + public void setBlockId(BlockID blockId) { + this.blockId = blockId; + } + + public List getSignatures() { + return this.signatures; + } + + public void setSignatures(List signatures) { + this.signatures = signatures; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.height), + Proto.encode(2, this.round), + Proto.encode(3, this.blockId), + Proto.encodeMessageArray(4, this.signatures)); + } + + public static Commit decode(byte[] data) { + Commit obj = new Commit(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeVarInt(data, index); + index = resp.index; + obj.height = resp.res; + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeVarInt(data, index); + index = resp.index; + obj.round = resp.res; + break; + } + case 3: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.blockId = BlockID.decode(resp.res); + break; + } + case 4: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.signatures.add(CommitSig.decode(resp.res)); + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/CommitSig.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/CommitSig.java new file mode 100644 index 000000000..b55756288 --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/CommitSig.java @@ -0,0 +1,94 @@ +package icon.proto.clients.tendermint; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; +import java.lang.Integer; + +public class CommitSig extends ProtoMessage { + private int blockIdFlag = 0; + + private byte[] validatorAddress = new byte[0]; + + private Timestamp timestamp = new Timestamp(); + + private byte[] signature = new byte[0]; + + public int getBlockIdFlag() { + return this.blockIdFlag; + } + + public void setBlockIdFlag(int blockIdFlag) { + this.blockIdFlag = blockIdFlag; + } + + public byte[] getValidatorAddress() { + return this.validatorAddress; + } + + public void setValidatorAddress(byte[] validatorAddress) { + this.validatorAddress = validatorAddress; + } + + public Timestamp getTimestamp() { + return this.timestamp; + } + + public void setTimestamp(Timestamp timestamp) { + this.timestamp = timestamp; + } + + public byte[] getSignature() { + return this.signature; + } + + public void setSignature(byte[] signature) { + this.signature = signature; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.blockIdFlag), + Proto.encode(2, this.validatorAddress), + Proto.encode(3, this.timestamp), + Proto.encode(4, this.signature)); + } + + public static CommitSig decode(byte[] data) { + CommitSig obj = new CommitSig(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeEnum(data, index); + index = resp.index; + obj.blockIdFlag = resp.res; + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.validatorAddress = resp.res; + break; + } + case 3: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.timestamp = Timestamp.decode(resp.res); + break; + } + case 4: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.signature = resp.res; + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/Consensus.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/Consensus.java new file mode 100644 index 000000000..86a7bc394 --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/Consensus.java @@ -0,0 +1,60 @@ +package icon.proto.clients.tendermint; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; +import java.math.BigInteger; + +public class Consensus extends ProtoMessage { + private BigInteger block = BigInteger.ZERO; + + private BigInteger app = BigInteger.ZERO; + + public BigInteger getBlock() { + return this.block; + } + + public void setBlock(BigInteger block) { + this.block = block; + } + + public BigInteger getApp() { + return this.app; + } + + public void setApp(BigInteger app) { + this.app = app; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.block), + Proto.encode(2, this.app)); + } + + public static Consensus decode(byte[] data) { + Consensus obj = new Consensus(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeVarInt(data, index); + index = resp.index; + obj.block = resp.res; + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeVarInt(data, index); + index = resp.index; + obj.app = resp.res; + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/ConsensusState.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/ConsensusState.java new file mode 100644 index 000000000..c40689c5e --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/ConsensusState.java @@ -0,0 +1,77 @@ +package icon.proto.clients.tendermint; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; +import ibc.core.commitment.v1.MerkleRoot; + +public class ConsensusState extends ProtoMessage { + private Timestamp timestamp = new Timestamp(); + + private MerkleRoot root = new MerkleRoot(); + + private byte[] nextValidatorsHash = new byte[0]; + + public Timestamp getTimestamp() { + return this.timestamp; + } + + public void setTimestamp(Timestamp timestamp) { + this.timestamp = timestamp; + } + + public MerkleRoot getRoot() { + return this.root; + } + + public void setRoot(MerkleRoot root) { + this.root = root; + } + + public byte[] getNextValidatorsHash() { + return this.nextValidatorsHash; + } + + public void setNextValidatorsHash(byte[] nextValidatorsHash) { + this.nextValidatorsHash = nextValidatorsHash; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.timestamp), + Proto.encode(2, this.root), + Proto.encode(3, this.nextValidatorsHash)); + } + + public static ConsensusState decode(byte[] data) { + ConsensusState obj = new ConsensusState(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.timestamp = Timestamp.decode(resp.res); + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.root = MerkleRoot.decode(resp.res); + break; + } + case 3: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.nextValidatorsHash = resp.res; + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/Duration.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/Duration.java new file mode 100644 index 000000000..d556663c2 --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/Duration.java @@ -0,0 +1,60 @@ +package icon.proto.clients.tendermint; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; +import java.math.BigInteger; + +public class Duration extends ProtoMessage { + private BigInteger seconds = BigInteger.ZERO; + + private BigInteger nanos = BigInteger.ZERO; + + public BigInteger getSeconds() { + return this.seconds; + } + + public void setSeconds(BigInteger seconds) { + this.seconds = seconds; + } + + public BigInteger getNanos() { + return this.nanos; + } + + public void setNanos(BigInteger nanos) { + this.nanos = nanos; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.seconds), + Proto.encode(2, this.nanos)); + } + + public static Duration decode(byte[] data) { + Duration obj = new Duration(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeVarInt(data, index); + index = resp.index; + obj.seconds = resp.res; + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeVarInt(data, index); + index = resp.index; + obj.nanos = resp.res; + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/Fraction.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/Fraction.java new file mode 100644 index 000000000..bfd27289e --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/Fraction.java @@ -0,0 +1,60 @@ +package icon.proto.clients.tendermint; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; +import java.math.BigInteger; + +public class Fraction extends ProtoMessage { + private BigInteger numerator = BigInteger.ZERO; + + private BigInteger denominator = BigInteger.ZERO; + + public BigInteger getNumerator() { + return this.numerator; + } + + public void setNumerator(BigInteger numerator) { + this.numerator = numerator; + } + + public BigInteger getDenominator() { + return this.denominator; + } + + public void setDenominator(BigInteger denominator) { + this.denominator = denominator; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.numerator), + Proto.encode(2, this.denominator)); + } + + public static Fraction decode(byte[] data) { + Fraction obj = new Fraction(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeVarInt(data, index); + index = resp.index; + obj.numerator = resp.res; + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeVarInt(data, index); + index = resp.index; + obj.denominator = resp.res; + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/LightHeader.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/LightHeader.java new file mode 100644 index 000000000..5dbae16e9 --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/LightHeader.java @@ -0,0 +1,265 @@ +package icon.proto.clients.tendermint; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; +import java.lang.String; +import java.math.BigInteger; + +public class LightHeader extends ProtoMessage { + private Consensus version = new Consensus(); + + private String chainId = ""; + + private BigInteger height = BigInteger.ZERO; + + private Timestamp time = new Timestamp(); + + private BlockID lastBlockId = new BlockID(); + + private byte[] lastCommitHash = new byte[0]; + + private byte[] dataHash = new byte[0]; + + private byte[] validatorsHash = new byte[0]; + + private byte[] nextValidatorsHash = new byte[0]; + + private byte[] consensusHash = new byte[0]; + + private byte[] appHash = new byte[0]; + + private byte[] lastResultsHash = new byte[0]; + + private byte[] evidenceHash = new byte[0]; + + private byte[] proposerAddress = new byte[0]; + + public Consensus getVersion() { + return this.version; + } + + public void setVersion(Consensus version) { + this.version = version; + } + + public String getChainId() { + return this.chainId; + } + + public void setChainId(String chainId) { + this.chainId = chainId; + } + + public BigInteger getHeight() { + return this.height; + } + + public void setHeight(BigInteger height) { + this.height = height; + } + + public Timestamp getTime() { + return this.time; + } + + public void setTime(Timestamp time) { + this.time = time; + } + + public BlockID getLastBlockId() { + return this.lastBlockId; + } + + public void setLastBlockId(BlockID lastBlockId) { + this.lastBlockId = lastBlockId; + } + + public byte[] getLastCommitHash() { + return this.lastCommitHash; + } + + public void setLastCommitHash(byte[] lastCommitHash) { + this.lastCommitHash = lastCommitHash; + } + + public byte[] getDataHash() { + return this.dataHash; + } + + public void setDataHash(byte[] dataHash) { + this.dataHash = dataHash; + } + + public byte[] getValidatorsHash() { + return this.validatorsHash; + } + + public void setValidatorsHash(byte[] validatorsHash) { + this.validatorsHash = validatorsHash; + } + + public byte[] getNextValidatorsHash() { + return this.nextValidatorsHash; + } + + public void setNextValidatorsHash(byte[] nextValidatorsHash) { + this.nextValidatorsHash = nextValidatorsHash; + } + + public byte[] getConsensusHash() { + return this.consensusHash; + } + + public void setConsensusHash(byte[] consensusHash) { + this.consensusHash = consensusHash; + } + + public byte[] getAppHash() { + return this.appHash; + } + + public void setAppHash(byte[] appHash) { + this.appHash = appHash; + } + + public byte[] getLastResultsHash() { + return this.lastResultsHash; + } + + public void setLastResultsHash(byte[] lastResultsHash) { + this.lastResultsHash = lastResultsHash; + } + + public byte[] getEvidenceHash() { + return this.evidenceHash; + } + + public void setEvidenceHash(byte[] evidenceHash) { + this.evidenceHash = evidenceHash; + } + + public byte[] getProposerAddress() { + return this.proposerAddress; + } + + public void setProposerAddress(byte[] proposerAddress) { + this.proposerAddress = proposerAddress; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.version), + Proto.encode(2, this.chainId), + Proto.encode(3, this.height), + Proto.encode(4, this.time), + Proto.encode(5, this.lastBlockId), + Proto.encode(6, this.lastCommitHash), + Proto.encode(7, this.dataHash), + Proto.encode(8, this.validatorsHash), + Proto.encode(9, this.nextValidatorsHash), + Proto.encode(10, this.consensusHash), + Proto.encode(11, this.appHash), + Proto.encode(12, this.lastResultsHash), + Proto.encode(13, this.evidenceHash), + Proto.encode(14, this.proposerAddress)); + } + + public static LightHeader decode(byte[] data) { + LightHeader obj = new LightHeader(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.version = Consensus.decode(resp.res); + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeString(data, index); + index = resp.index; + obj.chainId = resp.res; + break; + } + case 3: { + Proto.DecodeResponse resp = Proto.decodeVarInt(data, index); + index = resp.index; + obj.height = resp.res; + break; + } + case 4: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.time = Timestamp.decode(resp.res); + break; + } + case 5: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.lastBlockId = BlockID.decode(resp.res); + break; + } + case 6: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.lastCommitHash = resp.res; + break; + } + case 7: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.dataHash = resp.res; + break; + } + case 8: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.validatorsHash = resp.res; + break; + } + case 9: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.nextValidatorsHash = resp.res; + break; + } + case 10: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.consensusHash = resp.res; + break; + } + case 11: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.appHash = resp.res; + break; + } + case 12: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.lastResultsHash = resp.res; + break; + } + case 13: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.evidenceHash = resp.res; + break; + } + case 14: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.proposerAddress = resp.res; + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/PartSetHeader.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/PartSetHeader.java new file mode 100644 index 000000000..919b02c28 --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/PartSetHeader.java @@ -0,0 +1,60 @@ +package icon.proto.clients.tendermint; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; +import java.math.BigInteger; + +public class PartSetHeader extends ProtoMessage { + private BigInteger total = BigInteger.ZERO; + + private byte[] hash = new byte[0]; + + public BigInteger getTotal() { + return this.total; + } + + public void setTotal(BigInteger total) { + this.total = total; + } + + public byte[] getHash() { + return this.hash; + } + + public void setHash(byte[] hash) { + this.hash = hash; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.total), + Proto.encode(2, this.hash)); + } + + public static PartSetHeader decode(byte[] data) { + PartSetHeader obj = new PartSetHeader(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeVarInt(data, index); + index = resp.index; + obj.total = resp.res; + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.hash = resp.res; + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/PublicKey.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/PublicKey.java new file mode 100644 index 000000000..1ee5bb457 --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/PublicKey.java @@ -0,0 +1,76 @@ +package icon.proto.clients.tendermint; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; + +public class PublicKey extends ProtoMessage { + private byte[] ed25519 = new byte[0]; + + private byte[] secp256k1 = new byte[0]; + + private byte[] sr25519 = new byte[0]; + + public byte[] getEd25519() { + return this.ed25519; + } + + public void setEd25519(byte[] ed25519) { + this.ed25519 = ed25519; + } + + public byte[] getSecp256k1() { + return this.secp256k1; + } + + public void setSecp256k1(byte[] secp256k1) { + this.secp256k1 = secp256k1; + } + + public byte[] getSr25519() { + return this.sr25519; + } + + public void setSr25519(byte[] sr25519) { + this.sr25519 = sr25519; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.ed25519), + Proto.encode(2, this.secp256k1), + Proto.encode(3, this.sr25519)); + } + + public static PublicKey decode(byte[] data) { + PublicKey obj = new PublicKey(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.ed25519 = resp.res; + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.secp256k1 = resp.res; + break; + } + case 3: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.sr25519 = resp.res; + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/SignedHeader.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/SignedHeader.java new file mode 100644 index 000000000..b3ef2c33a --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/SignedHeader.java @@ -0,0 +1,59 @@ +package icon.proto.clients.tendermint; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; + +public class SignedHeader extends ProtoMessage { + private LightHeader header = new LightHeader(); + + private Commit commit = new Commit(); + + public LightHeader getHeader() { + return this.header; + } + + public void setHeader(LightHeader header) { + this.header = header; + } + + public Commit getCommit() { + return this.commit; + } + + public void setCommit(Commit commit) { + this.commit = commit; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.header), + Proto.encode(2, this.commit)); + } + + public static SignedHeader decode(byte[] data) { + SignedHeader obj = new SignedHeader(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.header = LightHeader.decode(resp.res); + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.commit = Commit.decode(resp.res); + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/SignedMsgType.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/SignedMsgType.java new file mode 100644 index 000000000..92cb55e93 --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/SignedMsgType.java @@ -0,0 +1,11 @@ +package icon.proto.clients.tendermint; + +public class SignedMsgType { + public static final int SIGNED_MSG_TYPE_UNKNOWN = 0; + + public static final int SIGNED_MSG_TYPE_PREVOTE = 1; + + public static final int SIGNED_MSG_TYPE_PRECOMMIT = 2; + + public static final int SIGNED_MSG_TYPE_PROPOSAL = 32; +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/SimpleValidator.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/SimpleValidator.java new file mode 100644 index 000000000..d832d5e02 --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/SimpleValidator.java @@ -0,0 +1,60 @@ +package icon.proto.clients.tendermint; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; +import java.math.BigInteger; + +public class SimpleValidator extends ProtoMessage { + private PublicKey pubKey = new PublicKey(); + + private BigInteger votingPower = BigInteger.ZERO; + + public PublicKey getPubKey() { + return this.pubKey; + } + + public void setPubKey(PublicKey pubKey) { + this.pubKey = pubKey; + } + + public BigInteger getVotingPower() { + return this.votingPower; + } + + public void setVotingPower(BigInteger votingPower) { + this.votingPower = votingPower; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.pubKey), + Proto.encode(2, this.votingPower)); + } + + public static SimpleValidator decode(byte[] data) { + SimpleValidator obj = new SimpleValidator(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.pubKey = PublicKey.decode(resp.res); + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeVarInt(data, index); + index = resp.index; + obj.votingPower = resp.res; + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/Timestamp.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/Timestamp.java new file mode 100644 index 000000000..27bcfa95f --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/Timestamp.java @@ -0,0 +1,60 @@ +package icon.proto.clients.tendermint; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; +import java.math.BigInteger; + +public class Timestamp extends ProtoMessage { + private BigInteger seconds = BigInteger.ZERO; + + private BigInteger nanos = BigInteger.ZERO; + + public BigInteger getSeconds() { + return this.seconds; + } + + public void setSeconds(BigInteger seconds) { + this.seconds = seconds; + } + + public BigInteger getNanos() { + return this.nanos; + } + + public void setNanos(BigInteger nanos) { + this.nanos = nanos; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.seconds), + Proto.encode(2, this.nanos)); + } + + public static Timestamp decode(byte[] data) { + Timestamp obj = new Timestamp(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeVarInt(data, index); + index = resp.index; + obj.seconds = resp.res; + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeVarInt(data, index); + index = resp.index; + obj.nanos = resp.res; + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/TmHeader.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/TmHeader.java new file mode 100644 index 000000000..41ec037d0 --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/TmHeader.java @@ -0,0 +1,94 @@ +package icon.proto.clients.tendermint; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; +import java.math.BigInteger; + +public class TmHeader extends ProtoMessage { + private SignedHeader signedHeader = new SignedHeader(); + + private ValidatorSet validatorSet = new ValidatorSet(); + + private BigInteger trustedHeight = BigInteger.ZERO; + + private ValidatorSet trustedValidators = new ValidatorSet(); + + public SignedHeader getSignedHeader() { + return this.signedHeader; + } + + public void setSignedHeader(SignedHeader signedHeader) { + this.signedHeader = signedHeader; + } + + public ValidatorSet getValidatorSet() { + return this.validatorSet; + } + + public void setValidatorSet(ValidatorSet validatorSet) { + this.validatorSet = validatorSet; + } + + public BigInteger getTrustedHeight() { + return this.trustedHeight; + } + + public void setTrustedHeight(BigInteger trustedHeight) { + this.trustedHeight = trustedHeight; + } + + public ValidatorSet getTrustedValidators() { + return this.trustedValidators; + } + + public void setTrustedValidators(ValidatorSet trustedValidators) { + this.trustedValidators = trustedValidators; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.signedHeader), + Proto.encode(2, this.validatorSet), + Proto.encode(3, this.trustedHeight), + Proto.encode(4, this.trustedValidators)); + } + + public static TmHeader decode(byte[] data) { + TmHeader obj = new TmHeader(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.signedHeader = SignedHeader.decode(resp.res); + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.validatorSet = ValidatorSet.decode(resp.res); + break; + } + case 3: { + Proto.DecodeResponse resp = Proto.decodeVarInt(data, index); + index = resp.index; + obj.trustedHeight = resp.res; + break; + } + case 4: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.trustedValidators = ValidatorSet.decode(resp.res); + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/Validator.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/Validator.java new file mode 100644 index 000000000..8524099ae --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/Validator.java @@ -0,0 +1,94 @@ +package icon.proto.clients.tendermint; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; +import java.math.BigInteger; + +public class Validator extends ProtoMessage { + private byte[] address = new byte[0]; + + private PublicKey pubKey = new PublicKey(); + + private BigInteger votingPower = BigInteger.ZERO; + + private BigInteger proposerPriority = BigInteger.ZERO; + + public byte[] getAddress() { + return this.address; + } + + public void setAddress(byte[] address) { + this.address = address; + } + + public PublicKey getPubKey() { + return this.pubKey; + } + + public void setPubKey(PublicKey pubKey) { + this.pubKey = pubKey; + } + + public BigInteger getVotingPower() { + return this.votingPower; + } + + public void setVotingPower(BigInteger votingPower) { + this.votingPower = votingPower; + } + + public BigInteger getProposerPriority() { + return this.proposerPriority; + } + + public void setProposerPriority(BigInteger proposerPriority) { + this.proposerPriority = proposerPriority; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.address), + Proto.encode(2, this.pubKey), + Proto.encode(3, this.votingPower), + Proto.encode(4, this.proposerPriority)); + } + + public static Validator decode(byte[] data) { + Validator obj = new Validator(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.address = resp.res; + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.pubKey = PublicKey.decode(resp.res); + break; + } + case 3: { + Proto.DecodeResponse resp = Proto.decodeVarInt(data, index); + index = resp.index; + obj.votingPower = resp.res; + break; + } + case 4: { + Proto.DecodeResponse resp = Proto.decodeVarInt(data, index); + index = resp.index; + obj.proposerPriority = resp.res; + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/ValidatorSet.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/ValidatorSet.java new file mode 100644 index 000000000..323e57cda --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/ValidatorSet.java @@ -0,0 +1,79 @@ +package icon.proto.clients.tendermint; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; +import java.math.BigInteger; +import java.util.List; +import scorex.util.ArrayList; + +public class ValidatorSet extends ProtoMessage { + private List validators = new ArrayList<>(); + + private Validator proposer = new Validator(); + + private BigInteger totalVotingPower = BigInteger.ZERO; + + public List getValidators() { + return this.validators; + } + + public void setValidators(List validators) { + this.validators = validators; + } + + public Validator getProposer() { + return this.proposer; + } + + public void setProposer(Validator proposer) { + this.proposer = proposer; + } + + public BigInteger getTotalVotingPower() { + return this.totalVotingPower; + } + + public void setTotalVotingPower(BigInteger totalVotingPower) { + this.totalVotingPower = totalVotingPower; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encodeMessageArray(1, this.validators), + Proto.encode(2, this.proposer), + Proto.encode(3, this.totalVotingPower)); + } + + public static ValidatorSet decode(byte[] data) { + ValidatorSet obj = new ValidatorSet(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.validators.add(Validator.decode(resp.res)); + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.proposer = Validator.decode(resp.res); + break; + } + case 3: { + Proto.DecodeResponse resp = Proto.decodeVarInt(data, index); + index = resp.index; + obj.totalVotingPower = resp.res; + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/Vote.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/Vote.java new file mode 100644 index 000000000..5894f89f2 --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/clients/tendermint/Vote.java @@ -0,0 +1,163 @@ +package icon.proto.clients.tendermint; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; +import java.lang.Integer; +import java.math.BigInteger; + +public class Vote extends ProtoMessage { + private int type = 0; + + private BigInteger height = BigInteger.ZERO; + + private BigInteger round = BigInteger.ZERO; + + private BlockID blockId = new BlockID(); + + private Timestamp timestamp = new Timestamp(); + + private byte[] validatorAddress = new byte[0]; + + private BigInteger validatorIndex = BigInteger.ZERO; + + private byte[] signature = new byte[0]; + + public int getType() { + return this.type; + } + + public void setType(int type) { + this.type = type; + } + + public BigInteger getHeight() { + return this.height; + } + + public void setHeight(BigInteger height) { + this.height = height; + } + + public BigInteger getRound() { + return this.round; + } + + public void setRound(BigInteger round) { + this.round = round; + } + + public BlockID getBlockId() { + return this.blockId; + } + + public void setBlockId(BlockID blockId) { + this.blockId = blockId; + } + + public Timestamp getTimestamp() { + return this.timestamp; + } + + public void setTimestamp(Timestamp timestamp) { + this.timestamp = timestamp; + } + + public byte[] getValidatorAddress() { + return this.validatorAddress; + } + + public void setValidatorAddress(byte[] validatorAddress) { + this.validatorAddress = validatorAddress; + } + + public BigInteger getValidatorIndex() { + return this.validatorIndex; + } + + public void setValidatorIndex(BigInteger validatorIndex) { + this.validatorIndex = validatorIndex; + } + + public byte[] getSignature() { + return this.signature; + } + + public void setSignature(byte[] signature) { + this.signature = signature; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.type), + Proto.encode(2, this.height), + Proto.encode(3, this.round), + Proto.encode(4, this.blockId), + Proto.encode(5, this.timestamp), + Proto.encode(6, this.validatorAddress), + Proto.encode(7, this.validatorIndex), + Proto.encode(8, this.signature)); + } + + public static Vote decode(byte[] data) { + Vote obj = new Vote(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeEnum(data, index); + index = resp.index; + obj.type = resp.res; + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeVarInt(data, index); + index = resp.index; + obj.height = resp.res; + break; + } + case 3: { + Proto.DecodeResponse resp = Proto.decodeVarInt(data, index); + index = resp.index; + obj.round = resp.res; + break; + } + case 4: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.blockId = BlockID.decode(resp.res); + break; + } + case 5: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.timestamp = Timestamp.decode(resp.res); + break; + } + case 6: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.validatorAddress = resp.res; + break; + } + case 7: { + Proto.DecodeResponse resp = Proto.decodeVarInt(data, index); + index = resp.index; + obj.validatorIndex = resp.res; + break; + } + case 8: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.signature = resp.res; + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/BatchEntry.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/BatchEntry.java new file mode 100644 index 000000000..b52936cd9 --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/BatchEntry.java @@ -0,0 +1,59 @@ +package icon.proto.core.commitment; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; + +public class BatchEntry extends ProtoMessage { + private ExistenceProof exist = new ExistenceProof(); + + private NonExistenceProof nonexist = new NonExistenceProof(); + + public ExistenceProof getExist() { + return this.exist; + } + + public void setExist(ExistenceProof exist) { + this.exist = exist; + } + + public NonExistenceProof getNonexist() { + return this.nonexist; + } + + public void setNonexist(NonExistenceProof nonexist) { + this.nonexist = nonexist; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.exist), + Proto.encode(2, this.nonexist)); + } + + public static BatchEntry decode(byte[] data) { + BatchEntry obj = new BatchEntry(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.exist = ExistenceProof.decode(resp.res); + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.nonexist = NonExistenceProof.decode(resp.res); + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/BatchProof.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/BatchProof.java new file mode 100644 index 000000000..bb711115c --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/BatchProof.java @@ -0,0 +1,44 @@ +package icon.proto.core.commitment; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; +import java.util.List; +import scorex.util.ArrayList; + +public class BatchProof extends ProtoMessage { + private List entries = new ArrayList<>(); + + public List getEntries() { + return this.entries; + } + + public void setEntries(List entries) { + this.entries = entries; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encodeMessageArray(1, this.entries)); + } + + public static BatchProof decode(byte[] data) { + BatchProof obj = new BatchProof(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.entries.add(BatchEntry.decode(resp.res)); + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/CommitmentProof.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/CommitmentProof.java new file mode 100644 index 000000000..47fa142c6 --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/CommitmentProof.java @@ -0,0 +1,93 @@ +package icon.proto.core.commitment; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; + +public class CommitmentProof extends ProtoMessage { + private ExistenceProof exist = new ExistenceProof(); + + private NonExistenceProof nonexist = new NonExistenceProof(); + + private BatchProof batch = new BatchProof(); + + private CompressedBatchProof compressed = new CompressedBatchProof(); + + public ExistenceProof getExist() { + return this.exist; + } + + public void setExist(ExistenceProof exist) { + this.exist = exist; + } + + public NonExistenceProof getNonexist() { + return this.nonexist; + } + + public void setNonexist(NonExistenceProof nonexist) { + this.nonexist = nonexist; + } + + public BatchProof getBatch() { + return this.batch; + } + + public void setBatch(BatchProof batch) { + this.batch = batch; + } + + public CompressedBatchProof getCompressed() { + return this.compressed; + } + + public void setCompressed(CompressedBatchProof compressed) { + this.compressed = compressed; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.exist), + Proto.encode(2, this.nonexist), + Proto.encode(3, this.batch), + Proto.encode(4, this.compressed)); + } + + public static CommitmentProof decode(byte[] data) { + CommitmentProof obj = new CommitmentProof(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.exist = ExistenceProof.decode(resp.res); + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.nonexist = NonExistenceProof.decode(resp.res); + break; + } + case 3: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.batch = BatchProof.decode(resp.res); + break; + } + case 4: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.compressed = CompressedBatchProof.decode(resp.res); + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/CompressedBatchEntry.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/CompressedBatchEntry.java new file mode 100644 index 000000000..00be2e01b --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/CompressedBatchEntry.java @@ -0,0 +1,59 @@ +package icon.proto.core.commitment; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; + +public class CompressedBatchEntry extends ProtoMessage { + private CompressedExistenceProof exist = new CompressedExistenceProof(); + + private CompressedNonExistenceProof nonexist = new CompressedNonExistenceProof(); + + public CompressedExistenceProof getExist() { + return this.exist; + } + + public void setExist(CompressedExistenceProof exist) { + this.exist = exist; + } + + public CompressedNonExistenceProof getNonexist() { + return this.nonexist; + } + + public void setNonexist(CompressedNonExistenceProof nonexist) { + this.nonexist = nonexist; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.exist), + Proto.encode(2, this.nonexist)); + } + + public static CompressedBatchEntry decode(byte[] data) { + CompressedBatchEntry obj = new CompressedBatchEntry(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.exist = CompressedExistenceProof.decode(resp.res); + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.nonexist = CompressedNonExistenceProof.decode(resp.res); + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/CompressedBatchProof.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/CompressedBatchProof.java new file mode 100644 index 000000000..639c1200a --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/CompressedBatchProof.java @@ -0,0 +1,61 @@ +package icon.proto.core.commitment; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; +import java.util.List; +import scorex.util.ArrayList; + +public class CompressedBatchProof extends ProtoMessage { + private List entries = new ArrayList<>(); + + private List lookupInners = new ArrayList<>(); + + public List getEntries() { + return this.entries; + } + + public void setEntries(List entries) { + this.entries = entries; + } + + public List getLookupInners() { + return this.lookupInners; + } + + public void setLookupInners(List lookupInners) { + this.lookupInners = lookupInners; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encodeMessageArray(1, this.entries), + Proto.encodeMessageArray(2, this.lookupInners)); + } + + public static CompressedBatchProof decode(byte[] data) { + CompressedBatchProof obj = new CompressedBatchProof(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.entries.add(CompressedBatchEntry.decode(resp.res)); + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.lookupInners.add(InnerOp.decode(resp.res)); + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/CompressedExistenceProof.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/CompressedExistenceProof.java new file mode 100644 index 000000000..0e65292e3 --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/CompressedExistenceProof.java @@ -0,0 +1,96 @@ +package icon.proto.core.commitment; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; +import java.math.BigInteger; +import java.util.List; +import scorex.util.ArrayList; + +public class CompressedExistenceProof extends ProtoMessage { + private byte[] key = new byte[0]; + + private byte[] value = new byte[0]; + + private LeafOp leaf = new LeafOp(); + + private List path = new ArrayList<>(); + + public byte[] getKey() { + return this.key; + } + + public void setKey(byte[] key) { + this.key = key; + } + + public byte[] getValue() { + return this.value; + } + + public void setValue(byte[] value) { + this.value = value; + } + + public LeafOp getLeaf() { + return this.leaf; + } + + public void setLeaf(LeafOp leaf) { + this.leaf = leaf; + } + + public List getPath() { + return this.path; + } + + public void setPath(List path) { + this.path = path; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.key), + Proto.encode(2, this.value), + Proto.encode(3, this.leaf), + Proto.encodeVarIntArray(4, this.path)); + } + + public static CompressedExistenceProof decode(byte[] data) { + CompressedExistenceProof obj = new CompressedExistenceProof(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.key = resp.res; + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.value = resp.res; + break; + } + case 3: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.leaf = LeafOp.decode(resp.res); + break; + } + case 4: { + Proto.DecodeResponse> resp = Proto.decodeVarIntArray(data, index); + index = resp.index; + obj.path.addAll(resp.res); + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/CompressedNonExistenceProof.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/CompressedNonExistenceProof.java new file mode 100644 index 000000000..d69d005a6 --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/CompressedNonExistenceProof.java @@ -0,0 +1,76 @@ +package icon.proto.core.commitment; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; + +public class CompressedNonExistenceProof extends ProtoMessage { + private byte[] key = new byte[0]; + + private CompressedExistenceProof left = new CompressedExistenceProof(); + + private CompressedExistenceProof right = new CompressedExistenceProof(); + + public byte[] getKey() { + return this.key; + } + + public void setKey(byte[] key) { + this.key = key; + } + + public CompressedExistenceProof getLeft() { + return this.left; + } + + public void setLeft(CompressedExistenceProof left) { + this.left = left; + } + + public CompressedExistenceProof getRight() { + return this.right; + } + + public void setRight(CompressedExistenceProof right) { + this.right = right; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.key), + Proto.encode(2, this.left), + Proto.encode(3, this.right)); + } + + public static CompressedNonExistenceProof decode(byte[] data) { + CompressedNonExistenceProof obj = new CompressedNonExistenceProof(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.key = resp.res; + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.left = CompressedExistenceProof.decode(resp.res); + break; + } + case 3: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.right = CompressedExistenceProof.decode(resp.res); + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/ExistenceProof.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/ExistenceProof.java new file mode 100644 index 000000000..a1185209d --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/ExistenceProof.java @@ -0,0 +1,95 @@ +package icon.proto.core.commitment; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; +import java.util.List; +import scorex.util.ArrayList; + +public class ExistenceProof extends ProtoMessage { + private byte[] key = new byte[0]; + + private byte[] value = new byte[0]; + + private LeafOp leaf = new LeafOp(); + + private List path = new ArrayList<>(); + + public byte[] getKey() { + return this.key; + } + + public void setKey(byte[] key) { + this.key = key; + } + + public byte[] getValue() { + return this.value; + } + + public void setValue(byte[] value) { + this.value = value; + } + + public LeafOp getLeaf() { + return this.leaf; + } + + public void setLeaf(LeafOp leaf) { + this.leaf = leaf; + } + + public List getPath() { + return this.path; + } + + public void setPath(List path) { + this.path = path; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.key), + Proto.encode(2, this.value), + Proto.encode(3, this.leaf), + Proto.encodeMessageArray(4, this.path)); + } + + public static ExistenceProof decode(byte[] data) { + ExistenceProof obj = new ExistenceProof(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.key = resp.res; + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.value = resp.res; + break; + } + case 3: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.leaf = LeafOp.decode(resp.res); + break; + } + case 4: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.path.add(InnerOp.decode(resp.res)); + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/HashOp.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/HashOp.java new file mode 100644 index 000000000..c678aca68 --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/HashOp.java @@ -0,0 +1,17 @@ +package icon.proto.core.commitment; + +public class HashOp { + public static final int NO_HASH = 0; + + public static final int SHA256 = 1; + + public static final int SHA512 = 2; + + public static final int KECCAK = 3; + + public static final int RIPEMD160 = 4; + + public static final int BITCOIN = 5; + + public static final int SHA512_256 = 6; +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/InnerOp.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/InnerOp.java new file mode 100644 index 000000000..0dc6ec0f4 --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/InnerOp.java @@ -0,0 +1,77 @@ +package icon.proto.core.commitment; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; +import java.lang.Integer; + +public class InnerOp extends ProtoMessage { + private int hash = 0; + + private byte[] prefix = new byte[0]; + + private byte[] suffix = new byte[0]; + + public int getHash() { + return this.hash; + } + + public void setHash(int hash) { + this.hash = hash; + } + + public byte[] getPrefix() { + return this.prefix; + } + + public void setPrefix(byte[] prefix) { + this.prefix = prefix; + } + + public byte[] getSuffix() { + return this.suffix; + } + + public void setSuffix(byte[] suffix) { + this.suffix = suffix; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.hash), + Proto.encode(2, this.prefix), + Proto.encode(3, this.suffix)); + } + + public static InnerOp decode(byte[] data) { + InnerOp obj = new InnerOp(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeEnum(data, index); + index = resp.index; + obj.hash = resp.res; + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.prefix = resp.res; + break; + } + case 3: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.suffix = resp.res; + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/InnerSpec.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/InnerSpec.java new file mode 100644 index 000000000..35d85d14a --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/InnerSpec.java @@ -0,0 +1,131 @@ +package icon.proto.core.commitment; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; +import java.lang.Integer; +import java.math.BigInteger; +import java.util.List; +import scorex.util.ArrayList; + +public class InnerSpec extends ProtoMessage { + private List childOrder = new ArrayList<>(); + + private BigInteger childSize = BigInteger.ZERO; + + private BigInteger minPrefixLength = BigInteger.ZERO; + + private BigInteger maxPrefixLength = BigInteger.ZERO; + + private byte[] emptyChild = new byte[0]; + + private int hash = 0; + + public List getChildOrder() { + return this.childOrder; + } + + public void setChildOrder(List childOrder) { + this.childOrder = childOrder; + } + + public BigInteger getChildSize() { + return this.childSize; + } + + public void setChildSize(BigInteger childSize) { + this.childSize = childSize; + } + + public BigInteger getMinPrefixLength() { + return this.minPrefixLength; + } + + public void setMinPrefixLength(BigInteger minPrefixLength) { + this.minPrefixLength = minPrefixLength; + } + + public BigInteger getMaxPrefixLength() { + return this.maxPrefixLength; + } + + public void setMaxPrefixLength(BigInteger maxPrefixLength) { + this.maxPrefixLength = maxPrefixLength; + } + + public byte[] getEmptyChild() { + return this.emptyChild; + } + + public void setEmptyChild(byte[] emptyChild) { + this.emptyChild = emptyChild; + } + + public int getHash() { + return this.hash; + } + + public void setHash(int hash) { + this.hash = hash; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encodeVarIntArray(1, this.childOrder), + Proto.encode(2, this.childSize), + Proto.encode(3, this.minPrefixLength), + Proto.encode(4, this.maxPrefixLength), + Proto.encode(5, this.emptyChild), + Proto.encode(6, this.hash)); + } + + public static InnerSpec decode(byte[] data) { + InnerSpec obj = new InnerSpec(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse> resp = Proto.decodeVarIntArray(data, index); + index = resp.index; + obj.childOrder.addAll(resp.res); + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeVarInt(data, index); + index = resp.index; + obj.childSize = resp.res; + break; + } + case 3: { + Proto.DecodeResponse resp = Proto.decodeVarInt(data, index); + index = resp.index; + obj.minPrefixLength = resp.res; + break; + } + case 4: { + Proto.DecodeResponse resp = Proto.decodeVarInt(data, index); + index = resp.index; + obj.maxPrefixLength = resp.res; + break; + } + case 5: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.emptyChild = resp.res; + break; + } + case 6: { + Proto.DecodeResponse resp = Proto.decodeEnum(data, index); + index = resp.index; + obj.hash = resp.res; + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/LeafOp.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/LeafOp.java new file mode 100644 index 000000000..162a98314 --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/LeafOp.java @@ -0,0 +1,111 @@ +package icon.proto.core.commitment; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; +import java.lang.Integer; + +public class LeafOp extends ProtoMessage { + private int hash = 0; + + private int prehashKey = 0; + + private int prehashValue = 0; + + private int length = 0; + + private byte[] prefix = new byte[0]; + + public int getHash() { + return this.hash; + } + + public void setHash(int hash) { + this.hash = hash; + } + + public int getPrehashKey() { + return this.prehashKey; + } + + public void setPrehashKey(int prehashKey) { + this.prehashKey = prehashKey; + } + + public int getPrehashValue() { + return this.prehashValue; + } + + public void setPrehashValue(int prehashValue) { + this.prehashValue = prehashValue; + } + + public int getLength() { + return this.length; + } + + public void setLength(int length) { + this.length = length; + } + + public byte[] getPrefix() { + return this.prefix; + } + + public void setPrefix(byte[] prefix) { + this.prefix = prefix; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.hash), + Proto.encode(2, this.prehashKey), + Proto.encode(3, this.prehashValue), + Proto.encode(4, this.length), + Proto.encode(5, this.prefix)); + } + + public static LeafOp decode(byte[] data) { + LeafOp obj = new LeafOp(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeEnum(data, index); + index = resp.index; + obj.hash = resp.res; + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeEnum(data, index); + index = resp.index; + obj.prehashKey = resp.res; + break; + } + case 3: { + Proto.DecodeResponse resp = Proto.decodeEnum(data, index); + index = resp.index; + obj.prehashValue = resp.res; + break; + } + case 4: { + Proto.DecodeResponse resp = Proto.decodeEnum(data, index); + index = resp.index; + obj.length = resp.res; + break; + } + case 5: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.prefix = resp.res; + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/LengthOp.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/LengthOp.java new file mode 100644 index 000000000..d6849b353 --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/LengthOp.java @@ -0,0 +1,21 @@ +package icon.proto.core.commitment; + +public class LengthOp { + public static final int NO_PREFIX = 0; + + public static final int VAR_PROTO = 1; + + public static final int VAR_RLP = 2; + + public static final int FIXED32_BIG = 3; + + public static final int FIXED32_LITTLE = 4; + + public static final int FIXED64_BIG = 5; + + public static final int FIXED64_LITTLE = 6; + + public static final int REQUIRE_32_BYTES = 7; + + public static final int REQUIRE_64_BYTES = 8; +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/MerklePath.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/MerklePath.java new file mode 100644 index 000000000..73a3efc40 --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/MerklePath.java @@ -0,0 +1,45 @@ +package icon.proto.core.commitment; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; +import java.lang.String; +import java.util.List; +import scorex.util.ArrayList; + +public class MerklePath extends ProtoMessage { + private List keyPath = new ArrayList<>(); + + public List getKeyPath() { + return this.keyPath; + } + + public void setKeyPath(List keyPath) { + this.keyPath = keyPath; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encodeStringArray(1, this.keyPath)); + } + + public static MerklePath decode(byte[] data) { + MerklePath obj = new MerklePath(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeString(data, index); + index = resp.index; + obj.keyPath.add(resp.res); + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/MerklePrefix.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/MerklePrefix.java new file mode 100644 index 000000000..13af209cb --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/MerklePrefix.java @@ -0,0 +1,42 @@ +package icon.proto.core.commitment; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; + +public class MerklePrefix extends ProtoMessage { + private byte[] keyPrefix = new byte[0]; + + public byte[] getKeyPrefix() { + return this.keyPrefix; + } + + public void setKeyPrefix(byte[] keyPrefix) { + this.keyPrefix = keyPrefix; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.keyPrefix)); + } + + public static MerklePrefix decode(byte[] data) { + MerklePrefix obj = new MerklePrefix(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.keyPrefix = resp.res; + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/MerkleProof.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/MerkleProof.java new file mode 100644 index 000000000..063c82f2a --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/MerkleProof.java @@ -0,0 +1,44 @@ +package icon.proto.core.commitment; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; +import java.util.List; +import scorex.util.ArrayList; + +public class MerkleProof extends ProtoMessage { + private List proofs = new ArrayList<>(); + + public List getProofs() { + return this.proofs; + } + + public void setProofs(List proofs) { + this.proofs = proofs; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encodeMessageArray(1, this.proofs)); + } + + public static MerkleProof decode(byte[] data) { + MerkleProof obj = new MerkleProof(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.proofs.add(CommitmentProof.decode(resp.res)); + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/MerkleRoot.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/MerkleRoot.java new file mode 100644 index 000000000..0e1bd3eed --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/MerkleRoot.java @@ -0,0 +1,42 @@ +package icon.proto.core.commitment; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; + +public class MerkleRoot extends ProtoMessage { + private byte[] hash = new byte[0]; + + public byte[] getHash() { + return this.hash; + } + + public void setHash(byte[] hash) { + this.hash = hash; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.hash)); + } + + public static MerkleRoot decode(byte[] data) { + MerkleRoot obj = new MerkleRoot(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.hash = resp.res; + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/NonExistenceProof.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/NonExistenceProof.java new file mode 100644 index 000000000..91a9b37e5 --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/NonExistenceProof.java @@ -0,0 +1,76 @@ +package icon.proto.core.commitment; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; + +public class NonExistenceProof extends ProtoMessage { + private byte[] key = new byte[0]; + + private ExistenceProof left = new ExistenceProof(); + + private ExistenceProof right = new ExistenceProof(); + + public byte[] getKey() { + return this.key; + } + + public void setKey(byte[] key) { + this.key = key; + } + + public ExistenceProof getLeft() { + return this.left; + } + + public void setLeft(ExistenceProof left) { + this.left = left; + } + + public ExistenceProof getRight() { + return this.right; + } + + public void setRight(ExistenceProof right) { + this.right = right; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.key), + Proto.encode(2, this.left), + Proto.encode(3, this.right)); + } + + public static NonExistenceProof decode(byte[] data) { + NonExistenceProof obj = new NonExistenceProof(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.key = resp.res; + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.left = ExistenceProof.decode(resp.res); + break; + } + case 3: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.right = ExistenceProof.decode(resp.res); + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/ProofSpec.java b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/ProofSpec.java new file mode 100644 index 000000000..75e8d3b04 --- /dev/null +++ b/contracts/javascore/proto-lib/src/main/java/icon/proto/core/commitment/ProofSpec.java @@ -0,0 +1,112 @@ +package icon.proto.core.commitment; + +import ibc.icon.score.util.ByteUtil; +import ibc.icon.score.util.Proto; +import ibc.icon.score.util.ProtoMessage; +import java.lang.Boolean; +import java.math.BigInteger; + +public class ProofSpec extends ProtoMessage { + private LeafOp leafSpec = new LeafOp(); + + private InnerSpec innerSpec = new InnerSpec(); + + private BigInteger maxDepth = BigInteger.ZERO; + + private BigInteger minDepth = BigInteger.ZERO; + + private boolean prehashKeyBeforeComparison = false; + + public LeafOp getLeafSpec() { + return this.leafSpec; + } + + public void setLeafSpec(LeafOp leafSpec) { + this.leafSpec = leafSpec; + } + + public InnerSpec getInnerSpec() { + return this.innerSpec; + } + + public void setInnerSpec(InnerSpec innerSpec) { + this.innerSpec = innerSpec; + } + + public BigInteger getMaxDepth() { + return this.maxDepth; + } + + public void setMaxDepth(BigInteger maxDepth) { + this.maxDepth = maxDepth; + } + + public BigInteger getMinDepth() { + return this.minDepth; + } + + public void setMinDepth(BigInteger minDepth) { + this.minDepth = minDepth; + } + + public boolean getPrehashKeyBeforeComparison() { + return this.prehashKeyBeforeComparison; + } + + public void setPrehashKeyBeforeComparison(boolean prehashKeyBeforeComparison) { + this.prehashKeyBeforeComparison = prehashKeyBeforeComparison; + } + + public byte[] encode() { + return ByteUtil.join( + Proto.encode(1, this.leafSpec), + Proto.encode(2, this.innerSpec), + Proto.encode(3, this.maxDepth), + Proto.encode(4, this.minDepth), + Proto.encode(5, this.prehashKeyBeforeComparison)); + } + + public static ProofSpec decode(byte[] data) { + ProofSpec obj = new ProofSpec(); + int index = 0; + int order; + int length = data.length; + while (index < length) { + order = data[index] >> 3; + index++; + switch(order) { + case 1: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.leafSpec = LeafOp.decode(resp.res); + break; + } + case 2: { + Proto.DecodeResponse resp = Proto.decodeBytes(data, index); + index = resp.index; + obj.innerSpec = InnerSpec.decode(resp.res); + break; + } + case 3: { + Proto.DecodeResponse resp = Proto.decodeVarInt(data, index); + index = resp.index; + obj.maxDepth = resp.res; + break; + } + case 4: { + Proto.DecodeResponse resp = Proto.decodeVarInt(data, index); + index = resp.index; + obj.minDepth = resp.res; + break; + } + case 5: { + Proto.DecodeResponse resp = Proto.decodeBoolean(data, index); + index = resp.index; + obj.prehashKeyBeforeComparison = resp.res; + break; + } + } + } + return obj; + } +} diff --git a/contracts/javascore/score-util/src/main/java/ibc/icon/score/util/Proto.java b/contracts/javascore/score-util/src/main/java/ibc/icon/score/util/Proto.java index b1d0a96d4..0f176b3fa 100644 --- a/contracts/javascore/score-util/src/main/java/ibc/icon/score/util/Proto.java +++ b/contracts/javascore/score-util/src/main/java/ibc/icon/score/util/Proto.java @@ -64,10 +64,18 @@ public static DecodeResponse decodeEnum(byte[] data, int index) { public static DecodeResponse decodeVarInt(byte[] data, int index) { DecodeResponse resp = new DecodeResponse<>(); - DataSize dataSize = getDataSize(data, index); + long value = 0; + for (int shift = 0; shift < 64; shift += 7) { + final byte b = data[index]; + index++; + value |= (long) (b & 0x7F) << shift; + if ((b & 0x80) == 0) { + break; + } + } - resp.index = dataSize.index; - resp.res = BigInteger.valueOf(dataSize.length); + resp.index = index; + resp.res = BigInteger.valueOf(value); return resp; } @@ -162,7 +170,7 @@ public static byte[] encodeBooleanArray(int order, List items) { } public static byte[] encode(int order, Boolean item) { - if (item == null) { + if (item == null || item == false) { return new byte[0]; } diff --git a/contracts/javascore/settings.gradle b/contracts/javascore/settings.gradle index d669e3543..beb9a637f 100644 --- a/contracts/javascore/settings.gradle +++ b/contracts/javascore/settings.gradle @@ -13,6 +13,10 @@ include(':tendermint') project(':tendermint').projectDir = file("lightclients/tendermint") project(':tendermint').name = "tendermint" +include(':ics-08-tendermint') +project(':ics-08-tendermint').projectDir = file("lightclients/ics-08-tendermint") +project(':ics-08-tendermint').name = "ics-08-tendermint" + include(':mockclient') project(':mockclient').projectDir = file("lightclients/mockclient") project(':mockclient').name = "mockclient" diff --git a/proto/clients/tendermint/TendermintLight.proto b/proto/clients/tendermint/TendermintLight.proto new file mode 100644 index 000000000..1c802d95c --- /dev/null +++ b/proto/clients/tendermint/TendermintLight.proto @@ -0,0 +1,206 @@ +syntax = "proto3"; +package tendermint.light; + +option go_package = "libraries/go/common/tendermint;tendermint"; +import "gogoproto/gogo.proto"; + +message Fraction { + uint64 numerator = 1; + uint64 denominator = 2; +} + +// https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#google.protobuf.Timestamp +message Duration { + int64 seconds = 1; + int32 nanos = 2; +} + +message Consensus { + uint64 block = 1; + uint64 app = 2; +} + +message ClientState { + option (gogoproto.goproto_getters) = false; + + string chain_id = 1; + Fraction trust_level = 2; + + // duration of the period since the LastestTimestamp during which the + // submitted headers are valid for upgrade + Duration trusting_period = 3; + // duration of the staking unbonding period + Duration unbonding_period = 4; + // defines how much new (untrusted) header's Time can drift into the future. + Duration max_clock_drift = 5; + // Block height when the client was frozen due to a misbehaviour + //ibc.core.client.v1.Height frozen_height = 6; + int64 frozen_height = 6; + // Latest height the client was updated to + int64 latest_height = 7; + // This flag, when set to true, will allow governance to recover a client + // which has expired + bool allow_update_after_expiry = 8; + // 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 = 9; +} + +// 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. + Timestamp timestamp = 1; + + // commitment root (i.e app hash) + MerkleRoot root = 2; + bytes next_validators_hash = 3; +} + +// MerkleRoot defines a merkle root hash. +// In the Cosmos SDK, the AppHash of a block header becomes the root. +message MerkleRoot { + bytes hash = 1; +} + +enum BlockIDFlag { + BLOCK_ID_FLAG_UNKNOWN = 0; + BLOCK_ID_FLAG_ABSENT = 1; + BLOCK_ID_FLAG_COMMIT = 2; + BLOCK_ID_FLAG_NIL = 3; +} + +enum SignedMsgType { + SIGNED_MSG_TYPE_UNKNOWN = 0; + // Votes + SIGNED_MSG_TYPE_PREVOTE = 1; + SIGNED_MSG_TYPE_PRECOMMIT = 2; + + // Proposals + SIGNED_MSG_TYPE_PROPOSAL = 32; +} + +message CanonicalPartSetHeader { + uint32 total = 1; + bytes hash = 2; +} + +message CanonicalBlockID { + bytes hash = 1; + CanonicalPartSetHeader part_set_header = 2; +} + +message CanonicalVote { + SignedMsgType type = 1; + sfixed64 height = 2; + sfixed64 round = 3; + BlockID block_id = 4; + Timestamp timestamp = 5; + string chain_id = 6; +} + +message Vote { + SignedMsgType type = 1; + int64 height = 2; + int32 round = 3; + BlockID block_id = 4; + Timestamp timestamp = 5; + bytes validator_address = 6; + int32 validator_index = 7; + bytes signature = 8; +} + +message ValidatorSet { + repeated Validator validators = 1; + Validator proposer = 2; + int64 total_voting_power = 3; +} + +message Validator { + bytes address = 1; + PublicKey pub_key = 2; + int64 voting_power = 3; + int64 proposer_priority = 4; +} + +message SimpleValidator { + PublicKey pub_key = 1; + int64 voting_power = 2; +} + +message PublicKey { + oneof sum { + bytes ed25519 = 1; + bytes secp256k1 = 2; + bytes sr25519 = 3; + } +} + +message PartSetHeader { + uint32 total = 1; + bytes hash= 2; +} + +message BlockID { + bytes hash = 1; + PartSetHeader part_set_header = 2; +} + +message Commit { + int64 height = 1; + int32 round = 2; + BlockID block_id = 3; + repeated CommitSig signatures = 4; +} + +// CommitSig is a part of the Vote included in a Commit. +message CommitSig { + BlockIDFlag block_id_flag = 1; + bytes validator_address = 2; + Timestamp timestamp = 3; + bytes signature = 4; +} + +message Timestamp { + // Represents seconds of UTC time since Unix epoch + // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to + // 9999-12-31T23:59:59Z inclusive. + int64 seconds = 1; + + // Non-negative fractions of a second at nanosecond resolution. Negative + // second values with fractions must still have non-negative nanos values + // that count forward in time. Must be from 0 to 999,999,999 + // inclusive. + int32 nanos = 2; +} + +message LightHeader { + Consensus version = 1; + string chain_id = 2; + int64 height = 3; + Timestamp time = 4; + BlockID last_block_id = 5; + bytes last_commit_hash = 6; // commit from validators from the last block + bytes data_hash = 7; // transactions + bytes validators_hash = 8; // validators for the current block + bytes next_validators_hash = 9; // validators for the next block + bytes consensus_hash = 10; // consensus params for current block + bytes app_hash = 11; // state after txs from the previous block + bytes last_results_hash = 12; // root hash of all results from the txs from the previous block + bytes evidence_hash = 13; // evidence included in the block + bytes proposer_address = 14; // original proposer of the block +} + +message SignedHeader { + LightHeader header = 1; + Commit commit = 2; +} + +message TmHeader { + SignedHeader signed_header = 1; + ValidatorSet validator_set = 2; + + int64 trusted_height = 3; + ValidatorSet trusted_validators = 4; +}