diff --git a/common/src/main/java/bisq/common/app/Capability.java b/common/src/main/java/bisq/common/app/Capability.java index bc2200796d0..9dcc8ae989c 100644 --- a/common/src/main/java/bisq/common/app/Capability.java +++ b/common/src/main/java/bisq/common/app/Capability.java @@ -26,13 +26,16 @@ public enum Capability { @Deprecated TRADE_STATISTICS, // Not required anymore as no old clients out there not having that support @Deprecated TRADE_STATISTICS_2, // Not required anymore as no old clients out there not having that support @Deprecated ACCOUNT_AGE_WITNESS, // Not required anymore as no old clients out there not having that support - SEED_NODE, - DAO_FULL_NODE, - PROPOSAL, - BLIND_VOTE, + SEED_NODE, // Node is a seed node + DAO_FULL_NODE, // DAO full node can deliver BSQ blocks + @Deprecated PROPOSAL, // Not required anymore as no old clients out there not having that support + @Deprecated BLIND_VOTE, // Not required anymore as no old clients out there not having that support @Deprecated ACK_MSG, // Not required anymore as no old clients out there not having that support - RECEIVE_BSQ_BLOCK, - DAO_STATE, - BUNDLE_OF_ENVELOPES, - SIGNED_ACCOUNT_AGE_WITNESS + RECEIVE_BSQ_BLOCK, // Signaling that node which wants to receive BSQ blocks (DAO lite node) + @Deprecated DAO_STATE, // Not required anymore as no old clients out there not having that support + + //TODO can be set deprecated after v1.1.6 as we enforce update there + BUNDLE_OF_ENVELOPES, // Supports bundling of messages if many messages are sent in short interval + + SIGNED_ACCOUNT_AGE_WITNESS // Supports the signed account age witness feature } diff --git a/core/src/main/java/bisq/core/dao/governance/blindvote/storage/BlindVotePayload.java b/core/src/main/java/bisq/core/dao/governance/blindvote/storage/BlindVotePayload.java index cb3fc99e2a6..923bd4e043c 100644 --- a/core/src/main/java/bisq/core/dao/governance/blindvote/storage/BlindVotePayload.java +++ b/core/src/main/java/bisq/core/dao/governance/blindvote/storage/BlindVotePayload.java @@ -20,11 +20,8 @@ import bisq.core.dao.governance.ConsensusCritical; import bisq.core.dao.governance.blindvote.BlindVote; -import bisq.network.p2p.storage.payload.CapabilityRequiringPayload; import bisq.network.p2p.storage.payload.PersistableNetworkPayload; -import bisq.common.app.Capabilities; -import bisq.common.app.Capability; import bisq.common.crypto.Hash; import bisq.common.proto.persistable.PersistableEnvelope; import bisq.common.util.Utilities; @@ -46,8 +43,7 @@ @Slf4j @Getter @EqualsAndHashCode -public final class BlindVotePayload implements PersistableNetworkPayload, PersistableEnvelope, - CapabilityRequiringPayload, ConsensusCritical { +public final class BlindVotePayload implements PersistableNetworkPayload, PersistableEnvelope, ConsensusCritical { private final BlindVote blindVote; protected final byte[] hash; // 20 byte @@ -101,16 +97,6 @@ public byte[] getHash() { return hash; } - - /////////////////////////////////////////////////////////////////////////////////////////// - // CapabilityRequiringPayload - /////////////////////////////////////////////////////////////////////////////////////////// - - @Override - public Capabilities getRequiredCapabilities() { - return new Capabilities(Capability.BLIND_VOTE); - } - @Override public String toString() { return "BlindVotePayload{" + diff --git a/core/src/main/java/bisq/core/dao/governance/proposal/storage/appendonly/ProposalPayload.java b/core/src/main/java/bisq/core/dao/governance/proposal/storage/appendonly/ProposalPayload.java index a296525dd5e..04a4eaa71f5 100644 --- a/core/src/main/java/bisq/core/dao/governance/proposal/storage/appendonly/ProposalPayload.java +++ b/core/src/main/java/bisq/core/dao/governance/proposal/storage/appendonly/ProposalPayload.java @@ -20,11 +20,8 @@ import bisq.core.dao.governance.ConsensusCritical; import bisq.core.dao.state.model.governance.Proposal; -import bisq.network.p2p.storage.payload.CapabilityRequiringPayload; import bisq.network.p2p.storage.payload.PersistableNetworkPayload; -import bisq.common.app.Capabilities; -import bisq.common.app.Capability; import bisq.common.crypto.Hash; import bisq.common.proto.persistable.PersistableEnvelope; import bisq.common.util.Utilities; @@ -43,8 +40,7 @@ @Immutable @Slf4j @Value -public class ProposalPayload implements PersistableNetworkPayload, PersistableEnvelope, - CapabilityRequiringPayload, ConsensusCritical { +public class ProposalPayload implements PersistableNetworkPayload, PersistableEnvelope, ConsensusCritical { private final Proposal proposal; protected final byte[] hash; // 20 byte @@ -100,16 +96,6 @@ public byte[] getHash() { return hash; } - - /////////////////////////////////////////////////////////////////////////////////////////// - // CapabilityRequiringPayload - /////////////////////////////////////////////////////////////////////////////////////////// - - @Override - public Capabilities getRequiredCapabilities() { - return new Capabilities(Capability.PROPOSAL); - } - @Override public String toString() { return "ProposalPayload{" + diff --git a/core/src/main/java/bisq/core/dao/governance/proposal/storage/temp/TempProposalPayload.java b/core/src/main/java/bisq/core/dao/governance/proposal/storage/temp/TempProposalPayload.java index 4aaca00918c..6ea17a819d1 100644 --- a/core/src/main/java/bisq/core/dao/governance/proposal/storage/temp/TempProposalPayload.java +++ b/core/src/main/java/bisq/core/dao/governance/proposal/storage/temp/TempProposalPayload.java @@ -19,13 +19,10 @@ import bisq.core.dao.state.model.governance.Proposal; -import bisq.network.p2p.storage.payload.CapabilityRequiringPayload; import bisq.network.p2p.storage.payload.ExpirablePayload; import bisq.network.p2p.storage.payload.LazyProcessedPayload; import bisq.network.p2p.storage.payload.ProtectedStoragePayload; -import bisq.common.app.Capabilities; -import bisq.common.app.Capability; import bisq.common.crypto.Sig; import bisq.common.proto.persistable.PersistablePayload; import bisq.common.util.ExtraDataMapValidator; @@ -59,7 +56,7 @@ @EqualsAndHashCode @FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE) public class TempProposalPayload implements LazyProcessedPayload, ProtectedStoragePayload, - ExpirablePayload, CapabilityRequiringPayload, PersistablePayload { + ExpirablePayload, PersistablePayload { protected final Proposal proposal; protected final byte[] ownerPubKeyEncoded; @@ -122,16 +119,6 @@ public PublicKey getOwnerPubKey() { } - /////////////////////////////////////////////////////////////////////////////////////////// - // CapabilityRequiringPayload - /////////////////////////////////////////////////////////////////////////////////////////// - - @Override - public Capabilities getRequiredCapabilities() { - return new Capabilities(Capability.PROPOSAL); - } - - /////////////////////////////////////////////////////////////////////////////////////////// // ExpirablePayload /////////////////////////////////////////////////////////////////////////////////////////// diff --git a/core/src/main/java/bisq/core/setup/CoreNetworkCapabilities.java b/core/src/main/java/bisq/core/setup/CoreNetworkCapabilities.java index 24e78647535..691f1eecbae 100644 --- a/core/src/main/java/bisq/core/setup/CoreNetworkCapabilities.java +++ b/core/src/main/java/bisq/core/setup/CoreNetworkCapabilities.java @@ -33,16 +33,13 @@ public static void setSupportedCapabilities(BisqEnvironment bisqEnvironment) { Capability.TRADE_STATISTICS_2, Capability.ACCOUNT_AGE_WITNESS, Capability.ACK_MSG, + Capability.PROPOSAL, + Capability.BLIND_VOTE, + Capability.DAO_STATE, Capability.BUNDLE_OF_ENVELOPES ); if (BisqEnvironment.isDaoActivated(bisqEnvironment)) { - Capabilities.app.addAll( - Capability.PROPOSAL, - Capability.BLIND_VOTE, - Capability.DAO_STATE - ); - maybeApplyDaoFullMode(bisqEnvironment); } } @@ -58,6 +55,7 @@ public static void maybeApplyDaoFullMode(BisqEnvironment bisqEnvironment) { } else { // A lite node has the capability to receive bsq blocks. We do not want to send BSQ blocks to full nodes // as they ignore them anyway. + log.info("Set Capability.RECEIVE_BSQ_BLOCK"); Capabilities.app.addAll(Capability.RECEIVE_BSQ_BLOCK); } } diff --git a/p2p/src/main/java/bisq/network/p2p/BundleOfEnvelopes.java b/p2p/src/main/java/bisq/network/p2p/BundleOfEnvelopes.java index 82338da2dfc..d4ff8f46a83 100644 --- a/p2p/src/main/java/bisq/network/p2p/BundleOfEnvelopes.java +++ b/p2p/src/main/java/bisq/network/p2p/BundleOfEnvelopes.java @@ -17,6 +17,10 @@ package bisq.network.p2p; +import bisq.network.p2p.storage.payload.CapabilityRequiringPayload; + +import bisq.common.app.Capabilities; +import bisq.common.app.Capability; import bisq.common.app.Version; import bisq.common.proto.ProtobufferException; import bisq.common.proto.network.NetworkEnvelope; @@ -32,7 +36,7 @@ @EqualsAndHashCode(callSuper = true) @Value -public final class BundleOfEnvelopes extends NetworkEnvelope implements ExtendedDataSizePermission { +public final class BundleOfEnvelopes extends NetworkEnvelope implements ExtendedDataSizePermission, CapabilityRequiringPayload { private final List envelopes; @@ -78,4 +82,13 @@ public static BundleOfEnvelopes fromProto(protobuf.BundleOfEnvelopes proto, Netw return new BundleOfEnvelopes(envelopes, messageVersion); } + + /////////////////////////////////////////////////////////////////////////////////////////// + // CapabilityRequiringPayload + /////////////////////////////////////////////////////////////////////////////////////////// + + @Override + public Capabilities getRequiredCapabilities() { + return new Capabilities(Capability.BUNDLE_OF_ENVELOPES); + } }