diff --git a/src/main/java/org/qortal/block/Block.java b/src/main/java/org/qortal/block/Block.java index fca6fa84..d0f742fd 100644 --- a/src/main/java/org/qortal/block/Block.java +++ b/src/main/java/org/qortal/block/Block.java @@ -389,25 +389,14 @@ public class Block { byte[] encodedOnlineAccounts = BlockTransformer.encodeOnlineAccounts(onlineAccountsSet); int onlineAccountsCount = onlineAccountsSet.size(); - byte[] onlineAccountsSignatures; - if (timestamp >= BlockChain.getInstance().getAggregateSignatureTimestamp()) { - // Collate all signatures - Collection signaturesToAggregate = indexedOnlineAccounts.values() - .stream() - .map(OnlineAccountData::getSignature) - .collect(Collectors.toList()); - - // Aggregated, single signature - onlineAccountsSignatures = Qortal25519Extras.aggregateSignatures(signaturesToAggregate); - } else { - // Concatenate online account timestamp signatures (in correct order) - onlineAccountsSignatures = new byte[onlineAccountsCount * Transformer.SIGNATURE_LENGTH]; - for (int i = 0; i < onlineAccountsCount; ++i) { - Integer accountIndex = accountIndexes.get(i); - OnlineAccountData onlineAccountData = indexedOnlineAccounts.get(accountIndex); - System.arraycopy(onlineAccountData.getSignature(), 0, onlineAccountsSignatures, i * Transformer.SIGNATURE_LENGTH, Transformer.SIGNATURE_LENGTH); - } - } + // Collate all signatures + Collection signaturesToAggregate = indexedOnlineAccounts.values() + .stream() + .map(OnlineAccountData::getSignature) + .collect(Collectors.toList()); + + // Aggregated, single signature + byte[] onlineAccountsSignatures = Qortal25519Extras.aggregateSignatures(signaturesToAggregate); // Add nonces to the end of the online accounts signatures if mempow is active if (timestamp >= BlockChain.getInstance().getOnlineAccountsMemoryPoWTimestamp()) { @@ -1041,7 +1030,7 @@ public class Block { if (this.blockData.getOnlineAccountsSignatures() == null || this.blockData.getOnlineAccountsSignatures().length == 0) return ValidationResult.ONLINE_ACCOUNT_SIGNATURES_MISSING; - final int signaturesLength = (this.blockData.getTimestamp() >= BlockChain.getInstance().getAggregateSignatureTimestamp()) ? Transformer.SIGNATURE_LENGTH : onlineRewardShares.size() * Transformer.SIGNATURE_LENGTH; + final int signaturesLength = Transformer.SIGNATURE_LENGTH; final int noncesLength = onlineRewardShares.size() * Transformer.INT_LENGTH; if (this.blockData.getTimestamp() >= BlockChain.getInstance().getOnlineAccountsMemoryPoWTimestamp()) { @@ -1089,41 +1078,18 @@ public class Block { // Extract online accounts' timestamp signatures from block data. Only one signature if aggregated. List onlineAccountsSignatures = BlockTransformer.decodeTimestampSignatures(encodedOnlineAccountSignatures); - if (this.blockData.getTimestamp() >= BlockChain.getInstance().getAggregateSignatureTimestamp()) { - // Aggregate all public keys - Collection publicKeys = onlineRewardShares.stream() - .map(RewardShareData::getRewardSharePublicKey) - .collect(Collectors.toList()); - - byte[] aggregatePublicKey = Qortal25519Extras.aggregatePublicKeys(publicKeys); - - byte[] aggregateSignature = onlineAccountsSignatures.get(0); - - // One-step verification of aggregate signature using aggregate public key - if (!Qortal25519Extras.verifyAggregated(aggregatePublicKey, aggregateSignature, onlineTimestampBytes)) - return ValidationResult.ONLINE_ACCOUNT_SIGNATURE_INCORRECT; - } else { - // Build block's view of online accounts - Set onlineAccounts = new HashSet<>(); - for (int i = 0; i < onlineAccountsSignatures.size(); ++i) { - byte[] signature = onlineAccountsSignatures.get(i); - byte[] publicKey = onlineRewardShares.get(i).getRewardSharePublicKey(); - - OnlineAccountData onlineAccountData = new OnlineAccountData(onlineTimestamp, signature, publicKey); - onlineAccounts.add(onlineAccountData); - } + // Aggregate all public keys + Collection publicKeys = onlineRewardShares.stream() + .map(RewardShareData::getRewardSharePublicKey) + .collect(Collectors.toList()); - // Remove those already validated & cached by online accounts manager - no need to re-validate them - OnlineAccountsManager.getInstance().removeKnown(onlineAccounts, onlineTimestamp); + byte[] aggregatePublicKey = Qortal25519Extras.aggregatePublicKeys(publicKeys); - // Validate the rest - for (OnlineAccountData onlineAccount : onlineAccounts) - if (!Crypto.verify(onlineAccount.getPublicKey(), onlineAccount.getSignature(), onlineTimestampBytes)) - return ValidationResult.ONLINE_ACCOUNT_SIGNATURE_INCORRECT; + byte[] aggregateSignature = onlineAccountsSignatures.get(0); - // We've validated these, so allow online accounts manager to cache - OnlineAccountsManager.getInstance().addBlocksOnlineAccounts(onlineAccounts, onlineTimestamp); - } + // One-step verification of aggregate signature using aggregate public key + if (!Qortal25519Extras.verifyAggregated(aggregatePublicKey, aggregateSignature, onlineTimestampBytes)) + return ValidationResult.ONLINE_ACCOUNT_SIGNATURE_INCORRECT; // All online accounts valid, so save our list of online accounts for potential later use this.cachedOnlineRewardShares = onlineRewardShares; diff --git a/src/main/java/org/qortal/block/BlockChain.java b/src/main/java/org/qortal/block/BlockChain.java index 56294d1a..0e746766 100644 --- a/src/main/java/org/qortal/block/BlockChain.java +++ b/src/main/java/org/qortal/block/BlockChain.java @@ -72,8 +72,7 @@ public class BlockChain { calcChainWeightTimestamp, transactionV5Timestamp, transactionV6Timestamp, - disableReferenceTimestamp, - aggregateSignatureTimestamp; + disableReferenceTimestamp; } // Custom transaction fees @@ -445,9 +444,6 @@ public class BlockChain { return this.featureTriggers.get(FeatureTrigger.disableReferenceTimestamp.name()).longValue(); } - public long getAggregateSignatureTimestamp() { - return this.featureTriggers.get(FeatureTrigger.aggregateSignatureTimestamp.name()).longValue(); - } // More complex getters for aspects that change by height or timestamp diff --git a/src/main/java/org/qortal/controller/OnlineAccountsManager.java b/src/main/java/org/qortal/controller/OnlineAccountsManager.java index abd616e7..9cfae61d 100644 --- a/src/main/java/org/qortal/controller/OnlineAccountsManager.java +++ b/src/main/java/org/qortal/controller/OnlineAccountsManager.java @@ -151,16 +151,13 @@ public class OnlineAccountsManager { return; byte[] timestampBytes = Longs.toByteArray(onlineAccountsTimestamp); - final boolean useAggregateCompatibleSignature = onlineAccountsTimestamp >= BlockChain.getInstance().getAggregateSignatureTimestamp(); final boolean mempowActive = onlineAccountsTimestamp >= BlockChain.getInstance().getOnlineAccountsMemoryPoWTimestamp(); Set replacementAccounts = new HashSet<>(); for (PrivateKeyAccount onlineAccount : onlineAccounts) { // Check mintingAccount is actually reward-share? - byte[] signature = useAggregateCompatibleSignature - ? Qortal25519Extras.signForAggregation(onlineAccount.getPrivateKey(), timestampBytes) - : onlineAccount.sign(timestampBytes); + byte[] signature = Qortal25519Extras.signForAggregation(onlineAccount.getPrivateKey(), timestampBytes); byte[] publicKey = onlineAccount.getPublicKey(); Integer nonce = mempowActive ? new Random().nextInt(500000) : null; @@ -280,9 +277,7 @@ public class OnlineAccountsManager { // Verify signature byte[] data = Longs.toByteArray(onlineAccountData.getTimestamp()); - boolean isSignatureValid = onlineAccountTimestamp >= BlockChain.getInstance().getAggregateSignatureTimestamp() - ? Qortal25519Extras.verifyAggregated(rewardSharePublicKey, onlineAccountData.getSignature(), data) - : Crypto.verify(rewardSharePublicKey, onlineAccountData.getSignature(), data); + boolean isSignatureValid = Qortal25519Extras.verifyAggregated(rewardSharePublicKey, onlineAccountData.getSignature(), data); if (!isSignatureValid) { LOGGER.trace(() -> String.format("Rejecting invalid online account %s", Base58.encode(rewardSharePublicKey))); return false; @@ -506,8 +501,6 @@ public class OnlineAccountsManager { return false; } - final boolean useAggregateCompatibleSignature = onlineAccountsTimestamp >= BlockChain.getInstance().getAggregateSignatureTimestamp(); - byte[] timestampBytes = Longs.toByteArray(onlineAccountsTimestamp); List ourOnlineAccounts = new ArrayList<>(); @@ -544,9 +537,7 @@ public class OnlineAccountsManager { nonce = -1; } - byte[] signature = useAggregateCompatibleSignature - ? Qortal25519Extras.signForAggregation(privateKey, timestampBytes) - : Crypto.sign(privateKey, timestampBytes); + byte[] signature = Qortal25519Extras.signForAggregation(privateKey, timestampBytes); // Our account is online OnlineAccountData ourOnlineAccountData = new OnlineAccountData(onlineAccountsTimestamp, signature, publicKey, nonce); diff --git a/src/main/resources/blockchain.json b/src/main/resources/blockchain.json index 03169723..38c5d66c 100644 --- a/src/main/resources/blockchain.json +++ b/src/main/resources/blockchain.json @@ -67,8 +67,7 @@ "calcChainWeightTimestamp": 1620579600000, "transactionV5Timestamp": 1642176000000, "transactionV6Timestamp": 9999999999999, - "disableReferenceTimestamp": 1655222400000, - "aggregateSignatureTimestamp": 1656864000000 + "disableReferenceTimestamp": 1655222400000 }, "genesisInfo": { "version": 4, diff --git a/src/test/java/org/qortal/test/network/OnlineAccountsTests.java b/src/test/java/org/qortal/test/network/OnlineAccountsTests.java index c5a3115b..c9e646f1 100644 --- a/src/test/java/org/qortal/test/network/OnlineAccountsTests.java +++ b/src/test/java/org/qortal/test/network/OnlineAccountsTests.java @@ -46,7 +46,7 @@ public class OnlineAccountsTests extends Common { @Before public void beforeTest() throws DataException, IOException { - Common.useSettingsAndDb("test-settings-v2-no-sig-agg.json", false); + Common.useSettingsAndDb("test-settings-v2.json", false); NTP.setFixedOffset(Settings.getInstance().getTestNtpOffset()); } @@ -170,42 +170,6 @@ public class OnlineAccountsTests extends Common { } } - @Test - public void testOnlineAccountsModulusV2() throws IllegalAccessException, DataException { - try (final Repository repository = RepositoryManager.getRepository()) { - - // Set feature trigger timestamp to 0 so that it is active - FieldUtils.writeField(BlockChain.getInstance(), "onlineAccountsModulusV2Timestamp", 0L, true); - - List onlineAccountSignatures = new ArrayList<>(); - long fakeNTPOffset = 0L; - - // Mint a block and store its timestamp - Block block = BlockMinter.mintTestingBlock(repository, Common.getTestAccount(repository, "alice-reward-share")); - long lastBlockTimestamp = block.getBlockData().getTimestamp(); - - // Mint some blocks and keep track of the different online account signatures - for (int i = 0; i < 30; i++) { - block = BlockMinter.mintTestingBlock(repository, Common.getTestAccount(repository, "alice-reward-share")); - - // Increase NTP fixed offset by the block time, to simulate time passing - long blockTimeDelta = block.getBlockData().getTimestamp() - lastBlockTimestamp; - lastBlockTimestamp = block.getBlockData().getTimestamp(); - fakeNTPOffset += blockTimeDelta; - NTP.setFixedOffset(fakeNTPOffset); - - String lastOnlineAccountSignatures58 = Base58.encode(block.getBlockData().getOnlineAccountsSignatures()); - if (!onlineAccountSignatures.contains(lastOnlineAccountSignatures58)) { - onlineAccountSignatures.add(lastOnlineAccountSignatures58); - } - } - - // We expect 1-3 unique signatures over 30 blocks - System.out.println(String.format("onlineAccountSignatures count: %d", onlineAccountSignatures.size())); - assertTrue(onlineAccountSignatures.size() >= 1 && onlineAccountSignatures.size() <= 3); - } - } - @Test @Ignore(value = "For informational use") public void testOnlineAccountNonceCompression() throws IOException { diff --git a/src/test/resources/test-chain-v2-block-timestamps.json b/src/test/resources/test-chain-v2-block-timestamps.json index 38a18a8c..21de096a 100644 --- a/src/test/resources/test-chain-v2-block-timestamps.json +++ b/src/test/resources/test-chain-v2-block-timestamps.json @@ -56,8 +56,7 @@ "calcChainWeightTimestamp": 0, "transactionV5Timestamp": 0, "transactionV6Timestamp": 9999999999999, - "disableReferenceTimestamp": 9999999999999, - "aggregateSignatureTimestamp": 0 + "disableReferenceTimestamp": 9999999999999 }, "genesisInfo": { "version": 4, diff --git a/src/test/resources/test-chain-v2-disable-reference.json b/src/test/resources/test-chain-v2-disable-reference.json index 648e91b5..f47a96b3 100644 --- a/src/test/resources/test-chain-v2-disable-reference.json +++ b/src/test/resources/test-chain-v2-disable-reference.json @@ -59,8 +59,7 @@ "calcChainWeightTimestamp": 0, "transactionV5Timestamp": 0, "transactionV6Timestamp": 0, - "disableReferenceTimestamp": 0, - "aggregateSignatureTimestamp": 0 + "disableReferenceTimestamp": 0 }, "genesisInfo": { "version": 4, diff --git a/src/test/resources/test-chain-v2-founder-rewards.json b/src/test/resources/test-chain-v2-founder-rewards.json index 5a36039c..61b6443c 100644 --- a/src/test/resources/test-chain-v2-founder-rewards.json +++ b/src/test/resources/test-chain-v2-founder-rewards.json @@ -60,8 +60,7 @@ "calcChainWeightTimestamp": 0, "transactionV5Timestamp": 0, "transactionV6Timestamp": 0, - "disableReferenceTimestamp": 9999999999999, - "aggregateSignatureTimestamp": 0 + "disableReferenceTimestamp": 9999999999999 }, "genesisInfo": { "version": 4, diff --git a/src/test/resources/test-chain-v2-leftover-reward.json b/src/test/resources/test-chain-v2-leftover-reward.json index 2d53f421..0f8c95d0 100644 --- a/src/test/resources/test-chain-v2-leftover-reward.json +++ b/src/test/resources/test-chain-v2-leftover-reward.json @@ -60,8 +60,7 @@ "calcChainWeightTimestamp": 0, "transactionV5Timestamp": 0, "transactionV6Timestamp": 0, - "disableReferenceTimestamp": 9999999999999, - "aggregateSignatureTimestamp": 0 + "disableReferenceTimestamp": 9999999999999 }, "genesisInfo": { "version": 4, diff --git a/src/test/resources/test-chain-v2-minting.json b/src/test/resources/test-chain-v2-minting.json index 87d4efac..eca11cb3 100644 --- a/src/test/resources/test-chain-v2-minting.json +++ b/src/test/resources/test-chain-v2-minting.json @@ -60,8 +60,7 @@ "calcChainWeightTimestamp": 0, "transactionV5Timestamp": 0, "transactionV6Timestamp": 0, - "disableReferenceTimestamp": 9999999999999, - "aggregateSignatureTimestamp": 0 + "disableReferenceTimestamp": 9999999999999 }, "genesisInfo": { "version": 4, diff --git a/src/test/resources/test-chain-v2-no-sig-agg.json b/src/test/resources/test-chain-v2-no-sig-agg.json deleted file mode 100644 index 71e1cc3d..00000000 --- a/src/test/resources/test-chain-v2-no-sig-agg.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "isTestChain": true, - "blockTimestampMargin": 500, - "transactionExpiryPeriod": 86400000, - "maxBlockSize": 2097152, - "maxBytesPerUnitFee": 1024, - "unitFee": "0.1", - "nameRegistrationUnitFees": [ - { "timestamp": 1645372800000, "fee": "5" } - ], - "requireGroupForApproval": false, - "minAccountLevelToRewardShare": 5, - "maxRewardSharesPerMintingAccount": 20, - "founderEffectiveMintingLevel": 10, - "onlineAccountSignaturesMinLifetime": 3600000, - "onlineAccountSignaturesMaxLifetime": 86400000, - "onlineAccountsModulusV2Timestamp": 9999999999999, - "rewardsByHeight": [ - { "height": 1, "reward": 100 }, - { "height": 11, "reward": 10 }, - { "height": 21, "reward": 1 } - ], - "sharesByLevel": [ - { "levels": [ 1, 2 ], "share": 0.05 }, - { "levels": [ 3, 4 ], "share": 0.10 }, - { "levels": [ 5, 6 ], "share": 0.15 }, - { "levels": [ 7, 8 ], "share": 0.20 }, - { "levels": [ 9, 10 ], "share": 0.25 } - ], - "qoraHoldersShare": 0.20, - "qoraPerQortReward": 250, - "blocksNeededByLevel": [ 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 ], - "blockTimingsByHeight": [ - { "height": 1, "target": 60000, "deviation": 30000, "power": 0.2 } - ], - "ciyamAtSettings": { - "feePerStep": "0.0001", - "maxStepsPerRound": 500, - "stepsPerFunctionCall": 10, - "minutesPerBlock": 1 - }, - "featureTriggers": { - "messageHeight": 0, - "atHeight": 0, - "assetsTimestamp": 0, - "votingTimestamp": 0, - "arbitraryTimestamp": 0, - "powfixTimestamp": 0, - "qortalTimestamp": 0, - "newAssetPricingTimestamp": 0, - "groupApprovalTimestamp": 0, - "atFindNextTransactionFix": 0, - "newBlockSigHeight": 999999, - "shareBinFix": 999999, - "rewardShareLimitTimestamp": 9999999999999, - "calcChainWeightTimestamp": 0, - "transactionV5Timestamp": 0, - "transactionV6Timestamp": 0, - "disableReferenceTimestamp": 9999999999999, - "aggregateSignatureTimestamp": 9999999999999 - }, - "genesisInfo": { - "version": 4, - "timestamp": 0, - "transactions": [ - { "type": "ISSUE_ASSET", "assetName": "QORT", "description": "QORT native coin", "data": "", "quantity": 0, "isDivisible": true, "fee": 0 }, - { "type": "ISSUE_ASSET", "assetName": "Legacy-QORA", "description": "Representative legacy QORA", "quantity": 0, "isDivisible": true, "data": "{}", "isUnspendable": true }, - { "type": "ISSUE_ASSET", "assetName": "QORT-from-QORA", "description": "QORT gained from holding legacy QORA", "quantity": 0, "isDivisible": true, "data": "{}", "isUnspendable": true }, - - { "type": "GENESIS", "recipient": "QgV4s3xnzLhVBEJxcYui4u4q11yhUHsd9v", "amount": "1000000000" }, - { "type": "GENESIS", "recipient": "QixPbJUwsaHsVEofJdozU9zgVqkK6aYhrK", "amount": "1000000" }, - { "type": "GENESIS", "recipient": "QaUpHNhT3Ygx6avRiKobuLdusppR5biXjL", "amount": "1000000" }, - { "type": "GENESIS", "recipient": "Qci5m9k4rcwe4ruKrZZQKka4FzUUMut3er", "amount": "1000000" }, - - { "type": "CREATE_GROUP", "creatorPublicKey": "2tiMr5LTpaWCgbRvkPK8TFd7k63DyHJMMFFsz9uBf1ZP", "groupName": "dev-group", "description": "developer group", "isOpen": false, "approvalThreshold": "PCT100", "minimumBlockDelay": 0, "maximumBlockDelay": 1440 }, - - { "type": "ISSUE_ASSET", "issuerPublicKey": "2tiMr5LTpaWCgbRvkPK8TFd7k63DyHJMMFFsz9uBf1ZP", "assetName": "TEST", "description": "test asset", "data": "", "quantity": "1000000", "isDivisible": true, "fee": 0 }, - { "type": "ISSUE_ASSET", "issuerPublicKey": "C6wuddsBV3HzRrXUtezE7P5MoRXp5m3mEDokRDGZB6ry", "assetName": "OTHER", "description": "other test asset", "data": "", "quantity": "1000000", "isDivisible": true, "fee": 0 }, - { "type": "ISSUE_ASSET", "issuerPublicKey": "2tiMr5LTpaWCgbRvkPK8TFd7k63DyHJMMFFsz9uBf1ZP", "assetName": "GOLD", "description": "gold test asset", "data": "", "quantity": "1000000", "isDivisible": true, "fee": 0 }, - - { "type": "ACCOUNT_FLAGS", "target": "QgV4s3xnzLhVBEJxcYui4u4q11yhUHsd9v", "andMask": -1, "orMask": 1, "xorMask": 0 }, - { "type": "REWARD_SHARE", "minterPublicKey": "2tiMr5LTpaWCgbRvkPK8TFd7k63DyHJMMFFsz9uBf1ZP", "recipient": "QgV4s3xnzLhVBEJxcYui4u4q11yhUHsd9v", "rewardSharePublicKey": "7PpfnvLSG7y4HPh8hE7KoqAjLCkv7Ui6xw4mKAkbZtox", "sharePercent": "100" }, - - { "type": "ACCOUNT_LEVEL", "target": "Qci5m9k4rcwe4ruKrZZQKka4FzUUMut3er", "level": 5 } - ] - } -} diff --git a/src/test/resources/test-chain-v2-qora-holder-extremes.json b/src/test/resources/test-chain-v2-qora-holder-extremes.json index 4d9becf3..9839e215 100644 --- a/src/test/resources/test-chain-v2-qora-holder-extremes.json +++ b/src/test/resources/test-chain-v2-qora-holder-extremes.json @@ -60,8 +60,7 @@ "calcChainWeightTimestamp": 0, "transactionV5Timestamp": 0, "transactionV6Timestamp": 0, - "disableReferenceTimestamp": 9999999999999, - "aggregateSignatureTimestamp": 0 + "disableReferenceTimestamp": 9999999999999 }, "genesisInfo": { "version": 4, diff --git a/src/test/resources/test-chain-v2-qora-holder.json b/src/test/resources/test-chain-v2-qora-holder.json index 5c9002da..c02243b2 100644 --- a/src/test/resources/test-chain-v2-qora-holder.json +++ b/src/test/resources/test-chain-v2-qora-holder.json @@ -60,8 +60,7 @@ "calcChainWeightTimestamp": 0, "transactionV5Timestamp": 0, "transactionV6Timestamp": 0, - "disableReferenceTimestamp": 9999999999999, - "aggregateSignatureTimestamp": 0 + "disableReferenceTimestamp": 9999999999999 }, "genesisInfo": { "version": 4, diff --git a/src/test/resources/test-chain-v2-reward-levels.json b/src/test/resources/test-chain-v2-reward-levels.json index 90c80c63..70470ffa 100644 --- a/src/test/resources/test-chain-v2-reward-levels.json +++ b/src/test/resources/test-chain-v2-reward-levels.json @@ -60,8 +60,7 @@ "calcChainWeightTimestamp": 0, "transactionV5Timestamp": 0, "transactionV6Timestamp": 0, - "disableReferenceTimestamp": 9999999999999, - "aggregateSignatureTimestamp": 0 + "disableReferenceTimestamp": 9999999999999 }, "genesisInfo": { "version": 4, diff --git a/src/test/resources/test-chain-v2-reward-scaling.json b/src/test/resources/test-chain-v2-reward-scaling.json index 228c76f6..4140b3d2 100644 --- a/src/test/resources/test-chain-v2-reward-scaling.json +++ b/src/test/resources/test-chain-v2-reward-scaling.json @@ -60,8 +60,7 @@ "calcChainWeightTimestamp": 0, "transactionV5Timestamp": 0, "transactionV6Timestamp": 0, - "disableReferenceTimestamp": 9999999999999, - "aggregateSignatureTimestamp": 0 + "disableReferenceTimestamp": 9999999999999 }, "genesisInfo": { "version": 4, diff --git a/src/test/resources/test-chain-v2-reward-shares.json b/src/test/resources/test-chain-v2-reward-shares.json index 9e713095..2b024825 100644 --- a/src/test/resources/test-chain-v2-reward-shares.json +++ b/src/test/resources/test-chain-v2-reward-shares.json @@ -60,8 +60,7 @@ "newConsensusTimestamp": 0, "transactionV5Timestamp": 0, "transactionV6Timestamp": 0, - "disableReferenceTimestamp": 9999999999999, - "aggregateSignatureTimestamp": 0 + "disableReferenceTimestamp": 9999999999999 }, "genesisInfo": { "version": 4, diff --git a/src/test/resources/test-chain-v2.json b/src/test/resources/test-chain-v2.json index b2548f41..07e308e6 100644 --- a/src/test/resources/test-chain-v2.json +++ b/src/test/resources/test-chain-v2.json @@ -60,8 +60,7 @@ "calcChainWeightTimestamp": 0, "transactionV5Timestamp": 0, "transactionV6Timestamp": 0, - "disableReferenceTimestamp": 9999999999999, - "aggregateSignatureTimestamp": 0 + "disableReferenceTimestamp": 9999999999999 }, "genesisInfo": { "version": 4, diff --git a/src/test/resources/test-settings-v2-no-sig-agg.json b/src/test/resources/test-settings-v2-no-sig-agg.json deleted file mode 100644 index 1a55fa65..00000000 --- a/src/test/resources/test-settings-v2-no-sig-agg.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "repositoryPath": "testdb", - "bitcoinNet": "TEST3", - "litecoinNet": "TEST3", - "restrictedApi": false, - "blockchainConfig": "src/test/resources/test-chain-v2-no-sig-agg.json", - "exportPath": "qortal-backup-test", - "bootstrap": false, - "wipeUnconfirmedOnStart": false, - "testNtpOffset": 0, - "minPeers": 0, - "pruneBlockLimit": 100, - "bootstrapFilenamePrefix": "test-", - "dataPath": "data-test", - "tempDataPath": "data-test/_temp", - "listsPath": "lists-test", - "storagePolicy": "FOLLOWED_OR_VIEWED", - "maxStorageCapacity": 104857600 -}